use serde::{Deserialize, Serialize};

/// Response from the /api/gen/{clip_id}/waveform-aggregates endpoint
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct WaveformAggregates {
    /// Multi-resolution waveform data (mipmaps)
    pub waveform_aggregates: Vec<WaveformAggregate>,
}

#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(deny_unknown_fields)]
pub struct WaveformAggregate {
    /// Mipmap level (higher = more downsampled)
    pub mip_map_level: i32,

    /// Waveform data: outer array = channels, inner arrays = sample data
    /// Each sample is typically [min, max] for that block
    pub data: Vec<Vec<i32>>,
}
