1use serde::Deserialize;
2
3use crate::{
4 NumberString,
5 model::{OrderSide, OrderState, OrderType, PositionSide, TradeMode},
6};
7
8mod advanced;
9mod algo;
10
11pub use advanced::*;
12pub use algo::*;
13
14#[derive(Debug, Clone, Deserialize)]
16#[serde(rename_all = "camelCase")]
17#[non_exhaustive]
18pub struct PlaceOrderResult {
19 #[serde(default)]
21 pub ord_id: String,
22 #[serde(default)]
24 pub cl_ord_id: String,
25 #[serde(default)]
27 pub tag: String,
28 pub s_code: String,
30 #[serde(default)]
32 pub s_msg: String,
33 #[serde(default)]
35 pub sub_code: String,
36 #[serde(default)]
38 pub ts: NumberString,
39}
40
41#[derive(Debug, Clone, Deserialize)]
43#[serde(rename_all = "camelCase")]
44#[non_exhaustive]
45pub struct CancelOrderResult {
46 #[serde(default)]
48 pub ord_id: String,
49 #[serde(default)]
51 pub cl_ord_id: String,
52 pub s_code: String,
54 #[serde(default)]
56 pub s_msg: String,
57 #[serde(default)]
59 pub ts: NumberString,
60}
61
62#[derive(Debug, Clone, Deserialize)]
64#[serde(rename_all = "camelCase")]
65#[non_exhaustive]
66pub struct AmendOrderResult {
67 #[serde(default)]
69 pub ord_id: String,
70 #[serde(default)]
72 pub cl_ord_id: String,
73 #[serde(default)]
75 pub req_id: String,
76 pub s_code: String,
78 #[serde(default)]
80 pub s_msg: String,
81 #[serde(default)]
83 pub sub_code: String,
84 #[serde(default)]
86 pub ts: NumberString,
87}
88
89#[derive(Debug, Clone, Deserialize)]
91#[serde(rename_all = "camelCase")]
92#[non_exhaustive]
93pub struct ClosePositionResult {
94 #[serde(default)]
96 pub inst_id: String,
97 #[serde(default)]
99 pub pos_side: String,
100 #[serde(default)]
102 pub cl_ord_id: String,
103 #[serde(default)]
105 pub tag: String,
106}
107
108#[derive(Debug, Clone, Deserialize)]
110#[serde(rename_all = "camelCase")]
111#[non_exhaustive]
112pub struct Order {
113 pub inst_id: String,
115 pub ord_id: String,
117 #[serde(default)]
119 pub cl_ord_id: String,
120 #[serde(default)]
122 pub px: NumberString,
123 #[serde(default)]
125 pub sz: NumberString,
126 pub ord_type: OrderType,
128 pub side: OrderSide,
130 pub pos_side: PositionSide,
132 pub td_mode: TradeMode,
134 #[serde(default)]
136 pub acc_fill_sz: NumberString,
137 #[serde(default)]
139 pub avg_px: NumberString,
140 pub state: OrderState,
142 #[serde(default)]
144 pub c_time: NumberString,
145}
146
147#[derive(Debug, Clone, Deserialize)]
149#[serde(rename_all = "camelCase")]
150#[non_exhaustive]
151pub struct Fill {
152 #[serde(default)]
154 pub inst_type: String,
155 pub inst_id: String,
157 #[serde(default)]
159 pub trade_id: String,
160 #[serde(default)]
162 pub ord_id: String,
163 #[serde(default)]
165 pub fill_px: NumberString,
166 #[serde(default)]
168 pub fill_sz: NumberString,
169 pub side: OrderSide,
171 #[serde(default)]
173 pub ord_type: Option<OrderType>,
174 #[serde(default)]
176 pub fee_ccy: String,
177 #[serde(default)]
179 pub fee: NumberString,
180 #[serde(default)]
182 pub ts: NumberString,
183}
184
185#[derive(Debug, Clone, Deserialize)]
190#[serde(rename_all = "camelCase")]
191#[non_exhaustive]
192pub struct FillHistory {
193 #[serde(default)]
195 pub inst_type: String,
196 pub inst_id: String,
198 #[serde(default)]
200 pub trade_id: String,
201 #[serde(default)]
203 pub ord_id: String,
204 #[serde(default)]
206 pub cl_ord_id: String,
207 #[serde(default)]
209 pub bill_id: String,
210 #[serde(default)]
212 pub tag: String,
213 #[serde(default)]
215 pub fill_px: NumberString,
216 #[serde(default)]
218 pub fill_sz: NumberString,
219 #[serde(default)]
221 pub fill_idx_px: NumberString,
222 #[serde(default)]
224 pub fill_pnl: NumberString,
225 #[serde(default)]
227 pub fill_px_vol: NumberString,
228 #[serde(default)]
230 pub fill_px_usd: NumberString,
231 #[serde(default)]
233 pub fill_mark_vol: NumberString,
234 #[serde(default)]
236 pub fill_fwd_px: NumberString,
237 #[serde(default)]
239 pub fill_mark_px: NumberString,
240 pub side: OrderSide,
242 #[serde(default)]
244 pub pos_side: String,
245 #[serde(default)]
247 pub exec_type: String,
248 #[serde(default)]
250 pub fee_ccy: String,
251 #[serde(default)]
253 pub fee: NumberString,
254 #[serde(default)]
256 pub fee_rate: NumberString,
257 #[serde(default)]
259 pub fill_time: NumberString,
260 #[serde(default)]
262 pub ts: NumberString,
263}