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 ts: NumberString,
36}
37
38#[derive(Debug, Clone, Deserialize)]
40#[serde(rename_all = "camelCase")]
41#[non_exhaustive]
42pub struct CancelOrderResult {
43 #[serde(default)]
45 pub ord_id: String,
46 #[serde(default)]
48 pub cl_ord_id: String,
49 pub s_code: String,
51 #[serde(default)]
53 pub s_msg: String,
54}
55
56#[derive(Debug, Clone, Deserialize)]
58#[serde(rename_all = "camelCase")]
59#[non_exhaustive]
60pub struct AmendOrderResult {
61 #[serde(default)]
63 pub ord_id: String,
64 #[serde(default)]
66 pub cl_ord_id: String,
67 #[serde(default)]
69 pub req_id: String,
70 pub s_code: String,
72 #[serde(default)]
74 pub s_msg: String,
75}
76
77#[derive(Debug, Clone, Deserialize)]
79#[serde(rename_all = "camelCase")]
80#[non_exhaustive]
81pub struct ClosePositionResult {
82 #[serde(default)]
84 pub inst_id: String,
85 #[serde(default)]
87 pub pos_side: String,
88 #[serde(default)]
90 pub cl_ord_id: String,
91 #[serde(default)]
93 pub tag: String,
94}
95
96#[derive(Debug, Clone, Deserialize)]
98#[serde(rename_all = "camelCase")]
99#[non_exhaustive]
100pub struct Order {
101 pub inst_id: String,
103 pub ord_id: String,
105 #[serde(default)]
107 pub cl_ord_id: String,
108 #[serde(default)]
110 pub px: NumberString,
111 #[serde(default)]
113 pub sz: NumberString,
114 pub ord_type: OrderType,
116 pub side: OrderSide,
118 pub pos_side: PositionSide,
120 pub td_mode: TradeMode,
122 #[serde(default)]
124 pub acc_fill_sz: NumberString,
125 #[serde(default)]
127 pub avg_px: NumberString,
128 pub state: OrderState,
130 #[serde(default)]
132 pub c_time: NumberString,
133}
134
135#[derive(Debug, Clone, Deserialize)]
137#[serde(rename_all = "camelCase")]
138#[non_exhaustive]
139pub struct Fill {
140 #[serde(default)]
142 pub inst_type: String,
143 pub inst_id: String,
145 #[serde(default)]
147 pub trade_id: String,
148 #[serde(default)]
150 pub ord_id: String,
151 #[serde(default)]
153 pub fill_px: NumberString,
154 #[serde(default)]
156 pub fill_sz: NumberString,
157 pub side: OrderSide,
159 #[serde(default)]
161 pub ord_type: Option<OrderType>,
162 #[serde(default)]
164 pub fee_ccy: String,
165 #[serde(default)]
167 pub fee: NumberString,
168 #[serde(default)]
170 pub ts: NumberString,
171}
172
173#[derive(Debug, Clone, Deserialize)]
178#[serde(rename_all = "camelCase")]
179#[non_exhaustive]
180pub struct FillHistory {
181 #[serde(default)]
183 pub inst_type: String,
184 pub inst_id: String,
186 #[serde(default)]
188 pub trade_id: String,
189 #[serde(default)]
191 pub ord_id: String,
192 #[serde(default)]
194 pub cl_ord_id: String,
195 #[serde(default)]
197 pub bill_id: String,
198 #[serde(default)]
200 pub tag: String,
201 #[serde(default)]
203 pub fill_px: NumberString,
204 #[serde(default)]
206 pub fill_sz: NumberString,
207 #[serde(default)]
209 pub fill_idx_px: NumberString,
210 #[serde(default)]
212 pub fill_pnl: NumberString,
213 #[serde(default)]
215 pub fill_px_vol: NumberString,
216 #[serde(default)]
218 pub fill_px_usd: NumberString,
219 #[serde(default)]
221 pub fill_mark_vol: NumberString,
222 #[serde(default)]
224 pub fill_fwd_px: NumberString,
225 #[serde(default)]
227 pub fill_mark_px: NumberString,
228 pub side: OrderSide,
230 #[serde(default)]
232 pub pos_side: String,
233 #[serde(default)]
235 pub exec_type: String,
236 #[serde(default)]
238 pub fee_ccy: String,
239 #[serde(default)]
241 pub fee: NumberString,
242 #[serde(default)]
244 pub fee_rate: NumberString,
245 #[serde(default)]
247 pub fill_time: NumberString,
248 #[serde(default)]
250 pub ts: NumberString,
251}