use serde::Deserialize;
use super::balances::BalanceDetail;
use crate::model::{InstType, NumberString, PositionSide, TradeMode};
#[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 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,
}