use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct ProtocolTvl {
pub slug: String,
pub name: Option<String>,
pub symbol: Option<String>,
pub url: Option<String>,
pub chains: Vec<String>,
pub tvl: Option<f64>,
pub tvl_by_chain: Vec<ChainAllocation>,
pub change_1d_percent: Option<f64>,
pub change_7d_percent: Option<f64>,
pub market_cap: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct ChainAllocation {
pub chain: String,
pub tvl: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct TvlPoint {
pub timestamp: i64,
pub tvl: f64,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct ChainTvl {
pub name: String,
pub token_symbol: Option<String>,
pub gecko_id: Option<String>,
pub chain_id: Option<i64>,
pub tvl: Option<f64>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[non_exhaustive]
pub struct StablecoinSupply {
pub name: String,
pub symbol: Option<String>,
pub gecko_id: Option<String>,
pub peg_type: Option<String>,
pub peg_mechanism: Option<String>,
pub circulating: Option<f64>,
pub circulating_prev_day: Option<f64>,
pub circulating_prev_week: Option<f64>,
pub circulating_prev_month: Option<f64>,
}