crypticorn 2.16.0__py3-none-any.whl → 2.17.0rc2__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (86) hide show
  1. crypticorn/__init__.py +2 -2
  2. crypticorn/auth/client/api/admin_api.py +415 -13
  3. crypticorn/auth/client/api/auth_api.py +2622 -113
  4. crypticorn/auth/client/api/service_api.py +258 -7
  5. crypticorn/auth/client/api/user_api.py +2485 -270
  6. crypticorn/auth/client/api/wallet_api.py +1518 -77
  7. crypticorn/auth/client/models/create_api_key_request.py +2 -1
  8. crypticorn/auth/client/models/get_api_keys200_response_inner.py +2 -1
  9. crypticorn/auth/client/rest.py +23 -4
  10. crypticorn/auth/main.py +8 -5
  11. crypticorn/client.py +227 -59
  12. crypticorn/common/__init__.py +1 -0
  13. crypticorn/common/metrics.py +18 -0
  14. crypticorn/common/middleware.py +46 -0
  15. crypticorn/common/pagination.py +137 -18
  16. crypticorn/common/router/admin_router.py +12 -2
  17. crypticorn/common/utils.py +2 -1
  18. crypticorn/common/warnings.py +7 -0
  19. crypticorn/hive/client/api/admin_api.py +1234 -51
  20. crypticorn/hive/client/api/data_api.py +517 -13
  21. crypticorn/hive/client/api/models_api.py +1657 -83
  22. crypticorn/hive/client/api/status_api.py +415 -13
  23. crypticorn/hive/client/models/api_error_identifier.py +1 -1
  24. crypticorn/hive/client/rest.py +23 -4
  25. crypticorn/hive/main.py +99 -25
  26. crypticorn/klines/client/api/admin_api.py +1234 -51
  27. crypticorn/klines/client/api/change_in_timeframe_api.py +278 -7
  28. crypticorn/klines/client/api/funding_rates_api.py +324 -7
  29. crypticorn/klines/client/api/ohlcv_data_api.py +399 -7
  30. crypticorn/klines/client/api/status_api.py +415 -13
  31. crypticorn/klines/client/api/symbols_api.py +225 -7
  32. crypticorn/klines/client/api/udf_api.py +1393 -120
  33. crypticorn/klines/client/models/api_error_identifier.py +3 -1
  34. crypticorn/klines/client/rest.py +23 -4
  35. crypticorn/klines/main.py +89 -12
  36. crypticorn/metrics/client/api/admin_api.py +1234 -51
  37. crypticorn/metrics/client/api/exchanges_api.py +1405 -140
  38. crypticorn/metrics/client/api/indicators_api.py +640 -13
  39. crypticorn/metrics/client/api/logs_api.py +305 -7
  40. crypticorn/metrics/client/api/marketcap_api.py +1240 -60
  41. crypticorn/metrics/client/api/markets_api.py +352 -7
  42. crypticorn/metrics/client/api/quote_currencies_api.py +237 -7
  43. crypticorn/metrics/client/api/status_api.py +415 -13
  44. crypticorn/metrics/client/api/tokens_api.py +400 -13
  45. crypticorn/metrics/client/configuration.py +4 -2
  46. crypticorn/metrics/client/rest.py +23 -4
  47. crypticorn/metrics/main.py +113 -19
  48. crypticorn/pay/client/api/admin_api.py +1720 -126
  49. crypticorn/pay/client/api/now_payments_api.py +1013 -42
  50. crypticorn/pay/client/api/payments_api.py +580 -13
  51. crypticorn/pay/client/api/products_api.py +915 -25
  52. crypticorn/pay/client/api/status_api.py +415 -13
  53. crypticorn/pay/client/configuration.py +2 -2
  54. crypticorn/pay/client/models/api_error_identifier.py +7 -7
  55. crypticorn/pay/client/models/scope.py +1 -0
  56. crypticorn/pay/client/rest.py +23 -4
  57. crypticorn/pay/main.py +10 -6
  58. crypticorn/trade/client/__init__.py +2 -1
  59. crypticorn/trade/client/api/__init__.py +0 -1
  60. crypticorn/trade/client/api/admin_api.py +1718 -123
  61. crypticorn/trade/client/api/api_keys_api.py +1596 -103
  62. crypticorn/trade/client/api/bots_api.py +1106 -47
  63. crypticorn/trade/client/api/exchanges_api.py +592 -19
  64. crypticorn/trade/client/api/notifications_api.py +1340 -112
  65. crypticorn/trade/client/api/orders_api.py +240 -7
  66. crypticorn/trade/client/api/status_api.py +415 -13
  67. crypticorn/trade/client/api/strategies_api.py +1170 -69
  68. crypticorn/trade/client/api/trading_actions_api.py +650 -19
  69. crypticorn/trade/client/models/__init__.py +2 -0
  70. crypticorn/trade/client/models/exchange.py +6 -1
  71. crypticorn/trade/client/models/exchange_key_balance.py +111 -0
  72. crypticorn/trade/client/models/futures_balance.py +27 -25
  73. crypticorn/trade/client/models/spot_balance.py +110 -0
  74. crypticorn/trade/client/models/strategy.py +5 -3
  75. crypticorn/trade/client/models/strategy_create.py +6 -4
  76. crypticorn/trade/client/models/strategy_exchange_info.py +16 -4
  77. crypticorn/trade/client/models/strategy_update.py +2 -2
  78. crypticorn/trade/client/rest.py +23 -4
  79. crypticorn/trade/main.py +15 -12
  80. {crypticorn-2.16.0.dist-info → crypticorn-2.17.0rc2.dist-info}/METADATA +65 -20
  81. {crypticorn-2.16.0.dist-info → crypticorn-2.17.0rc2.dist-info}/RECORD +85 -83
  82. crypticorn/trade/client/api/futures_trading_panel_api.py +0 -1285
  83. {crypticorn-2.16.0.dist-info → crypticorn-2.17.0rc2.dist-info}/WHEEL +0 -0
  84. {crypticorn-2.16.0.dist-info → crypticorn-2.17.0rc2.dist-info}/entry_points.txt +0 -0
  85. {crypticorn-2.16.0.dist-info → crypticorn-2.17.0rc2.dist-info}/licenses/LICENSE +0 -0
  86. {crypticorn-2.16.0.dist-info → crypticorn-2.17.0rc2.dist-info}/top_level.txt +0 -0
@@ -23,6 +23,24 @@ from crypticorn.trade.client.api_client import ApiClient, RequestSerialized
23
23
  from crypticorn.trade.client.api_response import ApiResponse
24
24
  from crypticorn.trade.client.rest import RESTResponseType
25
25
 
26
+ # Import async_to_sync for sync methods
27
+ try:
28
+ from asgiref.sync import async_to_sync
29
+
30
+ _HAS_ASGIREF = True
31
+ except ImportError:
32
+ _HAS_ASGIREF = False
33
+
34
+ def async_to_sync(async_func):
35
+ """Fallback decorator that raises an error if asgiref is not available."""
36
+
37
+ def wrapper(*args, **kwargs):
38
+ raise ImportError(
39
+ "asgiref is required for sync methods. Install with: pip install asgiref"
40
+ )
41
+
42
+ return wrapper
43
+
26
44
 
27
45
  class ExchangesApi:
28
46
  """NOTE: This class is auto generated by OpenAPI Generator
@@ -31,13 +49,126 @@ class ExchangesApi:
31
49
  Do not edit the class manually.
32
50
  """
33
51
 
34
- def __init__(self, api_client=None) -> None:
52
+ def __init__(self, api_client=None, is_sync: bool = False) -> None:
35
53
  if api_client is None:
36
54
  api_client = ApiClient.get_default()
37
55
  self.api_client = api_client
56
+ self.is_sync = is_sync
57
+
58
+ @validate_call
59
+ def get_all_exchanges(
60
+ self,
61
+ _request_timeout: Union[
62
+ None,
63
+ Annotated[StrictFloat, Field(gt=0)],
64
+ Tuple[
65
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
66
+ ],
67
+ ] = None,
68
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
69
+ _content_type: Optional[StrictStr] = None,
70
+ _headers: Optional[Dict[StrictStr, Any]] = None,
71
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
72
+ ) -> List[Exchange]:
73
+ """Get All Exchanges
74
+
75
+ This method can work in both sync and async modes based on the is_sync flag.
76
+ """
77
+ if self.is_sync:
78
+ return self._get_all_exchanges_sync(
79
+ _request_timeout=_request_timeout,
80
+ _request_auth=_request_auth,
81
+ _content_type=_content_type,
82
+ _headers=_headers,
83
+ _host_index=_host_index,
84
+ )
85
+
86
+ else:
87
+ return self._get_all_exchanges_async(
88
+ _request_timeout=_request_timeout,
89
+ _request_auth=_request_auth,
90
+ _content_type=_content_type,
91
+ _headers=_headers,
92
+ _host_index=_host_index,
93
+ )
94
+
95
+ @validate_call
96
+ def get_all_exchanges_with_http_info(
97
+ self,
98
+ _request_timeout: Union[
99
+ None,
100
+ Annotated[StrictFloat, Field(gt=0)],
101
+ Tuple[
102
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
103
+ ],
104
+ ] = None,
105
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
106
+ _content_type: Optional[StrictStr] = None,
107
+ _headers: Optional[Dict[StrictStr, Any]] = None,
108
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
109
+ ) -> ApiResponse[List[Exchange]]:
110
+ """Get All Exchanges with HTTP info
111
+
112
+ This method can work in both sync and async modes based on the is_sync flag.
113
+ """
114
+ if self.is_sync:
115
+ return self._get_all_exchanges_sync_with_http_info(
116
+ _request_timeout=_request_timeout,
117
+ _request_auth=_request_auth,
118
+ _content_type=_content_type,
119
+ _headers=_headers,
120
+ _host_index=_host_index,
121
+ )
122
+
123
+ else:
124
+ return self._get_all_exchanges_async_with_http_info(
125
+ _request_timeout=_request_timeout,
126
+ _request_auth=_request_auth,
127
+ _content_type=_content_type,
128
+ _headers=_headers,
129
+ _host_index=_host_index,
130
+ )
131
+
132
+ @validate_call
133
+ def get_all_exchanges_without_preload_content(
134
+ self,
135
+ _request_timeout: Union[
136
+ None,
137
+ Annotated[StrictFloat, Field(gt=0)],
138
+ Tuple[
139
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
140
+ ],
141
+ ] = None,
142
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
143
+ _content_type: Optional[StrictStr] = None,
144
+ _headers: Optional[Dict[StrictStr, Any]] = None,
145
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
146
+ ) -> RESTResponseType:
147
+ """Get All Exchanges without preloading content
148
+
149
+ This method can work in both sync and async modes based on the is_sync flag.
150
+ """
151
+ if self.is_sync:
152
+ return self._get_all_exchanges_sync_without_preload_content(
153
+ _request_timeout=_request_timeout,
154
+ _request_auth=_request_auth,
155
+ _content_type=_content_type,
156
+ _headers=_headers,
157
+ _host_index=_host_index,
158
+ )
38
159
 
160
+ else:
161
+ return self._get_all_exchanges_async_without_preload_content(
162
+ _request_timeout=_request_timeout,
163
+ _request_auth=_request_auth,
164
+ _content_type=_content_type,
165
+ _headers=_headers,
166
+ _host_index=_host_index,
167
+ )
168
+
169
+ # Private async implementation methods
39
170
  @validate_call
40
- async def get_all_exchanges(
171
+ async def _get_all_exchanges_async(
41
172
  self,
42
173
  _request_timeout: Union[
43
174
  None,
@@ -97,7 +228,7 @@ class ExchangesApi:
97
228
  ).data
98
229
 
99
230
  @validate_call
100
- async def get_all_exchanges_with_http_info(
231
+ async def _get_all_exchanges_async_with_http_info(
101
232
  self,
102
233
  _request_timeout: Union[
103
234
  None,
@@ -152,12 +283,11 @@ class ExchangesApi:
152
283
  )
153
284
  await response_data.read()
154
285
  return self.api_client.response_deserialize(
155
- response_data=response_data,
156
- response_types_map=_response_types_map,
286
+ response_data=response_data, response_types_map=_response_types_map
157
287
  )
158
288
 
159
289
  @validate_call
160
- async def get_all_exchanges_without_preload_content(
290
+ async def _get_all_exchanges_async_without_preload_content(
161
291
  self,
162
292
  _request_timeout: Union[
163
293
  None,
@@ -210,7 +340,80 @@ class ExchangesApi:
210
340
  response_data = await self.api_client.call_api(
211
341
  *_param, _request_timeout=_request_timeout
212
342
  )
213
- return response_data.response
343
+ return response_data
344
+
345
+ # Private sync implementation methods
346
+ @validate_call
347
+ def _get_all_exchanges_sync(
348
+ self,
349
+ _request_timeout: Union[
350
+ None,
351
+ Annotated[StrictFloat, Field(gt=0)],
352
+ Tuple[
353
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
354
+ ],
355
+ ] = None,
356
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
357
+ _content_type: Optional[StrictStr] = None,
358
+ _headers: Optional[Dict[StrictStr, Any]] = None,
359
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
360
+ ) -> List[Exchange]:
361
+ """Synchronous version of get_all_exchanges"""
362
+ return async_to_sync(self._get_all_exchanges_async)(
363
+ _request_timeout=_request_timeout,
364
+ _request_auth=_request_auth,
365
+ _content_type=_content_type,
366
+ _headers=_headers,
367
+ _host_index=_host_index,
368
+ )
369
+
370
+ @validate_call
371
+ def _get_all_exchanges_sync_with_http_info(
372
+ self,
373
+ _request_timeout: Union[
374
+ None,
375
+ Annotated[StrictFloat, Field(gt=0)],
376
+ Tuple[
377
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
378
+ ],
379
+ ] = None,
380
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
381
+ _content_type: Optional[StrictStr] = None,
382
+ _headers: Optional[Dict[StrictStr, Any]] = None,
383
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
384
+ ) -> ApiResponse[List[Exchange]]:
385
+ """Synchronous version of get_all_exchanges_with_http_info"""
386
+ return async_to_sync(self._get_all_exchanges_async_with_http_info)(
387
+ _request_timeout=_request_timeout,
388
+ _request_auth=_request_auth,
389
+ _content_type=_content_type,
390
+ _headers=_headers,
391
+ _host_index=_host_index,
392
+ )
393
+
394
+ @validate_call
395
+ def _get_all_exchanges_sync_without_preload_content(
396
+ self,
397
+ _request_timeout: Union[
398
+ None,
399
+ Annotated[StrictFloat, Field(gt=0)],
400
+ Tuple[
401
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
402
+ ],
403
+ ] = None,
404
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
405
+ _content_type: Optional[StrictStr] = None,
406
+ _headers: Optional[Dict[StrictStr, Any]] = None,
407
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
408
+ ) -> RESTResponseType:
409
+ """Synchronous version of get_all_exchanges_without_preload_content"""
410
+ return async_to_sync(self._get_all_exchanges_async_without_preload_content)(
411
+ _request_timeout=_request_timeout,
412
+ _request_auth=_request_auth,
413
+ _content_type=_content_type,
414
+ _headers=_headers,
415
+ _host_index=_host_index,
416
+ )
214
417
 
215
418
  def _get_all_exchanges_serialize(
216
419
  self,
@@ -264,7 +467,119 @@ class ExchangesApi:
264
467
  )
265
468
 
266
469
  @validate_call
267
- async def get_planned_exchanges(
470
+ def get_planned_exchanges(
471
+ self,
472
+ _request_timeout: Union[
473
+ None,
474
+ Annotated[StrictFloat, Field(gt=0)],
475
+ Tuple[
476
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
477
+ ],
478
+ ] = None,
479
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
480
+ _content_type: Optional[StrictStr] = None,
481
+ _headers: Optional[Dict[StrictStr, Any]] = None,
482
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
483
+ ) -> List[Exchange]:
484
+ """Get Planned Exchanges
485
+
486
+ This method can work in both sync and async modes based on the is_sync flag.
487
+ """
488
+ if self.is_sync:
489
+ return self._get_planned_exchanges_sync(
490
+ _request_timeout=_request_timeout,
491
+ _request_auth=_request_auth,
492
+ _content_type=_content_type,
493
+ _headers=_headers,
494
+ _host_index=_host_index,
495
+ )
496
+
497
+ else:
498
+ return self._get_planned_exchanges_async(
499
+ _request_timeout=_request_timeout,
500
+ _request_auth=_request_auth,
501
+ _content_type=_content_type,
502
+ _headers=_headers,
503
+ _host_index=_host_index,
504
+ )
505
+
506
+ @validate_call
507
+ def get_planned_exchanges_with_http_info(
508
+ self,
509
+ _request_timeout: Union[
510
+ None,
511
+ Annotated[StrictFloat, Field(gt=0)],
512
+ Tuple[
513
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
514
+ ],
515
+ ] = None,
516
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
517
+ _content_type: Optional[StrictStr] = None,
518
+ _headers: Optional[Dict[StrictStr, Any]] = None,
519
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
520
+ ) -> ApiResponse[List[Exchange]]:
521
+ """Get Planned Exchanges with HTTP info
522
+
523
+ This method can work in both sync and async modes based on the is_sync flag.
524
+ """
525
+ if self.is_sync:
526
+ return self._get_planned_exchanges_sync_with_http_info(
527
+ _request_timeout=_request_timeout,
528
+ _request_auth=_request_auth,
529
+ _content_type=_content_type,
530
+ _headers=_headers,
531
+ _host_index=_host_index,
532
+ )
533
+
534
+ else:
535
+ return self._get_planned_exchanges_async_with_http_info(
536
+ _request_timeout=_request_timeout,
537
+ _request_auth=_request_auth,
538
+ _content_type=_content_type,
539
+ _headers=_headers,
540
+ _host_index=_host_index,
541
+ )
542
+
543
+ @validate_call
544
+ def get_planned_exchanges_without_preload_content(
545
+ self,
546
+ _request_timeout: Union[
547
+ None,
548
+ Annotated[StrictFloat, Field(gt=0)],
549
+ Tuple[
550
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
551
+ ],
552
+ ] = None,
553
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
554
+ _content_type: Optional[StrictStr] = None,
555
+ _headers: Optional[Dict[StrictStr, Any]] = None,
556
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
557
+ ) -> RESTResponseType:
558
+ """Get Planned Exchanges without preloading content
559
+
560
+ This method can work in both sync and async modes based on the is_sync flag.
561
+ """
562
+ if self.is_sync:
563
+ return self._get_planned_exchanges_sync_without_preload_content(
564
+ _request_timeout=_request_timeout,
565
+ _request_auth=_request_auth,
566
+ _content_type=_content_type,
567
+ _headers=_headers,
568
+ _host_index=_host_index,
569
+ )
570
+
571
+ else:
572
+ return self._get_planned_exchanges_async_without_preload_content(
573
+ _request_timeout=_request_timeout,
574
+ _request_auth=_request_auth,
575
+ _content_type=_content_type,
576
+ _headers=_headers,
577
+ _host_index=_host_index,
578
+ )
579
+
580
+ # Private async implementation methods
581
+ @validate_call
582
+ async def _get_planned_exchanges_async(
268
583
  self,
269
584
  _request_timeout: Union[
270
585
  None,
@@ -324,7 +639,7 @@ class ExchangesApi:
324
639
  ).data
325
640
 
326
641
  @validate_call
327
- async def get_planned_exchanges_with_http_info(
642
+ async def _get_planned_exchanges_async_with_http_info(
328
643
  self,
329
644
  _request_timeout: Union[
330
645
  None,
@@ -379,12 +694,11 @@ class ExchangesApi:
379
694
  )
380
695
  await response_data.read()
381
696
  return self.api_client.response_deserialize(
382
- response_data=response_data,
383
- response_types_map=_response_types_map,
697
+ response_data=response_data, response_types_map=_response_types_map
384
698
  )
385
699
 
386
700
  @validate_call
387
- async def get_planned_exchanges_without_preload_content(
701
+ async def _get_planned_exchanges_async_without_preload_content(
388
702
  self,
389
703
  _request_timeout: Union[
390
704
  None,
@@ -437,7 +751,80 @@ class ExchangesApi:
437
751
  response_data = await self.api_client.call_api(
438
752
  *_param, _request_timeout=_request_timeout
439
753
  )
440
- return response_data.response
754
+ return response_data
755
+
756
+ # Private sync implementation methods
757
+ @validate_call
758
+ def _get_planned_exchanges_sync(
759
+ self,
760
+ _request_timeout: Union[
761
+ None,
762
+ Annotated[StrictFloat, Field(gt=0)],
763
+ Tuple[
764
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
765
+ ],
766
+ ] = None,
767
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
768
+ _content_type: Optional[StrictStr] = None,
769
+ _headers: Optional[Dict[StrictStr, Any]] = None,
770
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
771
+ ) -> List[Exchange]:
772
+ """Synchronous version of get_planned_exchanges"""
773
+ return async_to_sync(self._get_planned_exchanges_async)(
774
+ _request_timeout=_request_timeout,
775
+ _request_auth=_request_auth,
776
+ _content_type=_content_type,
777
+ _headers=_headers,
778
+ _host_index=_host_index,
779
+ )
780
+
781
+ @validate_call
782
+ def _get_planned_exchanges_sync_with_http_info(
783
+ self,
784
+ _request_timeout: Union[
785
+ None,
786
+ Annotated[StrictFloat, Field(gt=0)],
787
+ Tuple[
788
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
789
+ ],
790
+ ] = None,
791
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
792
+ _content_type: Optional[StrictStr] = None,
793
+ _headers: Optional[Dict[StrictStr, Any]] = None,
794
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
795
+ ) -> ApiResponse[List[Exchange]]:
796
+ """Synchronous version of get_planned_exchanges_with_http_info"""
797
+ return async_to_sync(self._get_planned_exchanges_async_with_http_info)(
798
+ _request_timeout=_request_timeout,
799
+ _request_auth=_request_auth,
800
+ _content_type=_content_type,
801
+ _headers=_headers,
802
+ _host_index=_host_index,
803
+ )
804
+
805
+ @validate_call
806
+ def _get_planned_exchanges_sync_without_preload_content(
807
+ self,
808
+ _request_timeout: Union[
809
+ None,
810
+ Annotated[StrictFloat, Field(gt=0)],
811
+ Tuple[
812
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
813
+ ],
814
+ ] = None,
815
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
816
+ _content_type: Optional[StrictStr] = None,
817
+ _headers: Optional[Dict[StrictStr, Any]] = None,
818
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
819
+ ) -> RESTResponseType:
820
+ """Synchronous version of get_planned_exchanges_without_preload_content"""
821
+ return async_to_sync(self._get_planned_exchanges_async_without_preload_content)(
822
+ _request_timeout=_request_timeout,
823
+ _request_auth=_request_auth,
824
+ _content_type=_content_type,
825
+ _headers=_headers,
826
+ _host_index=_host_index,
827
+ )
441
828
 
442
829
  def _get_planned_exchanges_serialize(
443
830
  self,
@@ -491,7 +878,119 @@ class ExchangesApi:
491
878
  )
492
879
 
493
880
  @validate_call
494
- async def get_tradeable_exchanges(
881
+ def get_tradeable_exchanges(
882
+ self,
883
+ _request_timeout: Union[
884
+ None,
885
+ Annotated[StrictFloat, Field(gt=0)],
886
+ Tuple[
887
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
888
+ ],
889
+ ] = None,
890
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
891
+ _content_type: Optional[StrictStr] = None,
892
+ _headers: Optional[Dict[StrictStr, Any]] = None,
893
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
894
+ ) -> List[Exchange]:
895
+ """Get Tradeable Exchanges
896
+
897
+ This method can work in both sync and async modes based on the is_sync flag.
898
+ """
899
+ if self.is_sync:
900
+ return self._get_tradeable_exchanges_sync(
901
+ _request_timeout=_request_timeout,
902
+ _request_auth=_request_auth,
903
+ _content_type=_content_type,
904
+ _headers=_headers,
905
+ _host_index=_host_index,
906
+ )
907
+
908
+ else:
909
+ return self._get_tradeable_exchanges_async(
910
+ _request_timeout=_request_timeout,
911
+ _request_auth=_request_auth,
912
+ _content_type=_content_type,
913
+ _headers=_headers,
914
+ _host_index=_host_index,
915
+ )
916
+
917
+ @validate_call
918
+ def get_tradeable_exchanges_with_http_info(
919
+ self,
920
+ _request_timeout: Union[
921
+ None,
922
+ Annotated[StrictFloat, Field(gt=0)],
923
+ Tuple[
924
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
925
+ ],
926
+ ] = None,
927
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
928
+ _content_type: Optional[StrictStr] = None,
929
+ _headers: Optional[Dict[StrictStr, Any]] = None,
930
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
931
+ ) -> ApiResponse[List[Exchange]]:
932
+ """Get Tradeable Exchanges with HTTP info
933
+
934
+ This method can work in both sync and async modes based on the is_sync flag.
935
+ """
936
+ if self.is_sync:
937
+ return self._get_tradeable_exchanges_sync_with_http_info(
938
+ _request_timeout=_request_timeout,
939
+ _request_auth=_request_auth,
940
+ _content_type=_content_type,
941
+ _headers=_headers,
942
+ _host_index=_host_index,
943
+ )
944
+
945
+ else:
946
+ return self._get_tradeable_exchanges_async_with_http_info(
947
+ _request_timeout=_request_timeout,
948
+ _request_auth=_request_auth,
949
+ _content_type=_content_type,
950
+ _headers=_headers,
951
+ _host_index=_host_index,
952
+ )
953
+
954
+ @validate_call
955
+ def get_tradeable_exchanges_without_preload_content(
956
+ self,
957
+ _request_timeout: Union[
958
+ None,
959
+ Annotated[StrictFloat, Field(gt=0)],
960
+ Tuple[
961
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
962
+ ],
963
+ ] = None,
964
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
965
+ _content_type: Optional[StrictStr] = None,
966
+ _headers: Optional[Dict[StrictStr, Any]] = None,
967
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
968
+ ) -> RESTResponseType:
969
+ """Get Tradeable Exchanges without preloading content
970
+
971
+ This method can work in both sync and async modes based on the is_sync flag.
972
+ """
973
+ if self.is_sync:
974
+ return self._get_tradeable_exchanges_sync_without_preload_content(
975
+ _request_timeout=_request_timeout,
976
+ _request_auth=_request_auth,
977
+ _content_type=_content_type,
978
+ _headers=_headers,
979
+ _host_index=_host_index,
980
+ )
981
+
982
+ else:
983
+ return self._get_tradeable_exchanges_async_without_preload_content(
984
+ _request_timeout=_request_timeout,
985
+ _request_auth=_request_auth,
986
+ _content_type=_content_type,
987
+ _headers=_headers,
988
+ _host_index=_host_index,
989
+ )
990
+
991
+ # Private async implementation methods
992
+ @validate_call
993
+ async def _get_tradeable_exchanges_async(
495
994
  self,
496
995
  _request_timeout: Union[
497
996
  None,
@@ -551,7 +1050,7 @@ class ExchangesApi:
551
1050
  ).data
552
1051
 
553
1052
  @validate_call
554
- async def get_tradeable_exchanges_with_http_info(
1053
+ async def _get_tradeable_exchanges_async_with_http_info(
555
1054
  self,
556
1055
  _request_timeout: Union[
557
1056
  None,
@@ -606,12 +1105,11 @@ class ExchangesApi:
606
1105
  )
607
1106
  await response_data.read()
608
1107
  return self.api_client.response_deserialize(
609
- response_data=response_data,
610
- response_types_map=_response_types_map,
1108
+ response_data=response_data, response_types_map=_response_types_map
611
1109
  )
612
1110
 
613
1111
  @validate_call
614
- async def get_tradeable_exchanges_without_preload_content(
1112
+ async def _get_tradeable_exchanges_async_without_preload_content(
615
1113
  self,
616
1114
  _request_timeout: Union[
617
1115
  None,
@@ -664,7 +1162,82 @@ class ExchangesApi:
664
1162
  response_data = await self.api_client.call_api(
665
1163
  *_param, _request_timeout=_request_timeout
666
1164
  )
667
- return response_data.response
1165
+ return response_data
1166
+
1167
+ # Private sync implementation methods
1168
+ @validate_call
1169
+ def _get_tradeable_exchanges_sync(
1170
+ self,
1171
+ _request_timeout: Union[
1172
+ None,
1173
+ Annotated[StrictFloat, Field(gt=0)],
1174
+ Tuple[
1175
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
1176
+ ],
1177
+ ] = None,
1178
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1179
+ _content_type: Optional[StrictStr] = None,
1180
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1181
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1182
+ ) -> List[Exchange]:
1183
+ """Synchronous version of get_tradeable_exchanges"""
1184
+ return async_to_sync(self._get_tradeable_exchanges_async)(
1185
+ _request_timeout=_request_timeout,
1186
+ _request_auth=_request_auth,
1187
+ _content_type=_content_type,
1188
+ _headers=_headers,
1189
+ _host_index=_host_index,
1190
+ )
1191
+
1192
+ @validate_call
1193
+ def _get_tradeable_exchanges_sync_with_http_info(
1194
+ self,
1195
+ _request_timeout: Union[
1196
+ None,
1197
+ Annotated[StrictFloat, Field(gt=0)],
1198
+ Tuple[
1199
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
1200
+ ],
1201
+ ] = None,
1202
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1203
+ _content_type: Optional[StrictStr] = None,
1204
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1205
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1206
+ ) -> ApiResponse[List[Exchange]]:
1207
+ """Synchronous version of get_tradeable_exchanges_with_http_info"""
1208
+ return async_to_sync(self._get_tradeable_exchanges_async_with_http_info)(
1209
+ _request_timeout=_request_timeout,
1210
+ _request_auth=_request_auth,
1211
+ _content_type=_content_type,
1212
+ _headers=_headers,
1213
+ _host_index=_host_index,
1214
+ )
1215
+
1216
+ @validate_call
1217
+ def _get_tradeable_exchanges_sync_without_preload_content(
1218
+ self,
1219
+ _request_timeout: Union[
1220
+ None,
1221
+ Annotated[StrictFloat, Field(gt=0)],
1222
+ Tuple[
1223
+ Annotated[StrictFloat, Field(gt=0)], Annotated[StrictFloat, Field(gt=0)]
1224
+ ],
1225
+ ] = None,
1226
+ _request_auth: Optional[Dict[StrictStr, Any]] = None,
1227
+ _content_type: Optional[StrictStr] = None,
1228
+ _headers: Optional[Dict[StrictStr, Any]] = None,
1229
+ _host_index: Annotated[StrictInt, Field(ge=0, le=0)] = 0,
1230
+ ) -> RESTResponseType:
1231
+ """Synchronous version of get_tradeable_exchanges_without_preload_content"""
1232
+ return async_to_sync(
1233
+ self._get_tradeable_exchanges_async_without_preload_content
1234
+ )(
1235
+ _request_timeout=_request_timeout,
1236
+ _request_auth=_request_auth,
1237
+ _content_type=_content_type,
1238
+ _headers=_headers,
1239
+ _host_index=_host_index,
1240
+ )
668
1241
 
669
1242
  def _get_tradeable_exchanges_serialize(
670
1243
  self,