binance_common/futures/model/response/
websocket.rs

1use 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}