compass_api_sdk 0.5.0__py3-none-any.whl → 0.5.2__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.5.0"
6
+ __version__: str = "0.5.2"
7
7
  __openapi_doc_version__: str = "0.0.1"
8
8
  __gen_version__: str = "2.610.0"
9
- __user_agent__: str = "speakeasy-sdk/python 0.5.0 2.610.0 0.0.1 compass_api_sdk"
9
+ __user_agent__: str = "speakeasy-sdk/python 0.5.2 2.610.0 0.0.1 compass_api_sdk"
10
10
 
11
11
  try:
12
12
  if __package__ is not None:
@@ -322,6 +322,7 @@ if TYPE_CHECKING:
322
322
  from .contractname import ContractName
323
323
  from .curator import Curator, CuratorTypedDict
324
324
  from .ensnameinforesponse import EnsNameInfoResponse, EnsNameInfoResponseTypedDict
325
+ from .erc20data import Erc20Data, Erc20DataTypedDict
325
326
  from .feeenum import FeeEnum
326
327
  from .generic_allowanceop import (
327
328
  GenericAllowanceChain,
@@ -535,6 +536,24 @@ if TYPE_CHECKING:
535
536
  MulticallExecuteRequest,
536
537
  MulticallExecuteRequestTypedDict,
537
538
  )
539
+ from .pendle_marketop import (
540
+ PendleMarketChain,
541
+ PendleMarketRequest,
542
+ PendleMarketRequestTypedDict,
543
+ )
544
+ from .pendle_positionop import (
545
+ PendlePositionChain,
546
+ PendlePositionRequest,
547
+ PendlePositionRequestTypedDict,
548
+ )
549
+ from .pendlegetmarketresponse import (
550
+ PendleGetMarketResponse,
551
+ PendleGetMarketResponseTypedDict,
552
+ )
553
+ from .pendlegetuserpositionresponse import (
554
+ PendleGetUserPositionResponse,
555
+ PendleGetUserPositionResponseTypedDict,
556
+ )
538
557
  from .portfolio import Portfolio, PortfolioTypedDict
539
558
  from .redeemunderlying import RedeemUnderlying, RedeemUnderlyingTypedDict
540
559
  from .repay import Repay, RepayTypedDict
@@ -1062,6 +1081,8 @@ __all__ = [
1062
1081
  "CuratorTypedDict",
1063
1082
  "EnsNameInfoResponse",
1064
1083
  "EnsNameInfoResponseTypedDict",
1084
+ "Erc20Data",
1085
+ "Erc20DataTypedDict",
1065
1086
  "FeeEnum",
1066
1087
  "GenericAllowanceChain",
1067
1088
  "GenericAllowanceContractName",
@@ -1210,6 +1231,16 @@ __all__ = [
1210
1231
  "MulticallAuthorizationResponseTypedDict",
1211
1232
  "MulticallExecuteRequest",
1212
1233
  "MulticallExecuteRequestTypedDict",
1234
+ "PendleGetMarketResponse",
1235
+ "PendleGetMarketResponseTypedDict",
1236
+ "PendleGetUserPositionResponse",
1237
+ "PendleGetUserPositionResponseTypedDict",
1238
+ "PendleMarketChain",
1239
+ "PendleMarketRequest",
1240
+ "PendleMarketRequestTypedDict",
1241
+ "PendlePositionChain",
1242
+ "PendlePositionRequest",
1243
+ "PendlePositionRequestTypedDict",
1213
1244
  "Portfolio",
1214
1245
  "PortfolioTypedDict",
1215
1246
  "R",
@@ -1668,6 +1699,8 @@ _dynamic_imports: dict[str, str] = {
1668
1699
  "CuratorTypedDict": ".curator",
1669
1700
  "EnsNameInfoResponse": ".ensnameinforesponse",
1670
1701
  "EnsNameInfoResponseTypedDict": ".ensnameinforesponse",
1702
+ "Erc20Data": ".erc20data",
1703
+ "Erc20DataTypedDict": ".erc20data",
1671
1704
  "FeeEnum": ".feeenum",
1672
1705
  "GenericAllowanceChain": ".generic_allowanceop",
1673
1706
  "GenericAllowanceContractName": ".generic_allowanceop",
@@ -1814,6 +1847,16 @@ _dynamic_imports: dict[str, str] = {
1814
1847
  "MulticallAuthorizationResponseTypedDict": ".multicallauthorizationresponse",
1815
1848
  "MulticallExecuteRequest": ".multicallexecuterequest",
1816
1849
  "MulticallExecuteRequestTypedDict": ".multicallexecuterequest",
1850
+ "PendleMarketChain": ".pendle_marketop",
1851
+ "PendleMarketRequest": ".pendle_marketop",
1852
+ "PendleMarketRequestTypedDict": ".pendle_marketop",
1853
+ "PendlePositionChain": ".pendle_positionop",
1854
+ "PendlePositionRequest": ".pendle_positionop",
1855
+ "PendlePositionRequestTypedDict": ".pendle_positionop",
1856
+ "PendleGetMarketResponse": ".pendlegetmarketresponse",
1857
+ "PendleGetMarketResponseTypedDict": ".pendlegetmarketresponse",
1858
+ "PendleGetUserPositionResponse": ".pendlegetuserpositionresponse",
1859
+ "PendleGetUserPositionResponseTypedDict": ".pendlegetuserpositionresponse",
1817
1860
  "Portfolio": ".portfolio",
1818
1861
  "PortfolioTypedDict": ".portfolio",
1819
1862
  "RedeemUnderlying": ".redeemunderlying",
@@ -34,4 +34,8 @@ class ContractName(str, Enum):
34
34
  SKY_DAI_USDS_CONVERTER = "SkyDaiUsdsConverter"
35
35
  SKY_USDC_USDS_CONVERTER = "SkyUsdcUsdsConverter"
36
36
  SKY_USDS_VAULT = "SkyUsdsVault"
37
+ PENDLE_ROUTER = "PendleRouter"
38
+ PENDLE_MARKET = "PendleMarket"
39
+ PENDLE_SY = "PendleSy"
40
+ PENDLE_YT = "PendleYt"
37
41
  MULTICALL = "Multicall"
@@ -0,0 +1,19 @@
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 Erc20DataTypedDict(TypedDict):
9
+ address: str
10
+ symbol: str
11
+ name: str
12
+
13
+
14
+ class Erc20Data(BaseModel):
15
+ address: str
16
+
17
+ symbol: str
18
+
19
+ name: str
@@ -84,6 +84,7 @@ class GenericAllowanceContractName(str, Enum):
84
84
  SKY_DAI_USDS_CONVERTER = "SkyDaiUsdsConverter"
85
85
  SKY_USDC_USDS_CONVERTER = "SkyUsdcUsdsConverter"
86
86
  SKY_USDS_VAULT = "SkyUsdsVault"
87
+ PENDLE_ROUTER = "PendleRouter"
87
88
 
88
89
 
89
90
  class GenericAllowanceRequestTypedDict(TypedDict):
@@ -23,6 +23,7 @@ class IncreaseAllowanceParamsContractName(str, Enum):
23
23
  SKY_DAI_USDS_CONVERTER = "SkyDaiUsdsConverter"
24
24
  SKY_USDC_USDS_CONVERTER = "SkyUsdcUsdsConverter"
25
25
  SKY_USDS_VAULT = "SkyUsdsVault"
26
+ PENDLE_ROUTER = "PendleRouter"
26
27
 
27
28
 
28
29
  IncreaseAllowanceParamsAmountTypedDict = TypeAliasType(
@@ -24,6 +24,7 @@ class IncreaseAllowanceRequestContractName(str, Enum):
24
24
  SKY_DAI_USDS_CONVERTER = "SkyDaiUsdsConverter"
25
25
  SKY_USDC_USDS_CONVERTER = "SkyUsdcUsdsConverter"
26
26
  SKY_USDS_VAULT = "SkyUsdsVault"
27
+ PENDLE_ROUTER = "PendleRouter"
27
28
 
28
29
 
29
30
  IncreaseAllowanceRequestAmountTypedDict = TypeAliasType(
@@ -0,0 +1,42 @@
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 compass_api_sdk.utils import FieldMetadata, QueryParamMetadata
6
+ from enum import Enum
7
+ from typing_extensions import Annotated, TypedDict
8
+
9
+
10
+ class PendleMarketChain(str, Enum):
11
+ r"""The chain to use."""
12
+
13
+ BASE_MAINNET = "base:mainnet"
14
+ ETHEREUM_MAINNET = "ethereum:mainnet"
15
+ ARBITRUM_MAINNET = "arbitrum:mainnet"
16
+
17
+
18
+ class PendleMarketRequestTypedDict(TypedDict):
19
+ chain: PendleMarketChain
20
+ r"""The chain to use."""
21
+ user_address: str
22
+ r"""The user address of the desired position."""
23
+ market_address: str
24
+ r"""The market address of the desired position."""
25
+
26
+
27
+ class PendleMarketRequest(BaseModel):
28
+ chain: Annotated[
29
+ PendleMarketChain,
30
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
31
+ ] = PendleMarketChain.ETHEREUM_MAINNET
32
+ r"""The chain to use."""
33
+
34
+ user_address: Annotated[
35
+ str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
36
+ ] = "0xa829B388A3DF7f581cE957a95edbe419dd146d1B"
37
+ r"""The user address of the desired position."""
38
+
39
+ market_address: Annotated[
40
+ str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
41
+ ] = "0xdace1121e10500e9e29d071f01593fd76b000f08"
42
+ r"""The market address of the desired position."""
@@ -0,0 +1,42 @@
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 compass_api_sdk.utils import FieldMetadata, QueryParamMetadata
6
+ from enum import Enum
7
+ from typing_extensions import Annotated, TypedDict
8
+
9
+
10
+ class PendlePositionChain(str, Enum):
11
+ r"""The chain to use."""
12
+
13
+ BASE_MAINNET = "base:mainnet"
14
+ ETHEREUM_MAINNET = "ethereum:mainnet"
15
+ ARBITRUM_MAINNET = "arbitrum:mainnet"
16
+
17
+
18
+ class PendlePositionRequestTypedDict(TypedDict):
19
+ chain: PendlePositionChain
20
+ r"""The chain to use."""
21
+ user_address: str
22
+ r"""The user address of the desired position."""
23
+ market_address: str
24
+ r"""The market address of the desired position."""
25
+
26
+
27
+ class PendlePositionRequest(BaseModel):
28
+ chain: Annotated[
29
+ PendlePositionChain,
30
+ FieldMetadata(query=QueryParamMetadata(style="form", explode=True)),
31
+ ] = PendlePositionChain.ETHEREUM_MAINNET
32
+ r"""The chain to use."""
33
+
34
+ user_address: Annotated[
35
+ str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
36
+ ] = "0xa829B388A3DF7f581cE957a95edbe419dd146d1B"
37
+ r"""The user address of the desired position."""
38
+
39
+ market_address: Annotated[
40
+ str, FieldMetadata(query=QueryParamMetadata(style="form", explode=True))
41
+ ] = "0xdace1121e10500e9e29d071f01593fd76b000f08"
42
+ r"""The market address of the desired position."""
@@ -0,0 +1,34 @@
1
+ """Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""
2
+
3
+ from __future__ import annotations
4
+ from .erc20data import Erc20Data, Erc20DataTypedDict
5
+ from compass_api_sdk.types import BaseModel
6
+ from datetime import datetime
7
+ from typing_extensions import TypedDict
8
+
9
+
10
+ class PendleGetMarketResponseTypedDict(TypedDict):
11
+ implied_apy: str
12
+ r"""The implied APY of the market."""
13
+ maturity_date: datetime
14
+ r"""The maturity date of the market. ISO 8601 format. UTC timezone."""
15
+ underlying_token: Erc20DataTypedDict
16
+ sy: Erc20DataTypedDict
17
+ pt: Erc20DataTypedDict
18
+ yt: Erc20DataTypedDict
19
+
20
+
21
+ class PendleGetMarketResponse(BaseModel):
22
+ implied_apy: str
23
+ r"""The implied APY of the market."""
24
+
25
+ maturity_date: datetime
26
+ r"""The maturity date of the market. ISO 8601 format. UTC timezone."""
27
+
28
+ underlying_token: Erc20Data
29
+
30
+ sy: Erc20Data
31
+
32
+ pt: Erc20Data
33
+
34
+ yt: Erc20Data
@@ -0,0 +1,51 @@
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 datetime import datetime
6
+ from typing_extensions import TypedDict
7
+
8
+
9
+ class PendleGetUserPositionResponseTypedDict(TypedDict):
10
+ claimable_yield: str
11
+ r"""The amount of yield that can be claimed in the underlying token."""
12
+ sy_balance: str
13
+ r"""The amount of SY tokens the user currently holds."""
14
+ pt_balance: str
15
+ r"""The amount of PT tokens the user currently holds."""
16
+ yt_balance: str
17
+ r"""The amount of YT tokens the user currently holds."""
18
+ underlying_token_balance: str
19
+ r"""The amount of underlying tokens the user currently holds."""
20
+ underlying_token_name: str
21
+ r"""The name of the underlying token."""
22
+ underlying_token_symbol: str
23
+ r"""The symbol of the underlying token."""
24
+ maturity_date: datetime
25
+ r"""The maturity date of the market. ISO 8601 format. UTC timezone."""
26
+
27
+
28
+ class PendleGetUserPositionResponse(BaseModel):
29
+ claimable_yield: str
30
+ r"""The amount of yield that can be claimed in the underlying token."""
31
+
32
+ sy_balance: str
33
+ r"""The amount of SY tokens the user currently holds."""
34
+
35
+ pt_balance: str
36
+ r"""The amount of PT tokens the user currently holds."""
37
+
38
+ yt_balance: str
39
+ r"""The amount of YT tokens the user currently holds."""
40
+
41
+ underlying_token_balance: str
42
+ r"""The amount of underlying tokens the user currently holds."""
43
+
44
+ underlying_token_name: str
45
+ r"""The name of the underlying token."""
46
+
47
+ underlying_token_symbol: str
48
+ r"""The symbol of the underlying token."""
49
+
50
+ maturity_date: datetime
51
+ r"""The maturity date of the market. ISO 8601 format. UTC timezone."""
@@ -0,0 +1,425 @@
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 typing import Any, Mapping, Optional
8
+
9
+
10
+ class Pendle(BaseSDK):
11
+ def position(
12
+ self,
13
+ *,
14
+ chain: models.PendlePositionChain = models.PendlePositionChain.ETHEREUM_MAINNET,
15
+ user_address: str = "0xa829B388A3DF7f581cE957a95edbe419dd146d1B",
16
+ market_address: str = "0xdace1121e10500e9e29d071f01593fd76b000f08",
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.PendleGetUserPositionResponse:
22
+ r"""Check User's Market Position
23
+
24
+ Check the SY, PT, and YT positions for a given market.
25
+
26
+ :param chain: The chain to use.
27
+ :param user_address: The user address of the desired position.
28
+ :param market_address: The market address of the desired position.
29
+ :param retries: Override the default retry configuration for this method
30
+ :param server_url: Override the default server URL for this method
31
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
32
+ :param http_headers: Additional headers to set or replace on requests.
33
+ """
34
+ base_url = None
35
+ url_variables = None
36
+ if timeout_ms is None:
37
+ timeout_ms = self.sdk_configuration.timeout_ms
38
+
39
+ if server_url is not None:
40
+ base_url = server_url
41
+ else:
42
+ base_url = self._get_url(base_url, url_variables)
43
+
44
+ request = models.PendlePositionRequest(
45
+ chain=chain,
46
+ user_address=user_address,
47
+ market_address=market_address,
48
+ )
49
+
50
+ req = self._build_request(
51
+ method="GET",
52
+ path="/v0/pendle/position",
53
+ base_url=base_url,
54
+ url_variables=url_variables,
55
+ request=request,
56
+ request_body_required=False,
57
+ request_has_path_params=False,
58
+ request_has_query_params=True,
59
+ user_agent_header="user-agent",
60
+ accept_header_value="application/json",
61
+ http_headers=http_headers,
62
+ security=self.sdk_configuration.security,
63
+ timeout_ms=timeout_ms,
64
+ )
65
+
66
+ if retries == UNSET:
67
+ if self.sdk_configuration.retry_config is not UNSET:
68
+ retries = self.sdk_configuration.retry_config
69
+
70
+ retry_config = None
71
+ if isinstance(retries, utils.RetryConfig):
72
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
73
+
74
+ http_res = self.do_request(
75
+ hook_ctx=HookContext(
76
+ base_url=base_url or "",
77
+ operation_id="pendle_position",
78
+ oauth2_scopes=[],
79
+ security_source=self.sdk_configuration.security,
80
+ ),
81
+ request=req,
82
+ error_status_codes=["422", "4XX", "5XX"],
83
+ retry_config=retry_config,
84
+ )
85
+
86
+ response_data: Any = None
87
+ if utils.match_response(http_res, "200", "application/json"):
88
+ return utils.unmarshal_json(
89
+ http_res.text, models.PendleGetUserPositionResponse
90
+ )
91
+ if utils.match_response(http_res, "422", "application/json"):
92
+ response_data = utils.unmarshal_json(
93
+ http_res.text, errors.HTTPValidationErrorData
94
+ )
95
+ raise errors.HTTPValidationError(data=response_data)
96
+ if utils.match_response(http_res, "4XX", "*"):
97
+ http_res_text = utils.stream_to_text(http_res)
98
+ raise errors.APIError(
99
+ "API error occurred", http_res.status_code, http_res_text, http_res
100
+ )
101
+ if utils.match_response(http_res, "5XX", "*"):
102
+ http_res_text = utils.stream_to_text(http_res)
103
+ raise errors.APIError(
104
+ "API error occurred", http_res.status_code, http_res_text, http_res
105
+ )
106
+
107
+ content_type = http_res.headers.get("Content-Type")
108
+ http_res_text = utils.stream_to_text(http_res)
109
+ raise errors.APIError(
110
+ f"Unexpected response received (code: {http_res.status_code}, type: {content_type})",
111
+ http_res.status_code,
112
+ http_res_text,
113
+ http_res,
114
+ )
115
+
116
+ async def position_async(
117
+ self,
118
+ *,
119
+ chain: models.PendlePositionChain = models.PendlePositionChain.ETHEREUM_MAINNET,
120
+ user_address: str = "0xa829B388A3DF7f581cE957a95edbe419dd146d1B",
121
+ market_address: str = "0xdace1121e10500e9e29d071f01593fd76b000f08",
122
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
123
+ server_url: Optional[str] = None,
124
+ timeout_ms: Optional[int] = None,
125
+ http_headers: Optional[Mapping[str, str]] = None,
126
+ ) -> models.PendleGetUserPositionResponse:
127
+ r"""Check User's Market Position
128
+
129
+ Check the SY, PT, and YT positions for a given market.
130
+
131
+ :param chain: The chain to use.
132
+ :param user_address: The user address of the desired position.
133
+ :param market_address: The market address of the desired position.
134
+ :param retries: Override the default retry configuration for this method
135
+ :param server_url: Override the default server URL for this method
136
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
137
+ :param http_headers: Additional headers to set or replace on requests.
138
+ """
139
+ base_url = None
140
+ url_variables = None
141
+ if timeout_ms is None:
142
+ timeout_ms = self.sdk_configuration.timeout_ms
143
+
144
+ if server_url is not None:
145
+ base_url = server_url
146
+ else:
147
+ base_url = self._get_url(base_url, url_variables)
148
+
149
+ request = models.PendlePositionRequest(
150
+ chain=chain,
151
+ user_address=user_address,
152
+ market_address=market_address,
153
+ )
154
+
155
+ req = self._build_request_async(
156
+ method="GET",
157
+ path="/v0/pendle/position",
158
+ base_url=base_url,
159
+ url_variables=url_variables,
160
+ request=request,
161
+ request_body_required=False,
162
+ request_has_path_params=False,
163
+ request_has_query_params=True,
164
+ user_agent_header="user-agent",
165
+ accept_header_value="application/json",
166
+ http_headers=http_headers,
167
+ security=self.sdk_configuration.security,
168
+ timeout_ms=timeout_ms,
169
+ )
170
+
171
+ if retries == UNSET:
172
+ if self.sdk_configuration.retry_config is not UNSET:
173
+ retries = self.sdk_configuration.retry_config
174
+
175
+ retry_config = None
176
+ if isinstance(retries, utils.RetryConfig):
177
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
178
+
179
+ http_res = await self.do_request_async(
180
+ hook_ctx=HookContext(
181
+ base_url=base_url or "",
182
+ operation_id="pendle_position",
183
+ oauth2_scopes=[],
184
+ security_source=self.sdk_configuration.security,
185
+ ),
186
+ request=req,
187
+ error_status_codes=["422", "4XX", "5XX"],
188
+ retry_config=retry_config,
189
+ )
190
+
191
+ response_data: Any = None
192
+ if utils.match_response(http_res, "200", "application/json"):
193
+ return utils.unmarshal_json(
194
+ http_res.text, models.PendleGetUserPositionResponse
195
+ )
196
+ if utils.match_response(http_res, "422", "application/json"):
197
+ response_data = utils.unmarshal_json(
198
+ http_res.text, errors.HTTPValidationErrorData
199
+ )
200
+ raise errors.HTTPValidationError(data=response_data)
201
+ if utils.match_response(http_res, "4XX", "*"):
202
+ http_res_text = await utils.stream_to_text_async(http_res)
203
+ raise errors.APIError(
204
+ "API error occurred", http_res.status_code, http_res_text, http_res
205
+ )
206
+ if utils.match_response(http_res, "5XX", "*"):
207
+ http_res_text = await utils.stream_to_text_async(http_res)
208
+ raise errors.APIError(
209
+ "API error occurred", http_res.status_code, http_res_text, http_res
210
+ )
211
+
212
+ content_type = http_res.headers.get("Content-Type")
213
+ http_res_text = await utils.stream_to_text_async(http_res)
214
+ raise errors.APIError(
215
+ f"Unexpected response received (code: {http_res.status_code}, type: {content_type})",
216
+ http_res.status_code,
217
+ http_res_text,
218
+ http_res,
219
+ )
220
+
221
+ def market(
222
+ self,
223
+ *,
224
+ chain: models.PendleMarketChain = models.PendleMarketChain.ETHEREUM_MAINNET,
225
+ user_address: str = "0xa829B388A3DF7f581cE957a95edbe419dd146d1B",
226
+ market_address: str = "0xdace1121e10500e9e29d071f01593fd76b000f08",
227
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
228
+ server_url: Optional[str] = None,
229
+ timeout_ms: Optional[int] = None,
230
+ http_headers: Optional[Mapping[str, str]] = None,
231
+ ) -> models.PendleGetMarketResponse:
232
+ r"""Get Market Data
233
+
234
+ Get market data.
235
+
236
+ :param chain: The chain to use.
237
+ :param user_address: The user address of the desired position.
238
+ :param market_address: The market address of the desired position.
239
+ :param retries: Override the default retry configuration for this method
240
+ :param server_url: Override the default server URL for this method
241
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
242
+ :param http_headers: Additional headers to set or replace on requests.
243
+ """
244
+ base_url = None
245
+ url_variables = None
246
+ if timeout_ms is None:
247
+ timeout_ms = self.sdk_configuration.timeout_ms
248
+
249
+ if server_url is not None:
250
+ base_url = server_url
251
+ else:
252
+ base_url = self._get_url(base_url, url_variables)
253
+
254
+ request = models.PendleMarketRequest(
255
+ chain=chain,
256
+ user_address=user_address,
257
+ market_address=market_address,
258
+ )
259
+
260
+ req = self._build_request(
261
+ method="GET",
262
+ path="/v0/pendle/market",
263
+ base_url=base_url,
264
+ url_variables=url_variables,
265
+ request=request,
266
+ request_body_required=False,
267
+ request_has_path_params=False,
268
+ request_has_query_params=True,
269
+ user_agent_header="user-agent",
270
+ accept_header_value="application/json",
271
+ http_headers=http_headers,
272
+ security=self.sdk_configuration.security,
273
+ timeout_ms=timeout_ms,
274
+ )
275
+
276
+ if retries == UNSET:
277
+ if self.sdk_configuration.retry_config is not UNSET:
278
+ retries = self.sdk_configuration.retry_config
279
+
280
+ retry_config = None
281
+ if isinstance(retries, utils.RetryConfig):
282
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
283
+
284
+ http_res = self.do_request(
285
+ hook_ctx=HookContext(
286
+ base_url=base_url or "",
287
+ operation_id="pendle_market",
288
+ oauth2_scopes=[],
289
+ security_source=self.sdk_configuration.security,
290
+ ),
291
+ request=req,
292
+ error_status_codes=["422", "4XX", "5XX"],
293
+ retry_config=retry_config,
294
+ )
295
+
296
+ response_data: Any = None
297
+ if utils.match_response(http_res, "200", "application/json"):
298
+ return utils.unmarshal_json(http_res.text, models.PendleGetMarketResponse)
299
+ if utils.match_response(http_res, "422", "application/json"):
300
+ response_data = utils.unmarshal_json(
301
+ http_res.text, errors.HTTPValidationErrorData
302
+ )
303
+ raise errors.HTTPValidationError(data=response_data)
304
+ if utils.match_response(http_res, "4XX", "*"):
305
+ http_res_text = utils.stream_to_text(http_res)
306
+ raise errors.APIError(
307
+ "API error occurred", http_res.status_code, http_res_text, http_res
308
+ )
309
+ if utils.match_response(http_res, "5XX", "*"):
310
+ http_res_text = utils.stream_to_text(http_res)
311
+ raise errors.APIError(
312
+ "API error occurred", http_res.status_code, http_res_text, http_res
313
+ )
314
+
315
+ content_type = http_res.headers.get("Content-Type")
316
+ http_res_text = utils.stream_to_text(http_res)
317
+ raise errors.APIError(
318
+ f"Unexpected response received (code: {http_res.status_code}, type: {content_type})",
319
+ http_res.status_code,
320
+ http_res_text,
321
+ http_res,
322
+ )
323
+
324
+ async def market_async(
325
+ self,
326
+ *,
327
+ chain: models.PendleMarketChain = models.PendleMarketChain.ETHEREUM_MAINNET,
328
+ user_address: str = "0xa829B388A3DF7f581cE957a95edbe419dd146d1B",
329
+ market_address: str = "0xdace1121e10500e9e29d071f01593fd76b000f08",
330
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
331
+ server_url: Optional[str] = None,
332
+ timeout_ms: Optional[int] = None,
333
+ http_headers: Optional[Mapping[str, str]] = None,
334
+ ) -> models.PendleGetMarketResponse:
335
+ r"""Get Market Data
336
+
337
+ Get market data.
338
+
339
+ :param chain: The chain to use.
340
+ :param user_address: The user address of the desired position.
341
+ :param market_address: The market address of the desired position.
342
+ :param retries: Override the default retry configuration for this method
343
+ :param server_url: Override the default server URL for this method
344
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
345
+ :param http_headers: Additional headers to set or replace on requests.
346
+ """
347
+ base_url = None
348
+ url_variables = None
349
+ if timeout_ms is None:
350
+ timeout_ms = self.sdk_configuration.timeout_ms
351
+
352
+ if server_url is not None:
353
+ base_url = server_url
354
+ else:
355
+ base_url = self._get_url(base_url, url_variables)
356
+
357
+ request = models.PendleMarketRequest(
358
+ chain=chain,
359
+ user_address=user_address,
360
+ market_address=market_address,
361
+ )
362
+
363
+ req = self._build_request_async(
364
+ method="GET",
365
+ path="/v0/pendle/market",
366
+ base_url=base_url,
367
+ url_variables=url_variables,
368
+ request=request,
369
+ request_body_required=False,
370
+ request_has_path_params=False,
371
+ request_has_query_params=True,
372
+ user_agent_header="user-agent",
373
+ accept_header_value="application/json",
374
+ http_headers=http_headers,
375
+ security=self.sdk_configuration.security,
376
+ timeout_ms=timeout_ms,
377
+ )
378
+
379
+ if retries == UNSET:
380
+ if self.sdk_configuration.retry_config is not UNSET:
381
+ retries = self.sdk_configuration.retry_config
382
+
383
+ retry_config = None
384
+ if isinstance(retries, utils.RetryConfig):
385
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
386
+
387
+ http_res = await self.do_request_async(
388
+ hook_ctx=HookContext(
389
+ base_url=base_url or "",
390
+ operation_id="pendle_market",
391
+ oauth2_scopes=[],
392
+ security_source=self.sdk_configuration.security,
393
+ ),
394
+ request=req,
395
+ error_status_codes=["422", "4XX", "5XX"],
396
+ retry_config=retry_config,
397
+ )
398
+
399
+ response_data: Any = None
400
+ if utils.match_response(http_res, "200", "application/json"):
401
+ return utils.unmarshal_json(http_res.text, models.PendleGetMarketResponse)
402
+ if utils.match_response(http_res, "422", "application/json"):
403
+ response_data = utils.unmarshal_json(
404
+ http_res.text, errors.HTTPValidationErrorData
405
+ )
406
+ raise errors.HTTPValidationError(data=response_data)
407
+ if utils.match_response(http_res, "4XX", "*"):
408
+ http_res_text = await utils.stream_to_text_async(http_res)
409
+ raise errors.APIError(
410
+ "API error occurred", http_res.status_code, http_res_text, http_res
411
+ )
412
+ if utils.match_response(http_res, "5XX", "*"):
413
+ http_res_text = await utils.stream_to_text_async(http_res)
414
+ raise errors.APIError(
415
+ "API error occurred", http_res.status_code, http_res_text, http_res
416
+ )
417
+
418
+ content_type = http_res.headers.get("Content-Type")
419
+ http_res_text = await utils.stream_to_text_async(http_res)
420
+ raise errors.APIError(
421
+ f"Unexpected response received (code: {http_res.status_code}, type: {content_type})",
422
+ http_res.status_code,
423
+ http_res_text,
424
+ http_res,
425
+ )
compass_api_sdk/sdk.py CHANGED
@@ -17,6 +17,7 @@ if TYPE_CHECKING:
17
17
  from compass_api_sdk.aave_v3 import AaveV3
18
18
  from compass_api_sdk.aerodrome_slipstream import AerodromeSlipstream
19
19
  from compass_api_sdk.morpho import Morpho
20
+ from compass_api_sdk.pendle import Pendle
20
21
  from compass_api_sdk.sky import Sky
21
22
  from compass_api_sdk.smart_account import SmartAccount
22
23
  from compass_api_sdk.token_sdk import TokenSDK
@@ -35,6 +36,7 @@ class CompassAPI(BaseSDK):
35
36
  token: "TokenSDK"
36
37
  uniswap_v3: "UniswapV3"
37
38
  universal: "Universal"
39
+ pendle: "Pendle"
38
40
  transaction_batching: "TransactionBatching"
39
41
  smart_account: "SmartAccount"
40
42
  _sub_sdk_map = {
@@ -48,6 +50,7 @@ class CompassAPI(BaseSDK):
48
50
  "token": ("compass_api_sdk.token_sdk", "TokenSDK"),
49
51
  "uniswap_v3": ("compass_api_sdk.uniswap_v3", "UniswapV3"),
50
52
  "universal": ("compass_api_sdk.universal", "Universal"),
53
+ "pendle": ("compass_api_sdk.pendle", "Pendle"),
51
54
  "transaction_batching": (
52
55
  "compass_api_sdk.transaction_batching",
53
56
  "TransactionBatching",
@@ -1,6 +1,6 @@
1
1
  Metadata-Version: 2.3
2
2
  Name: compass_api_sdk
3
- Version: 0.5.0
3
+ Version: 0.5.2
4
4
  Summary: Compass API SDK.
5
5
  Author: royalnine
6
6
  Requires-Python: >=3.9.2
@@ -234,6 +234,11 @@ with CompassAPI(
234
234
  * [borrow](https://github.com/CompassLabs/mono/blob/master/docs/sdks/morpho/README.md#borrow) - Borrow from Market
235
235
  * [repay](https://github.com/CompassLabs/mono/blob/master/docs/sdks/morpho/README.md#repay) - Repay to Market
236
236
 
237
+ ### [pendle](https://github.com/CompassLabs/mono/blob/master/docs/sdks/pendle/README.md)
238
+
239
+ * [position](https://github.com/CompassLabs/mono/blob/master/docs/sdks/pendle/README.md#position) - Check User's Market Position
240
+ * [market](https://github.com/CompassLabs/mono/blob/master/docs/sdks/pendle/README.md#market) - Get Market Data
241
+
237
242
  ### [sky](https://github.com/CompassLabs/mono/blob/master/docs/sdks/sky/README.md)
238
243
 
239
244
  * [position](https://github.com/CompassLabs/mono/blob/master/docs/sdks/sky/README.md#position) - Check USDS Position
@@ -2,7 +2,7 @@ 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=VC7TZz0BiM721MghXneEovG3UkaktRkt1OhMY3iLmZM,2818
5
- compass_api_sdk/_version.py,sha256=MzxLJg8PxxcoDrMxuPLbRx9sdlTiqmzYV85sYv9tFh4,472
5
+ compass_api_sdk/_version.py,sha256=XSw3Wb5KDxZxpEzExJEzU38Obu6X7eSSAckZIKTjKAE,472
6
6
  compass_api_sdk/aave_v3.py,sha256=A6iCHMbBmOLRFobOR-QIkBro81GolKA6cxNAVvXzZEs,123270
7
7
  compass_api_sdk/aerodrome_slipstream.py,sha256=w_Q84q8iIDthqX0myByQ1SE5-B2iZPqZvcNVzSLYBZ0,82785
8
8
  compass_api_sdk/basesdk.py,sha256=29RfgnfgQq_cRx8OHdQEdJuJ2DrgRZlzGIPC-_6-2bM,12136
@@ -10,7 +10,7 @@ compass_api_sdk/errors/__init__.py,sha256=V3vSSmUvxXtgwHL60IBI0MzLWll8h373LvT3el
10
10
  compass_api_sdk/errors/apierror.py,sha256=9mTyJSyvUAOnSfW_1HWt9dGl8IDlpQ68DebwYsDNdug,528
11
11
  compass_api_sdk/errors/httpvalidationerror.py,sha256=KBdpK3fYQoeMB-3m9dLKiMYimFN7B9VLma6YqMKX5k0,671
12
12
  compass_api_sdk/httpclient.py,sha256=Eu73urOAiZQtdUIyOUnPccxCiBbWEKrXG-JrRG3SLM4,3946
13
- compass_api_sdk/models/__init__.py,sha256=izQ1J37V2Ui-DxriyNzY4FXuHwRXKe3XtSfUZn3h1G8,104341
13
+ compass_api_sdk/models/__init__.py,sha256=9aUClGAI9ReL5wsJbQh-NYzyfke3oyHOsijL6F67dLs,105978
14
14
  compass_api_sdk/models/aave_avg_rateop.py,sha256=PEdn3yManrwWI6SCD8nrgAFp4KJoXn4nwo56exPhRPA,2392
15
15
  compass_api_sdk/models/aave_historical_transactionsop.py,sha256=7Ghmin3AWvh2knbC-M0CZ0chL8q3fJU-GeDgXeoY0s4,1789
16
16
  compass_api_sdk/models/aave_liquidity_changeop.py,sha256=o9G4dD2foyhbunziTv_177Qr2AK37KTIQsQfvPxo5Fs,2785
@@ -72,19 +72,20 @@ compass_api_sdk/models/compass_api_backend_models_morpho_read_response_get_vault
72
72
  compass_api_sdk/models/compass_api_backend_models_morpho_read_response_get_vault_vaultstate.py,sha256=PAHNVh5aU1z4t8N63_D4fYixGb_ZlOFZLAh3bVH2WLM,1624
73
73
  compass_api_sdk/models/compass_api_backend_models_morpho_read_response_get_vaults_asset.py,sha256=zlxZwigsUocOnYo2Q43JLDSiFL6w26r-jaqcy4Ds2NU,562
74
74
  compass_api_sdk/models/compass_api_backend_models_morpho_read_response_get_vaults_vaultstate.py,sha256=WwlaoKcfHa18irpBwR95FIV5TD0_2jVN_hIqo1R55rE,796
75
- compass_api_sdk/models/contractname.py,sha256=DJHzH2A2fydQrhrQIg9JzrNY7r7BfH_qwZfV6bpbNe4,1395
75
+ compass_api_sdk/models/contractname.py,sha256=M42omcEviZISWigXvhw2xm7kACf94oRguBBhPhkSCwk,1519
76
76
  compass_api_sdk/models/curator.py,sha256=FEyFGfhBNu1xFlSACdFPpBK2kGzLNBvLi8KfaEKy0rY,1392
77
77
  compass_api_sdk/models/ensnameinforesponse.py,sha256=p7y3TYD3lApa8hzHTCKDUEmSpmH2QmJAHG7wzef9rLk,626
78
+ compass_api_sdk/models/erc20data.py,sha256=u-Ln_Wj4mpuW5sk1Ull0ir8dJwYRU4Ij7C75R51pZmY,357
78
79
  compass_api_sdk/models/feeenum.py,sha256=TIYaeNWCG9KFGV7CZeXHvZ_4tmlqdlk-Pcg04pc7ynM,363
79
- compass_api_sdk/models/generic_allowanceop.py,sha256=hby2OpJYO1SSXgwxynPWMu7Zv1AXL9M9LkTdvUy4rtA,3596
80
+ compass_api_sdk/models/generic_allowanceop.py,sha256=dHOIHy7rTkh9tSM_Uud1BN1VPCsVhzbKkkq9vN0GLeo,3631
80
81
  compass_api_sdk/models/generic_ensop.py,sha256=xH9v260Dw_eF_IAlQqO7eqOKRDNDNV2519ze7VO31CM,1104
81
82
  compass_api_sdk/models/generic_portfolioop.py,sha256=jtsFkKQCYx2cbhK1LKtMB5RjVAAeRhVF2K5CpgoM74U,1175
82
83
  compass_api_sdk/models/generic_supported_tokensop.py,sha256=5ZNzAxmcnaxpGqAn2AoIqdGx0LDF4EnU102mVOXxlO4,884
83
84
  compass_api_sdk/models/generic_visualize_portfolioop.py,sha256=FGVWUHvzG8GODN2OFE6yP7ppRLa4H7hclfz00l72sKE,1229
84
85
  compass_api_sdk/models/image.py,sha256=-qB_S9WX6YZYVKVqTdnB79f57zjrO2G-hYwBxp-KJDQ,355
85
86
  compass_api_sdk/models/increaseallowanceanyparams.py,sha256=KdqYg_G4_xCKdXUnllXpbFrRVPbWc3EZLxBPCwQmjAU,1821
86
- compass_api_sdk/models/increaseallowanceparams.py,sha256=NSwwJkLSgBGbstNKB3xGIb5TiMMCFA3qKiFYn_HAAOE,2428
87
- compass_api_sdk/models/increaseallowancerequest.py,sha256=TxqyUxnXrFmQfBYFcQBziYbUhjObB6gkpuqW6fHyeIE,2684
87
+ compass_api_sdk/models/increaseallowanceparams.py,sha256=IkmPZGa5c5xaV2YRmszbBBmuOSZceLdxBy_wOE-i0yE,2463
88
+ compass_api_sdk/models/increaseallowancerequest.py,sha256=JQKVgYILt-IOLmCzsI3CIag9DRYuXBaB4Q_uL3nRmGQ,2719
88
89
  compass_api_sdk/models/interestratemode.py,sha256=OmOKBSJD0y9O9LuA0rajVkvxiEuU-xiQAuoiHYFmp5s,341
89
90
  compass_api_sdk/models/liquidationcall.py,sha256=-HEwFMuiD2p8x04VQHlnYqlOdvhr0jXrZ6ksmxlffUw,2019
90
91
  compass_api_sdk/models/liquidity.py,sha256=WOPaK4SXj2C5TBLZlfoaQbcnzhcmFCEUFz59mOw1KeM,328
@@ -125,6 +126,10 @@ compass_api_sdk/models/multicallactiontype.py,sha256=zUoQJ_v_lyrIQWydn16iknjjX1J
125
126
  compass_api_sdk/models/multicallauthorizationrequest.py,sha256=h5-2acLlhV9assgIIHyVIgTak1IJathqa-viS-PkvMA,1155
126
127
  compass_api_sdk/models/multicallauthorizationresponse.py,sha256=3jjdz9Mz-tKjhBzZbVaJW51no58HSqcxfHJwuZsgnhg,914
127
128
  compass_api_sdk/models/multicallexecuterequest.py,sha256=iVCfkarzlLYQrdo2sCRB9YJyJ-dayaf321j0Hh4Fit8,1095
129
+ compass_api_sdk/models/pendle_marketop.py,sha256=xKYkYiyZNNBedTIxnGPdCi0Ov4i2AHAD3k0a6duvQrU,1416
130
+ compass_api_sdk/models/pendle_positionop.py,sha256=1e5KREC0HCRu6f5oK6zSo1bk3QznFXIfxCCkRm5FVg0,1428
131
+ compass_api_sdk/models/pendlegetmarketresponse.py,sha256=qupYm6P8CxZ1v6cFmbRyIxCTjZ7PTjxXiuRW7_8KHng,917
132
+ compass_api_sdk/models/pendlegetuserpositionresponse.py,sha256=VZGVNNdvqKwNDB9LkokXX35-jJy_BP-Mbw76xRE3JlI,1750
128
133
  compass_api_sdk/models/portfolio.py,sha256=Ey2gbh7ZqSWIMmfLrflpZS7QzvCR8QMp5bHx6-BMEp4,687
129
134
  compass_api_sdk/models/redeemunderlying.py,sha256=YK6I29RAeIgE4gfxyjgoUiktxqFAnJfvNv4qz1QvmTU,1282
130
135
  compass_api_sdk/models/repay.py,sha256=dCDDG9BvJOnT-OgEs013t7l5xG0r-5M_BUxal4cfU0I,1482
@@ -191,8 +196,9 @@ compass_api_sdk/models/weeklyapys.py,sha256=AaGjDD4NeGsZQBwdRW1G09Pmx17pLPe2oUA9
191
196
  compass_api_sdk/models/wrapethparams.py,sha256=eMIOqxDM3hCwMJiJsMdnO6ZsMXg1K-_E3S5OIi8XGEI,824
192
197
  compass_api_sdk/models/wrapethrequest.py,sha256=aJBhcooob-etvReQEjNdC8HOUQ7oUNkOPYr6A4a3BFE,1077
193
198
  compass_api_sdk/morpho.py,sha256=9b96ovx476ZmNGKpWu5ioIIXkS3N7MI3LYYRrtPQb3s,133036
199
+ compass_api_sdk/pendle.py,sha256=E_OF1xDxdyhTGYLl7omAoKPnod4VjyQjcOJs54jELXE,17189
194
200
  compass_api_sdk/py.typed,sha256=zrp19r0G21lr2yRiMC0f8MFkQFGj9wMpSbboePMg8KM,59
195
- compass_api_sdk/sdk.py,sha256=54l6T3APf4UhuJ2gI9yzTnn7JJkMiRxksJsE4eDoJC4,7569
201
+ compass_api_sdk/sdk.py,sha256=RyVwgRGRTz_vr3XcLxVc4o3wvjrLgoA6-qq9mgM9moM,7692
196
202
  compass_api_sdk/sdkconfiguration.py,sha256=K-B67o2xftk7Rh5z59xBL0TcCn_XhX0Yh_JePPegvvU,1764
197
203
  compass_api_sdk/sky.py,sha256=u-1LwuQPGsYGq4MgzhP0KkkKt4RD9ggkHvARaPPZVI0,43495
198
204
  compass_api_sdk/smart_account.py,sha256=qMBOBYPQr_3UUx1t6VAAGBCtKm2s9UHxgh2UnUsJmHA,9356
@@ -218,6 +224,6 @@ compass_api_sdk/utils/security.py,sha256=ktep3HKwbFs-MLxUYTM8Jd4v-ZBum5_Z0u1PFId
218
224
  compass_api_sdk/utils/serializers.py,sha256=hiHBXM1AY8_N2Z_rvFfNSYwvLBkSQlPGFp8poasdU4s,5986
219
225
  compass_api_sdk/utils/url.py,sha256=BgGPgcTA6MRK4bF8fjP2dUopN3NzEzxWMXPBVg8NQUA,5254
220
226
  compass_api_sdk/utils/values.py,sha256=CcaCXEa3xHhkUDROyXZocN8f0bdITftv9Y0P9lTf0YM,3517
221
- compass_api_sdk-0.5.0.dist-info/METADATA,sha256=GK6KLNSV4b_xkJZM8olfNerOW6zs_SRMNesh3w5mjLI,25173
222
- compass_api_sdk-0.5.0.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
223
- compass_api_sdk-0.5.0.dist-info/RECORD,,
227
+ compass_api_sdk-0.5.2.dist-info/METADATA,sha256=zk1D2-5r5tvtNuKzc2EdCjO0wLHk8UBlT2OGQIbbPJg,25505
228
+ compass_api_sdk-0.5.2.dist-info/WHEEL,sha256=b4K_helf-jlQoXBBETfwnf4B04YC67LOev0jo4fX5m8,88
229
+ compass_api_sdk-0.5.2.dist-info/RECORD,,