use crate::info::{AssetPosition, Level, MarginSummary};
use serde::Deserialize;
#[derive(Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct UserStateResponse {
pub asset_positions: Vec<AssetPosition>,
pub cross_margin_summary: MarginSummary,
pub margin_summary: MarginSummary,
pub withdrawable: String,
}
#[derive(serde::Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct OpenOrdersResponse {
pub coin: String,
pub limit_px: String,
pub oid: i32,
pub side: String,
pub sz: String,
pub timestamp: u64,
}
#[derive(serde::Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct UserFillsResponse {
pub closed_pnl: String,
pub coin: String,
pub crossed: bool,
pub dir: String,
pub hash: String,
pub oid: u64,
pub px: String,
pub side: String,
pub start_position: String,
pub sz: String,
pub time: u64,
}
#[derive(serde::Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct FundingHistoryResponse {
pub coin: String,
pub funding_rate: String,
pub premium: String,
pub time: u64,
}
#[derive(serde::Deserialize, Debug)]
#[serde(rename_all = "camelCase")]
pub struct L2SnapshotResponse {
pub coin: String,
pub levels: Vec<Vec<Level>>,
pub time: u64,
}
#[derive(serde::Deserialize, Debug)]
pub struct CandlesSnapshotResponse {
#[serde(rename = "t")]
pub time_open: u64,
#[serde(rename = "T")]
pub time_close: u64,
#[serde(rename = "s")]
pub coin: String,
#[serde(rename = "i")]
pub candle_interval: String,
#[serde(rename = "o")]
pub open: String,
#[serde(rename = "c")]
pub close: String,
#[serde(rename = "h")]
pub high: String,
#[serde(rename = "l")]
pub low: String,
#[serde(rename = "v")]
pub vlm: String,
#[serde(rename = "n")]
pub num_trades: u64,
}