binance_common/futures/model/response/
websocket.rs1use serde::Deserialize;
2use serde_with::{DisplayFromStr, serde_as};
3
4#[derive(Clone, Debug, Deserialize)]
5pub struct CombinedStreamResponse {
6 pub stream: String,
7 pub data: WebSocketResponse,
8}
9
10#[derive(Clone, Debug, Deserialize)]
11#[serde(tag = "e")]
12pub enum WebSocketResponse {
13 #[serde(rename = "aggTrade")]
14 AggTrade(AggTradeResponse),
15
16 #[serde(rename = "kline")]
17 Kline(KlineResponse),
18
19 #[serde(rename = "markPriceUpdate")]
20 MarkPrice(MarkPriceResponse),
21
22 #[serde(rename = "24hrMiniTicker")]
23 MiniTicker(MiniTickerResponse),
24
25 #[serde(other)]
26 Init,
27}
28
29#[serde_as]
30#[derive(Clone, Debug, Deserialize)]
31pub struct AggTradeResponse {
32 #[serde(rename = "E")]
33 pub event_time: u64,
34
35 #[serde(rename = "s")]
36 pub symbol: String,
37
38 #[serde(rename = "a")]
39 pub aggregate_trade_id: u64,
40
41 #[serde(rename = "p")]
42 #[serde_as(as = "DisplayFromStr")]
43 pub price: f64,
44
45 #[serde(rename = "q")]
46 #[serde_as(as = "DisplayFromStr")]
47 pub quantity: f64,
48
49 #[serde(rename = "f")]
50 pub first_trade_id: u64,
51
52 #[serde(rename = "l")]
53 pub last_trade_id: u64,
54
55 #[serde(rename = "T")]
56 pub trade_time: u64,
57
58 #[serde(rename = "m")]
59 pub is_buyer_market_maker: bool,
60}
61
62#[serde_as]
63#[derive(Clone, Debug, Deserialize)]
64pub struct MarkPriceResponse {
65 #[serde(rename = "E")]
66 pub event_time: u64,
67
68 #[serde(rename = "s")]
69 pub symbol: String,
70
71 #[serde(rename = "p")]
72 #[serde_as(as = "DisplayFromStr")]
73 pub mark_price: f64,
74
75 #[serde(rename = "i")]
76 #[serde_as(as = "DisplayFromStr")]
77 pub index_price: f64,
78
79 #[serde(rename = "P")]
80 #[serde_as(as = "DisplayFromStr")]
81 pub estimated_settle_price: f64,
82
83 #[serde(rename = "r")]
84 #[serde_as(as = "DisplayFromStr")]
85 pub funding_rate: f64,
86
87 #[serde(rename = "T")]
88 pub next_funding_time: u64,
89}
90
91#[derive(Debug, Clone, Deserialize)]
92pub struct KlineResponse {
93 #[serde(rename = "E")]
94 pub event_time: u64,
95
96 #[serde(rename = "s")]
97 pub symbol: String,
98
99 #[serde(rename = "k")]
100 pub kline: Kline,
101}
102
103#[serde_as]
104#[derive(Clone, Debug, Deserialize)]
105pub struct Kline {
106 #[serde(rename = "t")]
107 pub start_time: u64,
108
109 #[serde(rename = "T")]
110 pub close_time: u64,
111
112 #[serde(rename = "s")]
113 pub symbol: String,
114
115 #[serde(rename = "i")]
116 pub interval: String,
117
118 #[serde(rename = "f")]
119 pub first_trade_id: u64,
120
121 #[serde(rename = "L")]
122 pub last_trade_id: u64,
123
124 #[serde(rename = "o")]
125 #[serde_as(as = "DisplayFromStr")]
126 pub open_price: f64,
127
128 #[serde(rename = "c")]
129 #[serde_as(as = "DisplayFromStr")]
130 pub close_price: f64,
131
132 #[serde(rename = "h")]
133 #[serde_as(as = "DisplayFromStr")]
134 pub high_price: f64,
135
136 #[serde(rename = "l")]
137 #[serde_as(as = "DisplayFromStr")]
138 pub low_price: f64,
139
140 #[serde(rename = "v")]
141 #[serde_as(as = "DisplayFromStr")]
142 pub base_asset_volume: f64,
143
144 #[serde(rename = "n")]
145 pub number_of_trades: u64,
146
147 #[serde(rename = "x")]
148 pub is_closed: bool,
149
150 #[serde(rename = "q")]
151 #[serde_as(as = "DisplayFromStr")]
152 pub quote_asset_volume: f64,
153
154 #[serde(rename = "V")]
155 #[serde_as(as = "DisplayFromStr")]
156 pub taker_buy_base_asset_volume: f64,
157
158 #[serde(rename = "Q")]
159 #[serde_as(as = "DisplayFromStr")]
160 pub taker_buy_quote_asset_volume: f64,
161
162 #[serde(rename = "B")]
163 pub ignore: String,
164}
165
166#[serde_as]
167#[derive(Clone, Debug, Deserialize)]
168pub struct MiniTickerResponse {
169 #[serde(rename = "E")]
170 pub event_time: u64,
171
172 #[serde(rename = "s")]
173 pub symbol: String,
174
175 #[serde(rename = "c")]
176 #[serde_as(as = "DisplayFromStr")]
177 pub close_price: f64,
178
179 #[serde(rename = "o")]
180 #[serde_as(as = "DisplayFromStr")]
181 pub open_price: f64,
182
183 #[serde(rename = "h")]
184 #[serde_as(as = "DisplayFromStr")]
185 pub high_price: f64,
186
187 #[serde(rename = "l")]
188 #[serde_as(as = "DisplayFromStr")]
189 pub low_price: f64,
190
191 #[serde(rename = "v")]
192 #[serde_as(as = "DisplayFromStr")]
193 pub base_volume: f64,
194
195 #[serde(rename = "q")]
196 #[serde_as(as = "DisplayFromStr")]
197 pub quote_volume: f64,
198}