use serde::Deserialize;
use crate::model::{InstType, NumberString, PositionSide, RestRow, TradeMode};
pub type VipInterestAccrued = RestRow;
pub type VipInterestDeducted = RestRow;
pub type VipLoanOrder = RestRow;
pub type FixedLoanBorrowingLimit = RestRow;
pub type FixedLoanBorrowingQuote = RestRow;
pub type FixedLoanBorrowingOrder = RestRow;
pub type SpotBorrowRepayResult = RestRow;
pub type SetAutoRepayResult = RestRow;
pub type SpotBorrowRepayHistory = RestRow;
pub type SetAutoEarnResult = RestRow;
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct AccountBalance {
#[serde(default)]
pub total_eq: NumberString,
#[serde(default)]
pub adj_eq: NumberString,
#[serde(default)]
pub details: Vec<BalanceDetail>,
#[serde(default)]
pub u_time: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct BalanceDetail {
pub ccy: String,
#[serde(default)]
pub eq: NumberString,
#[serde(default)]
pub cash_bal: NumberString,
#[serde(default)]
pub avail_bal: NumberString,
#[serde(default)]
pub frozen_bal: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct Position {
pub inst_type: InstType,
pub inst_id: String,
#[serde(default)]
pub pos_id: String,
pub pos_side: PositionSide,
pub mgn_mode: TradeMode,
#[serde(default)]
pub pos: NumberString,
#[serde(default)]
pub avg_px: NumberString,
#[serde(default)]
pub upl: NumberString,
#[serde(default)]
pub lever: NumberString,
#[serde(default)]
pub liq_px: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct PositionRisk {
#[serde(default)]
pub adj_eq: NumberString,
#[serde(default)]
pub bal_data: Vec<BalanceDetail>,
#[serde(default)]
pub pos_data: Vec<Position>,
#[serde(default)]
pub ts: NumberString,
}
#[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,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct AccountBill {
#[serde(default)]
pub bill_id: String,
#[serde(default)]
pub inst_type: String,
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub mgn_mode: String,
#[serde(rename = "type", default)]
pub bill_type: String,
#[serde(default)]
pub sub_type: String,
#[serde(default)]
pub sz: NumberString,
#[serde(default)]
pub bal: NumberString,
#[serde(default)]
pub ts: NumberString,
}
#[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 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 {
pub inst_type: InstType,
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub category: String,
#[serde(default)]
pub maker: NumberString,
#[serde(default)]
pub taker: NumberString,
#[serde(default)]
pub ts: 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 PositionHistory {
pub inst_type: InstType,
pub inst_id: String,
#[serde(default)]
pub pos_id: String,
pub mgn_mode: TradeMode,
#[serde(rename = "type", default)]
pub close_type: String,
#[serde(default)]
pub realized_pnl: NumberString,
#[serde(default)]
pub c_time: NumberString,
#[serde(default)]
pub u_time: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct RiskState {
#[serde(default)]
pub at_risk: String,
#[serde(default)]
pub ts: 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 MaxLoan {
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub mgn_mode: String,
#[serde(default)]
pub mgn_ccy: String,
#[serde(default)]
pub max_loan: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct InterestAccrued {
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub mgn_mode: String,
#[serde(default)]
pub interest: NumberString,
#[serde(default)]
pub interest_rate: NumberString,
#[serde(default)]
pub liab: NumberString,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct InterestRate {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub interest_rate: NumberString,
}
#[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 BorrowRepayResult {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub side: String,
#[serde(default)]
pub amt: NumberString,
#[serde(default)]
pub ord_id: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct BorrowRepayHistory {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub side: String,
#[serde(default)]
pub amt: NumberString,
#[serde(default)]
pub ord_id: String,
#[serde(default)]
pub state: String,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct InterestLimit {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub rate: NumberString,
#[serde(default)]
pub loan_quota: NumberString,
#[serde(default)]
pub used_loan: 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 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 SetRiskOffsetTypeResult {
#[serde(rename = "type", default)]
pub risk_offset_type: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SetAutoLoanResult {
#[serde(default)]
pub auto_loan: String,
}
#[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 result: String,
}
#[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,
}