use serde::Deserialize;
use crate::{
NumberString,
model::{OrderSide, OrderState, OrderType, PositionSide, TradeMode},
};
mod advanced;
mod algo;
pub use advanced::*;
pub use algo::*;
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct PlaceOrderResult {
#[serde(default)]
pub ord_id: String,
#[serde(default)]
pub cl_ord_id: String,
#[serde(default)]
pub tag: String,
pub s_code: String,
#[serde(default)]
pub s_msg: String,
#[serde(default)]
pub sub_code: String,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct CancelOrderResult {
#[serde(default)]
pub ord_id: String,
#[serde(default)]
pub cl_ord_id: String,
pub s_code: String,
#[serde(default)]
pub s_msg: String,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct AmendOrderResult {
#[serde(default)]
pub ord_id: String,
#[serde(default)]
pub cl_ord_id: String,
#[serde(default)]
pub req_id: String,
pub s_code: String,
#[serde(default)]
pub s_msg: String,
#[serde(default)]
pub sub_code: String,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct ClosePositionResult {
#[serde(default)]
pub inst_id: String,
#[serde(default)]
pub pos_side: String,
#[serde(default)]
pub cl_ord_id: String,
#[serde(default)]
pub tag: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct Order {
pub inst_id: String,
pub ord_id: String,
#[serde(default)]
pub cl_ord_id: String,
#[serde(default)]
pub px: NumberString,
#[serde(default)]
pub sz: NumberString,
pub ord_type: OrderType,
pub side: OrderSide,
pub pos_side: PositionSide,
pub td_mode: TradeMode,
#[serde(default)]
pub acc_fill_sz: NumberString,
#[serde(default)]
pub avg_px: NumberString,
pub state: OrderState,
#[serde(default)]
pub c_time: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct Fill {
#[serde(default)]
pub inst_type: String,
pub inst_id: String,
#[serde(default)]
pub trade_id: String,
#[serde(default)]
pub ord_id: String,
#[serde(default)]
pub fill_px: NumberString,
#[serde(default)]
pub fill_sz: NumberString,
pub side: OrderSide,
#[serde(default)]
pub ord_type: Option<OrderType>,
#[serde(default)]
pub fee_ccy: String,
#[serde(default)]
pub fee: NumberString,
#[serde(default)]
pub ts: NumberString,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct FillHistory {
#[serde(default)]
pub inst_type: String,
pub inst_id: String,
#[serde(default)]
pub trade_id: String,
#[serde(default)]
pub ord_id: String,
#[serde(default)]
pub cl_ord_id: String,
#[serde(default)]
pub bill_id: String,
#[serde(default)]
pub tag: String,
#[serde(default)]
pub fill_px: NumberString,
#[serde(default)]
pub fill_sz: NumberString,
#[serde(default)]
pub fill_idx_px: NumberString,
#[serde(default)]
pub fill_pnl: NumberString,
#[serde(default)]
pub fill_px_vol: NumberString,
#[serde(default)]
pub fill_px_usd: NumberString,
#[serde(default)]
pub fill_mark_vol: NumberString,
#[serde(default)]
pub fill_fwd_px: NumberString,
#[serde(default)]
pub fill_mark_px: NumberString,
pub side: OrderSide,
#[serde(default)]
pub pos_side: String,
#[serde(default)]
pub exec_type: String,
#[serde(default)]
pub fee_ccy: String,
#[serde(default)]
pub fee: NumberString,
#[serde(default)]
pub fee_rate: NumberString,
#[serde(default)]
pub fill_time: NumberString,
#[serde(default)]
pub ts: NumberString,
}