use std::collections::HashMap;
use serde::Deserialize;
use crate::model::NumberString;
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct RiskState {
#[serde(default)]
pub at_risk: bool,
#[serde(default)]
pub at_risk_idx: Vec<String>,
#[serde(default)]
pub at_risk_mgn: Vec<String>,
#[serde(default)]
pub ts: NumberString,
}
#[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 uly: String,
#[serde(default)]
pub inst_family: String,
#[serde(default)]
pub max_sz: NumberString,
#[serde(default)]
pub pos_type: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SetRiskOffsetAmountResult {
#[serde(default)]
pub ccy: String,
#[serde(rename = "clSpotInUseAmt", default)]
pub cl_spot_in_use_amt: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct PositionBuilderResult {
#[serde(default)]
pub eq: NumberString,
#[serde(default)]
pub total_mmr: NumberString,
#[serde(default)]
pub total_imr: NumberString,
#[serde(default)]
pub borrow_mmr: NumberString,
#[serde(default)]
pub deriv_mmr: NumberString,
#[serde(default)]
pub margin_ratio: NumberString,
#[serde(default)]
pub upl: NumberString,
#[serde(default)]
pub acct_lever: NumberString,
#[serde(default)]
pub ts: NumberString,
#[serde(default)]
pub assets: Vec<PositionBuilderAsset>,
#[serde(default)]
pub risk_unit_data: Vec<PositionBuilderRiskUnit>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct PositionBuilderAsset {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub avail_eq: NumberString,
#[serde(default)]
pub spot_in_use: NumberString,
#[serde(default)]
pub borrow_mmr: NumberString,
#[serde(default)]
pub borrow_imr: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct PositionBuilderRiskUnit {
#[serde(default)]
pub risk_unit: String,
#[serde(default)]
pub mmr_bf: NumberString,
#[serde(default)]
pub mmr: NumberString,
#[serde(default)]
pub imr_bf: NumberString,
#[serde(default)]
pub imr: NumberString,
#[serde(default)]
pub upl: NumberString,
#[serde(default)]
pub mr1: NumberString,
#[serde(default)]
pub mr2: NumberString,
#[serde(default)]
pub mr3: NumberString,
#[serde(default)]
pub mr4: NumberString,
#[serde(default)]
pub mr5: NumberString,
#[serde(default)]
pub mr6: NumberString,
#[serde(default)]
pub mr7: NumberString,
#[serde(default)]
pub mr8: NumberString,
#[serde(default)]
pub mr9: NumberString,
#[serde(default)]
pub mr1_scenarios: Option<PositionBuilderMr1Scenarios>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct PositionBuilderMr1Scenarios {
#[serde(default)]
pub vol_shock_down: HashMap<String, NumberString>,
#[serde(default)]
pub vol_same: HashMap<String, NumberString>,
#[serde(default)]
pub vol_shock_up: HashMap<String, NumberString>,
}