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 OrderAttachAlgoOrder {
#[serde(default)]
pub attach_algo_id: String,
#[serde(default)]
pub attach_algo_cl_ord_id: String,
#[serde(default)]
pub tp_ord_kind: String,
#[serde(default)]
pub tp_trigger_px: NumberString,
#[serde(default)]
pub tp_trigger_ratio: NumberString,
#[serde(default)]
pub tp_trigger_px_type: String,
#[serde(default)]
pub tp_ord_px: NumberString,
#[serde(default)]
pub sl_trigger_px: NumberString,
#[serde(default)]
pub sl_trigger_ratio: NumberString,
#[serde(default)]
pub sl_trigger_px_type: String,
#[serde(default)]
pub sl_ord_px: NumberString,
#[serde(default)]
pub sz: NumberString,
#[serde(default)]
pub amend_px_on_trigger_type: String,
#[serde(default)]
pub callback_ratio: NumberString,
#[serde(default)]
pub callback_spread: NumberString,
#[serde(default)]
pub active_px: NumberString,
#[serde(default)]
pub fail_code: String,
#[serde(default)]
pub fail_reason: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct OrderLinkedAlgoOrder {
#[serde(default)]
pub algo_id: String,
}
#[derive(Debug, Clone, Deserialize)]
#[serde(rename_all = "camelCase")]
#[non_exhaustive]
pub struct Order {
#[serde(default)]
pub inst_type: String,
pub inst_id: String,
#[serde(default)]
pub tgt_ccy: String,
#[serde(default)]
pub ccy: String,
pub ord_id: String,
#[serde(default)]
pub cl_ord_id: String,
#[serde(default)]
pub tag: String,
#[serde(default)]
pub px: NumberString,
#[serde(default)]
pub px_usd: NumberString,
#[serde(default)]
pub px_vol: NumberString,
#[serde(default)]
pub px_type: String,
#[serde(default)]
pub sz: NumberString,
#[serde(default)]
pub pnl: 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 fill_px: NumberString,
#[serde(default)]
pub trade_id: String,
#[serde(default)]
pub fill_sz: NumberString,
#[serde(default)]
pub fill_time: NumberString,
#[serde(default)]
pub avg_px: NumberString,
pub state: OrderState,
#[serde(default)]
pub stp_id: String,
#[serde(default)]
pub stp_mode: String,
#[serde(default)]
pub lever: NumberString,
#[serde(default)]
pub attach_algo_cl_ord_id: String,
#[serde(default)]
pub tp_trigger_px: NumberString,
#[serde(default)]
pub tp_trigger_px_type: String,
#[serde(default)]
pub tp_ord_px: NumberString,
#[serde(default)]
pub sl_trigger_px: NumberString,
#[serde(default)]
pub sl_trigger_px_type: String,
#[serde(default)]
pub sl_ord_px: NumberString,
#[serde(default)]
pub attach_algo_ords: Vec<OrderAttachAlgoOrder>,
#[serde(default)]
pub linked_algo_ord: Option<OrderLinkedAlgoOrder>,
#[serde(default)]
pub fee_ccy: String,
#[serde(default)]
pub fee: NumberString,
#[serde(default)]
pub rebate_ccy: String,
#[serde(default)]
pub rebate: NumberString,
#[serde(default)]
pub source: String,
#[serde(default)]
pub category: String,
#[serde(default)]
pub reduce_only: String,
#[serde(default)]
pub is_tp_limit: String,
#[serde(default)]
pub cancel_source: String,
#[serde(default)]
pub cancel_source_reason: String,
#[serde(default)]
pub quick_mgn_type: String,
#[serde(default)]
pub algo_cl_ord_id: String,
#[serde(default)]
pub algo_id: String,
#[serde(default)]
pub u_time: NumberString,
#[serde(default)]
pub c_time: NumberString,
#[serde(default)]
pub trade_quote_ccy: String,
#[serde(default)]
pub outcome: String,
}
#[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 cl_ord_id: String,
#[serde(default)]
pub bill_id: String,
#[serde(default)]
pub sub_type: 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 ord_type: Option<OrderType>,
#[serde(default)]
pub fee_ccy: String,
#[serde(default)]
pub fee: NumberString,
#[serde(default)]
pub fee_rate: NumberString,
#[serde(default)]
pub ts: NumberString,
#[serde(default)]
pub fill_time: NumberString,
#[serde(default)]
pub trade_quote_ccy: String,
}
#[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 sub_type: 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,
#[serde(default)]
pub trade_quote_ccy: String,
}