use crate::dto::common::MarginMode;
use serde::{Deserialize, Serialize};
#[derive(Serialize, Deserialize, Debug, Clone)]
pub struct CloseOrderAlgo {
pub algo_id: String,
pub sl_trigger_px: Option<String>,
pub sl_trigger_px_type: Option<String>,
pub tp_trigger_px: Option<String>,
pub tp_trigger_px_type: Option<String>,
pub close_fraction: Option<String>,
}
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct TradingNumRequestParams {
pub inst_id: String, pub td_mode: String, pub ccy: Option<String>, pub reduce_only: Option<bool>, pub px: Option<String>, pub un_spot_offset: Option<bool>, }
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct TradingNumResponseData {
pub inst_id: String, pub avail_buy: String, pub avail_sell: String, }
#[derive(Serialize, Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct TradingSwapNumRequestParams {
pub inst_id: String, pub td_mode: String, pub ccy: Option<String>, pub px: Option<String>, pub leverage: Option<String>, pub un_spot_offset: Option<bool>, }
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct TradingSwapNumResponseData {
pub inst_id: String, pub ccy: String, pub max_buy: String, pub max_sell: String, }
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct Balance {
#[serde(rename = "uTime")]
pub u_time: String,
#[serde(rename = "totalEq")]
pub total_eq: String,
#[serde(rename = "isoEq")]
pub iso_eq: String,
#[serde(rename = "adjEq")]
pub adj_eq: String,
#[serde(rename = "availEq")]
pub avail_eq: String,
#[serde(rename = "ordFroz")]
pub ord_froz: String,
#[serde(rename = "imr")]
pub imr: String,
#[serde(rename = "mmr")]
pub mmr: String,
#[serde(rename = "borrowFroz")]
pub borrow_froz: String,
#[serde(rename = "mgnRatio")]
pub mgn_ratio: String,
#[serde(rename = "notionalUsd")]
pub notional_usd: String,
#[serde(rename = "notionalUsdForBorrow")]
pub notional_usd_for_borrow: String,
#[serde(rename = "notionalUsdForSwap")]
pub notional_usd_for_swap: String,
#[serde(rename = "notionalUsdForFutures")]
pub notional_usd_for_futures: String,
#[serde(rename = "notionalUsdForOption")]
pub notional_usd_for_option: String,
#[serde(rename = "upl")]
pub upl: String,
pub details: Vec<BalanceDetail>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct BalanceDetail {
pub ccy: String,
pub eq: String,
#[serde(rename = "cashBal")]
pub cash_bal: String,
#[serde(rename = "isoEq")]
pub iso_eq: String,
#[serde(rename = "availEq")]
pub avail_eq: String,
#[serde(rename = "disEq")]
pub dis_eq: String,
#[serde(rename = "fixedBal")]
pub fixed_bal: String,
#[serde(rename = "availBal")]
pub avail_bal: String,
#[serde(rename = "frozenBal")]
pub frozen_bal: String,
#[serde(rename = "ordFrozen")]
pub ord_frozen: String,
#[serde(rename = "liab")]
pub liab: String,
#[serde(rename = "upl")]
pub upl: String,
#[serde(rename = "uplLiab")]
pub upl_liab: String,
#[serde(rename = "crossLiab")]
pub cross_liab: String,
#[serde(rename = "isoLiab")]
pub iso_liab: String,
#[serde(rename = "rewardBal")]
pub reward_bal: String,
#[serde(rename = "mgnRatio")]
pub mgn_ratio: String,
#[serde(rename = "imr")]
pub imr: String,
#[serde(rename = "mmr")]
pub mmr: String,
#[serde(rename = "interest")]
pub interest: String,
#[serde(rename = "twap")]
pub twap: String,
#[serde(rename = "maxLoan")]
pub max_loan: String,
#[serde(rename = "eqUsd")]
pub eq_usd: String,
#[serde(rename = "borrowFroz")]
pub borrow_froz: String,
#[serde(rename = "notionalLever")]
pub notional_lever: String,
#[serde(rename = "stgyEq")]
pub stgy_eq: String,
#[serde(rename = "isoUpl")]
pub iso_upl: String,
#[serde(rename = "spotInUseAmt")]
pub spot_in_use_amt: String,
#[serde(rename = "clSpotInUseAmt")]
pub cl_spot_in_use_amt: String,
#[serde(rename = "maxSpotInUse")]
pub max_spot_in_use: String,
#[serde(rename = "spotIsoBal")]
pub spot_iso_bal: String,
#[serde(rename = "smtSyncEq")]
pub smt_sync_eq: String,
#[serde(rename = "spotCopyTradingEq")]
pub spot_copy_trading_eq: String,
#[serde(rename = "spotBal")]
pub spot_bal: String,
#[serde(rename = "openAvgPx")]
pub open_avg_px: String,
#[serde(rename = "accAvgPx")]
pub acc_avg_px: String,
#[serde(rename = "spotUpl")]
pub spot_upl: String,
#[serde(rename = "spotUplRatio")]
pub spot_upl_ratio: String,
#[serde(rename = "totalPnl")]
pub total_pnl: String,
#[serde(rename = "totalPnlRatio")]
pub total_pnl_ratio: String,
#[serde(rename = "collateralEnabled")]
pub collateral_enabled: bool,
#[serde(rename = "collateralRestrict")]
pub collateral_restrict: bool,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccountConfig {
#[serde(rename = "acctId")]
pub account_id: String,
#[serde(rename = "posMode")]
pub position_mode: String,
#[serde(rename = "autoLoan")]
pub auto_loan: bool,
pub level: String,
#[serde(rename = "mgnMode")]
pub margin_mode: MarginMode,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
pub struct AccountRisk {
pub risk: String,
#[serde(rename = "riskLvl")]
pub risk_level: String,
#[serde(rename = "totalEq")]
pub total_equity: String,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct SetLeverageRequest {
#[serde(skip_serializing_if = "Option::is_none")]
pub inst_id: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub ccy: Option<String>,
pub lever: String,
pub mgn_mode: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub pos_side: Option<String>,
}
#[derive(Debug, Clone, Serialize, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct SetLeverageData {
pub lever: String,
pub mgn_mode: String,
pub inst_id: String,
pub pos_side: String,
}
#[derive(Serialize, Deserialize, Debug, Clone)]
#[serde(rename_all = "camelCase")]
pub struct Position {
pub inst_type: String,
pub mgn_mode: String,
pub pos_id: String,
pub pos_side: String,
pub pos: String,
pub pos_ccy: Option<String>,
pub avail_pos: Option<String>,
pub avg_px: Option<String>,
pub upl: Option<String>,
pub upl_ratio: Option<String>,
pub upl_last_px: Option<String>,
pub upl_ratio_last_px: Option<String>,
pub inst_id: String,
pub lever: Option<String>,
pub liq_px: Option<String>,
pub mark_px: Option<String>,
pub imr: Option<String>,
pub margin: Option<String>,
pub mgn_ratio: Option<String>,
pub mmr: Option<String>,
pub liab: Option<String>,
pub liab_ccy: Option<String>,
pub interest: Option<String>,
pub trade_id: Option<String>,
pub opt_val: Option<String>,
pub pending_close_ord_liab_val: Option<String>,
pub notional_usd: Option<String>,
pub adl: Option<String>,
pub ccy: Option<String>,
pub last: Option<String>,
pub idx_px: Option<String>,
pub usd_px: Option<String>,
pub be_px: Option<String>,
pub delta_bs: Option<String>,
pub delta_pa: Option<String>,
pub gamma_bs: Option<String>,
pub gamma_pa: Option<String>,
pub theta_bs: Option<String>,
pub theta_pa: Option<String>,
pub vega_bs: Option<String>,
pub vega_pa: Option<String>,
pub spot_in_use_amt: Option<String>,
pub spot_in_use_ccy: Option<String>,
pub cl_spot_in_use_amt: Option<String>,
pub max_spot_in_use_amt: Option<String>,
pub realized_pnl: Option<String>,
pub pnl: Option<String>,
pub fee: Option<String>,
pub funding_fee: Option<String>,
pub liq_penalty: Option<String>,
pub close_order_algo: Option<Vec<CloseOrderAlgo>>,
pub c_time: Option<String>,
pub u_time: Option<String>,
pub biz_ref_id: Option<String>,
pub biz_ref_type: Option<String>,
}