use serde::Deserialize;
use crate::{NumberString, model::InstType};
mod edge;
pub use edge::*;
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct Instrument {
pub inst_type: InstType,
pub inst_id: String,
#[serde(default)]
pub uly: String,
#[serde(default)]
pub inst_family: String,
#[serde(default)]
pub base_ccy: String,
#[serde(default)]
pub quote_ccy: String,
#[serde(default)]
pub settle_ccy: String,
#[serde(default)]
pub lot_sz: NumberString,
#[serde(default)]
pub tick_sz: NumberString,
#[serde(default)]
pub min_sz: NumberString,
#[serde(default)]
pub state: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SystemTime {
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct OpenInterest {
pub inst_type: InstType,
pub inst_id: String,
#[serde(default)]
pub oi: NumberString,
#[serde(default)]
pub oi_ccy: NumberString,
#[serde(default)]
pub oi_usd: NumberString,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct FundingRate {
#[serde(default)]
pub inst_type: String,
pub inst_id: String,
#[serde(default)]
pub funding_rate: NumberString,
#[serde(default)]
pub next_funding_rate: NumberString,
#[serde(default)]
pub funding_time: NumberString,
#[serde(default)]
pub next_funding_time: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct FundingRateHistory {
pub inst_id: String,
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub formula_type: String,
#[serde(default)]
pub funding_rate: NumberString,
#[serde(default)]
pub realized_rate: NumberString,
#[serde(default)]
pub funding_time: NumberString,
#[serde(default)]
pub method: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct PriceLimit {
#[serde(default)]
pub inst_type: String,
pub inst_id: String,
#[serde(default)]
pub buy_lmt: NumberString,
#[serde(default)]
pub sell_lmt: NumberString,
#[serde(default)]
pub enabled: bool,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct MarkPrice {
pub inst_type: InstType,
pub inst_id: String,
#[serde(default)]
pub mark_px: NumberString,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct DeliveryExercise {
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub px: NumberString,
#[serde(rename = "type", default)]
pub exercise_type: String,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct PositionTier {
pub inst_type: InstType,
#[serde(default)]
pub td_mode: String,
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub tier: String,
#[serde(default)]
pub min_sz: NumberString,
#[serde(default)]
pub max_sz: NumberString,
#[serde(default)]
pub imr: NumberString,
#[serde(default)]
pub mmr: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct InsuranceFund {
#[serde(default)]
pub inst_type: String,
#[serde(rename = "type", default)]
pub fund_type: String,
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub amt: NumberString,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct ConvertContractCoin {
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub sz: NumberString,
#[serde(default)]
pub px: NumberString,
#[serde(default)]
pub unit: String,
}