compass_api_sdk 0.9.47__py3-none-any.whl → 0.9.49__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.

Potentially problematic release.


This version of compass_api_sdk might be problematic. Click here for more details.

@@ -3,10 +3,10 @@
3
3
  import importlib.metadata
4
4
 
5
5
  __title__: str = "compass_api_sdk"
6
- __version__: str = "0.9.47"
6
+ __version__: str = "0.9.49"
7
7
  __openapi_doc_version__: str = "0.0.1"
8
- __gen_version__: str = "2.656.9"
9
- __user_agent__: str = "speakeasy-sdk/python 0.9.47 2.656.9 0.0.1 compass_api_sdk"
8
+ __gen_version__: str = "2.657.1"
9
+ __user_agent__: str = "speakeasy-sdk/python 0.9.49 2.657.1 0.0.1 compass_api_sdk"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
@@ -9,6 +9,198 @@ from typing import Any, Mapping, Optional, Union
9
9
 
10
10
 
11
11
  class AaveV3(BaseSDK):
12
+ def aave_supported_tokens(
13
+ self,
14
+ *,
15
+ chain: models.AaveAaveSupportedTokensChain = models.AaveAaveSupportedTokensChain.ARBITRUM_MAINNET,
16
+ block: OptionalNullable[int] = UNSET,
17
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
18
+ server_url: Optional[str] = None,
19
+ timeout_ms: Optional[int] = None,
20
+ http_headers: Optional[Mapping[str, str]] = None,
21
+ ) -> models.AaveSupportedTokensResponse:
22
+ r"""Aave Supported Tokens
23
+
24
+ Returns the list of supported tokens on Aave for the specified network, along
25
+ with key metadata.
26
+
27
+ For each token, the response includes:
28
+ - The symbol and contract address.
29
+ - Whether the token is currently enabled for supplying (depositing).
30
+ - Whether it is enabled for borrowing.
31
+
32
+ :param chain: The chain to use.
33
+ :param block: Optional block number (defaults to latest).
34
+ :param retries: Override the default retry configuration for this method
35
+ :param server_url: Override the default server URL for this method
36
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
37
+ :param http_headers: Additional headers to set or replace on requests.
38
+ """
39
+ base_url = None
40
+ url_variables = None
41
+ if timeout_ms is None:
42
+ timeout_ms = self.sdk_configuration.timeout_ms
43
+
44
+ if server_url is not None:
45
+ base_url = server_url
46
+ else:
47
+ base_url = self._get_url(base_url, url_variables)
48
+
49
+ request = models.AaveAaveSupportedTokensRequest(
50
+ chain=chain,
51
+ block=block,
52
+ )
53
+
54
+ req = self._build_request(
55
+ method="GET",
56
+ path="/v0/aave/aave_supported_tokens/get",
57
+ base_url=base_url,
58
+ url_variables=url_variables,
59
+ request=request,
60
+ request_body_required=False,
61
+ request_has_path_params=False,
62
+ request_has_query_params=True,
63
+ user_agent_header="user-agent",
64
+ accept_header_value="application/json",
65
+ http_headers=http_headers,
66
+ security=self.sdk_configuration.security,
67
+ timeout_ms=timeout_ms,
68
+ )
69
+
70
+ if retries == UNSET:
71
+ if self.sdk_configuration.retry_config is not UNSET:
72
+ retries = self.sdk_configuration.retry_config
73
+
74
+ retry_config = None
75
+ if isinstance(retries, utils.RetryConfig):
76
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
77
+
78
+ http_res = self.do_request(
79
+ hook_ctx=HookContext(
80
+ config=self.sdk_configuration,
81
+ base_url=base_url or "",
82
+ operation_id="aave_aave_supported_tokens",
83
+ oauth2_scopes=[],
84
+ security_source=self.sdk_configuration.security,
85
+ ),
86
+ request=req,
87
+ error_status_codes=["422", "4XX", "5XX"],
88
+ retry_config=retry_config,
89
+ )
90
+
91
+ response_data: Any = None
92
+ if utils.match_response(http_res, "200", "application/json"):
93
+ return unmarshal_json_response(models.AaveSupportedTokensResponse, http_res)
94
+ if utils.match_response(http_res, "422", "application/json"):
95
+ response_data = unmarshal_json_response(
96
+ errors.HTTPValidationErrorData, http_res
97
+ )
98
+ raise errors.HTTPValidationError(response_data, http_res)
99
+ if utils.match_response(http_res, "4XX", "*"):
100
+ http_res_text = utils.stream_to_text(http_res)
101
+ raise errors.APIError("API error occurred", http_res, http_res_text)
102
+ if utils.match_response(http_res, "5XX", "*"):
103
+ http_res_text = utils.stream_to_text(http_res)
104
+ raise errors.APIError("API error occurred", http_res, http_res_text)
105
+
106
+ raise errors.APIError("Unexpected response received", http_res)
107
+
108
+ async def aave_supported_tokens_async(
109
+ self,
110
+ *,
111
+ chain: models.AaveAaveSupportedTokensChain = models.AaveAaveSupportedTokensChain.ARBITRUM_MAINNET,
112
+ block: OptionalNullable[int] = UNSET,
113
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
114
+ server_url: Optional[str] = None,
115
+ timeout_ms: Optional[int] = None,
116
+ http_headers: Optional[Mapping[str, str]] = None,
117
+ ) -> models.AaveSupportedTokensResponse:
118
+ r"""Aave Supported Tokens
119
+
120
+ Returns the list of supported tokens on Aave for the specified network, along
121
+ with key metadata.
122
+
123
+ For each token, the response includes:
124
+ - The symbol and contract address.
125
+ - Whether the token is currently enabled for supplying (depositing).
126
+ - Whether it is enabled for borrowing.
127
+
128
+ :param chain: The chain to use.
129
+ :param block: Optional block number (defaults to latest).
130
+ :param retries: Override the default retry configuration for this method
131
+ :param server_url: Override the default server URL for this method
132
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
133
+ :param http_headers: Additional headers to set or replace on requests.
134
+ """
135
+ base_url = None
136
+ url_variables = None
137
+ if timeout_ms is None:
138
+ timeout_ms = self.sdk_configuration.timeout_ms
139
+
140
+ if server_url is not None:
141
+ base_url = server_url
142
+ else:
143
+ base_url = self._get_url(base_url, url_variables)
144
+
145
+ request = models.AaveAaveSupportedTokensRequest(
146
+ chain=chain,
147
+ block=block,
148
+ )
149
+
150
+ req = self._build_request_async(
151
+ method="GET",
152
+ path="/v0/aave/aave_supported_tokens/get",
153
+ base_url=base_url,
154
+ url_variables=url_variables,
155
+ request=request,
156
+ request_body_required=False,
157
+ request_has_path_params=False,
158
+ request_has_query_params=True,
159
+ user_agent_header="user-agent",
160
+ accept_header_value="application/json",
161
+ http_headers=http_headers,
162
+ security=self.sdk_configuration.security,
163
+ timeout_ms=timeout_ms,
164
+ )
165
+
166
+ if retries == UNSET:
167
+ if self.sdk_configuration.retry_config is not UNSET:
168
+ retries = self.sdk_configuration.retry_config
169
+
170
+ retry_config = None
171
+ if isinstance(retries, utils.RetryConfig):
172
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
173
+
174
+ http_res = await self.do_request_async(
175
+ hook_ctx=HookContext(
176
+ config=self.sdk_configuration,
177
+ base_url=base_url or "",
178
+ operation_id="aave_aave_supported_tokens",
179
+ oauth2_scopes=[],
180
+ security_source=self.sdk_configuration.security,
181
+ ),
182
+ request=req,
183
+ error_status_codes=["422", "4XX", "5XX"],
184
+ retry_config=retry_config,
185
+ )
186
+
187
+ response_data: Any = None
188
+ if utils.match_response(http_res, "200", "application/json"):
189
+ return unmarshal_json_response(models.AaveSupportedTokensResponse, http_res)
190
+ if utils.match_response(http_res, "422", "application/json"):
191
+ response_data = unmarshal_json_response(
192
+ errors.HTTPValidationErrorData, http_res
193
+ )
194
+ raise errors.HTTPValidationError(response_data, http_res)
195
+ if utils.match_response(http_res, "4XX", "*"):
196
+ http_res_text = await utils.stream_to_text_async(http_res)
197
+ raise errors.APIError("API error occurred", http_res, http_res_text)
198
+ if utils.match_response(http_res, "5XX", "*"):
199
+ http_res_text = await utils.stream_to_text_async(http_res)
200
+ raise errors.APIError("API error occurred", http_res, http_res_text)
201
+
202
+ raise errors.APIError("Unexpected response received", http_res)
203
+
12
204
  def rate(
13
205
  self,
14
206
  *,
@@ -4,6 +4,11 @@ from typing import TYPE_CHECKING
4
4
  from importlib import import_module
5
5
 
6
6
  if TYPE_CHECKING:
7
+ from .aave_aave_supported_tokensop import (
8
+ AaveAaveSupportedTokensChain,
9
+ AaveAaveSupportedTokensRequest,
10
+ AaveAaveSupportedTokensRequestTypedDict,
11
+ )
7
12
  from .aave_avg_rateop import (
8
13
  AaveAvgRateChain,
9
14
  AaveAvgRateRequest,
@@ -121,6 +126,14 @@ if TYPE_CHECKING:
121
126
  AaveSupplyRequestAmountTypedDict,
122
127
  AaveSupplyRequestTypedDict,
123
128
  )
129
+ from .aavesupportedtokenmetadata import (
130
+ AaveSupportedTokenMetadata,
131
+ AaveSupportedTokenMetadataTypedDict,
132
+ )
133
+ from .aavesupportedtokensresponse import (
134
+ AaveSupportedTokensResponse,
135
+ AaveSupportedTokensResponseTypedDict,
136
+ )
124
137
  from .aavetokenpriceresponse import (
125
138
  AaveTokenPriceResponse,
126
139
  AaveTokenPriceResponseTypedDict,
@@ -511,6 +524,26 @@ if TYPE_CHECKING:
511
524
  MulticallExecuteRequest,
512
525
  MulticallExecuteRequestTypedDict,
513
526
  )
527
+ from .odosswapparams import (
528
+ OdosSwapParams,
529
+ OdosSwapParamsAmount,
530
+ OdosSwapParamsAmountTypedDict,
531
+ OdosSwapParamsTokenIn,
532
+ OdosSwapParamsTokenInTypedDict,
533
+ OdosSwapParamsTokenOut,
534
+ OdosSwapParamsTokenOutTypedDict,
535
+ OdosSwapParamsTypedDict,
536
+ )
537
+ from .odosswaprequest import (
538
+ OdosSwapRequest,
539
+ OdosSwapRequestAmount,
540
+ OdosSwapRequestAmountTypedDict,
541
+ OdosSwapRequestTokenIn,
542
+ OdosSwapRequestTokenInTypedDict,
543
+ OdosSwapRequestTokenOut,
544
+ OdosSwapRequestTokenOutTypedDict,
545
+ OdosSwapRequestTypedDict,
546
+ )
514
547
  from .openposition import OpenPosition, OpenPositionTypedDict
515
548
  from .pendle_marketop import (
516
549
  PendleMarketChain,
@@ -993,6 +1026,9 @@ if TYPE_CHECKING:
993
1026
  from .yieldrange import YieldRange, YieldRangeTypedDict
994
1027
 
995
1028
  __all__ = [
1029
+ "AaveAaveSupportedTokensChain",
1030
+ "AaveAaveSupportedTokensRequest",
1031
+ "AaveAaveSupportedTokensRequestTypedDict",
996
1032
  "AaveAvgRateChain",
997
1033
  "AaveAvgRateRequest",
998
1034
  "AaveAvgRateRequestTypedDict",
@@ -1054,6 +1090,10 @@ __all__ = [
1054
1090
  "AaveSupplyRequestAmount",
1055
1091
  "AaveSupplyRequestAmountTypedDict",
1056
1092
  "AaveSupplyRequestTypedDict",
1093
+ "AaveSupportedTokenMetadata",
1094
+ "AaveSupportedTokenMetadataTypedDict",
1095
+ "AaveSupportedTokensResponse",
1096
+ "AaveSupportedTokensResponseTypedDict",
1057
1097
  "AaveTokenPriceChain",
1058
1098
  "AaveTokenPriceRequest",
1059
1099
  "AaveTokenPriceRequestTypedDict",
@@ -1349,6 +1389,22 @@ __all__ = [
1349
1389
  "MulticallExecuteRequestTypedDict",
1350
1390
  "Multiplier",
1351
1391
  "MultiplierTypedDict",
1392
+ "OdosSwapParams",
1393
+ "OdosSwapParamsAmount",
1394
+ "OdosSwapParamsAmountTypedDict",
1395
+ "OdosSwapParamsTokenIn",
1396
+ "OdosSwapParamsTokenInTypedDict",
1397
+ "OdosSwapParamsTokenOut",
1398
+ "OdosSwapParamsTokenOutTypedDict",
1399
+ "OdosSwapParamsTypedDict",
1400
+ "OdosSwapRequest",
1401
+ "OdosSwapRequestAmount",
1402
+ "OdosSwapRequestAmountTypedDict",
1403
+ "OdosSwapRequestTokenIn",
1404
+ "OdosSwapRequestTokenInTypedDict",
1405
+ "OdosSwapRequestTokenOut",
1406
+ "OdosSwapRequestTokenOutTypedDict",
1407
+ "OdosSwapRequestTypedDict",
1352
1408
  "OpenPosition",
1353
1409
  "OpenPositionTypedDict",
1354
1410
  "PendleAddLiquidityParams",
@@ -1710,6 +1766,9 @@ __all__ = [
1710
1766
  ]
1711
1767
 
1712
1768
  _dynamic_imports: dict[str, str] = {
1769
+ "AaveAaveSupportedTokensChain": ".aave_aave_supported_tokensop",
1770
+ "AaveAaveSupportedTokensRequest": ".aave_aave_supported_tokensop",
1771
+ "AaveAaveSupportedTokensRequestTypedDict": ".aave_aave_supported_tokensop",
1713
1772
  "AaveAvgRateChain": ".aave_avg_rateop",
1714
1773
  "AaveAvgRateRequest": ".aave_avg_rateop",
1715
1774
  "AaveAvgRateRequestTypedDict": ".aave_avg_rateop",
@@ -1792,6 +1851,10 @@ _dynamic_imports: dict[str, str] = {
1792
1851
  "AaveSupplyRequestAmount": ".aavesupplyrequest",
1793
1852
  "AaveSupplyRequestAmountTypedDict": ".aavesupplyrequest",
1794
1853
  "AaveSupplyRequestTypedDict": ".aavesupplyrequest",
1854
+ "AaveSupportedTokenMetadata": ".aavesupportedtokenmetadata",
1855
+ "AaveSupportedTokenMetadataTypedDict": ".aavesupportedtokenmetadata",
1856
+ "AaveSupportedTokensResponse": ".aavesupportedtokensresponse",
1857
+ "AaveSupportedTokensResponseTypedDict": ".aavesupportedtokensresponse",
1795
1858
  "AaveTokenPriceResponse": ".aavetokenpriceresponse",
1796
1859
  "AaveTokenPriceResponseTypedDict": ".aavetokenpriceresponse",
1797
1860
  "AaveUserPositionPerTokenResponse": ".aaveuserpositionpertokenresponse",
@@ -2064,6 +2127,22 @@ _dynamic_imports: dict[str, str] = {
2064
2127
  "MulticallAuthorizationResponseTypedDict": ".multicallauthorizationresponse",
2065
2128
  "MulticallExecuteRequest": ".multicallexecuterequest",
2066
2129
  "MulticallExecuteRequestTypedDict": ".multicallexecuterequest",
2130
+ "OdosSwapParams": ".odosswapparams",
2131
+ "OdosSwapParamsAmount": ".odosswapparams",
2132
+ "OdosSwapParamsAmountTypedDict": ".odosswapparams",
2133
+ "OdosSwapParamsTokenIn": ".odosswapparams",
2134
+ "OdosSwapParamsTokenInTypedDict": ".odosswapparams",
2135
+ "OdosSwapParamsTokenOut": ".odosswapparams",
2136
+ "OdosSwapParamsTokenOutTypedDict": ".odosswapparams",
2137
+ "OdosSwapParamsTypedDict": ".odosswapparams",
2138
+ "OdosSwapRequest": ".odosswaprequest",
2139
+ "OdosSwapRequestAmount": ".odosswaprequest",
2140
+ "OdosSwapRequestAmountTypedDict": ".odosswaprequest",
2141
+ "OdosSwapRequestTokenIn": ".odosswaprequest",
2142
+ "OdosSwapRequestTokenInTypedDict": ".odosswaprequest",
2143
+ "OdosSwapRequestTokenOut": ".odosswaprequest",
2144
+ "OdosSwapRequestTokenOutTypedDict": ".odosswaprequest",
2145
+ "OdosSwapRequestTypedDict": ".odosswaprequest",
2067
2146
  "OpenPosition": ".openposition",
2068
2147
  "OpenPositionTypedDict": ".openposition",
2069
2148
  "PendleMarketChain": ".pendle_marketop",
@@ -0,0 +1,73 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from compass_api_sdk.types import (
5
+ BaseModel,
6
+ Nullable,
7
+ OptionalNullable,
8
+ UNSET,
9
+ UNSET_SENTINEL,
10
+ )
11
+ from compass_api_sdk.utils import FieldMetadata, QueryParamMetadata
12
+ from enum import Enum
13
+ from pydantic import model_serializer
14
+ from typing_extensions import Annotated, NotRequired, TypedDict
15
+
16
+
17
+ class AaveAaveSupportedTokensChain(str, Enum):
18
+ r"""The chain to use."""
19
+
20
+ BASE_MAINNET = "base:mainnet"
21
+ ETHEREUM_MAINNET = "ethereum:mainnet"
22
+ ARBITRUM_MAINNET = "arbitrum:mainnet"
23
+
24
+
25
+ class AaveAaveSupportedTokensRequestTypedDict(TypedDict):
26
+ chain: AaveAaveSupportedTokensChain
27
+ r"""The chain to use."""
28
+ block: NotRequired[Nullable[int]]
29
+ r"""Optional block number (defaults to latest)."""
30
+
31
+
32
+ class AaveAaveSupportedTokensRequest(BaseModel):
33
+ chain: Annotated[
34
+ AaveAaveSupportedTokensChain,
35
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
36
+ ] = AaveAaveSupportedTokensChain.ARBITRUM_MAINNET
37
+ r"""The chain to use."""
38
+
39
+ block: Annotated[
40
+ OptionalNullable[int],
41
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
42
+ ] = UNSET
43
+ r"""Optional block number (defaults to latest)."""
44
+
45
+ @model_serializer(mode="wrap")
46
+ def serialize_model(self, handler):
47
+ optional_fields = ["block"]
48
+ nullable_fields = ["block"]
49
+ null_default_fields = []
50
+
51
+ serialized = handler(self)
52
+
53
+ m = {}
54
+
55
+ for n, f in type(self).model_fields.items():
56
+ k = f.alias or n
57
+ val = serialized.get(k)
58
+ serialized.pop(k, None)
59
+
60
+ optional_nullable = k in optional_fields and k in nullable_fields
61
+ is_set = (
62
+ self.__pydantic_fields_set__.intersection({n})
63
+ or k in null_default_fields
64
+ ) # pylint: disable=no-member
65
+
66
+ if val is not None and val != UNSET_SENTINEL:
67
+ m[k] = val
68
+ elif val != UNSET_SENTINEL and (
69
+ not k in optional_fields or (optional_nullable and is_set)
70
+ ):
71
+ m[k] = val
72
+
73
+ return m
@@ -0,0 +1,30 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from compass_api_sdk.types import BaseModel
5
+ from typing_extensions import TypedDict
6
+
7
+
8
+ class AaveSupportedTokenMetadataTypedDict(TypedDict):
9
+ symbol: str
10
+ r"""Token symbol (e.g., 'WETH', 'DAI')."""
11
+ address: str
12
+ r"""Token contract address."""
13
+ supplying_enabled: bool
14
+ r"""Whether the token can be used as collateral."""
15
+ borrowing_enabled: bool
16
+ r"""Whether the token can be borrowed."""
17
+
18
+
19
+ class AaveSupportedTokenMetadata(BaseModel):
20
+ symbol: str
21
+ r"""Token symbol (e.g., 'WETH', 'DAI')."""
22
+
23
+ address: str
24
+ r"""Token contract address."""
25
+
26
+ supplying_enabled: bool
27
+ r"""Whether the token can be used as collateral."""
28
+
29
+ borrowing_enabled: bool
30
+ r"""Whether the token can be borrowed."""
@@ -0,0 +1,20 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .aavesupportedtokenmetadata import (
5
+ AaveSupportedTokenMetadata,
6
+ AaveSupportedTokenMetadataTypedDict,
7
+ )
8
+ from compass_api_sdk.types import BaseModel
9
+ from typing import List
10
+ from typing_extensions import TypedDict
11
+
12
+
13
+ class AaveSupportedTokensResponseTypedDict(TypedDict):
14
+ tokens: List[AaveSupportedTokenMetadataTypedDict]
15
+ r"""List of supported tokens with configuration metadata for a given chain."""
16
+
17
+
18
+ class AaveSupportedTokensResponse(BaseModel):
19
+ tokens: List[AaveSupportedTokenMetadata]
20
+ r"""List of supported tokens with configuration metadata for a given chain."""
@@ -41,6 +41,7 @@ class GenericAllowanceContractEnum(str, Enum):
41
41
  SKY_USDC_USDS_CONVERTER = "SkyUsdcUsdsConverter"
42
42
  SKY_USDS_VAULT = "SkyUsdsVault"
43
43
  PENDLE_ROUTER = "PendleRouter"
44
+ ODOS_ROUTER = "OdosRouter"
44
45
 
45
46
 
46
47
  GenericAllowanceContractUnionTypedDict = TypeAliasType(
@@ -0,0 +1,73 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .token_enum import TokenEnum
5
+ from compass_api_sdk.types import BaseModel
6
+ from compass_api_sdk.utils import validate_const
7
+ import pydantic
8
+ from pydantic.functional_validators import AfterValidator
9
+ from typing import Literal, Optional, Union
10
+ from typing_extensions import Annotated, TypeAliasType, TypedDict
11
+
12
+
13
+ OdosSwapParamsTokenInTypedDict = TypeAliasType(
14
+ "OdosSwapParamsTokenInTypedDict", Union[TokenEnum, str]
15
+ )
16
+ r"""The symbol or address of the token that is to be sold."""
17
+
18
+
19
+ OdosSwapParamsTokenIn = TypeAliasType("OdosSwapParamsTokenIn", Union[TokenEnum, str])
20
+ r"""The symbol or address of the token that is to be sold."""
21
+
22
+
23
+ OdosSwapParamsTokenOutTypedDict = TypeAliasType(
24
+ "OdosSwapParamsTokenOutTypedDict", Union[TokenEnum, str]
25
+ )
26
+ r"""The symbol or address of the token that is to be bought."""
27
+
28
+
29
+ OdosSwapParamsTokenOut = TypeAliasType("OdosSwapParamsTokenOut", Union[TokenEnum, str])
30
+ r"""The symbol or address of the token that is to be bought."""
31
+
32
+
33
+ OdosSwapParamsAmountTypedDict = TypeAliasType(
34
+ "OdosSwapParamsAmountTypedDict", Union[float, str]
35
+ )
36
+ r"""The amount of token_in to be sold."""
37
+
38
+
39
+ OdosSwapParamsAmount = TypeAliasType("OdosSwapParamsAmount", Union[float, str])
40
+ r"""The amount of token_in to be sold."""
41
+
42
+
43
+ class OdosSwapParamsTypedDict(TypedDict):
44
+ token_in: OdosSwapParamsTokenInTypedDict
45
+ r"""The symbol or address of the token that is to be sold."""
46
+ token_out: OdosSwapParamsTokenOutTypedDict
47
+ r"""The symbol or address of the token that is to be bought."""
48
+ amount: OdosSwapParamsAmountTypedDict
49
+ r"""The amount of token_in to be sold."""
50
+ max_slippage_percent: float
51
+ r"""The maximum slippage allowed in percent. e.g. `1` means `1%` slippage allowed."""
52
+ action_type: Literal["ODOS_SWAP"]
53
+
54
+
55
+ class OdosSwapParams(BaseModel):
56
+ token_in: OdosSwapParamsTokenIn
57
+ r"""The symbol or address of the token that is to be sold."""
58
+
59
+ token_out: OdosSwapParamsTokenOut
60
+ r"""The symbol or address of the token that is to be bought."""
61
+
62
+ amount: OdosSwapParamsAmount
63
+ r"""The amount of token_in to be sold."""
64
+
65
+ max_slippage_percent: float
66
+ r"""The maximum slippage allowed in percent. e.g. `1` means `1%` slippage allowed."""
67
+
68
+ ACTION_TYPE: Annotated[
69
+ Annotated[
70
+ Optional[Literal["ODOS_SWAP"]], AfterValidator(validate_const("ODOS_SWAP"))
71
+ ],
72
+ pydantic.Field(alias="action_type"),
73
+ ] = "ODOS_SWAP"
@@ -0,0 +1,86 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .chain import Chain
5
+ from .token_enum import TokenEnum
6
+ from compass_api_sdk.types import BaseModel
7
+ from compass_api_sdk.utils import validate_const
8
+ import pydantic
9
+ from pydantic.functional_validators import AfterValidator
10
+ from typing import Literal, Optional, Union
11
+ from typing_extensions import Annotated, TypeAliasType, TypedDict
12
+
13
+
14
+ OdosSwapRequestTokenInTypedDict = TypeAliasType(
15
+ "OdosSwapRequestTokenInTypedDict", Union[TokenEnum, str]
16
+ )
17
+ r"""The symbol or address of the token that is to be sold."""
18
+
19
+
20
+ OdosSwapRequestTokenIn = TypeAliasType("OdosSwapRequestTokenIn", Union[TokenEnum, str])
21
+ r"""The symbol or address of the token that is to be sold."""
22
+
23
+
24
+ OdosSwapRequestTokenOutTypedDict = TypeAliasType(
25
+ "OdosSwapRequestTokenOutTypedDict", Union[TokenEnum, str]
26
+ )
27
+ r"""The symbol or address of the token that is to be bought."""
28
+
29
+
30
+ OdosSwapRequestTokenOut = TypeAliasType(
31
+ "OdosSwapRequestTokenOut", Union[TokenEnum, str]
32
+ )
33
+ r"""The symbol or address of the token that is to be bought."""
34
+
35
+
36
+ OdosSwapRequestAmountTypedDict = TypeAliasType(
37
+ "OdosSwapRequestAmountTypedDict", Union[float, str]
38
+ )
39
+ r"""The amount of token_in to be sold."""
40
+
41
+
42
+ OdosSwapRequestAmount = TypeAliasType("OdosSwapRequestAmount", Union[float, str])
43
+ r"""The amount of token_in to be sold."""
44
+
45
+
46
+ class OdosSwapRequestTypedDict(TypedDict):
47
+ token_in: OdosSwapRequestTokenInTypedDict
48
+ r"""The symbol or address of the token that is to be sold."""
49
+ token_out: OdosSwapRequestTokenOutTypedDict
50
+ r"""The symbol or address of the token that is to be bought."""
51
+ amount: OdosSwapRequestAmountTypedDict
52
+ r"""The amount of token_in to be sold."""
53
+ max_slippage_percent: float
54
+ r"""The maximum slippage allowed in percent. e.g. `1` means `1%` slippage allowed."""
55
+ chain: Chain
56
+ r"""The chain to use."""
57
+ sender: str
58
+ r"""The address of the transaction sender."""
59
+ action_type: Literal["ODOS_SWAP"]
60
+
61
+
62
+ class OdosSwapRequest(BaseModel):
63
+ token_in: OdosSwapRequestTokenIn
64
+ r"""The symbol or address of the token that is to be sold."""
65
+
66
+ token_out: OdosSwapRequestTokenOut
67
+ r"""The symbol or address of the token that is to be bought."""
68
+
69
+ amount: OdosSwapRequestAmount
70
+ r"""The amount of token_in to be sold."""
71
+
72
+ max_slippage_percent: float
73
+ r"""The maximum slippage allowed in percent. e.g. `1` means `1%` slippage allowed."""
74
+
75
+ chain: Chain
76
+ r"""The chain to use."""
77
+
78
+ sender: str
79
+ r"""The address of the transaction sender."""
80
+
81
+ ACTION_TYPE: Annotated[
82
+ Annotated[
83
+ Optional[Literal["ODOS_SWAP"]], AfterValidator(validate_const("ODOS_SWAP"))
84
+ ],
85
+ pydantic.Field(alias="action_type"),
86
+ ] = "ODOS_SWAP"
@@ -37,6 +37,7 @@ class SetAllowanceParamsContractEnum(str, Enum):
37
37
  SKY_USDC_USDS_CONVERTER = "SkyUsdcUsdsConverter"
38
38
  SKY_USDS_VAULT = "SkyUsdsVault"
39
39
  PENDLE_ROUTER = "PendleRouter"
40
+ ODOS_ROUTER = "OdosRouter"
40
41
 
41
42
 
42
43
  SetAllowanceParamsContractUnionTypedDict = TypeAliasType(
@@ -38,6 +38,7 @@ class SetAllowanceRequestContractEnum(str, Enum):
38
38
  SKY_USDC_USDS_CONVERTER = "SkyUsdcUsdsConverter"
39
39
  SKY_USDS_VAULT = "SkyUsdsVault"
40
40
  PENDLE_ROUTER = "PendleRouter"
41
+ ODOS_ROUTER = "OdosRouter"
41
42
 
42
43
 
43
44
  SetAllowanceRequestContractUnionTypedDict = TypeAliasType(
@@ -37,6 +37,7 @@ from .morphowithdrawcollateralparams import (
37
37
  MorphoWithdrawCollateralParamsTypedDict,
38
38
  )
39
39
  from .morphowithdrawparams import MorphoWithdrawParams, MorphoWithdrawParamsTypedDict
40
+ from .odosswapparams import OdosSwapParams, OdosSwapParamsTypedDict
40
41
  from .pendleaddliquidityparams import (
41
42
  PendleAddLiquidityParams,
42
43
  PendleAddLiquidityParamsTypedDict,
@@ -95,42 +96,43 @@ from typing_extensions import Annotated, TypeAliasType, TypedDict
95
96
  BodyTypedDict = TypeAliasType(
96
97
  "BodyTypedDict",
97
98
  Union[
98
- WrapEthParamsTypedDict,
99
99
  PendleRedeemYieldParamsTypedDict,
100
+ WrapEthParamsTypedDict,
100
101
  UnwrapWethParamsTypedDict,
101
- SkySellParamsTypedDict,
102
- SkyBuyParamsTypedDict,
103
102
  UniswapWithdrawLiquidityProvisionParamsTypedDict,
104
- SkyDepositParamsTypedDict,
105
103
  SkyWithdrawParamsTypedDict,
104
+ SkySellParamsTypedDict,
105
+ SkyDepositParamsTypedDict,
106
+ SkyBuyParamsTypedDict,
106
107
  AerodromeSlipstreamWithdrawLiquidityProvisionParamsTypedDict,
107
- MorphoDepositParamsTypedDict,
108
+ PendleBuyYtParamsTypedDict,
108
109
  PendleSellYtParamsTypedDict,
109
- TokenTransferErc20ParamsTypedDict,
110
+ AaveSupplyParamsTypedDict,
110
111
  AaveWithdrawParamsTypedDict,
111
112
  MorphoWithdrawParamsTypedDict,
113
+ TokenTransferErc20ParamsTypedDict,
112
114
  SetAllowanceParamsTypedDict,
113
115
  PendleAddLiquidityParamsTypedDict,
114
116
  PendleBuyPtParamsTypedDict,
115
- PendleBuyYtParamsTypedDict,
116
- AaveSupplyParamsTypedDict,
117
- PendleRemoveLiquidityParamsTypedDict,
117
+ MorphoDepositParamsTypedDict,
118
118
  PendleSellPtParamsTypedDict,
119
+ PendleRemoveLiquidityParamsTypedDict,
119
120
  MorphoBorrowParamsTypedDict,
120
- MorphoSupplyCollateralParamsTypedDict,
121
- MorphoRepayParamsTypedDict,
122
121
  AaveBorrowParamsTypedDict,
123
- MorphoWithdrawCollateralParamsTypedDict,
122
+ OdosSwapParamsTypedDict,
124
123
  AaveRepayParamsTypedDict,
125
- AerodromeSlipstreamBuyExactlyParamsTypedDict,
124
+ MorphoWithdrawCollateralParamsTypedDict,
125
+ MorphoRepayParamsTypedDict,
126
+ MorphoSupplyCollateralParamsTypedDict,
126
127
  AerodromeSlipstreamSellExactlyParamsTypedDict,
128
+ AerodromeSlipstreamIncreaseLiquidityProvisionParamsTypedDict,
129
+ AerodromeSlipstreamBuyExactlyParamsTypedDict,
127
130
  TokenTransferRequestTypedDict,
128
131
  UniswapIncreaseLiquidityProvisionParamsTypedDict,
129
- AerodromeSlipstreamIncreaseLiquidityProvisionParamsTypedDict,
130
- UniswapBuyExactlyParamsTypedDict,
131
132
  UniswapSellExactlyParamsTypedDict,
132
- AerodromeSlipstreamMintLiquidityProvisionParamsTypedDict,
133
+ UniswapBuyExactlyParamsTypedDict,
133
134
  UniswapMintLiquidityProvisionParamsTypedDict,
135
+ AerodromeSlipstreamMintLiquidityProvisionParamsTypedDict,
134
136
  ],
135
137
  )
136
138
 
@@ -166,6 +168,7 @@ Body = Annotated[
166
168
  Annotated[MorphoSupplyCollateralParams, Tag("MORPHO_SUPPLY_COLLATERAL")],
167
169
  Annotated[MorphoWithdrawParams, Tag("MORPHO_WITHDRAW")],
168
170
  Annotated[MorphoWithdrawCollateralParams, Tag("MORPHO_WITHDRAW_COLLATERAL")],
171
+ Annotated[OdosSwapParams, Tag("ODOS_SWAP")],
169
172
  Annotated[PendleAddLiquidityParams, Tag("PENDLE_ADD_LIQUIDITY")],
170
173
  Annotated[PendleBuyPtParams, Tag("PENDLE_BUY_PT")],
171
174
  Annotated[PendleBuyYtParams, Tag("PENDLE_BUY_YT")],
compass_api_sdk/sdk.py CHANGED
@@ -21,6 +21,7 @@ if TYPE_CHECKING:
21
21
  from compass_api_sdk.pendle import Pendle
22
22
  from compass_api_sdk.sky import Sky
23
23
  from compass_api_sdk.smart_account import SmartAccount
24
+ from compass_api_sdk.swap import Swap
24
25
  from compass_api_sdk.token_sdk import TokenSDK
25
26
  from compass_api_sdk.transaction_bundler import TransactionBundler
26
27
  from compass_api_sdk.uniswap_v3 import UniswapV3
@@ -38,6 +39,7 @@ class CompassAPI(BaseSDK):
38
39
  uniswap_v3: "UniswapV3"
39
40
  universal: "Universal"
40
41
  pendle: "Pendle"
42
+ swap: "Swap"
41
43
  transaction_bundler: "TransactionBundler"
42
44
  smart_account: "SmartAccount"
43
45
  erc_4626_vaults: "ERC4626Vaults"
@@ -53,6 +55,7 @@ class CompassAPI(BaseSDK):
53
55
  "uniswap_v3": ("compass_api_sdk.uniswap_v3", "UniswapV3"),
54
56
  "universal": ("compass_api_sdk.universal", "Universal"),
55
57
  "pendle": ("compass_api_sdk.pendle", "Pendle"),
58
+ "swap": ("compass_api_sdk.swap", "Swap"),
56
59
  "transaction_bundler": (
57
60
  "compass_api_sdk.transaction_bundler",
58
61
  "TransactionBundler",
@@ -0,0 +1,248 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from .basesdk import BaseSDK
4
+ from compass_api_sdk import errors, models, utils
5
+ from compass_api_sdk._hooks import HookContext
6
+ from compass_api_sdk.types import OptionalNullable, UNSET
7
+ from compass_api_sdk.utils.unmarshal_json_response import unmarshal_json_response
8
+ from typing import Any, Mapping, Optional, Union
9
+
10
+
11
+ class Swap(BaseSDK):
12
+ def odos(
13
+ self,
14
+ *,
15
+ token_in: Union[
16
+ models.OdosSwapRequestTokenIn, models.OdosSwapRequestTokenInTypedDict
17
+ ],
18
+ token_out: Union[
19
+ models.OdosSwapRequestTokenOut, models.OdosSwapRequestTokenOutTypedDict
20
+ ],
21
+ amount: Union[
22
+ models.OdosSwapRequestAmount, models.OdosSwapRequestAmountTypedDict
23
+ ],
24
+ max_slippage_percent: float,
25
+ chain: models.Chain,
26
+ sender: str,
27
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
28
+ server_url: Optional[str] = None,
29
+ timeout_ms: Optional[int] = None,
30
+ http_headers: Optional[Mapping[str, str]] = None,
31
+ ) -> models.TxResponse:
32
+ r"""Odos Swap
33
+
34
+ Swap between two tokens using Odos Smart Order Routing.
35
+ <Info>
36
+ **Required Allowances**
37
+
38
+ In order to make this transaction, token allowances need to be set on the following contracts.
39
+
40
+ - `OdosRouter`
41
+ </Info>
42
+
43
+
44
+ :param token_in: The symbol or address of the token that is to be sold.
45
+ :param token_out: The symbol or address of the token that is to be bought.
46
+ :param amount: The amount of token_in to be sold.
47
+ :param max_slippage_percent: The maximum slippage allowed in percent. e.g. `1` means `1%` slippage allowed.
48
+ :param chain: The chain to use.
49
+ :param sender: The address of the transaction sender.
50
+ :param retries: Override the default retry configuration for this method
51
+ :param server_url: Override the default server URL for this method
52
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
53
+ :param http_headers: Additional headers to set or replace on requests.
54
+ """
55
+ base_url = None
56
+ url_variables = None
57
+ if timeout_ms is None:
58
+ timeout_ms = self.sdk_configuration.timeout_ms
59
+
60
+ if server_url is not None:
61
+ base_url = server_url
62
+ else:
63
+ base_url = self._get_url(base_url, url_variables)
64
+
65
+ request = models.OdosSwapRequest(
66
+ token_in=token_in,
67
+ token_out=token_out,
68
+ amount=amount,
69
+ max_slippage_percent=max_slippage_percent,
70
+ chain=chain,
71
+ sender=sender,
72
+ )
73
+
74
+ req = self._build_request(
75
+ method="POST",
76
+ path="/v0/swap/odos",
77
+ base_url=base_url,
78
+ url_variables=url_variables,
79
+ request=request,
80
+ request_body_required=True,
81
+ request_has_path_params=False,
82
+ request_has_query_params=True,
83
+ user_agent_header="user-agent",
84
+ accept_header_value="application/json",
85
+ http_headers=http_headers,
86
+ security=self.sdk_configuration.security,
87
+ get_serialized_body=lambda: utils.serialize_request_body(
88
+ request, False, False, "json", models.OdosSwapRequest
89
+ ),
90
+ timeout_ms=timeout_ms,
91
+ )
92
+
93
+ if retries == UNSET:
94
+ if self.sdk_configuration.retry_config is not UNSET:
95
+ retries = self.sdk_configuration.retry_config
96
+
97
+ retry_config = None
98
+ if isinstance(retries, utils.RetryConfig):
99
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
100
+
101
+ http_res = self.do_request(
102
+ hook_ctx=HookContext(
103
+ config=self.sdk_configuration,
104
+ base_url=base_url or "",
105
+ operation_id="swap_odos",
106
+ oauth2_scopes=[],
107
+ security_source=self.sdk_configuration.security,
108
+ ),
109
+ request=req,
110
+ error_status_codes=["422", "4XX", "5XX"],
111
+ retry_config=retry_config,
112
+ )
113
+
114
+ response_data: Any = None
115
+ if utils.match_response(http_res, "200", "application/json"):
116
+ return unmarshal_json_response(models.TxResponse, http_res)
117
+ if utils.match_response(http_res, "422", "application/json"):
118
+ response_data = unmarshal_json_response(
119
+ errors.HTTPValidationErrorData, http_res
120
+ )
121
+ raise errors.HTTPValidationError(response_data, http_res)
122
+ if utils.match_response(http_res, "4XX", "*"):
123
+ http_res_text = utils.stream_to_text(http_res)
124
+ raise errors.APIError("API error occurred", http_res, http_res_text)
125
+ if utils.match_response(http_res, "5XX", "*"):
126
+ http_res_text = utils.stream_to_text(http_res)
127
+ raise errors.APIError("API error occurred", http_res, http_res_text)
128
+
129
+ raise errors.APIError("Unexpected response received", http_res)
130
+
131
+ async def odos_async(
132
+ self,
133
+ *,
134
+ token_in: Union[
135
+ models.OdosSwapRequestTokenIn, models.OdosSwapRequestTokenInTypedDict
136
+ ],
137
+ token_out: Union[
138
+ models.OdosSwapRequestTokenOut, models.OdosSwapRequestTokenOutTypedDict
139
+ ],
140
+ amount: Union[
141
+ models.OdosSwapRequestAmount, models.OdosSwapRequestAmountTypedDict
142
+ ],
143
+ max_slippage_percent: float,
144
+ chain: models.Chain,
145
+ sender: str,
146
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
147
+ server_url: Optional[str] = None,
148
+ timeout_ms: Optional[int] = None,
149
+ http_headers: Optional[Mapping[str, str]] = None,
150
+ ) -> models.TxResponse:
151
+ r"""Odos Swap
152
+
153
+ Swap between two tokens using Odos Smart Order Routing.
154
+ <Info>
155
+ **Required Allowances**
156
+
157
+ In order to make this transaction, token allowances need to be set on the following contracts.
158
+
159
+ - `OdosRouter`
160
+ </Info>
161
+
162
+
163
+ :param token_in: The symbol or address of the token that is to be sold.
164
+ :param token_out: The symbol or address of the token that is to be bought.
165
+ :param amount: The amount of token_in to be sold.
166
+ :param max_slippage_percent: The maximum slippage allowed in percent. e.g. `1` means `1%` slippage allowed.
167
+ :param chain: The chain to use.
168
+ :param sender: The address of the transaction sender.
169
+ :param retries: Override the default retry configuration for this method
170
+ :param server_url: Override the default server URL for this method
171
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
172
+ :param http_headers: Additional headers to set or replace on requests.
173
+ """
174
+ base_url = None
175
+ url_variables = None
176
+ if timeout_ms is None:
177
+ timeout_ms = self.sdk_configuration.timeout_ms
178
+
179
+ if server_url is not None:
180
+ base_url = server_url
181
+ else:
182
+ base_url = self._get_url(base_url, url_variables)
183
+
184
+ request = models.OdosSwapRequest(
185
+ token_in=token_in,
186
+ token_out=token_out,
187
+ amount=amount,
188
+ max_slippage_percent=max_slippage_percent,
189
+ chain=chain,
190
+ sender=sender,
191
+ )
192
+
193
+ req = self._build_request_async(
194
+ method="POST",
195
+ path="/v0/swap/odos",
196
+ base_url=base_url,
197
+ url_variables=url_variables,
198
+ request=request,
199
+ request_body_required=True,
200
+ request_has_path_params=False,
201
+ request_has_query_params=True,
202
+ user_agent_header="user-agent",
203
+ accept_header_value="application/json",
204
+ http_headers=http_headers,
205
+ security=self.sdk_configuration.security,
206
+ get_serialized_body=lambda: utils.serialize_request_body(
207
+ request, False, False, "json", models.OdosSwapRequest
208
+ ),
209
+ timeout_ms=timeout_ms,
210
+ )
211
+
212
+ if retries == UNSET:
213
+ if self.sdk_configuration.retry_config is not UNSET:
214
+ retries = self.sdk_configuration.retry_config
215
+
216
+ retry_config = None
217
+ if isinstance(retries, utils.RetryConfig):
218
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
219
+
220
+ http_res = await self.do_request_async(
221
+ hook_ctx=HookContext(
222
+ config=self.sdk_configuration,
223
+ base_url=base_url or "",
224
+ operation_id="swap_odos",
225
+ oauth2_scopes=[],
226
+ security_source=self.sdk_configuration.security,
227
+ ),
228
+ request=req,
229
+ error_status_codes=["422", "4XX", "5XX"],
230
+ retry_config=retry_config,
231
+ )
232
+
233
+ response_data: Any = None
234
+ if utils.match_response(http_res, "200", "application/json"):
235
+ return unmarshal_json_response(models.TxResponse, http_res)
236
+ if utils.match_response(http_res, "422", "application/json"):
237
+ response_data = unmarshal_json_response(
238
+ errors.HTTPValidationErrorData, http_res
239
+ )
240
+ raise errors.HTTPValidationError(response_data, http_res)
241
+ if utils.match_response(http_res, "4XX", "*"):
242
+ http_res_text = await utils.stream_to_text_async(http_res)
243
+ raise errors.APIError("API error occurred", http_res, http_res_text)
244
+ if utils.match_response(http_res, "5XX", "*"):
245
+ http_res_text = await utils.stream_to_text_async(http_res)
246
+ raise errors.APIError("API error occurred", http_res, http_res_text)
247
+
248
+ raise errors.APIError("Unexpected response received", http_res)
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: compass_api_sdk
3
- Version: 0.9.47
3
+ Version: 0.9.49
4
4
  Summary: Compass API SDK.
5
5
  Author: royalnine
6
6
  Requires-Python: >=3.9.2
@@ -128,7 +128,7 @@ with CompassAPI(
128
128
  api_key_auth="<YOUR_API_KEY_HERE>",
129
129
  ) as compass_api:
130
130
 
131
- res = compass_api.aave_v3.rate(chain=models.AaveRateChain.ARBITRUM_MAINNET, token=models.AaveRateToken.USDC)
131
+ res = compass_api.aave_v3.aave_supported_tokens(chain=models.AaveAaveSupportedTokensChain.ARBITRUM_MAINNET)
132
132
 
133
133
  # Handle response
134
134
  print(res)
@@ -148,7 +148,7 @@ async def main():
148
148
  api_key_auth="<YOUR_API_KEY_HERE>",
149
149
  ) as compass_api:
150
150
 
151
- res = await compass_api.aave_v3.rate_async(chain=models.AaveRateChain.ARBITRUM_MAINNET, token=models.AaveRateToken.USDC)
151
+ res = await compass_api.aave_v3.aave_supported_tokens_async(chain=models.AaveAaveSupportedTokensChain.ARBITRUM_MAINNET)
152
152
 
153
153
  # Handle response
154
154
  print(res)
@@ -177,7 +177,7 @@ with CompassAPI(
177
177
  api_key_auth="<YOUR_API_KEY_HERE>",
178
178
  ) as compass_api:
179
179
 
180
- res = compass_api.aave_v3.rate(chain=models.AaveRateChain.ARBITRUM_MAINNET, token=models.AaveRateToken.USDC)
180
+ res = compass_api.aave_v3.aave_supported_tokens(chain=models.AaveAaveSupportedTokensChain.ARBITRUM_MAINNET)
181
181
 
182
182
  # Handle response
183
183
  print(res)
@@ -193,6 +193,7 @@ with CompassAPI(
193
193
 
194
194
  ### [aave_v3](https://github.com/CompassLabs/mono/blob/master/docs/sdks/aavev3/README.md)
195
195
 
196
+ * [aave_supported_tokens](https://github.com/CompassLabs/mono/blob/master/docs/sdks/aavev3/README.md#aave_supported_tokens) - Aave Supported Tokens
196
197
  * [rate](https://github.com/CompassLabs/mono/blob/master/docs/sdks/aavev3/README.md#rate) - Interest Rates
197
198
  * [avg_rate](https://github.com/CompassLabs/mono/blob/master/docs/sdks/aavev3/README.md#avg_rate) - Interest Rates: Time Average
198
199
  * [std_rate](https://github.com/CompassLabs/mono/blob/master/docs/sdks/aavev3/README.md#std_rate) - Interest Rates: Standard Deviation
@@ -265,6 +266,10 @@ with CompassAPI(
265
266
 
266
267
  * [account_batched_user_operations](https://github.com/CompassLabs/mono/blob/master/docs/sdks/smartaccount/README.md#account_batched_user_operations) - Get Smart Account Batched User Operations
267
268
 
269
+ ### [swap](https://github.com/CompassLabs/mono/blob/master/docs/sdks/swap/README.md)
270
+
271
+ * [odos](https://github.com/CompassLabs/mono/blob/master/docs/sdks/swap/README.md#odos) - Odos Swap
272
+
268
273
  ### [token](https://github.com/CompassLabs/mono/blob/master/docs/sdks/tokensdk/README.md)
269
274
 
270
275
  * [address](https://github.com/CompassLabs/mono/blob/master/docs/sdks/tokensdk/README.md#address) - Token Address
@@ -320,7 +325,7 @@ with CompassAPI(
320
325
  api_key_auth="<YOUR_API_KEY_HERE>",
321
326
  ) as compass_api:
322
327
 
323
- res = compass_api.aave_v3.rate(chain=models.AaveRateChain.ARBITRUM_MAINNET, token=models.AaveRateToken.USDC,
328
+ res = compass_api.aave_v3.aave_supported_tokens(chain=models.AaveAaveSupportedTokensChain.ARBITRUM_MAINNET,
324
329
  RetryConfig("backoff", BackoffStrategy(1, 50, 1.1, 100), False))
325
330
 
326
331
  # Handle response
@@ -339,7 +344,7 @@ with CompassAPI(
339
344
  api_key_auth="<YOUR_API_KEY_HERE>",
340
345
  ) as compass_api:
341
346
 
342
- res = compass_api.aave_v3.rate(chain=models.AaveRateChain.ARBITRUM_MAINNET, token=models.AaveRateToken.USDC)
347
+ res = compass_api.aave_v3.aave_supported_tokens(chain=models.AaveAaveSupportedTokensChain.ARBITRUM_MAINNET)
343
348
 
344
349
  # Handle response
345
350
  print(res)
@@ -372,7 +377,7 @@ with CompassAPI(
372
377
  res = None
373
378
  try:
374
379
 
375
- res = compass_api.aave_v3.rate(chain=models.AaveRateChain.ARBITRUM_MAINNET, token=models.AaveRateToken.USDC)
380
+ res = compass_api.aave_v3.aave_supported_tokens(chain=models.AaveAaveSupportedTokensChain.ARBITRUM_MAINNET)
376
381
 
377
382
  # Handle response
378
383
  print(res)
@@ -427,7 +432,7 @@ with CompassAPI(
427
432
  api_key_auth="<YOUR_API_KEY_HERE>",
428
433
  ) as compass_api:
429
434
 
430
- res = compass_api.aave_v3.rate(chain=models.AaveRateChain.ARBITRUM_MAINNET, token=models.AaveRateToken.USDC)
435
+ res = compass_api.aave_v3.aave_supported_tokens(chain=models.AaveAaveSupportedTokensChain.ARBITRUM_MAINNET)
431
436
 
432
437
  # Handle response
433
438
  print(res)
@@ -2,8 +2,8 @@ compass_api_sdk/__init__.py,sha256=w2u919V3Tzv4zEPQ-OYJ79gQ_4_SyW7GOFFoHtqXDFA,4
2
2
  compass_api_sdk/_hooks/__init__.py,sha256=p5J13DeYuISQyQWirjJAObHIf2VtIlOtFqnIpvjjVwk,118
3
3
  compass_api_sdk/_hooks/sdkhooks.py,sha256=eVxHB2Q_JG6zZx5xn74i208ij-fpTHqq2jod6fbghRQ,2503
4
4
  compass_api_sdk/_hooks/types.py,sha256=4qXm6dEntJOC2QeOdTklcc53oFzTU3HBb1xGdZ-kBXY,3059
5
- compass_api_sdk/_version.py,sha256=00039VYx5tU-ckWdT7WcYhMT0pMdVsEm6DM6NQFNwzc,474
6
- compass_api_sdk/aave_v3.py,sha256=4eQQKFIjY-adOE6Uv30n_9K7XCT74am8uFhvZXE2o4I,118150
5
+ compass_api_sdk/_version.py,sha256=Q6bydgR8jzX2Hvrq3G7LBZrZ1kR5Z-aZDrp57pAGWqQ,474
6
+ compass_api_sdk/aave_v3.py,sha256=NANmObFnLrTvn_3E5WX-Cvhmjd5vcegQ1YHSekHkqRc,126132
7
7
  compass_api_sdk/aerodrome_slipstream.py,sha256=Ym1DuavVYneGxdCUp2aGsSnsd6_z4aQ53vohR4RQLoU,80439
8
8
  compass_api_sdk/basesdk.py,sha256=PQNcMD7BiLruZwOuU2TeWIE_zQ0iO--XYUFmIDr5zX0,11844
9
9
  compass_api_sdk/erc_4626_vaults.py,sha256=X3CTaLLs5MR6miC_2qzbXpYoAU8m0PT54R_uryOGOps,27171
@@ -14,7 +14,8 @@ compass_api_sdk/errors/httpvalidationerror.py,sha256=ebdzfILwY0BltW3MqxCpHipluRS
14
14
  compass_api_sdk/errors/no_response_error.py,sha256=FQG44Lq6uF7uUlzbUYfM3dJon6sbqXzJ0Ri6YrDdsEs,380
15
15
  compass_api_sdk/errors/responsevalidationerror.py,sha256=baMAkfmUhcPt_cxzyOCBCGBOzlXAeTHwcn5AUCsAgOw,702
16
16
  compass_api_sdk/httpclient.py,sha256=Eu73urOAiZQtdUIyOUnPccxCiBbWEKrXG-JrRG3SLM4,3946
17
- compass_api_sdk/models/__init__.py,sha256=GR_nXZ5ZhQDUmAv0uvptb7cy8DRJYrOrfJ8aWFHZhsE,119867
17
+ compass_api_sdk/models/__init__.py,sha256=oxxAuHkSaRJOAvrEt5PRDMsbgghzRH83vfvimlZGCWM,123069
18
+ compass_api_sdk/models/aave_aave_supported_tokensop.py,sha256=GqBKHVPuLE7bza_qK8OgMVGMYLkKVRe_z393c2EjO50,2216
18
19
  compass_api_sdk/models/aave_avg_rateop.py,sha256=rBneLLelvbRzLENqEWaRgZd1EAm3f3Uq9IEsXRoOroI,3739
19
20
  compass_api_sdk/models/aave_historical_transactionsop.py,sha256=oWOjaRhNyjddZPqr5RfhNYf6V4Ye4gOQ0BDIXoqZGSs,1785
20
21
  compass_api_sdk/models/aave_liquidity_changeop.py,sha256=14bkUs750CC6yS65bWSveDMbP5PwfMzpdV-nxPUcqAY,2806
@@ -37,6 +38,8 @@ compass_api_sdk/models/aavereserveoverviewresponse.py,sha256=PaGkkZK3alCnkd4ss2-
37
38
  compass_api_sdk/models/aavestdrateresponse.py,sha256=Kwr3hZtXe5ZrK9vwqekGkm27KWobBJjUohJOOYGkz2s,1498
38
39
  compass_api_sdk/models/aavesupplyparams.py,sha256=n_Pe_cBzuznzfxcTyptdsHnfii5u-sNq2ToOMG2lj0U,3003
39
40
  compass_api_sdk/models/aavesupplyrequest.py,sha256=fsC923lXGu-DPVuzaSFy54LXTbneARnQPeq9xFi7730,3262
41
+ compass_api_sdk/models/aavesupportedtokenmetadata.py,sha256=BIBux_9yrwXeZRcAQ5-xG8wi1HG4AL57zvCtmQW6CUw,844
42
+ compass_api_sdk/models/aavesupportedtokensresponse.py,sha256=0jg6UoWUl6BEEs4g8rXk9Yl7b02Od2n6PylUjSoGaFI,703
40
43
  compass_api_sdk/models/aavetokenpriceresponse.py,sha256=LZTNIuSn_PHY5Im9e6ZF9CWnFM6O01kHBwHjTiQypqI,401
41
44
  compass_api_sdk/models/aaveuserpositionpertokenresponse.py,sha256=XfFYVzO3Ep9wHD96kddmtwF2_DivpYsMgVVg9Fub5ew,2839
42
45
  compass_api_sdk/models/aaveuserpositionsummaryresponse.py,sha256=_m2f4XkNQnaftbJOwdCsacPByGNDlz83gg0oPjuUbKQ,1656
@@ -84,7 +87,7 @@ compass_api_sdk/models/details.py,sha256=3nlDe5Po20HFWWc31iX-6wOfMdveE76JpNf-Kp9
84
87
  compass_api_sdk/models/ensnameinforesponse.py,sha256=p7y3TYD3lApa8hzHTCKDUEmSpmH2QmJAHG7wzef9rLk,626
85
88
  compass_api_sdk/models/erc20data.py,sha256=Pn9h6Ts64VoV3bR5gpbMxTPb2Du8izsK5a6eFxQfRZU,394
86
89
  compass_api_sdk/models/feeenum.py,sha256=TIYaeNWCG9KFGV7CZeXHvZ_4tmlqdlk-Pcg04pc7ynM,363
87
- compass_api_sdk/models/generic_allowanceop.py,sha256=EVcwAOVm-VhTHxJYHlgmQkGrsF30b_fEJh8VNI-boOw,3327
90
+ compass_api_sdk/models/generic_allowanceop.py,sha256=pLZg1TebAmix1SGhp2yo-LP71B9kMDUmBVzNSwfIQbs,3358
88
91
  compass_api_sdk/models/generic_ensop.py,sha256=xH9v260Dw_eF_IAlQqO7eqOKRDNDNV2519ze7VO31CM,1104
89
92
  compass_api_sdk/models/generic_portfolioop.py,sha256=jtsFkKQCYx2cbhK1LKtMB5RjVAAeRhVF2K5CpgoM74U,1175
90
93
  compass_api_sdk/models/generic_supported_tokensop.py,sha256=5ZNzAxmcnaxpGqAn2AoIqdGx0LDF4EnU102mVOXxlO4,884
@@ -125,6 +128,8 @@ compass_api_sdk/models/movement10percent.py,sha256=z_GUd5GJyXpqsLM3X01GShe7Uwg3u
125
128
  compass_api_sdk/models/multicallauthorizationrequest.py,sha256=h5-2acLlhV9assgIIHyVIgTak1IJathqa-viS-PkvMA,1155
126
129
  compass_api_sdk/models/multicallauthorizationresponse.py,sha256=3jjdz9Mz-tKjhBzZbVaJW51no58HSqcxfHJwuZsgnhg,914
127
130
  compass_api_sdk/models/multicallexecuterequest.py,sha256=iVCfkarzlLYQrdo2sCRB9YJyJ-dayaf321j0Hh4Fit8,1095
131
+ compass_api_sdk/models/odosswapparams.py,sha256=Bx-W3zu_KrYdvx_3yDyP_Fsct6FY0kAW1KJ-UUEMB5o,2524
132
+ compass_api_sdk/models/odosswaprequest.py,sha256=kph1NTAhfiN27JtHro4NzmZR1JC4-tJJU4ZQ0n6SrpU,2801
128
133
  compass_api_sdk/models/openposition.py,sha256=jd5t6ku3f7J0PA-1LmfWyrNYrQybGF68ebfVKgkSzdc,1013
129
134
  compass_api_sdk/models/pendle_marketop.py,sha256=5Q0SA0lkY6H7RK7UV4PNNTe5in_jX6DxKPaw4rZGqHs,2989
130
135
  compass_api_sdk/models/pendle_marketsop.py,sha256=LHFiQt07oujjdLItscPDEkOCh282rsc_Q2W0jYnkXXM,830
@@ -155,8 +160,8 @@ compass_api_sdk/models/redeemunderlying.py,sha256=YK6I29RAeIgE4gfxyjgoUiktxqFAnJ
155
160
  compass_api_sdk/models/repay.py,sha256=dCDDG9BvJOnT-OgEs013t7l5xG0r-5M_BUxal4cfU0I,1482
156
161
  compass_api_sdk/models/reserve.py,sha256=AScfYjYx6PYkgxF2zTr-BrzsGx8ZQl3SV27bZ_xGNro,2217
157
162
  compass_api_sdk/models/security.py,sha256=BasQuckaYjsfuGyucbeYAKSDcEuhcvoNT8ZkUsi48Sk,635
158
- compass_api_sdk/models/setallowanceparams.py,sha256=O_yMvJlMbbuWfYGMeDKwHVGbhHvKeT7tr1uT_NoPPGw,3365
159
- compass_api_sdk/models/setallowancerequest.py,sha256=e5Ped7YbICPdl-A4s3S_E66Z0NhioY4KxbAcTUNbsNc,3625
163
+ compass_api_sdk/models/setallowanceparams.py,sha256=E_wmNW8y-GT7AwYFApCwXLwMG6Uy66MonWPrWTv6Pns,3396
164
+ compass_api_sdk/models/setallowancerequest.py,sha256=Pp10KT3LW0pD2-dAaJfZXUcaeb5cg6vqzkvQ9c8THWY,3656
160
165
  compass_api_sdk/models/signedauthorization.py,sha256=UT7Zozfqm8DQ66RAdYPm44vEhBJUGf4SZtdvDzz1nc0,1459
161
166
  compass_api_sdk/models/sky_positionop.py,sha256=q1hxWCM3WfLfzX4C5o9ur2KchlHC0ZJgO9iDok2Tz3U,1126
162
167
  compass_api_sdk/models/skybuyparams.py,sha256=LazlLKy3a5XoWT6vDVBLJwfv6bagyh9e3y7ffv6ApdQ,1652
@@ -208,7 +213,7 @@ compass_api_sdk/models/unsignedtransaction.py,sha256=DHPEOKI-xgmu7tLiVxsv4JJp93k
208
213
  compass_api_sdk/models/unwrapwethparams.py,sha256=ChsTqUYi88jHqkeRVIskzfBHAPyI_J2fBJqR81Qc6dg,1308
209
214
  compass_api_sdk/models/unwrapwethrequest.py,sha256=pt-eqvKWN6qir5bN6d9EWBZIDrXs_51z7X8ODoFzLWU,1561
210
215
  compass_api_sdk/models/usageascollateral.py,sha256=hHBgh83BO9WA6u-9xzTvBlPOLoiYV1N21G6vDeo_b30,1561
211
- compass_api_sdk/models/useroperation.py,sha256=oxm4nj0hIhGE821-MTBoQ6x3DrLOi1XbzVXJtrOpaLw,8850
216
+ compass_api_sdk/models/useroperation.py,sha256=QiD1_sz38K0KId5gts22dob0WPUcYvC4P8YwCeH5ygo,9004
212
217
  compass_api_sdk/models/useroperationresponse.py,sha256=z0o0N-EC30XlrkFiR3vLO_EXbpXojUCJlWQxuOir5VM,671
213
218
  compass_api_sdk/models/userstate.py,sha256=uwoWC0y2Bv5jHW-F2MInZx0RwMihH6WxcXmemr71sdk,1994
214
219
  compass_api_sdk/models/validationerror.py,sha256=01WnpU7Tgin0B_poO97_hl6b5CNJ_9VGzpcmoeJs4GU,532
@@ -225,10 +230,11 @@ compass_api_sdk/models/yieldrange.py,sha256=WEpZR24JddnCS1_13y2P1CdD0lBi6dPktysC
225
230
  compass_api_sdk/morpho.py,sha256=pviK4dBnaaCENUIEvfI3-2F22SMz9xgXDDWzx1WOHpY,110040
226
231
  compass_api_sdk/pendle.py,sha256=hLldhz26PwMgx7vnpIMPNtT5nHL83PZuy-WtOLQGL-Q,96606
227
232
  compass_api_sdk/py.typed,sha256=zrp19r0G21lr2yRiMC0f8MFkQFGj9wMpSbboePMg8KM,59
228
- compass_api_sdk/sdk.py,sha256=rQ3ANGf0BxHoZc9hCQvsxkNc9qOW3DbGAuOz_sy3o7g,7865
233
+ compass_api_sdk/sdk.py,sha256=WdJt5EuHoNXqj3NNpxi5jQBK0cn-n_w5ufg80SZihDg,7974
229
234
  compass_api_sdk/sdkconfiguration.py,sha256=5nec4ViMLCsNWBd3DyEv8zWqU5Z77YZfzwX69jkdSnM,1607
230
235
  compass_api_sdk/sky.py,sha256=hb6gocNjaammmojMrs0PA0uSvmYNWaOjWHdvMNHDgbA,42341
231
236
  compass_api_sdk/smart_account.py,sha256=H28RSfvyffnWNBOy7irXHsp4Xcmz-mBgKuJWlsQ6Rv4,8704
237
+ compass_api_sdk/swap.py,sha256=cwG_zQis9yDrScpIUrkiDFvgJrmb44Cl0AVXCeSmZ1U,9862
232
238
  compass_api_sdk/token_sdk.py,sha256=0ecx4CkCV05_KLLDAxX5krEPRgJ8YUKea2ulTTZd1qY,32006
233
239
  compass_api_sdk/transaction_bundler.py,sha256=6nij4Wf5g5fyE_DEY0tGr9VGUNvyjXRLqEfA1Y1FUNM,30278
234
240
  compass_api_sdk/types/__init__.py,sha256=RArOwSgeeTIva6h-4ttjXwMUeCkz10nAFBL9D-QljI4,377
@@ -252,6 +258,6 @@ compass_api_sdk/utils/serializers.py,sha256=Hndks5M_rJXVub_N5lu0gKZQUoEmWrn6PN7R
252
258
  compass_api_sdk/utils/unmarshal_json_response.py,sha256=GI4Cw4JB6H2qNkqbOuBiUcxtEOJhRm2bz3qfer9KmoE,591
253
259
  compass_api_sdk/utils/url.py,sha256=BgGPgcTA6MRK4bF8fjP2dUopN3NzEzxWMXPBVg8NQUA,5254
254
260
  compass_api_sdk/utils/values.py,sha256=CcaCXEa3xHhkUDROyXZocN8f0bdITftv9Y0P9lTf0YM,3517
255
- compass_api_sdk-0.9.47.dist-info/METADATA,sha256=2klrHHqELRY_OnhMbvD8JE_n4qfRSxP6f_4wFxJAO_E,28507
256
- compass_api_sdk-0.9.47.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
257
- compass_api_sdk-0.9.47.dist-info/RECORD,,
261
+ compass_api_sdk-0.9.49.dist-info/METADATA,sha256=nRHZdA9dCWU0I5PxAm_mR93bp0Ugp1v04U9HoieIizg,28835
262
+ compass_api_sdk-0.9.49.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
263
+ compass_api_sdk-0.9.49.dist-info/RECORD,,