use serde::Deserialize;
use super::ExtraFields;
use crate::model::NumberString;
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct PositionUpdate {
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub mgn_mode: String,
#[serde(default)]
pub pos_id: String,
#[serde(default)]
pub pos_side: String,
#[serde(default)]
pub pos: NumberString,
#[serde(default)]
pub pos_ccy: String,
#[serde(default)]
pub avail_pos: NumberString,
#[serde(default)]
pub avg_px: NumberString,
#[serde(default)]
pub non_settle_avg_px: NumberString,
#[serde(default)]
pub upl: NumberString,
#[serde(default)]
pub upl_ratio: NumberString,
#[serde(default)]
pub upl_last_px: NumberString,
#[serde(default)]
pub upl_ratio_last_px: NumberString,
#[serde(default)]
pub lever: NumberString,
#[serde(default)]
pub liq_px: NumberString,
#[serde(default)]
pub mark_px: NumberString,
#[serde(default)]
pub imr: NumberString,
#[serde(default)]
pub margin: NumberString,
#[serde(default)]
pub mgn_ratio: NumberString,
#[serde(default)]
pub mmr: NumberString,
#[serde(default)]
pub liab: NumberString,
#[serde(default)]
pub liab_ccy: String,
#[serde(default)]
pub interest: NumberString,
#[serde(default)]
pub usd_px: NumberString,
#[serde(default)]
pub hedged_pos: NumberString,
#[serde(default)]
pub trade_id: String,
#[serde(default)]
pub opt_val: NumberString,
#[serde(default)]
pub pending_close_ord_liab_val: NumberString,
#[serde(default)]
pub notional_usd: NumberString,
#[serde(default)]
pub adl: String,
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub last: NumberString,
#[serde(default)]
pub idx_px: NumberString,
#[serde(default)]
pub be_px: NumberString,
#[serde(default)]
pub delta_bs: NumberString,
#[serde(default)]
pub delta_pa: NumberString,
#[serde(default)]
pub gamma_bs: NumberString,
#[serde(default)]
pub gamma_pa: NumberString,
#[serde(default)]
pub theta_bs: NumberString,
#[serde(default)]
pub theta_pa: NumberString,
#[serde(default)]
pub vega_bs: NumberString,
#[serde(default)]
pub vega_pa: NumberString,
#[serde(default)]
pub spot_in_use_amt: NumberString,
#[serde(default)]
pub spot_in_use_ccy: String,
#[serde(default)]
pub cl_spot_in_use_amt: NumberString,
#[serde(default)]
pub max_spot_in_use_amt: NumberString,
#[serde(default)]
pub biz_ref_id: String,
#[serde(default)]
pub biz_ref_type: String,
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub c_time: NumberString,
#[serde(default)]
pub u_time: NumberString,
#[serde(default)]
pub p_time: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct BalanceAndPositionUpdate {
#[serde(default)]
pub p_time: NumberString,
pub event_type: String,
#[serde(default)]
pub bal_data: Vec<BalData>,
#[serde(default)]
pub pos_data: Vec<PosData>,
#[serde(default)]
pub trades: Vec<Trade>,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct BalData {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub cash_bal: NumberString,
#[serde(default)]
pub u_time: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct PosData {
#[serde(default)]
pub pos_id: String,
#[serde(default)]
pub trade_id: String,
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub mgn_mode: String,
#[serde(default)]
pub pos_side: String,
#[serde(default)]
pub pos: NumberString,
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub pos_ccy: String,
#[serde(default)]
pub avg_px: NumberString,
#[serde(default)]
pub non_settle_avg_px: String,
#[serde(default)]
pub settled_pnl: String,
#[serde(default)]
pub u_time: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct Trade {
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub trade_id: String,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct BalanceAndPositionBalance {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub cash_bal: NumberString,
#[serde(default)]
pub u_time: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct BalanceAndPositionPosition {
#[serde(default)]
pub pos_id: String,
#[serde(default)]
pub trade_id: String,
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub mgn_mode: String,
#[serde(default)]
pub pos_side: String,
#[serde(default)]
pub pos: NumberString,
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub pos_ccy: String,
#[serde(default)]
pub avg_px: NumberString,
#[serde(default)]
pub non_settle_avg_px: NumberString,
#[serde(default)]
pub settled_pnl: NumberString,
#[serde(default)]
pub u_time: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct BalanceAndPositionTrade {
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub trade_id: String,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct LiquidationWarningUpdate {
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub pos_side: String,
#[serde(default)]
pub pos: NumberString,
#[serde(default)]
pub mgn_mode: String,
#[serde(default)]
pub mgn_ratio: NumberString,
#[serde(default)]
pub mark_px: NumberString,
#[serde(default)]
pub liq_px: NumberString,
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub u_time: NumberString,
#[serde(default)]
pub p_time: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct AccountGreeksUpdate {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub delta_bs: NumberString,
#[serde(default)]
pub delta_pa: NumberString,
#[serde(default)]
pub gamma_bs: NumberString,
#[serde(default)]
pub gamma_pa: NumberString,
#[serde(default)]
pub theta_bs: NumberString,
#[serde(default)]
pub theta_pa: NumberString,
#[serde(default)]
pub vega_bs: NumberString,
#[serde(default)]
pub vega_pa: NumberString,
#[serde(default)]
pub ts: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct AccountUpdate {
#[serde(default)]
pub adj_eq: NumberString,
#[serde(default)]
pub avail_eq: NumberString,
#[serde(default)]
pub borrow_froz: NumberString,
#[serde(default)]
pub delta: NumberString,
#[serde(default)]
pub delta_lever: NumberString,
#[serde(default)]
pub delta_neutral_status: String,
#[serde(default)]
pub details: Vec<AccountBalanceUpdate>,
#[serde(default)]
pub imr: NumberString,
#[serde(default)]
pub iso_eq: NumberString,
#[serde(default)]
pub mgn_ratio: NumberString,
#[serde(default)]
pub mmr: NumberString,
#[serde(default)]
pub notional_usd: NumberString,
#[serde(default)]
pub notional_usd_for_borrow: NumberString,
#[serde(default)]
pub notional_usd_for_futures: NumberString,
#[serde(default)]
pub notional_usd_for_option: NumberString,
#[serde(default)]
pub notional_usd_for_swap: NumberString,
#[serde(default)]
pub ord_froz: NumberString,
#[serde(default)]
pub total_eq: NumberString,
#[serde(default)]
pub u_time: NumberString,
#[serde(default)]
pub upl: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}
#[derive(Debug, Clone, Default, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct AccountBalanceUpdate {
#[serde(default)]
pub auto_lend_status: String,
#[serde(default)]
pub auto_lend_mt_amt: NumberString,
#[serde(default)]
pub avail_bal: NumberString,
#[serde(default)]
pub avail_eq: NumberString,
#[serde(default)]
pub borrow_froz: NumberString,
#[serde(default)]
pub cash_bal: NumberString,
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub coin_usd_price: NumberString,
#[serde(default)]
pub cross_liab: NumberString,
#[serde(default)]
pub col_res: String,
#[serde(default)]
pub collateral_enabled: bool,
#[deprecated(note = "OKX deprecated collateralRestrict; use col_res instead")]
#[serde(default)]
pub collateral_restrict: bool,
#[serde(default)]
pub col_borr_auto_conversion: String,
#[serde(default)]
pub dis_eq: NumberString,
#[serde(default)]
pub eq: NumberString,
#[serde(default)]
pub eq_usd: NumberString,
#[serde(default)]
pub smt_sync_eq: NumberString,
#[serde(default)]
pub spot_copy_trading_eq: NumberString,
#[serde(default)]
pub fixed_bal: NumberString,
#[serde(default)]
pub frozen_bal: NumberString,
#[serde(default)]
pub frp_type: String,
#[serde(default)]
pub imr: NumberString,
#[serde(default)]
pub interest: NumberString,
#[serde(default)]
pub iso_eq: NumberString,
#[serde(default)]
pub iso_liab: NumberString,
#[serde(default)]
pub iso_upl: NumberString,
#[serde(default)]
pub liab: NumberString,
#[serde(default)]
pub max_loan: NumberString,
#[serde(default)]
pub mgn_ratio: NumberString,
#[serde(default)]
pub mmr: NumberString,
#[serde(default)]
pub notional_lever: NumberString,
#[serde(default)]
pub ord_frozen: NumberString,
#[serde(default)]
pub reward_bal: NumberString,
#[serde(default)]
pub spot_in_use_amt: NumberString,
#[serde(default)]
pub cl_spot_in_use_amt: NumberString,
#[serde(default)]
pub max_spot_in_use_amt: NumberString,
#[serde(default)]
pub spot_iso_bal: NumberString,
#[serde(default)]
pub stgy_eq: NumberString,
#[serde(default)]
pub twap: NumberString,
#[serde(default)]
pub u_time: NumberString,
#[serde(default)]
pub upl: NumberString,
#[serde(default)]
pub upl_liab: NumberString,
#[serde(default)]
pub spot_bal: NumberString,
#[serde(default)]
pub open_avg_px: NumberString,
#[serde(default)]
pub acc_avg_px: NumberString,
#[serde(default)]
pub spot_upl: NumberString,
#[serde(default)]
pub spot_upl_ratio: NumberString,
#[serde(default)]
pub total_pnl: NumberString,
#[serde(default)]
pub total_pnl_ratio: NumberString,
#[serde(flatten, default)]
pub extra: ExtraFields,
}