1use derive_builder::Builder;
19use serde::{Deserialize, Serialize};
20
21use crate::common::enums::{
22 BybitAccountType, BybitExecType, BybitInstrumentStatus, BybitKlineInterval, BybitMarginMode,
23 BybitOpenOnly, BybitOptionType, BybitOrderFilter, BybitOrderSide, BybitOrderStatus,
24 BybitOrderType, BybitPositionIdx, BybitPositionMode, BybitProductType, BybitTimeInForce,
25 BybitTpSlMode, BybitTriggerDirection, BybitTriggerType,
26};
27
28#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
33#[serde(rename_all = "camelCase")]
34#[builder(default)]
35#[builder(setter(into))]
36pub struct BybitInstrumentsInfoParams {
37 pub category: BybitProductType,
38 #[builder(setter(strip_option))]
39 #[serde(skip_serializing_if = "Option::is_none")]
40 pub symbol: Option<String>,
41 #[builder(setter(strip_option))]
42 #[serde(skip_serializing_if = "Option::is_none")]
43 pub status: Option<BybitInstrumentStatus>,
44 #[builder(setter(strip_option))]
45 #[serde(skip_serializing_if = "Option::is_none")]
46 pub base_coin: Option<String>,
47 #[builder(setter(strip_option))]
48 #[serde(skip_serializing_if = "Option::is_none")]
49 pub limit: Option<u32>,
50 #[builder(setter(strip_option))]
51 #[serde(skip_serializing_if = "Option::is_none")]
52 pub cursor: Option<String>,
53}
54
55#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
60#[serde(rename_all = "camelCase")]
61#[builder(default)]
62#[builder(setter(into))]
63pub struct BybitTickersParams {
64 pub category: BybitProductType,
65 #[serde(skip_serializing_if = "Option::is_none")]
66 #[builder(setter(strip_option))]
67 pub symbol: Option<String>,
68 #[serde(skip_serializing_if = "Option::is_none")]
69 #[builder(setter(strip_option))]
70 pub base_coin: Option<String>,
71 #[serde(skip_serializing_if = "Option::is_none")]
72 #[builder(setter(strip_option))]
73 pub exp_date: Option<String>,
74}
75
76#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
81#[serde(rename_all = "camelCase")]
82#[builder(setter(into, strip_option), default)]
83pub struct BybitKlinesParams {
84 pub category: BybitProductType,
85 pub symbol: String,
86 pub interval: BybitKlineInterval,
87 #[serde(skip_serializing_if = "Option::is_none")]
88 pub start: Option<i64>,
89 #[serde(skip_serializing_if = "Option::is_none")]
90 pub end: Option<i64>,
91 #[serde(skip_serializing_if = "Option::is_none")]
92 pub limit: Option<u32>,
93}
94
95impl Default for BybitKlinesParams {
96 fn default() -> Self {
97 Self {
98 category: BybitProductType::Linear,
99 symbol: String::new(),
100 interval: BybitKlineInterval::Minute1,
101 start: None,
102 end: None,
103 limit: None,
104 }
105 }
106}
107
108#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
113#[serde(rename_all = "camelCase")]
114#[builder(setter(into, strip_option), default)]
115pub struct BybitTradesParams {
116 pub category: BybitProductType,
117 pub symbol: String,
118 #[serde(skip_serializing_if = "Option::is_none")]
119 pub base_coin: Option<String>,
120 #[serde(skip_serializing_if = "Option::is_none")]
121 pub option_type: Option<BybitOptionType>,
122 #[serde(skip_serializing_if = "Option::is_none")]
123 pub limit: Option<u32>,
124}
125
126impl Default for BybitTradesParams {
127 fn default() -> Self {
128 Self {
129 category: BybitProductType::Linear,
130 symbol: String::new(),
131 base_coin: None,
132 option_type: None,
133 limit: None,
134 }
135 }
136}
137
138#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
143#[serde(rename_all = "camelCase")]
144#[builder(setter(into, strip_option), default)]
145pub struct BybitFundingParams {
146 pub category: BybitProductType,
147 pub symbol: String,
148 #[serde(skip_serializing_if = "Option::is_none")]
149 pub start_time: Option<i64>,
150 #[serde(skip_serializing_if = "Option::is_none")]
151 pub end_time: Option<i64>,
152 #[serde(skip_serializing_if = "Option::is_none")]
153 pub limit: Option<u32>,
154}
155
156impl Default for BybitFundingParams {
157 fn default() -> Self {
158 Self {
159 category: BybitProductType::Linear,
160 symbol: String::new(),
161 start_time: None,
162 end_time: None,
163 limit: None,
164 }
165 }
166}
167
168#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
173#[builder(setter(into, strip_option), default)]
174pub struct BybitOrderbookParams {
175 pub category: BybitProductType,
176 pub symbol: String,
177 #[serde(skip_serializing_if = "Option::is_none")]
178 pub limit: Option<u32>,
179}
180
181impl Default for BybitOrderbookParams {
182 fn default() -> Self {
183 Self {
184 category: BybitProductType::Linear,
185 symbol: String::new(),
186 limit: None,
187 }
188 }
189}
190
191#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
196#[serde(rename_all = "camelCase")]
197#[builder(default)]
198#[builder(setter(into))]
199pub struct BybitCoinInfoParams {
200 #[serde(skip_serializing_if = "Option::is_none")]
201 #[builder(setter(strip_option))]
202 pub coin: Option<String>,
203}
204
205#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
210#[serde(rename_all = "camelCase")]
211#[builder(default)]
212#[builder(setter(into))]
213pub struct BybitFeeRateParams {
214 pub category: BybitProductType,
215 #[builder(setter(strip_option))]
216 #[serde(skip_serializing_if = "Option::is_none")]
217 pub symbol: Option<String>,
218 #[builder(setter(strip_option))]
219 #[serde(skip_serializing_if = "Option::is_none")]
220 pub base_coin: Option<String>,
221}
222
223#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
228#[serde(rename_all = "camelCase")]
229pub struct BybitWalletBalanceParams {
230 pub account_type: BybitAccountType,
231 #[serde(skip_serializing_if = "Option::is_none")]
232 #[builder(setter(strip_option))]
233 pub coin: Option<String>,
234}
235
236#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
241#[serde(rename_all = "camelCase")]
242#[builder(default)]
243#[builder(setter(into))]
244pub struct BybitPositionListParams {
245 pub category: BybitProductType,
246 #[serde(skip_serializing_if = "Option::is_none")]
247 #[builder(setter(strip_option))]
248 pub symbol: Option<String>,
249 #[serde(skip_serializing_if = "Option::is_none")]
250 #[builder(setter(strip_option))]
251 pub base_coin: Option<String>,
252 #[serde(skip_serializing_if = "Option::is_none")]
253 #[builder(setter(strip_option))]
254 pub settle_coin: Option<String>,
255 #[serde(skip_serializing_if = "Option::is_none")]
256 #[builder(setter(strip_option))]
257 pub limit: Option<u32>,
258 #[serde(skip_serializing_if = "Option::is_none")]
259 #[builder(setter(strip_option))]
260 pub cursor: Option<String>,
261}
262
263#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
268#[serde(rename_all = "camelCase")]
269pub struct BybitSetMarginModeParams {
270 pub set_margin_mode: BybitMarginMode,
271}
272
273#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
278#[serde(rename_all = "camelCase")]
279pub struct BybitSetLeverageParams {
280 pub category: BybitProductType,
281 pub symbol: String,
282 pub buy_leverage: String,
283 pub sell_leverage: String,
284}
285
286#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
291#[serde(rename_all = "camelCase")]
292pub struct BybitSwitchModeParams {
293 pub category: BybitProductType,
294 #[builder(default)]
295 #[serde(skip_serializing_if = "Option::is_none")]
296 #[builder(setter(strip_option))]
297 pub symbol: Option<String>,
298 #[builder(default)]
299 #[serde(skip_serializing_if = "Option::is_none")]
300 #[builder(setter(strip_option))]
301 pub coin: Option<String>,
302 pub mode: BybitPositionMode,
303}
304
305#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
310#[serde(rename_all = "camelCase")]
311pub struct BybitSetTradingStopParams {
312 pub category: BybitProductType,
313 pub symbol: String,
314 pub position_idx: BybitPositionIdx,
315 #[serde(skip_serializing_if = "Option::is_none")]
316 pub take_profit: Option<String>,
317 #[serde(skip_serializing_if = "Option::is_none")]
318 pub stop_loss: Option<String>,
319 #[serde(skip_serializing_if = "Option::is_none")]
320 pub trailing_stop: Option<String>,
321 #[serde(skip_serializing_if = "Option::is_none")]
322 pub tp_trigger_by: Option<BybitTriggerType>,
323 #[serde(skip_serializing_if = "Option::is_none")]
324 pub sl_trigger_by: Option<BybitTriggerType>,
325 #[serde(skip_serializing_if = "Option::is_none")]
326 pub active_price: Option<String>,
327 #[serde(skip_serializing_if = "Option::is_none")]
328 pub tpsl_mode: Option<BybitTpSlMode>,
329 #[serde(skip_serializing_if = "Option::is_none")]
330 pub tp_size: Option<String>,
331 #[serde(skip_serializing_if = "Option::is_none")]
332 pub sl_size: Option<String>,
333 #[serde(skip_serializing_if = "Option::is_none")]
334 pub tp_limit_price: Option<String>,
335 #[serde(skip_serializing_if = "Option::is_none")]
336 pub sl_limit_price: Option<String>,
337 #[serde(skip_serializing_if = "Option::is_none")]
338 pub tp_order_type: Option<BybitOrderType>,
339 #[serde(skip_serializing_if = "Option::is_none")]
340 pub sl_order_type: Option<BybitOrderType>,
341}
342
343#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
349#[serde(rename_all = "camelCase")]
350pub struct BybitBorrowParams {
351 pub coin: String,
352 pub amount: String,
353}
354
355#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
361#[serde(rename_all = "camelCase")]
362pub struct BybitNoConvertRepayParams {
363 pub coin: String,
364 #[serde(skip_serializing_if = "Option::is_none")]
365 #[builder(setter(strip_option), default)]
366 pub amount: Option<String>,
367}
368
369#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
374#[serde(rename_all = "camelCase")]
375pub struct BybitBatchPlaceOrderEntry {
376 pub symbol: String,
377 #[builder(default)]
378 #[serde(skip_serializing_if = "Option::is_none")]
379 pub is_leverage: Option<i32>,
380 pub side: BybitOrderSide,
381 pub order_type: BybitOrderType,
382 pub qty: String,
383 #[builder(default)]
384 #[serde(skip_serializing_if = "Option::is_none")]
385 pub price: Option<String>,
386 #[builder(default)]
387 #[serde(skip_serializing_if = "Option::is_none")]
388 pub market_unit: Option<String>,
389 #[builder(default)]
390 #[serde(skip_serializing_if = "Option::is_none")]
391 pub trigger_direction: Option<BybitTriggerDirection>,
392 #[builder(default)]
393 #[serde(skip_serializing_if = "Option::is_none")]
394 pub order_filter: Option<String>,
395 #[builder(default)]
396 #[serde(skip_serializing_if = "Option::is_none")]
397 pub trigger_price: Option<String>,
398 #[builder(default)]
399 #[serde(skip_serializing_if = "Option::is_none")]
400 pub trigger_by: Option<BybitTriggerType>,
401 #[builder(default)]
402 #[serde(skip_serializing_if = "Option::is_none")]
403 pub order_iv: Option<String>,
404 #[builder(default)]
405 #[serde(skip_serializing_if = "Option::is_none")]
406 pub time_in_force: Option<BybitTimeInForce>,
407 #[builder(default)]
408 #[serde(skip_serializing_if = "Option::is_none")]
409 pub position_idx: Option<i32>,
410 #[builder(default)]
411 #[serde(skip_serializing_if = "Option::is_none")]
412 #[builder(setter(strip_option))]
413 pub order_link_id: Option<String>,
414 #[builder(default)]
415 #[serde(skip_serializing_if = "Option::is_none")]
416 pub take_profit: Option<String>,
417 #[builder(default)]
418 #[serde(skip_serializing_if = "Option::is_none")]
419 pub stop_loss: Option<String>,
420 #[builder(default)]
421 #[serde(skip_serializing_if = "Option::is_none")]
422 pub tp_trigger_by: Option<BybitTriggerType>,
423 #[builder(default)]
424 #[serde(skip_serializing_if = "Option::is_none")]
425 pub sl_trigger_by: Option<BybitTriggerType>,
426 #[builder(default)]
427 #[serde(skip_serializing_if = "Option::is_none")]
428 pub reduce_only: Option<bool>,
429 #[builder(default)]
430 #[serde(skip_serializing_if = "Option::is_none")]
431 pub close_on_trigger: Option<bool>,
432 #[builder(default)]
433 #[serde(skip_serializing_if = "Option::is_none")]
434 pub smp_type: Option<String>,
435 #[builder(default)]
436 #[serde(skip_serializing_if = "Option::is_none")]
437 pub mmp: Option<bool>,
438 #[builder(default)]
439 #[serde(skip_serializing_if = "Option::is_none")]
440 pub tpsl_mode: Option<BybitTpSlMode>,
441 #[builder(default)]
442 #[serde(skip_serializing_if = "Option::is_none")]
443 pub tp_limit_price: Option<String>,
444 #[builder(default)]
445 #[serde(skip_serializing_if = "Option::is_none")]
446 pub sl_limit_price: Option<String>,
447 #[builder(default)]
448 #[serde(skip_serializing_if = "Option::is_none")]
449 pub tp_order_type: Option<BybitOrderType>,
450 #[builder(default)]
451 #[serde(skip_serializing_if = "Option::is_none")]
452 pub sl_order_type: Option<BybitOrderType>,
453}
454
455#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
460#[serde(rename_all = "camelCase")]
461pub struct BybitBatchPlaceOrderParams {
462 pub category: BybitProductType,
463 pub request: Vec<BybitBatchPlaceOrderEntry>,
464}
465
466#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
471#[serde(rename_all = "camelCase")]
472pub struct BybitPlaceOrderParams {
473 #[serde(flatten)]
474 pub order: BybitBatchPlaceOrderEntry,
475 pub category: BybitProductType,
476 #[builder(default)]
477 #[serde(skip_serializing_if = "Option::is_none")]
478 pub slippage_tolerance_type: Option<String>,
479 #[builder(default)]
480 #[serde(skip_serializing_if = "Option::is_none")]
481 pub slippage_tolerance: Option<String>,
482}
483
484#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
489#[serde(rename_all = "camelCase")]
490pub struct BybitBatchAmendOrderEntry {
491 pub symbol: String,
492 #[serde(skip_serializing_if = "Option::is_none")]
493 #[builder(setter(strip_option))]
494 pub order_id: Option<String>,
495 #[serde(skip_serializing_if = "Option::is_none")]
496 #[builder(setter(strip_option))]
497 pub order_link_id: Option<String>,
498 #[serde(skip_serializing_if = "Option::is_none")]
499 pub order_iv: Option<String>,
500 #[serde(skip_serializing_if = "Option::is_none")]
501 pub trigger_price: Option<String>,
502 #[serde(skip_serializing_if = "Option::is_none")]
503 pub qty: Option<String>,
504 #[serde(skip_serializing_if = "Option::is_none")]
505 pub price: Option<String>,
506 #[serde(skip_serializing_if = "Option::is_none")]
507 pub tpsl_mode: Option<BybitTpSlMode>,
508 #[serde(skip_serializing_if = "Option::is_none")]
509 pub take_profit: Option<String>,
510 #[serde(skip_serializing_if = "Option::is_none")]
511 pub stop_loss: Option<String>,
512 #[serde(skip_serializing_if = "Option::is_none")]
513 pub tp_trigger_by: Option<BybitTriggerType>,
514 #[serde(skip_serializing_if = "Option::is_none")]
515 pub sl_trigger_by: Option<BybitTriggerType>,
516 #[serde(skip_serializing_if = "Option::is_none")]
517 pub trigger_by: Option<BybitTriggerType>,
518 #[serde(skip_serializing_if = "Option::is_none")]
519 pub tp_limit_price: Option<String>,
520 #[serde(skip_serializing_if = "Option::is_none")]
521 pub sl_limit_price: Option<String>,
522}
523
524#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
529#[serde(rename_all = "camelCase")]
530pub struct BybitBatchAmendOrderParams {
531 pub category: BybitProductType,
532 pub request: Vec<BybitBatchAmendOrderEntry>,
533}
534
535#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
540#[serde(rename_all = "camelCase")]
541pub struct BybitAmendOrderParams {
542 #[serde(flatten)]
543 pub order: BybitBatchAmendOrderEntry,
544 pub category: BybitProductType,
545}
546
547#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
552#[serde(rename_all = "camelCase")]
553pub struct BybitBatchCancelOrderEntry {
554 pub symbol: String,
555 #[serde(skip_serializing_if = "Option::is_none")]
556 #[builder(setter(strip_option))]
557 pub order_id: Option<String>,
558 #[serde(skip_serializing_if = "Option::is_none")]
559 #[builder(setter(strip_option))]
560 pub order_link_id: Option<String>,
561 #[serde(skip_serializing_if = "Option::is_none")]
562 pub order_filter: Option<String>,
563}
564
565#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
570#[serde(rename_all = "camelCase")]
571pub struct BybitBatchCancelOrderParams {
572 pub category: BybitProductType,
573 pub request: Vec<BybitBatchCancelOrderEntry>,
574}
575
576#[derive(Clone, Debug, Deserialize, Serialize, Builder)]
581#[serde(rename_all = "camelCase")]
582pub struct BybitCancelOrderParams {
583 #[serde(flatten)]
584 pub order: BybitBatchCancelOrderEntry,
585 pub category: BybitProductType,
586}
587
588#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
593#[serde(rename_all = "camelCase")]
594#[builder(default)]
595#[builder(setter(into))]
596pub struct BybitCancelAllOrdersParams {
597 pub category: BybitProductType,
598 #[serde(skip_serializing_if = "Option::is_none")]
599 #[builder(setter(strip_option))]
600 pub symbol: Option<String>,
601 #[serde(skip_serializing_if = "Option::is_none")]
602 #[builder(setter(strip_option))]
603 pub base_coin: Option<String>,
604 #[serde(skip_serializing_if = "Option::is_none")]
605 #[builder(setter(strip_option))]
606 pub settle_coin: Option<String>,
607 #[serde(skip_serializing_if = "Option::is_none")]
608 #[builder(setter(strip_option))]
609 pub order_filter: Option<String>,
610 #[serde(skip_serializing_if = "Option::is_none")]
611 #[builder(setter(strip_option))]
612 pub stop_order_type: Option<String>,
613}
614
615#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
620#[serde(rename_all = "camelCase")]
621#[builder(default)]
622#[builder(setter(into))]
623pub struct BybitOpenOrdersParams {
624 pub category: BybitProductType,
625 #[serde(skip_serializing_if = "Option::is_none")]
626 #[builder(setter(strip_option))]
627 pub symbol: Option<String>,
628 #[serde(skip_serializing_if = "Option::is_none")]
629 #[builder(setter(strip_option))]
630 pub base_coin: Option<String>,
631 #[serde(skip_serializing_if = "Option::is_none")]
632 #[builder(setter(strip_option))]
633 pub settle_coin: Option<String>,
634 #[serde(skip_serializing_if = "Option::is_none")]
635 #[builder(setter(strip_option))]
636 pub order_id: Option<String>,
637 #[serde(skip_serializing_if = "Option::is_none")]
638 #[builder(setter(strip_option))]
639 pub order_link_id: Option<String>,
640 #[serde(skip_serializing_if = "Option::is_none")]
641 #[builder(setter(strip_option))]
642 pub open_only: Option<BybitOpenOnly>,
643 #[serde(skip_serializing_if = "Option::is_none")]
644 #[builder(setter(strip_option))]
645 pub order_filter: Option<BybitOrderFilter>,
646 #[serde(skip_serializing_if = "Option::is_none")]
647 #[builder(setter(strip_option))]
648 pub limit: Option<u32>,
649 #[serde(skip_serializing_if = "Option::is_none")]
650 #[builder(setter(strip_option))]
651 pub cursor: Option<String>,
652}
653
654#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
659#[serde(rename_all = "camelCase")]
660#[builder(default)]
661#[builder(setter(into))]
662pub struct BybitOrderHistoryParams {
663 pub category: BybitProductType,
664 #[serde(skip_serializing_if = "Option::is_none")]
665 #[builder(setter(strip_option))]
666 pub symbol: Option<String>,
667 #[serde(skip_serializing_if = "Option::is_none")]
668 #[builder(setter(strip_option))]
669 pub base_coin: Option<String>,
670 #[serde(skip_serializing_if = "Option::is_none")]
671 #[builder(setter(strip_option))]
672 pub settle_coin: Option<String>,
673 #[serde(skip_serializing_if = "Option::is_none")]
674 #[builder(setter(strip_option))]
675 pub order_id: Option<String>,
676 #[serde(skip_serializing_if = "Option::is_none")]
677 #[builder(setter(strip_option))]
678 pub order_link_id: Option<String>,
679 #[serde(skip_serializing_if = "Option::is_none")]
680 #[builder(setter(strip_option))]
681 pub open_only: Option<BybitOpenOnly>,
682 #[serde(skip_serializing_if = "Option::is_none")]
683 #[builder(setter(strip_option))]
684 pub order_filter: Option<BybitOrderFilter>,
685 #[serde(skip_serializing_if = "Option::is_none")]
686 #[builder(setter(strip_option))]
687 pub order_status: Option<BybitOrderStatus>,
688 #[serde(skip_serializing_if = "Option::is_none")]
689 #[builder(setter(strip_option))]
690 pub start_time: Option<i64>,
691 #[serde(skip_serializing_if = "Option::is_none")]
692 #[serde(rename = "endTime")]
693 #[builder(setter(strip_option))]
694 pub end_time: Option<i64>,
695 #[serde(skip_serializing_if = "Option::is_none")]
696 #[builder(setter(strip_option))]
697 pub limit: Option<u32>,
698 #[serde(skip_serializing_if = "Option::is_none")]
699 #[builder(setter(strip_option))]
700 pub cursor: Option<String>,
701}
702
703#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
708#[serde(rename_all = "camelCase")]
709#[builder(default)]
710#[builder(setter(into))]
711pub struct BybitTradeHistoryParams {
712 pub category: BybitProductType,
713 #[serde(skip_serializing_if = "Option::is_none")]
714 #[builder(setter(strip_option))]
715 pub symbol: Option<String>,
716 #[serde(skip_serializing_if = "Option::is_none")]
717 #[builder(setter(strip_option))]
718 pub base_coin: Option<String>,
719 #[serde(skip_serializing_if = "Option::is_none")]
720 #[builder(setter(strip_option))]
721 pub order_id: Option<String>,
722 #[serde(skip_serializing_if = "Option::is_none")]
723 #[builder(setter(strip_option))]
724 pub order_link_id: Option<String>,
725 #[serde(skip_serializing_if = "Option::is_none")]
726 #[builder(setter(strip_option))]
727 pub start_time: Option<i64>,
728 #[serde(skip_serializing_if = "Option::is_none")]
729 #[serde(rename = "endTime")]
730 #[builder(setter(strip_option))]
731 pub end_time: Option<i64>,
732 #[serde(skip_serializing_if = "Option::is_none")]
733 #[builder(setter(strip_option))]
734 pub exec_type: Option<BybitExecType>,
735 #[serde(skip_serializing_if = "Option::is_none")]
736 #[builder(setter(strip_option))]
737 pub limit: Option<u32>,
738 #[serde(skip_serializing_if = "Option::is_none")]
739 #[builder(setter(strip_option))]
740 pub cursor: Option<String>,
741}
742
743#[derive(Clone, Debug, Deserialize, Serialize, Default, Builder)]
748#[serde(rename_all = "camelCase")]
749#[builder(default)]
750#[builder(setter(into))]
751pub struct BybitUpdateSubApiParams {
752 #[serde(skip_serializing_if = "Option::is_none")]
753 #[builder(setter(strip_option))]
754 pub api_key: Option<String>,
755 #[serde(skip_serializing_if = "Option::is_none")]
756 #[builder(setter(strip_option))]
757 pub read_only: Option<i32>,
758 #[serde(skip_serializing_if = "Option::is_none")]
759 #[builder(setter(strip_option))]
760 pub ips: Option<String>,
761}