use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[non_exhaustive]
pub struct EtfProfile {
pub symbol: Option<String>,
pub name: Option<String>,
pub asset_type: Option<String>,
pub net_assets: Option<f64>,
pub net_expense_ratio: Option<f64>,
pub portfolio_turnover: Option<f64>,
pub dividend_yield: Option<f64>,
pub inception_date: Option<String>,
pub holdings: Vec<EtfHolding>,
pub sector_weightings: Vec<EtfSectorWeighting>,
pub country_weightings: Vec<EtfCountryWeighting>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[non_exhaustive]
pub struct EtfHolding {
pub symbol: Option<String>,
pub description: Option<String>,
pub weight: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[non_exhaustive]
pub struct EtfSectorWeighting {
pub sector: Option<String>,
pub weight: Option<f64>,
}
#[derive(Debug, Clone, Default, Serialize, Deserialize)]
#[non_exhaustive]
pub struct EtfCountryWeighting {
pub country: Option<String>,
pub weight: Option<f64>,
}