use serde::Deserialize;
use crate::NumberString;
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SubAccountEntry {
#[serde(default)]
pub sub_acct: String,
#[serde(default)]
pub label: String,
#[serde(default)]
pub uid: String,
#[serde(default)]
pub ts: NumberString,
#[serde(default)]
pub enable: bool,
#[serde(default)]
pub can_trans_out: bool,
#[serde(default)]
pub g_auth: bool,
#[serde(default)]
pub mobile: String,
#[serde(default, rename = "type")]
pub sub_type: String,
#[serde(default)]
pub sub_acct_lv: String,
#[serde(default)]
pub first_lv_sub_acct: String,
#[serde(default)]
pub if_dma: bool,
#[serde(default)]
pub frozen_func: Vec<String>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SubAccountApiKey {
#[serde(default)]
pub sub_acct: String,
#[serde(default)]
pub label: String,
#[serde(default)]
pub api_key: String,
#[serde(default)]
pub secret_key: String,
#[serde(default)]
pub passphrase: String,
#[serde(default)]
pub perm: String,
#[serde(default)]
pub ip: String,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SubAccountTradingBalanceDetail {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub avail_bal: NumberString,
#[serde(default)]
pub avail_eq: NumberString,
#[serde(default)]
pub cash_bal: NumberString,
#[serde(default)]
pub eq: NumberString,
#[serde(default)]
pub eq_usd: NumberString,
#[serde(default)]
pub dis_eq: NumberString,
#[serde(default)]
pub frozen_bal: NumberString,
#[serde(default)]
pub ord_frozen: NumberString,
#[serde(default)]
pub upl: NumberString,
#[serde(default)]
pub interest: NumberString,
#[serde(default)]
pub liab: NumberString,
#[serde(default)]
pub cross_liab: NumberString,
#[serde(default)]
pub iso_eq: NumberString,
#[serde(default)]
pub iso_liab: NumberString,
#[serde(default)]
pub u_time: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SubAccountTradingBalance {
#[serde(default)]
pub details: Vec<SubAccountTradingBalanceDetail>,
#[serde(default)]
pub adj_eq: NumberString,
#[serde(default)]
pub total_eq: NumberString,
#[serde(default)]
pub imr: NumberString,
#[serde(default)]
pub mmr: NumberString,
#[serde(default)]
pub mgn_ratio: NumberString,
#[serde(default)]
pub iso_eq: NumberString,
#[serde(default)]
pub ord_froz: NumberString,
#[serde(default)]
pub notional_usd: NumberString,
#[serde(default)]
pub upl: NumberString,
#[serde(default)]
pub u_time: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SubAccountFundingBalance {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub avail_bal: NumberString,
#[serde(default)]
pub bal: NumberString,
#[serde(default)]
pub frozen_bal: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SubAccountMaxWithdrawal {
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub max_wd: NumberString,
#[serde(default)]
pub max_wd_ex: NumberString,
#[serde(default)]
pub spot_offset_max_wd: NumberString,
#[serde(default)]
pub spot_offset_max_wd_ex: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SubAccountBill {
#[serde(default)]
pub bill_id: String,
#[serde(default, rename = "type")]
pub bill_type: String,
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub amt: NumberString,
#[serde(default)]
pub sub_acct: String,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct ManagedSubAccountBill {
#[serde(default)]
pub bill_id: String,
#[serde(default, rename = "type")]
pub bill_type: String,
#[serde(default)]
pub ccy: String,
#[serde(default)]
pub amt: NumberString,
#[serde(default)]
pub sub_acct: String,
#[serde(default)]
pub sub_uid: String,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SubAccountTransferResult {
#[serde(default)]
pub trans_id: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct SetTransferOutResult {
#[serde(default)]
pub sub_acct: String,
#[serde(default)]
pub can_trans_out: bool,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct EntrustSubAccount {
#[serde(default)]
pub sub_acct: String,
}