use serde::Deserialize;
use crate::model::NumberString;
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct LoanRecord {
#[serde(default)]
pub avail_loan: String,
#[serde(default)]
pub avg_rate: String,
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub interest: NumberString,
#[serde(default)]
pub loan_quota: NumberString,
#[serde(default)]
pub pos_loan: String,
#[serde(default)]
pub rate: NumberString,
#[serde(default)]
pub surplus_lmt: NumberString,
#[serde(default)]
pub used_lmt: NumberString,
#[serde(default)]
pub used_loan: String,
#[serde(default)]
pub interest_free_liab: String,
#[serde(default)]
pub potential_borrowing_amt: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct RiskState {
#[serde(default)]
pub debt: NumberString,
#[serde(default)]
pub interest: NumberString,
#[serde(default)]
pub loan_alloc: String,
#[serde(default)]
pub next_discount_time: NumberString,
#[serde(default)]
pub next_interest_time: NumberString,
#[serde(default)]
pub records: Vec<LoanRecord>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SimulatedMargin {
#[serde(default)]
pub imr: NumberString,
#[serde(default)]
pub mmr: NumberString,
#[serde(default)]
pub mr: NumberString,
#[serde(default)]
pub notional_usd: NumberString,
#[serde(default)]
pub details: Vec<SimulatedMarginDetail>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SimulatedMarginDetail {
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub pos: NumberString,
#[serde(default)]
pub imr: NumberString,
#[serde(default)]
pub mmr: NumberString,
#[serde(default)]
pub upl: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct Greek {
#[serde(default)]
pub ccy: String,
#[serde(rename = "deltaBS", default)]
pub delta_bs: NumberString,
#[serde(rename = "deltaPA", default)]
pub delta_pa: NumberString,
#[serde(rename = "gammaBS", default)]
pub gamma_bs: NumberString,
#[serde(rename = "thetaBS", default)]
pub theta_bs: NumberString,
#[serde(rename = "vegaBS", default)]
pub vega_bs: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct AccountPositionTier {
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub uly: String,
#[serde(default)]
pub inst_family: String,
#[serde(default)]
pub pos_type: String,
#[serde(default)]
pub min_sz: NumberString,
#[serde(default)]
pub max_sz: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct PositionBuilderResult {
#[serde(default)]
pub acct_lv: String,
#[serde(default)]
pub adj_eq: NumberString,
#[serde(default)]
pub imr: NumberString,
#[serde(default)]
pub mmr: NumberString,
#[serde(default)]
pub mr: NumberString,
#[serde(default)]
pub pos_data: Vec<PositionBuilderPosition>,
#[serde(default)]
pub asset_data: Vec<PositionBuilderAsset>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct PositionBuilderPosition {
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub pos: NumberString,
#[serde(default)]
pub avg_px: NumberString,
#[serde(default)]
pub upl: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct PositionBuilderAsset {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub eq: NumberString,
}