1use rust_decimal::Decimal;
6use serde::{Deserialize, Serialize};
7
8#[derive(Debug, Deserialize, Serialize, PartialEq)]
10#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
11pub enum SymbolStatus {
12 Trading,
13 EndOfDay,
14 Halt,
15 Break,
16}
17
18#[derive(Debug, Deserialize, Serialize, PartialEq)]
20#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
21pub enum OrderStatus {
22 New,
24 PendingNew,
26 PartiallyFilled,
28 Filled,
30 Canceled,
32 PendingCancel,
34 Rejected,
36 Expired,
39 ExpiredInMatch,
41}
42
43#[derive(Debug, Deserialize, Serialize, PartialEq)]
45#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
46pub enum OrderListStatus {
47 Response,
49 ExecStarted,
51 Updated,
53 AllDone,
55}
56
57#[derive(Debug, Deserialize, Serialize, PartialEq)]
59#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
60pub enum OrderListOrderStatus {
61 Executing,
63 AllDone,
65 Reject,
67}
68
69#[derive(Debug, Deserialize, Serialize, PartialEq)]
71pub enum ContingencyType {
72 OCO,
73 OTO,
74}
75
76#[derive(Debug, Deserialize, Serialize, PartialEq)]
78pub enum AllocationType {
79 SOR,
80}
81
82#[derive(Debug, Deserialize, Serialize, PartialEq)]
84#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
85pub enum OrderType {
86 Limit,
87 Market,
88 StopLoss,
89 StopLossLimit,
90 TakeProfit,
91 TakeProfitLimit,
92 LimitMaker,
93}
94
95#[derive(Debug, Deserialize, Serialize, PartialEq)]
97pub enum OrderResponseType {
98 ACK,
99 RESULT,
100 FULL,
101}
102
103#[derive(Debug, Deserialize, Serialize, PartialEq)]
105pub enum WorkingFloor {
106 EXCHANGE,
107 SOR,
108}
109
110#[derive(Debug, Deserialize, Serialize, PartialEq)]
112pub enum OrderSide {
113 BUY,
114 SELL,
115}
116
117#[derive(Debug, Deserialize, Serialize, PartialEq)]
120pub enum TimeInForce {
121 GTC,
124 IOC,
127 FOK,
130}
131
132#[derive(Debug, Deserialize, Serialize, PartialEq)]
134#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
135pub enum RateLimiter {
136 RequestWeight,
137 Orders,
138 RawRequests,
139}
140
141#[derive(Debug, Deserialize, Serialize, PartialEq)]
143#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
144pub enum RateLimitInterval {
145 Second,
146 Minute,
147 Day,
148}
149
150#[derive(Debug, Deserialize, Serialize, PartialEq)]
151pub enum KlineInterval {
152 #[serde(rename = "1s")]
153 Second1,
154 #[serde(rename = "1m")]
155 Minute1,
156 #[serde(rename = "3m")]
157 Minute3,
158 #[serde(rename = "5m")]
159 Minute5,
160 #[serde(rename = "15m")]
161 Minute15,
162 #[serde(rename = "30m")]
163 Minute30,
164 #[serde(rename = "1h")]
165 Hour1,
166 #[serde(rename = "2h")]
167 Hour2,
168 #[serde(rename = "4h")]
169 Hour4,
170 #[serde(rename = "6h")]
171 Hour6,
172 #[serde(rename = "8h")]
173 Hour8,
174 #[serde(rename = "12h")]
175 Hour12,
176 #[serde(rename = "1d")]
177 Day1,
178 #[serde(rename = "3d")]
179 Day3,
180 #[serde(rename = "1w")]
181 Week1,
182 #[serde(rename = "1M")]
183 Month1,
184}
185
186impl std::fmt::Display for KlineInterval {
187 fn fmt(&self, f: &mut std::fmt::Formatter) -> std::fmt::Result {
188 let value = match self {
189 Self::Second1 => "1s",
190 Self::Minute1 => "1m",
191 Self::Minute3 => "3m",
192 Self::Minute5 => "5m",
193 Self::Minute15 => "15m",
194 Self::Minute30 => "30m",
195 Self::Hour1 => "1h",
196 Self::Hour2 => "2h",
197 Self::Hour4 => "4h",
198 Self::Hour6 => "6h",
199 Self::Hour8 => "8h",
200 Self::Hour12 => "12h",
201 Self::Day1 => "1d",
202 Self::Day3 => "3d",
203 Self::Week1 => "1w",
204 Self::Month1 => "1M",
205 };
206 write!(f, "{value}")
207 }
208}
209
210#[derive(Debug, Deserialize, Serialize, PartialEq)]
212#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
213pub enum STPMode {
214 None,
215 ExpireMaker,
216 ExpireTaker,
217 ExpireBoth,
218 Decrement,
219}
220
221#[derive(Debug, Deserialize, Serialize, PartialEq)]
222#[serde(rename_all = "SCREAMING_SNAKE_CASE")]
223pub enum SecurityType {
224 None,
226 Trade,
228 UserData,
230 UserStream,
232}
233
234#[derive(Debug, Deserialize, PartialEq)]
235#[serde(tag = "filterType", rename_all = "SCREAMING_SNAKE_CASE")]
236pub enum ExchangeFilter {
237 PriceFilter { tick_size: Decimal },
238 LotSize { step_size: Decimal },
239 }