use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct WalletBalance {
pub list: Vec<AccountBalance>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AccountBalance {
pub account_type: String,
#[serde(default)]
pub account_l_t_v: String,
#[serde(default)]
pub account_i_m_rate: String,
#[serde(default)]
pub account_m_m_rate: String,
#[serde(default)]
pub total_equity: String,
#[serde(default)]
pub total_wallet_balance: String,
#[serde(default)]
pub total_margin_balance: String,
#[serde(default)]
pub total_available_balance: String,
#[serde(default)]
pub total_perp_u_p_l: String,
#[serde(default)]
pub total_initial_margin: String,
#[serde(default)]
pub total_maintenance_margin: String,
#[serde(default)]
pub coin: Vec<CoinBalance>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CoinBalance {
pub coin: String,
#[serde(default)]
pub equity: String,
#[serde(default)]
pub usd_value: String,
#[serde(default)]
pub wallet_balance: String,
#[serde(default)]
pub free: String,
#[serde(default)]
pub locked: String,
#[serde(default)]
pub available_to_withdraw: String,
#[serde(default)]
pub available_to_borrow: String,
#[serde(default)]
pub borrow_amount: String,
#[serde(default)]
pub accrued_interest: String,
#[serde(default)]
pub total_order_i_m: String,
#[serde(default)]
pub total_position_i_m: String,
#[serde(default)]
pub total_position_m_m: String,
#[serde(default)]
pub unrealised_pnl: String,
#[serde(default)]
pub cum_realised_pnl: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct AccountInfo {
#[serde(default)]
pub unified_margin_status: i32,
#[serde(default)]
pub margin_mode: String,
#[serde(default)]
pub dcp_status: String,
#[serde(default)]
pub time_window: i32,
#[serde(default)]
pub smp_group: i32,
#[serde(default)]
pub is_master_trader: bool,
#[serde(default)]
pub spot_hedging_status: String,
#[serde(default)]
pub updated_time: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FeeRates {
pub category: String,
pub list: Vec<FeeRate>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct FeeRate {
pub symbol: String,
#[serde(default)]
pub base_coin: String,
pub taker_fee_rate: String,
pub maker_fee_rate: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TransactionLogs {
pub list: Vec<TransactionLog>,
#[serde(default)]
pub next_page_cursor: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct TransactionLog {
pub id: String,
#[serde(default)]
pub symbol: String,
pub category: String,
#[serde(default)]
pub side: String,
pub transaction_time: String,
#[serde(rename = "type")]
pub tx_type: String,
#[serde(default)]
pub qty: String,
#[serde(default)]
pub size: String,
pub currency: String,
#[serde(default)]
pub trade_price: String,
#[serde(default)]
pub funding: String,
#[serde(default)]
pub fee: String,
#[serde(default)]
pub cash_flow: String,
pub change: String,
pub cash_balance: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SetMarginModeParams {
pub set_margin_mode: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct CollateralInfo {
pub list: Vec<Collateral>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Collateral {
pub currency: String,
#[serde(default)]
pub hourly_borrow_rate: String,
#[serde(default)]
pub max_borrowing_amount: String,
#[serde(default)]
pub free_borrowing_amount: String,
#[serde(default)]
pub free_borrow_limit: String,
#[serde(default)]
pub borrow_usable_switch: bool,
#[serde(default)]
pub collateral_switch: bool,
#[serde(default)]
pub collateral_ratio: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BorrowHistory {
pub list: Vec<BorrowRecord>,
#[serde(default)]
pub next_page_cursor: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct BorrowRecord {
pub currency: String,
pub created_time: String,
#[serde(default)]
pub borrow_cost: String,
#[serde(default)]
pub hourly_borrow_rate: String,
#[serde(default)]
pub interest_bearing_borrow_size: String,
#[serde(default)]
pub cost_exemption: String,
}