crypticorn 2.17.0rc3__py3-none-any.whl → 2.17.0rc5__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.
- crypticorn/auth/client/api/admin_api.py +0 -2
- crypticorn/auth/client/api/auth_api.py +0 -4
- crypticorn/auth/client/api/service_api.py +0 -4
- crypticorn/auth/client/api/user_api.py +0 -4
- crypticorn/auth/client/api/wallet_api.py +0 -4
- crypticorn/auth/client/api_client.py +0 -5
- crypticorn/auth/client/models/add_wallet_request.py +1 -1
- crypticorn/auth/client/models/authorize_user_request.py +1 -1
- crypticorn/auth/client/models/create_api_key_request.py +1 -1
- crypticorn/auth/client/models/create_user_request.py +1 -1
- crypticorn/auth/client/models/get_api_keys200_response_inner.py +1 -1
- crypticorn/auth/client/models/list_wallets200_response_balances_inner_sale_round.py +1 -1
- crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet.py +1 -1
- crypticorn/auth/client/models/list_wallets200_response_balances_inner_wallet_vesting_wallets_inner.py +1 -1
- crypticorn/auth/client/models/list_wallets200_response_data_inner.py +1 -1
- crypticorn/auth/client/models/logout_default_response.py +1 -1
- crypticorn/auth/client/models/oauth_callback200_response_user.py +1 -1
- crypticorn/auth/client/models/refresh_token_info200_response_user_session.py +1 -1
- crypticorn/auth/client/models/rotate_tokens200_response.py +1 -1
- crypticorn/auth/client/models/token_info200_response.py +1 -1
- crypticorn/auth/client/models/update_user_request.py +1 -1
- crypticorn/auth/client/models/user_by_username200_response.py +1 -1
- crypticorn/auth/client/models/verify200_response.py +1 -1
- crypticorn/auth/client/models/verify_email200_response_auth.py +1 -1
- crypticorn/auth/client/models/verify_email200_response_auth_auth.py +1 -1
- crypticorn/auth/client/models/whoami200_response.py +1 -1
- crypticorn/cli/init.py +1 -1
- crypticorn/cli/templates/.env.docker.temp +3 -0
- crypticorn/cli/templates/.env.example.temp +4 -0
- crypticorn/client.py +0 -1
- crypticorn/common/auth.py +5 -16
- crypticorn/common/decorators.py +1 -2
- crypticorn/common/enums.py +0 -2
- crypticorn/common/metrics.py +1 -1
- crypticorn/common/middleware.py +0 -1
- crypticorn/common/pagination.py +135 -22
- crypticorn/common/utils.py +1 -2
- crypticorn/dex/__init__.py +6 -0
- crypticorn/dex/client/__init__.py +49 -0
- crypticorn/dex/client/api/__init__.py +6 -0
- crypticorn/dex/client/api/admin_api.py +3046 -0
- crypticorn/dex/client/api/signals_api.py +1821 -0
- crypticorn/dex/client/api/status_api.py +907 -0
- crypticorn/dex/client/api_client.py +753 -0
- crypticorn/dex/client/api_response.py +20 -0
- crypticorn/dex/client/configuration.py +620 -0
- crypticorn/dex/client/exceptions.py +220 -0
- crypticorn/dex/client/models/__init__.py +30 -0
- crypticorn/dex/client/models/api_error_identifier.py +121 -0
- crypticorn/dex/client/models/api_error_level.py +37 -0
- crypticorn/dex/client/models/api_error_type.py +37 -0
- crypticorn/dex/client/models/exception_detail.py +117 -0
- crypticorn/dex/client/models/log_level.py +38 -0
- crypticorn/dex/client/models/paginated_response_signal_with_token.py +134 -0
- crypticorn/dex/client/models/risk.py +86 -0
- crypticorn/dex/client/models/signal_overview_stats.py +156 -0
- crypticorn/dex/client/models/signal_volume.py +84 -0
- crypticorn/dex/client/models/signal_with_token.py +163 -0
- crypticorn/dex/client/models/token_data.py +127 -0
- crypticorn/dex/client/models/token_detail.py +116 -0
- crypticorn/dex/client/py.typed +0 -0
- crypticorn/dex/client/rest.py +217 -0
- crypticorn/dex/main.py +1 -0
- crypticorn/hive/client/api/admin_api.py +0 -3
- crypticorn/hive/client/api/data_api.py +0 -4
- crypticorn/hive/client/api/models_api.py +1 -4
- crypticorn/hive/client/api/status_api.py +0 -3
- crypticorn/hive/client/api_client.py +0 -5
- crypticorn/hive/client/models/coin_info.py +1 -1
- crypticorn/hive/client/models/exception_detail.py +1 -1
- crypticorn/hive/client/models/target_info.py +1 -1
- crypticorn/hive/utils.py +2 -2
- crypticorn/klines/client/api/admin_api.py +0 -3
- crypticorn/klines/client/api/change_in_timeframe_api.py +0 -4
- crypticorn/klines/client/api/funding_rates_api.py +0 -4
- crypticorn/klines/client/api/ohlcv_data_api.py +0 -4
- crypticorn/klines/client/api/status_api.py +0 -3
- crypticorn/klines/client/api/symbols_api.py +0 -4
- crypticorn/klines/client/api/udf_api.py +0 -2
- crypticorn/klines/client/api_client.py +0 -5
- crypticorn/klines/client/models/exception_detail.py +1 -1
- crypticorn/klines/client/models/ohlcv.py +1 -1
- crypticorn/klines/client/models/symbol_group.py +1 -1
- crypticorn/klines/client/models/udf_config.py +1 -1
- crypticorn/metrics/client/api/admin_api.py +0 -3
- crypticorn/metrics/client/api/exchanges_api.py +0 -4
- crypticorn/metrics/client/api/indicators_api.py +0 -4
- crypticorn/metrics/client/api/logs_api.py +0 -4
- crypticorn/metrics/client/api/marketcap_api.py +0 -4
- crypticorn/metrics/client/api/markets_api.py +0 -4
- crypticorn/metrics/client/api/quote_currencies_api.py +0 -4
- crypticorn/metrics/client/api/status_api.py +0 -3
- crypticorn/metrics/client/api/tokens_api.py +0 -2
- crypticorn/metrics/client/api_client.py +0 -5
- crypticorn/metrics/client/models/exception_detail.py +1 -1
- crypticorn/metrics/client/models/exchange_mapping.py +1 -1
- crypticorn/metrics/client/models/marketcap_ranking.py +1 -1
- crypticorn/metrics/client/models/marketcap_symbol_ranking.py +1 -1
- crypticorn/metrics/client/models/ohlcv.py +1 -1
- crypticorn/pay/client/api/admin_api.py +0 -3
- crypticorn/pay/client/api/now_payments_api.py +0 -4
- crypticorn/pay/client/api/payments_api.py +0 -4
- crypticorn/pay/client/api/products_api.py +0 -4
- crypticorn/pay/client/api/status_api.py +0 -3
- crypticorn/pay/client/api_client.py +0 -5
- crypticorn/pay/client/models/exception_detail.py +1 -1
- crypticorn/pay/client/models/now_create_invoice_req.py +1 -1
- crypticorn/pay/client/models/now_create_invoice_res.py +1 -1
- crypticorn/pay/client/models/product.py +1 -1
- crypticorn/pay/client/models/product_create.py +1 -1
- crypticorn/pay/client/models/product_update.py +1 -1
- crypticorn/trade/client/__init__.py +5 -0
- crypticorn/trade/client/api/admin_api.py +22 -23
- crypticorn/trade/client/api/bots_api.py +4712 -168
- crypticorn/trade/client/api/orders_api.py +220 -106
- crypticorn/trade/client/configuration.py +2 -2
- crypticorn/trade/client/models/__init__.py +5 -0
- crypticorn/trade/client/models/bot.py +7 -18
- crypticorn/trade/client/models/bot_create.py +17 -1
- crypticorn/trade/client/models/bot_update.py +17 -1
- crypticorn/trade/client/models/exchange_key_create.py +17 -1
- crypticorn/trade/client/models/exchange_key_update.py +17 -1
- crypticorn/trade/client/models/notification.py +17 -1
- crypticorn/trade/client/models/notification_create.py +17 -1
- crypticorn/trade/client/models/notification_update.py +17 -1
- crypticorn/trade/client/models/orders_count.py +88 -0
- crypticorn/trade/client/models/paginated_response_order.py +134 -0
- crypticorn/trade/client/models/pn_l.py +95 -0
- crypticorn/trade/client/models/strategy.py +17 -1
- crypticorn/trade/client/models/strategy_create.py +17 -1
- crypticorn/trade/client/models/strategy_update.py +17 -1
- {crypticorn-2.17.0rc3.dist-info → crypticorn-2.17.0rc5.dist-info}/METADATA +1 -1
- {crypticorn-2.17.0rc3.dist-info → crypticorn-2.17.0rc5.dist-info}/RECORD +137 -106
- {crypticorn-2.17.0rc3.dist-info → crypticorn-2.17.0rc5.dist-info}/WHEEL +0 -0
- {crypticorn-2.17.0rc3.dist-info → crypticorn-2.17.0rc5.dist-info}/entry_points.txt +0 -0
- {crypticorn-2.17.0rc3.dist-info → crypticorn-2.17.0rc5.dist-info}/licenses/LICENSE +0 -0
- {crypticorn-2.17.0rc3.dist-info → crypticorn-2.17.0rc5.dist-info}/top_level.txt +0 -0
crypticorn/common/pagination.py
CHANGED
@@ -2,13 +2,27 @@
|
|
2
2
|
|
3
3
|
from typing import Annotated, Any, Generic, Type, TypeVar, Optional, Literal
|
4
4
|
from pydantic import BaseModel, Field, model_validator
|
5
|
+
import math
|
5
6
|
|
6
7
|
T = TypeVar("T")
|
7
8
|
|
8
9
|
|
9
10
|
class PaginatedResponse(BaseModel, Generic[T]):
|
10
11
|
"""Pydantic model for paginated response
|
11
|
-
>>>
|
12
|
+
>>> @router.get("", operation_id="getOrders")
|
13
|
+
>>> async def get_orders(
|
14
|
+
>>> params: Annotated[PaginationParams, Query()],
|
15
|
+
>>> ) -> PaginatedResponse[Order]:
|
16
|
+
>>> ...
|
17
|
+
>>> return PaginatedResponse[Order](
|
18
|
+
data=orders,
|
19
|
+
total=count,
|
20
|
+
page=params.page,
|
21
|
+
page_size=params.page_size,
|
22
|
+
prev=PaginatedResponse.get_prev_page(params.page),
|
23
|
+
next=PaginatedResponse.get_next_page(count, params.page_size, params.page),
|
24
|
+
last=PaginatedResponse.get_last_page(count, params.page_size),
|
25
|
+
)
|
12
26
|
"""
|
13
27
|
|
14
28
|
data: list[T]
|
@@ -17,20 +31,40 @@ class PaginatedResponse(BaseModel, Generic[T]):
|
|
17
31
|
page_size: int = Field(description="The number of items per page")
|
18
32
|
prev: Optional[int] = Field(None, description="The previous page number")
|
19
33
|
next: Optional[int] = Field(None, description="The next page number")
|
34
|
+
last: Optional[int] = Field(None, description="The last page number")
|
35
|
+
|
36
|
+
@staticmethod
|
37
|
+
def get_next_page(total: int, page_size: int, page: int) -> Optional[int]:
|
38
|
+
"""Get the next page number"""
|
39
|
+
if page < math.ceil(total / page_size):
|
40
|
+
return page + 1
|
41
|
+
return None
|
42
|
+
|
43
|
+
@staticmethod
|
44
|
+
def get_prev_page(page: int) -> Optional[int]:
|
45
|
+
"""Get the previous page number"""
|
46
|
+
if page > 1:
|
47
|
+
return page - 1
|
48
|
+
return None
|
49
|
+
|
50
|
+
@staticmethod
|
51
|
+
def get_last_page(total: int, page_size: int) -> int:
|
52
|
+
"""Get the last page number"""
|
53
|
+
return max(1, math.ceil(total / page_size))
|
20
54
|
|
21
55
|
|
22
56
|
class PaginationParams(BaseModel, Generic[T]):
|
23
57
|
"""Standard pagination parameters for usage in API endpoints. Check the [fastapi docs](https://fastapi.tiangolo.com/tutorial/query-param-models/?h=qu#query-parameters-with-a-pydantic-model) for usage examples.
|
24
|
-
|
58
|
+
You should inherit from this class when adding additional parameters. You should use this class in combination with `PaginatedResponse` to return the paginated response.
|
25
59
|
Usage:
|
26
60
|
>>> @router.get("", operation_id="getOrders")
|
27
61
|
>>> async def get_orders(
|
28
|
-
>>>
|
62
|
+
>>> params: Annotated[PaginationParams[Order], Query()],
|
29
63
|
>>> ) -> PaginatedResponse[Order]:
|
30
64
|
>>> ...
|
31
65
|
|
32
66
|
The default size is 10 items per page and there is a `HeavyPaginationParams` class with 100 items per page. You can override this default:
|
33
|
-
>>> class LightPaginationParams(PaginationParams
|
67
|
+
>>> class LightPaginationParams(PaginationParams):
|
34
68
|
>>> page_size: int = Field(default=5, description="The number of items per page")
|
35
69
|
"""
|
36
70
|
|
@@ -50,11 +84,11 @@ class HeavyPaginationParams(PaginationParams[T]):
|
|
50
84
|
|
51
85
|
class SortParams(BaseModel, Generic[T]):
|
52
86
|
"""Standard sort parameters for usage in API endpoints. Check the [fastapi docs](https://fastapi.tiangolo.com/tutorial/query-param-models/?h=qu#query-parameters-with-a-pydantic-model) for usage examples.
|
53
|
-
|
87
|
+
You should inherit from this class when adding additional parameters.
|
54
88
|
Usage:
|
55
89
|
>>> @router.get("", operation_id="getOrders")
|
56
90
|
>>> async def get_orders(
|
57
|
-
>>>
|
91
|
+
>>> params: Annotated[SortParams[Order], Query()],
|
58
92
|
>>> ) -> PaginatedResponse[Order]:
|
59
93
|
>>> ...
|
60
94
|
"""
|
@@ -70,7 +104,7 @@ class SortParams(BaseModel, Generic[T]):
|
|
70
104
|
args: tuple = self.__pydantic_generic_metadata__.get("args")
|
71
105
|
if not args or not issubclass(args[0], BaseModel):
|
72
106
|
raise TypeError(
|
73
|
-
"
|
107
|
+
"SortParams must be used with a Pydantic BaseModel as a generic parameter"
|
74
108
|
)
|
75
109
|
if self.sort_by:
|
76
110
|
# check if the sort field is valid
|
@@ -83,24 +117,31 @@ class SortParams(BaseModel, Generic[T]):
|
|
83
117
|
raise ValueError(
|
84
118
|
f"Invalid order: '{self.sort_order}' — must be one of: ['asc', 'desc']"
|
85
119
|
)
|
86
|
-
if
|
120
|
+
if (
|
121
|
+
self.sort_order
|
122
|
+
and self.sort_by is None
|
123
|
+
or self.sort_by
|
124
|
+
and self.sort_order is None
|
125
|
+
):
|
87
126
|
raise ValueError("sort_order and sort_by must be provided together")
|
88
127
|
return self
|
89
128
|
|
90
129
|
|
91
130
|
class FilterParams(BaseModel, Generic[T]):
|
92
131
|
"""Standard filter parameters for usage in API endpoints. Check the [fastapi docs](https://fastapi.tiangolo.com/tutorial/query-param-models/?h=qu#query-parameters-with-a-pydantic-model) for usage examples.
|
93
|
-
|
132
|
+
You should inherit from this class when adding additional parameters.
|
94
133
|
Usage:
|
95
134
|
>>> @router.get("", operation_id="getOrders")
|
96
135
|
>>> async def get_orders(
|
97
|
-
>>>
|
136
|
+
>>> params: Annotated[FilterParams[Order], Query()],
|
98
137
|
>>> ) -> PaginatedResponse[Order]:
|
99
138
|
>>> ...
|
100
139
|
"""
|
101
140
|
|
102
141
|
filter_by: Optional[str] = Field(None, description="The field to filter by")
|
103
|
-
filter_value: Optional[
|
142
|
+
filter_value: Optional[str] = Field(None, description="The value to filter with")
|
143
|
+
# currently openapi-gen does not support typing.Any in combo with None, so we use str
|
144
|
+
# this is fine since the input is a string anyways from the request and the correct type is enforced by the model validator from the filter_by field
|
104
145
|
|
105
146
|
@model_validator(mode="after")
|
106
147
|
def validate_filter(self):
|
@@ -119,34 +160,104 @@ class FilterParams(BaseModel, Generic[T]):
|
|
119
160
|
raise ValueError(
|
120
161
|
f"Invalid field: '{self.filter_by}'. Must be one of: {list(model.model_fields)}"
|
121
162
|
)
|
122
|
-
self.filter_value = _enforce_field_type(
|
163
|
+
self.filter_value = _enforce_field_type(
|
164
|
+
model, self.filter_by, self.filter_value
|
165
|
+
)
|
123
166
|
return self
|
124
167
|
|
125
168
|
|
126
|
-
class
|
127
|
-
"""Combines
|
169
|
+
class SortFilterParams(SortParams[T], FilterParams[T]):
|
170
|
+
"""Combines sort and filter parameters. Just a convenience class for when you need to combine sort and filter parameters.
|
171
|
+
You should inherit from this class when adding additional parameters.
|
128
172
|
Usage:
|
129
173
|
>>> @router.get("", operation_id="getOrders")
|
130
174
|
>>> async def get_orders(
|
131
|
-
>>>
|
175
|
+
>>> params: Annotated[SortFilterParams[Order], Query()],
|
132
176
|
>>> ) -> PaginatedResponse[Order]:
|
133
177
|
>>> ...
|
134
178
|
"""
|
135
179
|
|
136
|
-
|
180
|
+
@model_validator(mode="after")
|
181
|
+
def validate_sort_filter(self):
|
182
|
+
self.validate_sort()
|
183
|
+
self.validate_filter()
|
184
|
+
return self
|
137
185
|
|
138
186
|
|
139
|
-
class
|
140
|
-
"""Combines pagination
|
187
|
+
class PageFilterParams(PaginationParams[T], FilterParams[T]):
|
188
|
+
"""Combines pagination and filter parameters. Just a convenience class for when you need to combine pagination and filter parameters.
|
189
|
+
You should inherit from this class when adding additional parameters.
|
141
190
|
Usage:
|
142
191
|
>>> @router.get("", operation_id="getOrders")
|
143
192
|
>>> async def get_orders(
|
144
|
-
>>>
|
193
|
+
>>> params: Annotated[PageFilterParams[Order], Query()],
|
145
194
|
>>> ) -> PaginatedResponse[Order]:
|
146
195
|
>>> ...
|
147
196
|
"""
|
148
197
|
|
149
|
-
|
198
|
+
@model_validator(mode="after")
|
199
|
+
def validate_page_filter(self):
|
200
|
+
self.validate_filter()
|
201
|
+
return self
|
202
|
+
|
203
|
+
|
204
|
+
class PageSortParams(PaginationParams[T], SortParams[T]):
|
205
|
+
"""Combines pagination and sort parameters. Just a convenience class for when you need to combine pagination and sort parameters.
|
206
|
+
You should inherit from this class when adding additional parameters.
|
207
|
+
Usage:
|
208
|
+
>>> @router.get("", operation_id="getOrders")
|
209
|
+
>>> async def get_orders(
|
210
|
+
>>> params: Annotated[PageSortParams[Order], Query()],
|
211
|
+
>>> ) -> PaginatedResponse[Order]:
|
212
|
+
>>> ...
|
213
|
+
"""
|
214
|
+
|
215
|
+
@model_validator(mode="after")
|
216
|
+
def validate_page_sort(self):
|
217
|
+
self.validate_sort()
|
218
|
+
return self
|
219
|
+
|
220
|
+
|
221
|
+
class PageSortFilterParams(
|
222
|
+
PaginationParams[T],
|
223
|
+
SortParams[T],
|
224
|
+
FilterParams[T],
|
225
|
+
):
|
226
|
+
"""Combines pagination, filter, and sort parameters. Just a convenience class for when you need to combine pagination, filter, and sort parameters.
|
227
|
+
You should inherit from this class when adding additional parameters.
|
228
|
+
Usage:
|
229
|
+
>>> @router.get("", operation_id="getOrders")
|
230
|
+
>>> async def get_orders(
|
231
|
+
>>> params: Annotated[PageSortFilterParams[Order], Query()],
|
232
|
+
>>> ) -> PaginatedResponse[Order]:
|
233
|
+
>>> ...
|
234
|
+
"""
|
235
|
+
|
236
|
+
@model_validator(mode="after")
|
237
|
+
def validate_filter_combo(self):
|
238
|
+
self.validate_filter()
|
239
|
+
self.validate_sort()
|
240
|
+
return self
|
241
|
+
|
242
|
+
|
243
|
+
class HeavyPageSortFilterParams(
|
244
|
+
HeavyPaginationParams[T], FilterParams[T], SortParams[T]
|
245
|
+
):
|
246
|
+
"""Combines heavy pagination, filter, and sort parameters. Just a convenience class for when you need to combine heavy pagination, filter, and sort parameters.
|
247
|
+
You should inherit from this class when adding additional parameters.
|
248
|
+
Usage:
|
249
|
+
>>> @router.get("", operation_id="getOrders")
|
250
|
+
>>> async def get_orders(
|
251
|
+
>>> params: Annotated[HeavyPageSortFilterParams[Order], Query()],
|
252
|
+
>>> ) -> PaginatedResponse[Order]:
|
253
|
+
>>> ...
|
254
|
+
"""
|
255
|
+
|
256
|
+
@model_validator(mode="after")
|
257
|
+
def validate_heavy_page_sort_filter(self):
|
258
|
+
self.validate_filter()
|
259
|
+
self.validate_sort()
|
260
|
+
return self
|
150
261
|
|
151
262
|
|
152
263
|
def _enforce_field_type(model: Type[BaseModel], field_name: str, value: Any) -> Any:
|
@@ -168,5 +279,7 @@ def _enforce_field_type(model: Type[BaseModel], field_name: str, value: Any) ->
|
|
168
279
|
|
169
280
|
try:
|
170
281
|
return expected_type(value)
|
171
|
-
except Exception
|
172
|
-
raise ValueError(
|
282
|
+
except Exception:
|
283
|
+
raise ValueError(
|
284
|
+
f"Expected {expected_type} for field {field_name}, got {type(value)}"
|
285
|
+
)
|
crypticorn/common/utils.py
CHANGED
@@ -1,11 +1,10 @@
|
|
1
1
|
"""General utility functions and helper methods used across the codebase."""
|
2
2
|
|
3
3
|
from datetime import datetime
|
4
|
-
from typing import Any,
|
4
|
+
from typing import Any, Union
|
5
5
|
from decimal import Decimal
|
6
6
|
import string
|
7
7
|
import random
|
8
|
-
from pydantic import BaseModel
|
9
8
|
import typing_extensions
|
10
9
|
import warnings
|
11
10
|
|
@@ -0,0 +1,49 @@
|
|
1
|
+
# coding: utf-8
|
2
|
+
|
3
|
+
# flake8: noqa
|
4
|
+
|
5
|
+
"""
|
6
|
+
DEX AI API
|
7
|
+
|
8
|
+
API for DEX AI
|
9
|
+
|
10
|
+
The version of the OpenAPI document: 1.0.0
|
11
|
+
Generated by OpenAPI Generator (https://openapi-generator.tech)
|
12
|
+
|
13
|
+
Do not edit the class manually.
|
14
|
+
""" # noqa: E501
|
15
|
+
|
16
|
+
|
17
|
+
__version__ = "1.0.0"
|
18
|
+
|
19
|
+
# import apis into sdk package
|
20
|
+
from crypticorn.dex.client.api.admin_api import AdminApi
|
21
|
+
from crypticorn.dex.client.api.signals_api import SignalsApi
|
22
|
+
from crypticorn.dex.client.api.status_api import StatusApi
|
23
|
+
|
24
|
+
# import ApiClient
|
25
|
+
from crypticorn.dex.client.api_response import ApiResponse
|
26
|
+
from crypticorn.dex.client.api_client import ApiClient
|
27
|
+
from crypticorn.dex.client.configuration import Configuration
|
28
|
+
from crypticorn.dex.client.exceptions import OpenApiException
|
29
|
+
from crypticorn.dex.client.exceptions import ApiTypeError
|
30
|
+
from crypticorn.dex.client.exceptions import ApiValueError
|
31
|
+
from crypticorn.dex.client.exceptions import ApiKeyError
|
32
|
+
from crypticorn.dex.client.exceptions import ApiAttributeError
|
33
|
+
from crypticorn.dex.client.exceptions import ApiException
|
34
|
+
|
35
|
+
# import models into sdk package
|
36
|
+
from crypticorn.dex.client.models.api_error_identifier import ApiErrorIdentifier
|
37
|
+
from crypticorn.dex.client.models.api_error_level import ApiErrorLevel
|
38
|
+
from crypticorn.dex.client.models.api_error_type import ApiErrorType
|
39
|
+
from crypticorn.dex.client.models.exception_detail import ExceptionDetail
|
40
|
+
from crypticorn.dex.client.models.log_level import LogLevel
|
41
|
+
from crypticorn.dex.client.models.paginated_response_signal_with_token import (
|
42
|
+
PaginatedResponseSignalWithToken,
|
43
|
+
)
|
44
|
+
from crypticorn.dex.client.models.risk import Risk
|
45
|
+
from crypticorn.dex.client.models.signal_overview_stats import SignalOverviewStats
|
46
|
+
from crypticorn.dex.client.models.signal_volume import SignalVolume
|
47
|
+
from crypticorn.dex.client.models.signal_with_token import SignalWithToken
|
48
|
+
from crypticorn.dex.client.models.token_data import TokenData
|
49
|
+
from crypticorn.dex.client.models.token_detail import TokenDetail
|