compass_api_sdk 1.1.1__py3-none-any.whl → 2.2.1rc3__py3-none-any.whl

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (263) hide show
  1. compass_api_sdk/_hooks/sdkhooks.py +4 -4
  2. compass_api_sdk/_hooks/types.py +1 -2
  3. compass_api_sdk/_version.py +3 -3
  4. compass_api_sdk/aave_v3.py +386 -114
  5. compass_api_sdk/aerodrome_slipstream.py +104 -54
  6. compass_api_sdk/basesdk.py +6 -0
  7. compass_api_sdk/bridge.py +536 -0
  8. compass_api_sdk/earn.py +2026 -0
  9. compass_api_sdk/erc_4626_vaults.py +28 -10
  10. compass_api_sdk/errors/__init__.py +8 -0
  11. compass_api_sdk/errors/apierror.py +1 -1
  12. compass_api_sdk/errors/compassapierror.py +1 -1
  13. compass_api_sdk/errors/httpvalidationerror.py +1 -1
  14. compass_api_sdk/errors/mintpreparenotfoundresponse_error.py +49 -0
  15. compass_api_sdk/errors/no_response_error.py +1 -1
  16. compass_api_sdk/errors/responsevalidationerror.py +1 -1
  17. compass_api_sdk/ethena.py +36 -10
  18. compass_api_sdk/gas_sponsorship.py +458 -0
  19. compass_api_sdk/httpclient.py +0 -1
  20. compass_api_sdk/models/__init__.py +820 -392
  21. compass_api_sdk/models/aaveborrowparams.py +4 -13
  22. compass_api_sdk/models/aaveborrowrequest.py +10 -14
  23. compass_api_sdk/models/aavehistoricaltransactionsresponse.py +3 -3
  24. compass_api_sdk/models/aavelooprequest.py +32 -28
  25. compass_api_sdk/models/aaveposition.py +104 -0
  26. compass_api_sdk/models/aaverepayparams.py +4 -13
  27. compass_api_sdk/models/aaverepayrequest.py +10 -14
  28. compass_api_sdk/models/aavesetuseremodeparams.py +28 -0
  29. compass_api_sdk/models/aavesetuseremoderequest.py +48 -0
  30. compass_api_sdk/models/aavesupplyparams.py +4 -13
  31. compass_api_sdk/models/aavesupplyrequest.py +10 -14
  32. compass_api_sdk/models/aavevenue.py +27 -0
  33. compass_api_sdk/models/aavewithdrawparams.py +4 -13
  34. compass_api_sdk/models/aavewithdrawrequest.py +10 -14
  35. compass_api_sdk/models/aerodromeenrichedposition.py +109 -0
  36. compass_api_sdk/models/aerodromelppositionsresponse.py +10 -7
  37. compass_api_sdk/models/aerodromeslipstreambuyexactlyparams.py +8 -25
  38. compass_api_sdk/models/aerodromeslipstreambuyexactlyrequest.py +14 -26
  39. compass_api_sdk/models/aerodromeslipstreamincreaseliquidityprovisionrequest.py +6 -1
  40. compass_api_sdk/models/aerodromeslipstreammintliquidityprovisionparams.py +8 -25
  41. compass_api_sdk/models/aerodromeslipstreammintliquidityprovisionrequest.py +14 -26
  42. compass_api_sdk/models/aerodromeslipstreampoolpriceresponse.py +8 -25
  43. compass_api_sdk/models/aerodromeslipstreamsellexactlyparams.py +8 -25
  44. compass_api_sdk/models/aerodromeslipstreamsellexactlyrequest.py +13 -25
  45. compass_api_sdk/models/aerodromeslipstreamwithdrawliquidityprovisionrequest.py +6 -1
  46. compass_api_sdk/models/approvetransferrequest.py +32 -0
  47. compass_api_sdk/models/approvetransferresponse.py +52 -0
  48. compass_api_sdk/models/batchedsafeoperationsresponse_input.py +52 -0
  49. compass_api_sdk/models/batchedsafeoperationsresponse_output.py +52 -0
  50. compass_api_sdk/models/batcheduseroperationsrequest.py +15 -4
  51. compass_api_sdk/models/chainmarketinfo.py +29 -0
  52. compass_api_sdk/models/{compass_api_backend_models_generic_read_response_portfolio_tokenbalance.py → compass_api_backend_v1_models_generic_read_response_portfolio_tokenbalance.py} +6 -15
  53. compass_api_sdk/models/{compass_api_backend_models_morpho_read_response_check_user_position_apydata.py → compass_api_backend_v1_models_morpho_read_response_check_user_position_apydata.py} +2 -2
  54. compass_api_sdk/models/{compass_api_backend_models_morpho_read_response_check_user_position_asset.py → compass_api_backend_v1_models_morpho_read_response_check_user_position_asset.py} +2 -2
  55. compass_api_sdk/models/{compass_api_backend_models_morpho_read_response_check_user_position_marketstate.py → compass_api_backend_v1_models_morpho_read_response_check_user_position_marketstate.py} +4 -2
  56. compass_api_sdk/models/compass_api_backend_v1_models_morpho_read_response_check_user_position_vaultposition.py +30 -0
  57. compass_api_sdk/models/{compass_api_backend_models_morpho_read_response_check_user_position_vaultstate.py → compass_api_backend_v1_models_morpho_read_response_check_user_position_vaultstate.py} +2 -2
  58. compass_api_sdk/models/{compass_api_backend_models_morpho_read_response_get_market_apydata.py → compass_api_backend_v1_models_morpho_read_response_get_market_apydata.py} +2 -2
  59. compass_api_sdk/models/{compass_api_backend_models_morpho_read_response_get_market_asset.py → compass_api_backend_v1_models_morpho_read_response_get_market_asset.py} +5 -5
  60. compass_api_sdk/models/{compass_api_backend_models_morpho_read_response_get_market_marketstate.py → compass_api_backend_v1_models_morpho_read_response_get_market_marketstate.py} +4 -2
  61. compass_api_sdk/models/{compass_api_backend_models_morpho_read_response_get_markets_asset.py → compass_api_backend_v1_models_morpho_read_response_get_markets_asset.py} +2 -2
  62. compass_api_sdk/models/{compass_api_backend_models_morpho_read_response_get_markets_marketstate.py → compass_api_backend_v1_models_morpho_read_response_get_markets_marketstate.py} +2 -2
  63. compass_api_sdk/models/{compass_api_backend_models_morpho_read_response_get_vaults_asset.py → compass_api_backend_v1_models_morpho_read_response_get_vaults_asset.py} +2 -2
  64. compass_api_sdk/models/{compass_api_backend_models_morpho_read_response_get_vaults_vaultstate.py → compass_api_backend_v1_models_morpho_read_response_get_vaults_vaultstate.py} +4 -2
  65. compass_api_sdk/models/{compass_api_backend_models_pendle_read_response_market_userposition.py → compass_api_backend_v1_models_pendle_read_response_market_userposition.py} +2 -2
  66. compass_api_sdk/models/{compass_api_backend_models_pendle_read_response_positions_tokenbalance.py → compass_api_backend_v1_models_pendle_read_response_positions_tokenbalance.py} +2 -2
  67. compass_api_sdk/models/{compass_api_backend_models_vaults_read_response_vault_userposition.py → compass_api_backend_v1_models_vaults_read_response_vault_userposition.py} +2 -2
  68. compass_api_sdk/models/compass_api_backend_v1_models_wildcat_read_response_market_userposition.py +22 -0
  69. compass_api_sdk/models/compass_api_backend_v2_models_earn_read_response_positions_vaultposition.py +103 -0
  70. compass_api_sdk/models/compass_api_backend_v2_models_gas_sponsorship_permit_2_typed_data_eip712domain.py +36 -0
  71. compass_api_sdk/models/compass_api_backend_v2_models_gas_sponsorship_permit_2_typed_data_eip712types.py +36 -0
  72. compass_api_sdk/models/compass_api_backend_v2_models_gas_sponsorship_permit_typed_data_eip712domain.py +37 -0
  73. compass_api_sdk/models/compass_api_backend_v2_models_gas_sponsorship_permit_typed_data_eip712types.py +32 -0
  74. compass_api_sdk/models/compass_api_backend_v2_models_safe_transact_response_batched_safe_operations_eip712domain.py +29 -0
  75. compass_api_sdk/models/compass_api_backend_v2_models_safe_transact_response_batched_safe_operations_eip712types.py +34 -0
  76. compass_api_sdk/models/createaccountrequest.py +40 -0
  77. compass_api_sdk/models/createaccountresponse.py +56 -0
  78. compass_api_sdk/models/depositevent.py +61 -0
  79. compass_api_sdk/models/depositforburnrequest.py +77 -0
  80. compass_api_sdk/models/depositforburnresponse.py +100 -0
  81. compass_api_sdk/models/earnmanageparams.py +76 -0
  82. compass_api_sdk/models/earnmanagerequest.py +132 -0
  83. compass_api_sdk/models/earnmanageresponse.py +52 -0
  84. compass_api_sdk/models/earnpositionsresponse.py +48 -0
  85. compass_api_sdk/models/earnswapparams.py +74 -0
  86. compass_api_sdk/models/earnswaprequest.py +90 -0
  87. compass_api_sdk/models/earnswapresponse.py +55 -0
  88. compass_api_sdk/models/earntransferrequest.py +104 -0
  89. compass_api_sdk/models/earntransferresponse.py +71 -0
  90. compass_api_sdk/models/eip712domainfield.py +20 -0
  91. compass_api_sdk/models/eip712field.py +20 -0
  92. compass_api_sdk/models/ethenadepositrequest.py +6 -1
  93. compass_api_sdk/models/ethenagetvaultresponse.py +5 -5
  94. compass_api_sdk/models/ethenarequesttowithdrawrequest.py +6 -1
  95. compass_api_sdk/models/ethenaunstakerequest.py +6 -1
  96. compass_api_sdk/models/fee.py +43 -0
  97. compass_api_sdk/models/listaavemarketsresponse.py +21 -0
  98. compass_api_sdk/models/marketposition.py +5 -5
  99. compass_api_sdk/models/maxsupplyapyinfo.py +34 -0
  100. compass_api_sdk/models/mintpreparecompletedresponse.py +46 -0
  101. compass_api_sdk/models/mintpreparependingresponse.py +65 -0
  102. compass_api_sdk/models/mintpreparereadyresponse.py +43 -0
  103. compass_api_sdk/models/mintpreparerequest.py +25 -0
  104. compass_api_sdk/models/morphoborrowrequest.py +6 -1
  105. compass_api_sdk/models/morphocheckuserpositionresponse.py +9 -3
  106. compass_api_sdk/models/morphodepositrequest.py +6 -1
  107. compass_api_sdk/models/morphogetmarketresponse.py +72 -31
  108. compass_api_sdk/models/morphomarket.py +26 -20
  109. compass_api_sdk/models/morphorepayrequest.py +11 -1
  110. compass_api_sdk/models/morphosupplycollateralrequest.py +11 -1
  111. compass_api_sdk/models/morphovault.py +10 -10
  112. compass_api_sdk/models/morphowithdrawcollateralrequest.py +6 -1
  113. compass_api_sdk/models/morphowithdrawrequest.py +6 -1
  114. compass_api_sdk/models/multicallexecuterequest.py +7 -2
  115. compass_api_sdk/models/odosswapparams.py +9 -30
  116. compass_api_sdk/models/odosswaprequest.py +15 -33
  117. compass_api_sdk/models/oneinchswapparams.py +59 -0
  118. compass_api_sdk/models/openposition.py +7 -7
  119. compass_api_sdk/models/operationtype.py +11 -0
  120. compass_api_sdk/models/pendledepositevent.py +49 -0
  121. compass_api_sdk/models/pendlegetmarketresponse.py +5 -5
  122. compass_api_sdk/models/pendlemanageliquidityparams.py +2 -15
  123. compass_api_sdk/models/pendlemanageliquidityrequest.py +8 -16
  124. compass_api_sdk/models/pendlemarketinfo.py +138 -0
  125. compass_api_sdk/models/pendlemarketsresponse.py +30 -0
  126. compass_api_sdk/models/pendleptposition.py +111 -0
  127. compass_api_sdk/models/pendleptvenue.py +78 -0
  128. compass_api_sdk/models/pendleredeemyieldrequest.py +6 -1
  129. compass_api_sdk/models/pendletradeptparams.py +2 -15
  130. compass_api_sdk/models/pendletradeptrequest.py +8 -16
  131. compass_api_sdk/models/pendletradeytparams.py +2 -15
  132. compass_api_sdk/models/pendletradeytrequest.py +8 -16
  133. compass_api_sdk/models/pendlewithdrawalevent.py +54 -0
  134. compass_api_sdk/models/permit2typeddata_input.py +46 -0
  135. compass_api_sdk/models/permit2typeddata_output.py +46 -0
  136. compass_api_sdk/models/permitfield.py +20 -0
  137. compass_api_sdk/models/permitmessage.py +39 -0
  138. compass_api_sdk/models/permittransferfrommessage.py +29 -0
  139. compass_api_sdk/models/permittypeddataresponse_input.py +50 -0
  140. compass_api_sdk/models/permittypeddataresponse_output.py +50 -0
  141. compass_api_sdk/models/portfolio.py +5 -5
  142. compass_api_sdk/models/positionpnl.py +52 -0
  143. compass_api_sdk/models/reserve.py +6 -15
  144. compass_api_sdk/models/safetransactionparams.py +78 -0
  145. compass_api_sdk/models/safetransactionresponse.py +28 -0
  146. compass_api_sdk/models/safetxfield.py +20 -0
  147. compass_api_sdk/models/safetxmessage.py +66 -0
  148. compass_api_sdk/models/setallowanceparams.py +3 -16
  149. compass_api_sdk/models/setallowancerequest.py +9 -17
  150. compass_api_sdk/models/skybuyrequest.py +6 -1
  151. compass_api_sdk/models/skydepositrequest.py +7 -2
  152. compass_api_sdk/models/skysellrequest.py +7 -2
  153. compass_api_sdk/models/skywithdrawrequest.py +7 -2
  154. compass_api_sdk/models/sponsorgasrequest.py +71 -0
  155. compass_api_sdk/models/sponsorgasresponse.py +14 -0
  156. compass_api_sdk/models/tokenbalanceresponse.py +5 -15
  157. compass_api_sdk/models/tokenconfig.py +30 -0
  158. compass_api_sdk/models/tokenlistresponse.py +21 -0
  159. compass_api_sdk/models/tokenmarketdata.py +27 -0
  160. compass_api_sdk/models/tokenpermissions.py +20 -0
  161. compass_api_sdk/models/tokentransferparams.py +2 -15
  162. compass_api_sdk/models/tokentransferrequest.py +8 -16
  163. compass_api_sdk/models/uniswapbuyexactlyparams.py +8 -33
  164. compass_api_sdk/models/uniswapbuyexactlyrequest.py +14 -34
  165. compass_api_sdk/models/uniswapincreaseliquidityprovisionrequest.py +6 -1
  166. compass_api_sdk/models/uniswapmintliquidityprovisionparams.py +8 -25
  167. compass_api_sdk/models/uniswapmintliquidityprovisionrequest.py +14 -26
  168. compass_api_sdk/models/uniswappoolpriceresponse.py +8 -25
  169. compass_api_sdk/models/uniswapsellexactlyparams.py +4 -29
  170. compass_api_sdk/models/uniswapsellexactlyrequest.py +10 -30
  171. compass_api_sdk/models/uniswapwithdrawliquidityprovisionrequest.py +6 -1
  172. compass_api_sdk/models/unsignedmulticalltransaction.py +34 -3
  173. compass_api_sdk/models/unsignedtransaction.py +34 -3
  174. compass_api_sdk/models/unwrapwethrequest.py +6 -1
  175. compass_api_sdk/models/useroperation.py +33 -24
  176. compass_api_sdk/models/v1_aave_aave_supported_tokensop.py +1 -1
  177. compass_api_sdk/models/v1_aave_avg_rateop.py +15 -93
  178. compass_api_sdk/models/v1_aave_historical_transactionsop.py +15 -15
  179. compass_api_sdk/models/v1_aave_liquidity_changeop.py +8 -86
  180. compass_api_sdk/models/v1_aave_rateop.py +8 -86
  181. compass_api_sdk/models/v1_aave_reserve_overviewop.py +8 -86
  182. compass_api_sdk/models/v1_aave_std_rateop.py +15 -93
  183. compass_api_sdk/models/v1_aave_token_priceop.py +8 -86
  184. compass_api_sdk/models/v1_aave_user_position_per_tokenop.py +14 -92
  185. compass_api_sdk/models/v1_aave_user_position_summaryop.py +8 -8
  186. compass_api_sdk/models/v1_aerodrome_slipstream_liquidity_provision_positionsop.py +48 -3
  187. compass_api_sdk/models/v1_aerodrome_slipstream_pool_priceop.py +12 -168
  188. compass_api_sdk/models/v1_ethena_vaultop.py +1 -1
  189. compass_api_sdk/models/v1_generic_allowanceop.py +12 -26
  190. compass_api_sdk/models/v1_generic_ensop.py +2 -2
  191. compass_api_sdk/models/v1_generic_portfolioop.py +2 -2
  192. compass_api_sdk/models/v1_morpho_market_positionop.py +3 -3
  193. compass_api_sdk/models/v1_morpho_marketop.py +2 -2
  194. compass_api_sdk/models/v1_morpho_marketsop.py +10 -30
  195. compass_api_sdk/models/v1_morpho_user_positionop.py +2 -2
  196. compass_api_sdk/models/v1_morpho_vaultop.py +8 -8
  197. compass_api_sdk/models/v1_morpho_vaultsop.py +6 -16
  198. compass_api_sdk/models/v1_pendle_marketop.py +8 -8
  199. compass_api_sdk/models/v1_pendle_marketsop.py +1 -1
  200. compass_api_sdk/models/v1_pendle_positionsop.py +2 -2
  201. compass_api_sdk/models/v1_sky_positionop.py +5 -6
  202. compass_api_sdk/models/v1_token_balanceop.py +12 -25
  203. compass_api_sdk/models/{v1_generic_supported_tokensop.py → v1_token_listop.py} +6 -6
  204. compass_api_sdk/models/v1_token_priceop.py +8 -9
  205. compass_api_sdk/models/v1_transaction_bundler_aave_loopop.py +6 -6
  206. compass_api_sdk/models/v1_uniswap_liquidity_provision_in_rangeop.py +2 -2
  207. compass_api_sdk/models/v1_uniswap_liquidity_provision_positionsop.py +2 -2
  208. compass_api_sdk/models/v1_uniswap_pool_priceop.py +12 -168
  209. compass_api_sdk/models/v1_uniswap_quote_buy_exactlyop.py +20 -176
  210. compass_api_sdk/models/v1_uniswap_quote_sell_exactlyop.py +20 -176
  211. compass_api_sdk/models/v1_vaults_vaultop.py +8 -8
  212. compass_api_sdk/models/v1_wildcat_marketop.py +82 -0
  213. compass_api_sdk/models/v2_cctp_mintop.py +47 -0
  214. compass_api_sdk/models/v2_earn_aave_marketsop.py +57 -0
  215. compass_api_sdk/models/v2_earn_pendle_marketsop.py +105 -0
  216. compass_api_sdk/models/v2_earn_positionsop.py +31 -0
  217. compass_api_sdk/models/v2_earn_vaultsop.py +105 -0
  218. compass_api_sdk/models/v2bundlerequest.py +33 -0
  219. compass_api_sdk/models/v2bundleresponse.py +67 -0
  220. compass_api_sdk/models/v2useroperation.py +37 -0
  221. compass_api_sdk/models/vault.py +14 -14
  222. compass_api_sdk/models/vaultdepositrequest.py +6 -1
  223. compass_api_sdk/models/vaultgetvaultresponse.py +5 -5
  224. compass_api_sdk/models/vaultinfo.py +129 -0
  225. compass_api_sdk/models/vaultsresponse.py +30 -0
  226. compass_api_sdk/models/vaultvenue.py +27 -0
  227. compass_api_sdk/models/vaultwithdrawrequest.py +6 -1
  228. compass_api_sdk/models/wildcatgetmarketresponse.py +151 -0
  229. compass_api_sdk/models/{redeemunderlying.py → withdraw.py} +2 -2
  230. compass_api_sdk/models/withdrawalevent.py +61 -0
  231. compass_api_sdk/models/wrapethrequest.py +6 -1
  232. compass_api_sdk/morpho.py +126 -78
  233. compass_api_sdk/pendle.py +68 -44
  234. compass_api_sdk/sdk.py +18 -11
  235. compass_api_sdk/sky.py +62 -38
  236. compass_api_sdk/smart_account.py +10 -2
  237. compass_api_sdk/swap.py +22 -22
  238. compass_api_sdk/{token_sdk.py → token.py} +511 -103
  239. compass_api_sdk/transaction_bundler.py +46 -16
  240. compass_api_sdk/types/basemodel.py +41 -3
  241. compass_api_sdk/uniswap_v3.py +152 -114
  242. compass_api_sdk/universal.py +44 -606
  243. compass_api_sdk/utils/__init__.py +0 -3
  244. compass_api_sdk/utils/annotations.py +32 -8
  245. compass_api_sdk/utils/enums.py +60 -0
  246. compass_api_sdk/utils/forms.py +21 -10
  247. compass_api_sdk/utils/queryparams.py +14 -2
  248. compass_api_sdk/utils/requestbodies.py +3 -3
  249. compass_api_sdk/utils/retries.py +69 -5
  250. compass_api_sdk/utils/serializers.py +0 -20
  251. compass_api_sdk/utils/unmarshal_json_response.py +15 -1
  252. compass_api_sdk/wildcat.py +208 -0
  253. compass_api_sdk-2.2.1rc3.dist-info/METADATA +624 -0
  254. compass_api_sdk-2.2.1rc3.dist-info/RECORD +356 -0
  255. {compass_api_sdk-1.1.1.dist-info → compass_api_sdk-2.2.1rc3.dist-info}/WHEEL +1 -1
  256. compass_api_sdk/models/aerodromeposition.py +0 -70
  257. compass_api_sdk/models/token_enum.py +0 -81
  258. compass_api_sdk/models/tokenaddressresponse.py +0 -15
  259. compass_api_sdk/models/tokeninfo.py +0 -17
  260. compass_api_sdk/models/v1_token_addressop.py +0 -109
  261. compass_api_sdk/models/vaultposition.py +0 -24
  262. compass_api_sdk-1.1.1.dist-info/METADATA +0 -592
  263. compass_api_sdk-1.1.1.dist-info/RECORD +0 -275
@@ -0,0 +1,458 @@
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 GasSponsorship(BaseSDK):
12
+ def gas_sponsorship_prepare(
13
+ self,
14
+ *,
15
+ owner: str,
16
+ chain: models.Chain,
17
+ eip_712: Union[
18
+ models.SponsorGasRequestEip712, models.SponsorGasRequestEip712TypedDict
19
+ ],
20
+ signature: str,
21
+ sender: str,
22
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
23
+ server_url: Optional[str] = None,
24
+ timeout_ms: Optional[int] = None,
25
+ http_headers: Optional[Mapping[str, str]] = None,
26
+ ) -> models.SponsorGasResponse:
27
+ r"""Prepare gas-sponsored transaction
28
+
29
+ Prepare a gas-sponsored transaction from signed EIP-712 typed data.
30
+
31
+ Submit the `owner`'s off-chain signature along with the EIP-712 typed data that was signed. Returns an unsigned transaction for the `sender` to sign and broadcast.
32
+
33
+ **How gas sponsorship works:**
34
+ 1. Call an endpoint with `gas_sponsorship=true` (e.g., [/earn/transfer](https://docs.compasslabs.ai/v2/api-reference/earn/transfer-tokens-tofrom-account), [/earn/manage](https://docs.compasslabs.ai/v2/api-reference/earn/manage-earn-position)) to get EIP-712 typed data
35
+ 2. Owner signs the typed data off-chain
36
+ 3. Submit signature + typed data to this endpoint
37
+ 4. Sender signs and broadcasts the returned transaction, paying gas on behalf of the owner
38
+
39
+ **Note:** For gas-sponsored deposits via [/earn/transfer](https://docs.compasslabs.ai/v2/api-reference/earn/transfer-tokens-tofrom-account), the owner must first set up a Permit2 allowance using [/approve_transfer](https://docs.compasslabs.ai/v2/api-reference/gas-sponsorship/approve-token-transfer) (once per token).
40
+
41
+ :param owner: The wallet address that owns the Earn Account.
42
+ :param chain: The chain to use.
43
+ :param eip_712: The EIP-712 typed data that was signed.
44
+ :param signature: The EIP-712 signed typed data signature.
45
+ :param sender: The address of the wallet which will send the transaction.
46
+ :param retries: Override the default retry configuration for this method
47
+ :param server_url: Override the default server URL for this method
48
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
49
+ :param http_headers: Additional headers to set or replace on requests.
50
+ """
51
+ base_url = None
52
+ url_variables = None
53
+ if timeout_ms is None:
54
+ timeout_ms = self.sdk_configuration.timeout_ms
55
+
56
+ if server_url is not None:
57
+ base_url = server_url
58
+ else:
59
+ base_url = self._get_url(base_url, url_variables)
60
+
61
+ request = models.SponsorGasRequest(
62
+ owner=owner,
63
+ chain=chain,
64
+ eip_712=utils.get_pydantic_model(eip_712, models.SponsorGasRequestEip712),
65
+ signature=signature,
66
+ sender=sender,
67
+ )
68
+
69
+ req = self._build_request(
70
+ method="POST",
71
+ path="/v2/gas_sponsorship/prepare",
72
+ base_url=base_url,
73
+ url_variables=url_variables,
74
+ request=request,
75
+ request_body_required=True,
76
+ request_has_path_params=False,
77
+ request_has_query_params=True,
78
+ user_agent_header="user-agent",
79
+ accept_header_value="application/json",
80
+ http_headers=http_headers,
81
+ security=self.sdk_configuration.security,
82
+ get_serialized_body=lambda: utils.serialize_request_body(
83
+ request, False, False, "json", models.SponsorGasRequest
84
+ ),
85
+ allow_empty_value=None,
86
+ timeout_ms=timeout_ms,
87
+ )
88
+
89
+ if retries == UNSET:
90
+ if self.sdk_configuration.retry_config is not UNSET:
91
+ retries = self.sdk_configuration.retry_config
92
+
93
+ retry_config = None
94
+ if isinstance(retries, utils.RetryConfig):
95
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
96
+
97
+ http_res = self.do_request(
98
+ hook_ctx=HookContext(
99
+ config=self.sdk_configuration,
100
+ base_url=base_url or "",
101
+ operation_id="v2_gas_sponsorship_prepare",
102
+ oauth2_scopes=None,
103
+ security_source=self.sdk_configuration.security,
104
+ ),
105
+ request=req,
106
+ error_status_codes=["422", "4XX", "5XX"],
107
+ retry_config=retry_config,
108
+ )
109
+
110
+ response_data: Any = None
111
+ if utils.match_response(http_res, "200", "application/json"):
112
+ return unmarshal_json_response(models.SponsorGasResponse, http_res)
113
+ if utils.match_response(http_res, "422", "application/json"):
114
+ response_data = unmarshal_json_response(
115
+ errors.HTTPValidationErrorData, http_res
116
+ )
117
+ raise errors.HTTPValidationError(response_data, http_res)
118
+ if utils.match_response(http_res, "4XX", "*"):
119
+ http_res_text = utils.stream_to_text(http_res)
120
+ raise errors.APIError("API error occurred", http_res, http_res_text)
121
+ if utils.match_response(http_res, "5XX", "*"):
122
+ http_res_text = utils.stream_to_text(http_res)
123
+ raise errors.APIError("API error occurred", http_res, http_res_text)
124
+
125
+ raise errors.APIError("Unexpected response received", http_res)
126
+
127
+ async def gas_sponsorship_prepare_async(
128
+ self,
129
+ *,
130
+ owner: str,
131
+ chain: models.Chain,
132
+ eip_712: Union[
133
+ models.SponsorGasRequestEip712, models.SponsorGasRequestEip712TypedDict
134
+ ],
135
+ signature: str,
136
+ sender: str,
137
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
138
+ server_url: Optional[str] = None,
139
+ timeout_ms: Optional[int] = None,
140
+ http_headers: Optional[Mapping[str, str]] = None,
141
+ ) -> models.SponsorGasResponse:
142
+ r"""Prepare gas-sponsored transaction
143
+
144
+ Prepare a gas-sponsored transaction from signed EIP-712 typed data.
145
+
146
+ Submit the `owner`'s off-chain signature along with the EIP-712 typed data that was signed. Returns an unsigned transaction for the `sender` to sign and broadcast.
147
+
148
+ **How gas sponsorship works:**
149
+ 1. Call an endpoint with `gas_sponsorship=true` (e.g., [/earn/transfer](https://docs.compasslabs.ai/v2/api-reference/earn/transfer-tokens-tofrom-account), [/earn/manage](https://docs.compasslabs.ai/v2/api-reference/earn/manage-earn-position)) to get EIP-712 typed data
150
+ 2. Owner signs the typed data off-chain
151
+ 3. Submit signature + typed data to this endpoint
152
+ 4. Sender signs and broadcasts the returned transaction, paying gas on behalf of the owner
153
+
154
+ **Note:** For gas-sponsored deposits via [/earn/transfer](https://docs.compasslabs.ai/v2/api-reference/earn/transfer-tokens-tofrom-account), the owner must first set up a Permit2 allowance using [/approve_transfer](https://docs.compasslabs.ai/v2/api-reference/gas-sponsorship/approve-token-transfer) (once per token).
155
+
156
+ :param owner: The wallet address that owns the Earn Account.
157
+ :param chain: The chain to use.
158
+ :param eip_712: The EIP-712 typed data that was signed.
159
+ :param signature: The EIP-712 signed typed data signature.
160
+ :param sender: The address of the wallet which will send the transaction.
161
+ :param retries: Override the default retry configuration for this method
162
+ :param server_url: Override the default server URL for this method
163
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
164
+ :param http_headers: Additional headers to set or replace on requests.
165
+ """
166
+ base_url = None
167
+ url_variables = None
168
+ if timeout_ms is None:
169
+ timeout_ms = self.sdk_configuration.timeout_ms
170
+
171
+ if server_url is not None:
172
+ base_url = server_url
173
+ else:
174
+ base_url = self._get_url(base_url, url_variables)
175
+
176
+ request = models.SponsorGasRequest(
177
+ owner=owner,
178
+ chain=chain,
179
+ eip_712=utils.get_pydantic_model(eip_712, models.SponsorGasRequestEip712),
180
+ signature=signature,
181
+ sender=sender,
182
+ )
183
+
184
+ req = self._build_request_async(
185
+ method="POST",
186
+ path="/v2/gas_sponsorship/prepare",
187
+ base_url=base_url,
188
+ url_variables=url_variables,
189
+ request=request,
190
+ request_body_required=True,
191
+ request_has_path_params=False,
192
+ request_has_query_params=True,
193
+ user_agent_header="user-agent",
194
+ accept_header_value="application/json",
195
+ http_headers=http_headers,
196
+ security=self.sdk_configuration.security,
197
+ get_serialized_body=lambda: utils.serialize_request_body(
198
+ request, False, False, "json", models.SponsorGasRequest
199
+ ),
200
+ allow_empty_value=None,
201
+ timeout_ms=timeout_ms,
202
+ )
203
+
204
+ if retries == UNSET:
205
+ if self.sdk_configuration.retry_config is not UNSET:
206
+ retries = self.sdk_configuration.retry_config
207
+
208
+ retry_config = None
209
+ if isinstance(retries, utils.RetryConfig):
210
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
211
+
212
+ http_res = await self.do_request_async(
213
+ hook_ctx=HookContext(
214
+ config=self.sdk_configuration,
215
+ base_url=base_url or "",
216
+ operation_id="v2_gas_sponsorship_prepare",
217
+ oauth2_scopes=None,
218
+ security_source=self.sdk_configuration.security,
219
+ ),
220
+ request=req,
221
+ error_status_codes=["422", "4XX", "5XX"],
222
+ retry_config=retry_config,
223
+ )
224
+
225
+ response_data: Any = None
226
+ if utils.match_response(http_res, "200", "application/json"):
227
+ return unmarshal_json_response(models.SponsorGasResponse, http_res)
228
+ if utils.match_response(http_res, "422", "application/json"):
229
+ response_data = unmarshal_json_response(
230
+ errors.HTTPValidationErrorData, http_res
231
+ )
232
+ raise errors.HTTPValidationError(response_data, http_res)
233
+ if utils.match_response(http_res, "4XX", "*"):
234
+ http_res_text = await utils.stream_to_text_async(http_res)
235
+ raise errors.APIError("API error occurred", http_res, http_res_text)
236
+ if utils.match_response(http_res, "5XX", "*"):
237
+ http_res_text = await utils.stream_to_text_async(http_res)
238
+ raise errors.APIError("API error occurred", http_res, http_res_text)
239
+
240
+ raise errors.APIError("Unexpected response received", http_res)
241
+
242
+ def gas_sponsorship_approve_transfer(
243
+ self,
244
+ *,
245
+ owner: str,
246
+ chain: models.Chain,
247
+ token: str,
248
+ gas_sponsorship: Optional[bool] = None,
249
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
250
+ server_url: Optional[str] = None,
251
+ timeout_ms: Optional[int] = None,
252
+ http_headers: Optional[Mapping[str, str]] = None,
253
+ ) -> models.ApproveTransferResponse:
254
+ r"""Approve token transfer
255
+
256
+ Set up a one-time Permit2 allowance for gas-sponsored token transfers.
257
+
258
+ Only required when using [/earn/transfer](https://docs.compasslabs.ai/v2/api-reference/earn/transfer-tokens-tofrom-account) with `gas_sponsorship=true`. This allowance only needs to be set up once per token.
259
+
260
+ **With gas sponsorship (`gas_sponsorship=true`):**
261
+ - Returns EIP-712 typed data for the owner to sign off-chain
262
+ - Submit signature + typed data to [/prepare](https://docs.compasslabs.ai/v2/api-reference/gas-sponsorship/prepare-gas-sponsored-transaction)
263
+ - Only works for tokens that support EIP-2612 permit (e.g., USDC)
264
+
265
+ Some tokens, like USDT and WETH, do not support EIP-2612 permit. For these tokens, set `gas_sponsorship=false` to receive an unsigned transaction that the owner must sign, submit, and pay gas for.
266
+
267
+ :param owner: The wallet address that owns the Earn Account.
268
+ :param chain: The chain to use.
269
+ :param token: The token you would like to transfer with gas sponsorship.
270
+ :param gas_sponsorship: Optionally request gas sponsorship. If set to `true`, EIP-712 signature data will be returned that must be signed by the `owner` and submitted to the `/gas_sponsorship/prepare` endpoint.
271
+ :param retries: Override the default retry configuration for this method
272
+ :param server_url: Override the default server URL for this method
273
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
274
+ :param http_headers: Additional headers to set or replace on requests.
275
+ """
276
+ base_url = None
277
+ url_variables = None
278
+ if timeout_ms is None:
279
+ timeout_ms = self.sdk_configuration.timeout_ms
280
+
281
+ if server_url is not None:
282
+ base_url = server_url
283
+ else:
284
+ base_url = self._get_url(base_url, url_variables)
285
+
286
+ request = models.ApproveTransferRequest(
287
+ owner=owner,
288
+ chain=chain,
289
+ token=token,
290
+ gas_sponsorship=gas_sponsorship,
291
+ )
292
+
293
+ req = self._build_request(
294
+ method="POST",
295
+ path="/v2/gas_sponsorship/approve_transfer",
296
+ base_url=base_url,
297
+ url_variables=url_variables,
298
+ request=request,
299
+ request_body_required=True,
300
+ request_has_path_params=False,
301
+ request_has_query_params=True,
302
+ user_agent_header="user-agent",
303
+ accept_header_value="application/json",
304
+ http_headers=http_headers,
305
+ security=self.sdk_configuration.security,
306
+ get_serialized_body=lambda: utils.serialize_request_body(
307
+ request, False, False, "json", models.ApproveTransferRequest
308
+ ),
309
+ allow_empty_value=None,
310
+ timeout_ms=timeout_ms,
311
+ )
312
+
313
+ if retries == UNSET:
314
+ if self.sdk_configuration.retry_config is not UNSET:
315
+ retries = self.sdk_configuration.retry_config
316
+
317
+ retry_config = None
318
+ if isinstance(retries, utils.RetryConfig):
319
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
320
+
321
+ http_res = self.do_request(
322
+ hook_ctx=HookContext(
323
+ config=self.sdk_configuration,
324
+ base_url=base_url or "",
325
+ operation_id="v2_gas_sponsorship_approve_transfer",
326
+ oauth2_scopes=None,
327
+ security_source=self.sdk_configuration.security,
328
+ ),
329
+ request=req,
330
+ error_status_codes=["422", "4XX", "5XX"],
331
+ retry_config=retry_config,
332
+ )
333
+
334
+ response_data: Any = None
335
+ if utils.match_response(http_res, "200", "application/json"):
336
+ return unmarshal_json_response(models.ApproveTransferResponse, http_res)
337
+ if utils.match_response(http_res, "422", "application/json"):
338
+ response_data = unmarshal_json_response(
339
+ errors.HTTPValidationErrorData, http_res
340
+ )
341
+ raise errors.HTTPValidationError(response_data, http_res)
342
+ if utils.match_response(http_res, "4XX", "*"):
343
+ http_res_text = utils.stream_to_text(http_res)
344
+ raise errors.APIError("API error occurred", http_res, http_res_text)
345
+ if utils.match_response(http_res, "5XX", "*"):
346
+ http_res_text = utils.stream_to_text(http_res)
347
+ raise errors.APIError("API error occurred", http_res, http_res_text)
348
+
349
+ raise errors.APIError("Unexpected response received", http_res)
350
+
351
+ async def gas_sponsorship_approve_transfer_async(
352
+ self,
353
+ *,
354
+ owner: str,
355
+ chain: models.Chain,
356
+ token: str,
357
+ gas_sponsorship: Optional[bool] = None,
358
+ retries: OptionalNullable[utils.RetryConfig] = UNSET,
359
+ server_url: Optional[str] = None,
360
+ timeout_ms: Optional[int] = None,
361
+ http_headers: Optional[Mapping[str, str]] = None,
362
+ ) -> models.ApproveTransferResponse:
363
+ r"""Approve token transfer
364
+
365
+ Set up a one-time Permit2 allowance for gas-sponsored token transfers.
366
+
367
+ Only required when using [/earn/transfer](https://docs.compasslabs.ai/v2/api-reference/earn/transfer-tokens-tofrom-account) with `gas_sponsorship=true`. This allowance only needs to be set up once per token.
368
+
369
+ **With gas sponsorship (`gas_sponsorship=true`):**
370
+ - Returns EIP-712 typed data for the owner to sign off-chain
371
+ - Submit signature + typed data to [/prepare](https://docs.compasslabs.ai/v2/api-reference/gas-sponsorship/prepare-gas-sponsored-transaction)
372
+ - Only works for tokens that support EIP-2612 permit (e.g., USDC)
373
+
374
+ Some tokens, like USDT and WETH, do not support EIP-2612 permit. For these tokens, set `gas_sponsorship=false` to receive an unsigned transaction that the owner must sign, submit, and pay gas for.
375
+
376
+ :param owner: The wallet address that owns the Earn Account.
377
+ :param chain: The chain to use.
378
+ :param token: The token you would like to transfer with gas sponsorship.
379
+ :param gas_sponsorship: Optionally request gas sponsorship. If set to `true`, EIP-712 signature data will be returned that must be signed by the `owner` and submitted to the `/gas_sponsorship/prepare` endpoint.
380
+ :param retries: Override the default retry configuration for this method
381
+ :param server_url: Override the default server URL for this method
382
+ :param timeout_ms: Override the default request timeout configuration for this method in milliseconds
383
+ :param http_headers: Additional headers to set or replace on requests.
384
+ """
385
+ base_url = None
386
+ url_variables = None
387
+ if timeout_ms is None:
388
+ timeout_ms = self.sdk_configuration.timeout_ms
389
+
390
+ if server_url is not None:
391
+ base_url = server_url
392
+ else:
393
+ base_url = self._get_url(base_url, url_variables)
394
+
395
+ request = models.ApproveTransferRequest(
396
+ owner=owner,
397
+ chain=chain,
398
+ token=token,
399
+ gas_sponsorship=gas_sponsorship,
400
+ )
401
+
402
+ req = self._build_request_async(
403
+ method="POST",
404
+ path="/v2/gas_sponsorship/approve_transfer",
405
+ base_url=base_url,
406
+ url_variables=url_variables,
407
+ request=request,
408
+ request_body_required=True,
409
+ request_has_path_params=False,
410
+ request_has_query_params=True,
411
+ user_agent_header="user-agent",
412
+ accept_header_value="application/json",
413
+ http_headers=http_headers,
414
+ security=self.sdk_configuration.security,
415
+ get_serialized_body=lambda: utils.serialize_request_body(
416
+ request, False, False, "json", models.ApproveTransferRequest
417
+ ),
418
+ allow_empty_value=None,
419
+ timeout_ms=timeout_ms,
420
+ )
421
+
422
+ if retries == UNSET:
423
+ if self.sdk_configuration.retry_config is not UNSET:
424
+ retries = self.sdk_configuration.retry_config
425
+
426
+ retry_config = None
427
+ if isinstance(retries, utils.RetryConfig):
428
+ retry_config = (retries, ["429", "500", "502", "503", "504"])
429
+
430
+ http_res = await self.do_request_async(
431
+ hook_ctx=HookContext(
432
+ config=self.sdk_configuration,
433
+ base_url=base_url or "",
434
+ operation_id="v2_gas_sponsorship_approve_transfer",
435
+ oauth2_scopes=None,
436
+ security_source=self.sdk_configuration.security,
437
+ ),
438
+ request=req,
439
+ error_status_codes=["422", "4XX", "5XX"],
440
+ retry_config=retry_config,
441
+ )
442
+
443
+ response_data: Any = None
444
+ if utils.match_response(http_res, "200", "application/json"):
445
+ return unmarshal_json_response(models.ApproveTransferResponse, http_res)
446
+ if utils.match_response(http_res, "422", "application/json"):
447
+ response_data = unmarshal_json_response(
448
+ errors.HTTPValidationErrorData, http_res
449
+ )
450
+ raise errors.HTTPValidationError(response_data, http_res)
451
+ if utils.match_response(http_res, "4XX", "*"):
452
+ http_res_text = await utils.stream_to_text_async(http_res)
453
+ raise errors.APIError("API error occurred", http_res, http_res_text)
454
+ if utils.match_response(http_res, "5XX", "*"):
455
+ http_res_text = await utils.stream_to_text_async(http_res)
456
+ raise errors.APIError("API error occurred", http_res, http_res_text)
457
+
458
+ raise errors.APIError("Unexpected response received", http_res)
@@ -107,7 +107,6 @@ def close_clients(
107
107
  # to them from the owning SDK instance and they can be reaped.
108
108
  owner.client = None
109
109
  owner.async_client = None
110
-
111
110
  if sync_client is not None and not sync_client_supplied:
112
111
  try:
113
112
  sync_client.close()