use serde::Deserialize;
#[derive(Debug, Clone, Deserialize)]
pub struct UserOrder {
pub avg_price: String,
pub cancel_reason: String,
pub client_order_id: String,
pub completion_percentage: String,
pub contract_expiry_type: String,
pub cumulative_quantity: String,
pub filled_value: String,
pub leaves_quantity: String,
pub limit_price: String,
pub number_of_fills: String,
pub order_id: String,
pub order_side: String,
pub order_type: String,
pub outstanding_hold_amount: String,
pub post_only: String,
pub product_id: String,
pub product_type: String,
pub reject_reason: String,
pub retail_portfolio_id: String,
pub risk_managed_by: String,
pub status: String,
pub stop_price: String,
pub time_in_force: String,
pub total_fees: String,
pub total_value_after_fees: String,
pub trigger_status: String,
pub creation_time: String,
pub end_time: String,
pub start_time: String,
}
#[derive(Debug, Clone, Deserialize)]
pub struct PerpetualFuturesPosition {
pub product_id: String,
pub portfolio_uuid: String,
pub vwap: String,
pub entry_vwap: String,
pub position_side: String,
pub margin_type: String,
pub net_size: String,
pub buy_order_size: String,
pub sell_order_size: String,
pub leverage: String,
pub mark_price: String,
pub liquidation_price: String,
pub im_notional: String,
pub mm_notional: String,
pub position_notional: String,
pub unrealized_pnl: String,
pub aggregated_pnl: String,
}
#[derive(Debug, Clone, Deserialize)]
pub struct ExpiringFuturesPosition {
pub product_id: String,
pub side: String,
pub number_of_contracts: String,
pub realized_pnl: String,
pub unrealized_pnl: String,
pub entry_price: String,
}
#[derive(Debug, Clone, Deserialize)]
pub struct Positions {
pub perpetual_futures_positions: Vec<PerpetualFuturesPosition>,
pub expiring_futures_positions: Vec<ExpiringFuturesPosition>,
}
#[derive(Debug, Clone, Deserialize)]
pub struct UserEvent {
#[serde(rename = "type")]
pub event_type: String,
pub orders: Vec<UserOrder>,
pub positions: Positions,
}
#[derive(Debug, Clone, Deserialize)]
pub struct UserMessage {
pub channel: String,
pub client_id: String,
pub timestamp: String,
pub sequence_num: i64,
pub events: Vec<UserEvent>,
}