use crate::models::common::*;
use serde::{Deserialize, Serialize};
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct PositionList {
pub category: String,
pub list: Vec<Position>,
#[serde(default)]
pub next_page_cursor: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Position {
pub position_idx: i32,
#[serde(default)]
pub risk_id: i32,
#[serde(default)]
pub risk_limit_value: String,
pub symbol: String,
pub side: String,
pub size: String,
#[serde(default)]
pub avg_price: String,
#[serde(default)]
pub position_value: String,
#[serde(default)]
pub trade_mode: i32,
#[serde(default)]
pub position_status: String,
#[serde(default)]
pub leverage: String,
#[serde(default)]
pub mark_price: String,
#[serde(default)]
pub liq_price: String,
#[serde(default)]
pub bust_price: String,
#[serde(default)]
pub position_mm: String,
#[serde(default)]
pub position_im: String,
#[serde(default)]
pub take_profit: String,
#[serde(default)]
pub stop_loss: String,
#[serde(default)]
pub trailing_stop: String,
#[serde(default)]
pub unrealised_pnl: String,
#[serde(default)]
pub cum_realised_pnl: String,
#[serde(default)]
pub created_time: String,
#[serde(default)]
pub updated_time: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SetLeverageParams {
pub category: Category,
pub symbol: String,
pub buy_leverage: String,
pub sell_leverage: String,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct TradingStopParams {
pub category: Category,
pub symbol: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub take_profit: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub stop_loss: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub trailing_stop: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub tp_trigger_by: Option<TriggerBy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub sl_trigger_by: Option<TriggerBy>,
#[serde(skip_serializing_if = "Option::is_none")]
pub position_idx: Option<i32>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SwitchPositionModeParams {
pub category: Category,
#[serde(skip_serializing_if = "Option::is_none")]
pub symbol: Option<String>,
#[serde(skip_serializing_if = "Option::is_none")]
pub coin: Option<String>,
pub mode: i32,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct SetRiskLimitParams {
pub category: Category,
pub symbol: String,
pub risk_id: i32,
#[serde(skip_serializing_if = "Option::is_none")]
pub position_idx: Option<i32>,
}
#[derive(Debug, Clone, Serialize)]
#[serde(rename_all = "camelCase")]
pub struct AddMarginParams {
pub category: Category,
pub symbol: String,
pub margin: String,
#[serde(skip_serializing_if = "Option::is_none")]
pub position_idx: Option<i32>,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ClosedPnlList {
pub category: String,
pub list: Vec<ClosedPnl>,
#[serde(default)]
pub next_page_cursor: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ClosedPnl {
pub symbol: String,
pub order_id: String,
pub side: String,
pub qty: String,
pub order_price: String,
pub order_type: String,
pub exec_type: String,
pub closed_size: String,
pub cum_entry_value: String,
pub avg_entry_price: String,
pub cum_exit_value: String,
pub avg_exit_price: String,
pub closed_pnl: String,
pub fill_count: String,
pub leverage: String,
pub created_time: String,
pub updated_time: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct ExecutionList {
pub category: String,
pub list: Vec<Execution>,
#[serde(default)]
pub next_page_cursor: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
pub struct Execution {
pub symbol: String,
pub order_id: String,
#[serde(default)]
pub order_link_id: String,
pub side: String,
pub order_price: String,
pub order_qty: String,
pub order_type: String,
pub exec_id: String,
pub exec_price: String,
pub exec_qty: String,
pub exec_fee: String,
pub exec_type: String,
pub exec_value: String,
#[serde(default)]
pub fee_rate: String,
pub exec_time: String,
}