use serde::{Deserialize, Serialize};
use crate::futures::models::de;
#[derive(Debug, Deserialize)]
pub struct Balance {
pub asset: String,
#[serde(rename = "walletBalance", alias = "balance")]
pub wallet_balance: String,
#[serde(rename = "crossWalletBalance")]
pub cross_wallet_balance: String,
#[serde(rename = "crossUnPnl")]
pub cross_unpnl: String,
#[serde(rename = "availableBalance")]
pub available_balance: String,
#[serde(rename = "maxWithdrawAmount")]
pub max_withdraw_amount: String,
#[serde(rename = "updateTime")]
pub update_time: u64,
}
#[derive(Debug, Deserialize)]
pub struct PositionSideDualResponse {
#[serde(rename = "dualSidePosition")]
pub dual_side_position: bool,
}
#[derive(Debug, Deserialize)]
pub struct LeverageBracket {
pub symbol: String,
pub brackets: Vec<Bracket>,
}
#[derive(Debug, Deserialize)]
pub struct Bracket {
pub bracket: u32,
#[serde(rename = "initialLeverage")]
pub initial_leverage: u32,
#[serde(rename = "notionalCap", deserialize_with = "de::string_or_number")]
pub notional_cap: String,
#[serde(rename = "notionalFloor", deserialize_with = "de::string_or_number")]
pub notional_floor: String,
#[serde(rename = "maintMarginRatio", deserialize_with = "de::string_or_number")]
pub maint_margin_ratio: String,
#[serde(deserialize_with = "de::string_or_number")]
pub cum: String,
}
#[derive(Debug, Deserialize)]
pub struct SetLeverageResponse {
pub leverage: u32,
#[serde(rename = "maxNotionalValue")]
pub max_notional_value: String,
pub symbol: String,
}
#[derive(Debug, Deserialize)]
pub struct CancelAllResponse {
pub code: i64,
pub msg: String,
}
#[derive(Debug, Deserialize)]
pub struct BatchOrderResult {
#[serde(rename = "orderId")]
pub order_id: Option<i64>,
pub code: Option<i64>,
pub msg: Option<String>,
pub symbol: Option<String>,
pub status: Option<String>,
}
#[derive(Debug, Deserialize)]
pub struct StatusMsgResponse {
pub code: i64,
pub msg: String,
}
#[derive(Debug, Deserialize)]
pub struct MmpResponse {
pub symbol: String,
#[serde(rename = "quantityLimit")]
pub quantity_limit: String,
#[serde(rename = "deltaLimit")]
pub delta_limit: String,
#[serde(rename = "timeWindowMs")]
pub time_window_ms: u64,
#[serde(rename = "frozenTimeMs")]
pub frozen_time_ms: u64,
}
#[derive(Debug, Serialize)]
pub struct MmpUpdateParams {
pub symbol: String,
#[serde(rename = "quantityLimit")]
pub quantity_limit: String,
#[serde(rename = "deltaLimit")]
pub delta_limit: String,
#[serde(rename = "timeWindowMs")]
pub time_window_ms: u64,
#[serde(rename = "frozenTimeMs")]
pub frozen_time_ms: u64,
}
#[derive(Debug, Serialize)]
pub struct WalletTransferParams {
pub asset: String,
pub amount: String,
#[serde(rename = "type")]
pub transfer_type: u32,
}
#[derive(Debug, Deserialize)]
pub struct WalletTransferResponse {
#[serde(rename = "tranId")]
pub tran_id: i64,
}
#[derive(Debug, Deserialize)]
pub struct AdlQuantileResponse {
pub symbol: String,
#[serde(rename = "adlQuantile")]
pub adl_quantile: serde_json::Value,
}
#[derive(Debug, Deserialize)]
pub struct CommissionRateResponse {
pub symbol: String,
#[serde(rename = "makerCommissionRate")]
pub maker_commission_rate: String,
#[serde(rename = "takerCommissionRate")]
pub taker_commission_rate: String,
}
#[derive(Debug, Deserialize)]
pub struct MultiAssetsModeResponse {
#[serde(rename = "multiAssetsMargin")]
pub multi_assets_margin: bool,
}