1use derive_builder::Builder;
19use serde::{Deserialize, Serialize};
20
21use super::models::{DeribitCurrency, DeribitProductType};
22
23#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
25#[builder(setter(into, strip_option))]
26pub struct GetInstrumentsParams {
27 pub currency: DeribitCurrency,
29 #[serde(skip_serializing_if = "Option::is_none")]
31 #[builder(default)]
32 pub kind: Option<DeribitProductType>,
33 #[serde(skip_serializing_if = "Option::is_none")]
35 #[builder(default)]
36 pub expired: Option<bool>,
37}
38
39impl GetInstrumentsParams {
40 #[must_use]
42 pub fn builder() -> GetInstrumentsParamsBuilder {
43 GetInstrumentsParamsBuilder::default()
44 }
45
46 #[must_use]
48 pub fn new(currency: DeribitCurrency) -> Self {
49 Self {
50 currency,
51 kind: None,
52 expired: None,
53 }
54 }
55
56 #[must_use]
58 pub fn with_kind(currency: DeribitCurrency, kind: DeribitProductType) -> Self {
59 Self {
60 currency,
61 kind: Some(kind),
62 expired: None,
63 }
64 }
65}
66
67#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
69pub struct GetInstrumentParams {
70 pub instrument_name: String,
72}
73
74#[derive(Clone, Debug, Default, Deserialize, Serialize)]
76pub struct GetAccountSummariesParams {
77 #[serde(skip_serializing_if = "Option::is_none")]
79 pub subaccount_id: Option<String>,
80 #[serde(skip_serializing_if = "Option::is_none")]
82 pub extended: Option<bool>,
83}
84
85impl GetAccountSummariesParams {
86 #[must_use]
88 pub fn new(subaccount_id: String, extended: bool) -> Self {
89 Self {
90 subaccount_id: Some(subaccount_id),
91 extended: Some(extended),
92 }
93 }
94}
95
96#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
98#[builder(setter(into, strip_option))]
99pub struct GetLastTradesByInstrumentAndTimeParams {
100 pub instrument_name: String,
102 pub start_timestamp: i64,
104 pub end_timestamp: i64,
106 #[serde(skip_serializing_if = "Option::is_none")]
108 #[builder(default)]
109 pub count: Option<u32>,
110 #[serde(skip_serializing_if = "Option::is_none")]
112 #[builder(default)]
113 pub sorting: Option<String>,
114}
115
116impl GetLastTradesByInstrumentAndTimeParams {
117 #[must_use]
119 pub fn new(
120 instrument_name: impl Into<String>,
121 start_timestamp: i64,
122 end_timestamp: i64,
123 count: Option<u32>,
124 sorting: Option<String>,
125 ) -> Self {
126 Self {
127 instrument_name: instrument_name.into(),
128 start_timestamp,
129 end_timestamp,
130 count,
131 sorting,
132 }
133 }
134}
135
136#[derive(Clone, Debug, Deserialize, Serialize)]
138pub struct GetTradingViewChartDataParams {
139 pub instrument_name: String,
141 pub start_timestamp: i64,
143 pub end_timestamp: i64,
145 pub resolution: String,
148}
149
150impl GetTradingViewChartDataParams {
151 #[must_use]
153 pub fn new(
154 instrument_name: String,
155 start_timestamp: i64,
156 end_timestamp: i64,
157 resolution: String,
158 ) -> Self {
159 Self {
160 instrument_name,
161 start_timestamp,
162 end_timestamp,
163 resolution,
164 }
165 }
166}
167
168#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
170#[builder(setter(into, strip_option))]
171pub struct GetOrderBookParams {
172 pub instrument_name: String,
174 #[serde(skip_serializing_if = "Option::is_none")]
178 #[builder(default)]
179 pub depth: Option<u32>,
180}
181
182impl GetOrderBookParams {
183 #[must_use]
185 pub fn new(instrument_name: String, depth: Option<u32>) -> Self {
186 Self {
187 instrument_name,
188 depth,
189 }
190 }
191}
192
193#[derive(Clone, Debug, Deserialize, Serialize)]
196pub struct GetOrderStateParams {
197 pub order_id: String,
199}
200
201impl GetOrderStateParams {
202 #[must_use]
204 pub fn new(order_id: impl Into<String>) -> Self {
205 Self {
206 order_id: order_id.into(),
207 }
208 }
209}
210
211#[derive(Clone, Debug, Default, Deserialize, Serialize)]
214pub struct GetOpenOrdersParams {}
215
216impl GetOpenOrdersParams {
217 #[must_use]
219 pub fn new() -> Self {
220 Self {}
221 }
222}
223
224#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
227#[builder(setter(into, strip_option))]
228pub struct GetOpenOrdersByInstrumentParams {
229 pub instrument_name: String,
231 #[serde(skip_serializing_if = "Option::is_none")]
234 #[builder(default)]
235 pub r#type: Option<String>,
236}
237
238impl GetOpenOrdersByInstrumentParams {
239 #[must_use]
241 pub fn new(instrument_name: impl Into<String>) -> Self {
242 Self {
243 instrument_name: instrument_name.into(),
244 r#type: None,
245 }
246 }
247}
248
249#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
252#[builder(setter(into, strip_option))]
253pub struct GetOrderHistoryByInstrumentParams {
254 pub instrument_name: String,
256 #[serde(skip_serializing_if = "Option::is_none")]
258 #[builder(default)]
259 pub count: Option<u32>,
260 #[serde(skip_serializing_if = "Option::is_none")]
262 #[builder(default)]
263 pub offset: Option<u32>,
264 #[serde(skip_serializing_if = "Option::is_none")]
266 #[builder(default)]
267 pub include_old: Option<bool>,
268 #[serde(skip_serializing_if = "Option::is_none")]
270 #[builder(default)]
271 pub include_unfilled: Option<bool>,
272}
273
274impl GetOrderHistoryByInstrumentParams {
275 #[must_use]
277 pub fn new(instrument_name: impl Into<String>) -> Self {
278 Self {
279 instrument_name: instrument_name.into(),
280 count: None,
281 offset: None,
282 include_old: None,
283 include_unfilled: None,
284 }
285 }
286
287 #[must_use]
289 pub fn builder() -> GetOrderHistoryByInstrumentParamsBuilder {
290 GetOrderHistoryByInstrumentParamsBuilder::default()
291 }
292}
293
294#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
297#[builder(setter(into, strip_option))]
298pub struct GetOrderHistoryByCurrencyParams {
299 pub currency: DeribitCurrency,
301 #[serde(skip_serializing_if = "Option::is_none")]
303 #[builder(default)]
304 pub kind: Option<DeribitProductType>,
305 #[serde(skip_serializing_if = "Option::is_none")]
307 #[builder(default)]
308 pub count: Option<u32>,
309 #[serde(skip_serializing_if = "Option::is_none")]
311 #[builder(default)]
312 pub include_unfilled: Option<bool>,
313}
314
315impl GetOrderHistoryByCurrencyParams {
316 #[must_use]
318 pub fn new(currency: DeribitCurrency) -> Self {
319 Self {
320 currency,
321 kind: None,
322 count: None,
323 include_unfilled: None,
324 }
325 }
326
327 #[must_use]
329 pub fn builder() -> GetOrderHistoryByCurrencyParamsBuilder {
330 GetOrderHistoryByCurrencyParamsBuilder::default()
331 }
332}
333
334#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
337#[builder(setter(into, strip_option))]
338pub struct GetUserTradesByInstrumentAndTimeParams {
339 pub instrument_name: String,
341 pub start_timestamp: i64,
343 pub end_timestamp: i64,
345 #[serde(skip_serializing_if = "Option::is_none")]
347 #[builder(default)]
348 pub count: Option<u32>,
349 #[serde(skip_serializing_if = "Option::is_none")]
351 #[builder(default)]
352 pub sorting: Option<String>,
353}
354
355impl GetUserTradesByInstrumentAndTimeParams {
356 #[must_use]
358 pub fn new(
359 instrument_name: impl Into<String>,
360 start_timestamp: i64,
361 end_timestamp: i64,
362 ) -> Self {
363 Self {
364 instrument_name: instrument_name.into(),
365 start_timestamp,
366 end_timestamp,
367 count: None,
368 sorting: None,
369 }
370 }
371
372 #[must_use]
374 pub fn builder() -> GetUserTradesByInstrumentAndTimeParamsBuilder {
375 GetUserTradesByInstrumentAndTimeParamsBuilder::default()
376 }
377}
378
379#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
382#[builder(setter(into, strip_option))]
383pub struct GetUserTradesByCurrencyAndTimeParams {
384 pub currency: DeribitCurrency,
386 pub start_timestamp: i64,
388 pub end_timestamp: i64,
390 #[serde(skip_serializing_if = "Option::is_none")]
392 #[builder(default)]
393 pub kind: Option<DeribitProductType>,
394 #[serde(skip_serializing_if = "Option::is_none")]
396 #[builder(default)]
397 pub count: Option<u32>,
398}
399
400impl GetUserTradesByCurrencyAndTimeParams {
401 #[must_use]
403 pub fn new(currency: DeribitCurrency, start_timestamp: i64, end_timestamp: i64) -> Self {
404 Self {
405 currency,
406 start_timestamp,
407 end_timestamp,
408 kind: None,
409 count: None,
410 }
411 }
412
413 #[must_use]
415 pub fn builder() -> GetUserTradesByCurrencyAndTimeParamsBuilder {
416 GetUserTradesByCurrencyAndTimeParamsBuilder::default()
417 }
418}
419
420#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
423#[builder(setter(into, strip_option))]
424pub struct GetPositionsParams {
425 pub currency: DeribitCurrency,
427 #[serde(skip_serializing_if = "Option::is_none")]
429 #[builder(default)]
430 pub kind: Option<DeribitProductType>,
431}
432
433impl GetPositionsParams {
434 #[must_use]
436 pub fn new(currency: DeribitCurrency) -> Self {
437 Self {
438 currency,
439 kind: None,
440 }
441 }
442
443 #[must_use]
445 pub fn builder() -> GetPositionsParamsBuilder {
446 GetPositionsParamsBuilder::default()
447 }
448}