use serde::{Deserialize, Serialize};
use crate::models::{Album, Artist, AudioInfo};
#[derive(Serialize, Deserialize, Debug, Clone, Default)]
pub struct Track {
#[serde(rename = "id")]
pub id: Option<i32>,
#[serde(rename = "title")]
pub title: Option<String>,
#[serde(rename = "version")]
pub version: Option<String>,
#[serde(rename = "isrc")]
pub isrc: Option<String>,
#[serde(rename = "track_number")]
pub track_number: Option<i32>,
#[serde(rename = "duration")]
pub duration: Option<i64>,
#[serde(rename = "media_number")]
pub media_number: Option<i32>,
#[serde(rename = "work")]
pub work: Option<String>,
#[serde(rename = "album")]
pub album: Option<Box<Album>>,
#[serde(rename = "performer")]
pub performer: Option<Box<Artist>>,
#[serde(rename = "performers")]
pub performers: Option<String>,
#[serde(rename = "composer")]
pub composer: Option<Box<Artist>>,
#[serde(rename = "audio_info")]
pub audio_info: Option<AudioInfo>,
#[serde(rename = "copyright")]
pub copyright: Option<String>,
#[serde(rename = "displayable")]
pub displayable: Option<bool>,
#[serde(rename = "downloadable")]
pub downloadable: Option<bool>,
#[serde(rename = "purchasable")]
pub purchasable: Option<bool>,
#[serde(rename = "streamable")]
pub streamable: Option<bool>,
#[serde(rename = "previewable")]
pub previewable: Option<bool>,
#[serde(rename = "sampleable")]
pub sampleable: Option<bool>,
#[serde(rename = "hires")]
pub hires: Option<bool>,
#[serde(rename = "hires_streamable")]
pub hires_streamable: Option<bool>,
#[serde(rename = "maximum_bit_depth")]
pub maximum_bit_depth: Option<f64>,
#[serde(rename = "maximum_channel_count")]
pub maximum_channel_count: Option<f64>,
#[serde(rename = "maximum_sampling_rate")]
pub maximum_sampling_rate: Option<f64>,
#[serde(rename = "purchasable_at")]
pub purchasable_at: Option<i64>,
#[serde(rename = "streamable_at")]
pub streamable_at: Option<i64>,
#[serde(rename = "release_date_download")]
pub release_date_download: Option<String>,
#[serde(rename = "release_date_original")]
pub release_date_original: Option<String>,
#[serde(rename = "release_date_stream")]
pub release_date_stream: Option<String>,
#[serde(rename = "parental_warning")]
pub parental_warning: Option<bool>,
}