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 offset: Option<u32>,
313 #[serde(skip_serializing_if = "Option::is_none")]
315 #[builder(default)]
316 pub include_old: Option<bool>,
317 #[serde(skip_serializing_if = "Option::is_none")]
319 #[builder(default)]
320 pub include_unfilled: Option<bool>,
321}
322
323impl GetOrderHistoryByCurrencyParams {
324 #[must_use]
326 pub fn new(currency: DeribitCurrency) -> Self {
327 Self {
328 currency,
329 kind: None,
330 count: None,
331 offset: None,
332 include_old: None,
333 include_unfilled: None,
334 }
335 }
336
337 #[must_use]
339 pub fn builder() -> GetOrderHistoryByCurrencyParamsBuilder {
340 GetOrderHistoryByCurrencyParamsBuilder::default()
341 }
342}
343
344#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
347#[builder(setter(into, strip_option))]
348pub struct GetUserTradesByInstrumentAndTimeParams {
349 pub instrument_name: String,
351 pub start_timestamp: i64,
353 pub end_timestamp: i64,
355 #[serde(skip_serializing_if = "Option::is_none")]
357 #[builder(default)]
358 pub count: Option<u32>,
359 #[serde(skip_serializing_if = "Option::is_none")]
361 #[builder(default)]
362 pub sorting: Option<String>,
363}
364
365impl GetUserTradesByInstrumentAndTimeParams {
366 #[must_use]
368 pub fn new(
369 instrument_name: impl Into<String>,
370 start_timestamp: i64,
371 end_timestamp: i64,
372 ) -> Self {
373 Self {
374 instrument_name: instrument_name.into(),
375 start_timestamp,
376 end_timestamp,
377 count: None,
378 sorting: None,
379 }
380 }
381
382 #[must_use]
384 pub fn builder() -> GetUserTradesByInstrumentAndTimeParamsBuilder {
385 GetUserTradesByInstrumentAndTimeParamsBuilder::default()
386 }
387}
388
389#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
392#[builder(setter(into, strip_option))]
393pub struct GetUserTradesByCurrencyAndTimeParams {
394 pub currency: DeribitCurrency,
396 pub start_timestamp: i64,
398 pub end_timestamp: i64,
400 #[serde(skip_serializing_if = "Option::is_none")]
402 #[builder(default)]
403 pub kind: Option<DeribitProductType>,
404 #[serde(skip_serializing_if = "Option::is_none")]
406 #[builder(default)]
407 pub count: Option<u32>,
408 #[serde(skip_serializing_if = "Option::is_none")]
410 #[builder(default)]
411 pub sorting: Option<String>,
412}
413
414impl GetUserTradesByCurrencyAndTimeParams {
415 #[must_use]
417 pub fn new(currency: DeribitCurrency, start_timestamp: i64, end_timestamp: i64) -> Self {
418 Self {
419 currency,
420 start_timestamp,
421 end_timestamp,
422 kind: None,
423 count: None,
424 sorting: None,
425 }
426 }
427
428 #[must_use]
430 pub fn builder() -> GetUserTradesByCurrencyAndTimeParamsBuilder {
431 GetUserTradesByCurrencyAndTimeParamsBuilder::default()
432 }
433}
434
435#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
437#[builder(setter(into, strip_option))]
438pub struct GetBookSummaryByCurrencyParams {
439 pub currency: String,
441 #[serde(skip_serializing_if = "Option::is_none")]
443 #[builder(default)]
444 pub kind: Option<String>,
445}
446
447impl GetBookSummaryByCurrencyParams {
448 #[must_use]
450 pub fn options(currency: impl Into<String>) -> Self {
451 Self {
452 currency: currency.into(),
453 kind: Some("option".to_string()),
454 }
455 }
456}
457
458#[derive(Clone, Debug, Deserialize, Serialize)]
460pub struct GetTickerParams {
461 pub instrument_name: String,
463}
464
465#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
468#[builder(setter(into, strip_option))]
469pub struct GetPositionsParams {
470 pub currency: DeribitCurrency,
472 #[serde(skip_serializing_if = "Option::is_none")]
474 #[builder(default)]
475 pub kind: Option<DeribitProductType>,
476}
477
478impl GetPositionsParams {
479 #[must_use]
481 pub fn new(currency: DeribitCurrency) -> Self {
482 Self {
483 currency,
484 kind: None,
485 }
486 }
487
488 #[must_use]
490 pub fn builder() -> GetPositionsParamsBuilder {
491 GetPositionsParamsBuilder::default()
492 }
493}