use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Quote {
#[serde(rename = "c")]
pub current_price: f64,
#[serde(rename = "d")]
pub change: f64,
#[serde(rename = "dp")]
pub percent_change: f64,
#[serde(rename = "h")]
pub high: f64,
#[serde(rename = "l")]
pub low: f64,
#[serde(rename = "o")]
pub open: f64,
#[serde(rename = "pc")]
pub previous_close: f64,
#[serde(rename = "t")]
pub timestamp: i64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BidAsk {
#[serde(rename = "b")]
pub bid: Option<f64>,
#[serde(rename = "a")]
pub ask: Option<f64>,
#[serde(rename = "bv")]
pub bid_volume: Option<f64>,
#[serde(rename = "av")]
pub ask_volume: Option<f64>,
#[serde(rename = "t")]
pub timestamp: Option<i64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct StockCandles {
#[serde(rename = "c")]
pub close: Vec<f64>,
#[serde(rename = "h")]
pub high: Vec<f64>,
#[serde(rename = "l")]
pub low: Vec<f64>,
#[serde(rename = "o")]
pub open: Vec<f64>,
#[serde(rename = "s")]
pub status: String,
#[serde(rename = "t")]
pub timestamp: Vec<i64>,
#[serde(rename = "v")]
pub volume: Vec<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct TickData {
#[serde(rename = "s")]
pub symbol: String,
pub skip: i64,
pub count: i64,
pub total: i64,
#[serde(rename = "v")]
pub volume: Vec<f64>,
#[serde(rename = "p")]
pub price: Vec<f64>,
#[serde(rename = "t")]
pub timestamp: Vec<i64>,
#[serde(rename = "x")]
pub exchange: Vec<String>,
#[serde(rename = "c")]
pub conditions: Option<Vec<Vec<String>>>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PriceMetrics {
pub symbol: String,
pub data: PriceMetricsData,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PriceMetricsData {
#[serde(rename = "1D")]
pub one_day: Option<PricePerformance>,
#[serde(rename = "1W")]
pub one_week: Option<PricePerformance>,
#[serde(rename = "1M")]
pub one_month: Option<PricePerformance>,
#[serde(rename = "3M")]
pub three_month: Option<PricePerformance>,
#[serde(rename = "6M")]
pub six_month: Option<PricePerformance>,
#[serde(rename = "YTD")]
pub ytd: Option<PricePerformance>,
#[serde(rename = "1Y")]
pub one_year: Option<PricePerformance>,
#[serde(rename = "3Y")]
pub three_year: Option<PricePerformance>,
#[serde(rename = "5Y")]
pub five_year: Option<PricePerformance>,
#[serde(rename = "10Y")]
pub ten_year: Option<PricePerformance>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct PricePerformance {
pub actual: f64,
pub percent: f64,
}