use serde::Deserialize;
use crate::model::{InstType, NumberString, PositionSide, TradeMode};
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct AccountConfig {
#[serde(default)]
pub uid: String,
#[serde(default)]
pub acct_lv: String,
#[serde(default)]
pub pos_mode: String,
#[serde(default)]
pub greeks_type: String,
#[serde(default)]
pub auto_loan: bool,
#[serde(default)]
pub perm: String,
#[serde(default)]
pub level: String,
#[serde(default)]
pub level_tmp: String,
#[serde(default)]
pub ct_iso_mode: String,
#[serde(default)]
pub mgn_iso_mode: String,
#[serde(default)]
pub spot_offset_type: String,
#[serde(default)]
pub role_type: String,
#[serde(default)]
pub trader_insts: Vec<String>,
#[serde(default)]
pub spot_role_type: String,
#[serde(default)]
pub spot_trader_insts: Vec<String>,
#[serde(default)]
pub op_auth: String,
#[serde(default)]
pub ip: String,
#[serde(default)]
pub main_uid: String,
#[serde(default)]
pub kyc_lv: String,
#[serde(default)]
pub label: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SetPositionModeResult {
#[serde(default)]
pub pos_mode: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct LeverageInfo {
#[serde(default)]
pub inst_id: String,
pub mgn_mode: TradeMode,
pub pos_side: PositionSide,
#[serde(default)]
pub lever: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct AdjustLeverageInfo {
#[serde(default)]
pub est_avail_quote_trans: NumberString,
#[serde(default)]
pub est_avail_trans: NumberString,
#[serde(default)]
pub est_liq_px: NumberString,
#[serde(default)]
pub est_max_amt: NumberString,
#[serde(default)]
pub est_mgn: NumberString,
#[serde(default)]
pub est_quote_mgn: NumberString,
#[serde(default)]
pub est_quote_max_amt: NumberString,
#[serde(default)]
pub exist_ord: bool,
#[serde(default)]
pub max_lever: NumberString,
#[serde(default)]
pub min_lever: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct MaxOrderSize {
pub inst_id: String,
#[serde(default)]
pub max_buy: NumberString,
#[serde(default)]
pub max_sell: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct MaxAvailableSize {
pub inst_id: String,
#[serde(default)]
pub avail_buy: NumberString,
#[serde(default)]
pub avail_sell: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct FeeRate {
#[serde(default)]
pub level: String,
#[serde(default)]
pub fee_group: Vec<FeeGroup>,
#[serde(default)]
pub delivery: NumberString,
#[serde(default)]
pub exercise: NumberString,
pub inst_type: InstType,
#[serde(default)]
pub ts: NumberString,
#[serde(default)]
pub taker: NumberString,
#[serde(default)]
pub maker: NumberString,
#[serde(rename = "takerUSDC", default)]
pub taker_usdc: NumberString,
#[serde(rename = "makerUSDC", default)]
pub maker_usdc: NumberString,
#[serde(default)]
pub rule_type: String,
#[serde(default)]
pub settle: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct FeeGroup {
#[serde(default)]
pub taker: NumberString,
#[serde(default)]
pub maker: NumberString,
#[serde(default)]
pub group_id: String,
#[serde(default)]
pub elp_maker: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct MaxWithdrawal {
pub ccy: String,
#[serde(default)]
pub max_wd: NumberString,
#[serde(default)]
pub max_wd_ex: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct AdjustMarginResult {
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub pos_side: String,
#[serde(default)]
pub amt: NumberString,
#[serde(rename = "type", default)]
pub adjustment_type: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct AccountInstrument {
#[serde(default)]
pub inst_type: String,
#[serde(default)]
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,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SetCollateralAssetsResult {
#[serde(rename = "type", default)]
pub collateral_type: String,
#[serde(default)]
pub ccy_list: Vec<String>,
#[serde(default)]
pub collateral_enabled: bool,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SetGreeksResult {
#[serde(default)]
pub greeks_type: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SetIsolatedModeResult {
#[serde(default)]
pub iso_mode: String,
#[serde(rename = "type", default)]
pub mode_type: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SetAutoLoanResult {
#[serde(default)]
pub auto_loan: bool,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SetAccountLevelResult {
#[serde(default)]
pub acct_lv: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct ActivateOptionResult {
#[serde(default)]
pub ts: NumberString,
}