@gearbox-protocol/sdk 14.12.0-next.1 → 14.12.0-next.10

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 (322) hide show
  1. package/dist/cjs/abi/iZapper.js +62 -24
  2. package/dist/cjs/dev/AccountOpener.js +7 -13
  3. package/dist/cjs/history/classifyMulticallOperations.js +2 -0
  4. package/dist/cjs/history/mapOperations.js +7 -0
  5. package/dist/cjs/plugins/adapters/abi/iConvexV1BoosterAdapter.js +143 -0
  6. package/dist/cjs/plugins/adapters/abi/index.js +2 -0
  7. package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +36 -0
  8. package/dist/cjs/plugins/adapters/contracts/AbstractCurveAdapter.js +66 -0
  9. package/dist/cjs/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +19 -0
  10. package/dist/cjs/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +15 -0
  11. package/dist/cjs/plugins/adapters/contracts/CamelotV3AdapterContract.js +20 -0
  12. package/dist/cjs/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +18 -0
  13. package/dist/cjs/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +28 -2
  14. package/dist/cjs/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -7
  15. package/dist/cjs/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -7
  16. package/dist/cjs/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -7
  17. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
  18. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -7
  19. package/dist/cjs/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -7
  20. package/dist/cjs/plugins/adapters/contracts/DaiUsdsAdapterContract.js +14 -0
  21. package/dist/cjs/plugins/adapters/contracts/ERC4626AdapterContract.js +15 -0
  22. package/dist/cjs/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +14 -0
  23. package/dist/cjs/plugins/adapters/contracts/FluidDexAdapterContract.js +15 -0
  24. package/dist/cjs/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +21 -0
  25. package/dist/cjs/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +10 -0
  26. package/dist/cjs/plugins/adapters/contracts/LidoV1AdapterContract.js +11 -0
  27. package/dist/cjs/plugins/adapters/contracts/MellowDVVAdapterContract.js +15 -0
  28. package/dist/cjs/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +15 -0
  29. package/dist/cjs/plugins/adapters/contracts/MellowWrapperAdapterContract.js +11 -0
  30. package/dist/cjs/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +10 -0
  31. package/dist/cjs/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +12 -0
  32. package/dist/cjs/plugins/adapters/contracts/PendleRouterAdapterContract.js +58 -0
  33. package/dist/cjs/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +11 -0
  34. package/dist/cjs/plugins/adapters/contracts/SecuritizeSwapAdapterContract.js +22 -1
  35. package/dist/cjs/plugins/adapters/contracts/StakingRewardsAdapterContract.js +17 -0
  36. package/dist/cjs/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +10 -0
  37. package/dist/cjs/plugins/adapters/contracts/UniswapV2AdapterContract.js +10 -0
  38. package/dist/cjs/plugins/adapters/contracts/UniswapV3AdapterContract.js +20 -0
  39. package/dist/cjs/plugins/adapters/contracts/UniswapV4AdapterContract.js +15 -0
  40. package/dist/cjs/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +14 -0
  41. package/dist/cjs/plugins/adapters/contracts/VelodromeV2AdapterContract.js +10 -0
  42. package/dist/cjs/plugins/adapters/contracts/WstETHV1AdapterContract.js +15 -0
  43. package/dist/cjs/preview/index.js +2 -4
  44. package/dist/cjs/preview/parse/classifyInnerOperations.js +14 -1
  45. package/dist/cjs/preview/parse/errors.js +5 -2
  46. package/dist/cjs/preview/parse/index.js +2 -2
  47. package/dist/cjs/preview/parse/parseFacadeOperationCalldata.js +5 -12
  48. package/dist/cjs/preview/parse/parseOperationCalldata.js +40 -1
  49. package/dist/cjs/preview/parse/parsePoolOperationCalldata.js +14 -2
  50. package/dist/cjs/preview/parse/parseRWAFactoryOperationCalldata.js +104 -0
  51. package/dist/cjs/preview/parse/types-rwa.js +16 -0
  52. package/dist/cjs/preview/parse/types.js +9 -2
  53. package/dist/cjs/preview/prerequisites/AllowancePrerequisite.js +13 -13
  54. package/dist/cjs/preview/prerequisites/BalancePrerequisite.js +32 -14
  55. package/dist/cjs/preview/prerequisites/RWAOpenRequirementsPrerequisite.js +66 -0
  56. package/dist/cjs/preview/prerequisites/buildPrerequisites.js +124 -14
  57. package/dist/cjs/preview/prerequisites/index.js +2 -0
  58. package/dist/cjs/preview/preview/applyInnerOperations.js +132 -0
  59. package/dist/cjs/preview/preview/errors.js +52 -0
  60. package/dist/cjs/preview/preview/index.js +30 -0
  61. package/dist/cjs/preview/preview/previewAdjustCreditAccount.js +95 -0
  62. package/dist/cjs/preview/preview/previewOpenCreditAccount.js +69 -0
  63. package/dist/cjs/preview/preview/previewOperation.js +45 -0
  64. package/dist/cjs/preview/preview/previewPoolOperation.js +75 -0
  65. package/dist/cjs/preview/preview/types.js +16 -0
  66. package/dist/cjs/{sdk/market/zapper/Zapper.js → preview/preview/unwrapNativeCollateral.js} +20 -22
  67. package/dist/cjs/preview/simulate/errors.js +0 -7
  68. package/dist/cjs/preview/simulate/index.js +5 -5
  69. package/dist/cjs/preview/simulate/simulateOperation.js +4 -0
  70. package/dist/cjs/preview/simulate/simulatePoolOperation.js +60 -31
  71. package/dist/cjs/preview/simulate/{constants.js → simulateRWAOperation.js} +8 -6
  72. package/dist/cjs/sdk/MultichainSDK.js +1 -0
  73. package/dist/cjs/sdk/OnchainSDK.js +7 -3
  74. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +3 -4
  75. package/dist/cjs/sdk/base/BaseContract.js +4 -2
  76. package/dist/cjs/sdk/base/ChainContractsRegister.js +1 -0
  77. package/dist/cjs/sdk/market/MarketRegister.js +10 -5
  78. package/dist/cjs/sdk/market/ZapperRegister.js +54 -0
  79. package/dist/cjs/sdk/market/rwa/securitize/SecuritizeRWAFactory.js +30 -0
  80. package/dist/cjs/sdk/market/rwa/types.js +5 -2
  81. package/dist/cjs/sdk/market/zapper/IERC20ZapperContract.js +3 -38
  82. package/dist/cjs/sdk/market/zapper/IETHZapperContract.js +3 -38
  83. package/dist/cjs/sdk/market/zapper/ZapperContract.js +106 -0
  84. package/dist/cjs/sdk/market/zapper/createZapper.js +12 -4
  85. package/dist/cjs/{preview/simulate/holders.js → sdk/market/zapper/errors.js} +13 -21
  86. package/dist/cjs/sdk/market/zapper/index.js +6 -2
  87. package/dist/cjs/sdk/market/zapper/types.js +16 -0
  88. package/dist/cjs/sdk/options.js +41 -17
  89. package/dist/cjs/sdk/router/AbstractRouterContract.js +21 -27
  90. package/dist/cjs/sdk/router/RouterV310Contract.js +11 -12
  91. package/dist/cjs/sdk/router/helpers.js +0 -5
  92. package/dist/cjs/sdk/utils/AddressMap.js +6 -0
  93. package/dist/cjs/sdk/utils/AssetsMap.js +62 -0
  94. package/dist/cjs/sdk/utils/index.js +2 -0
  95. package/dist/esm/abi/iZapper.js +62 -24
  96. package/dist/esm/dev/AccountOpener.js +8 -13
  97. package/dist/esm/history/classifyMulticallOperations.js +2 -0
  98. package/dist/esm/history/mapOperations.js +7 -0
  99. package/dist/esm/plugins/adapters/abi/iConvexV1BoosterAdapter.js +119 -0
  100. package/dist/esm/plugins/adapters/abi/index.js +1 -0
  101. package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +36 -0
  102. package/dist/esm/plugins/adapters/contracts/AbstractCurveAdapter.js +42 -0
  103. package/dist/esm/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +22 -1
  104. package/dist/esm/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +18 -1
  105. package/dist/esm/plugins/adapters/contracts/CamelotV3AdapterContract.js +23 -1
  106. package/dist/esm/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +22 -1
  107. package/dist/esm/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +30 -2
  108. package/dist/esm/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -7
  109. package/dist/esm/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -7
  110. package/dist/esm/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -7
  111. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
  112. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -7
  113. package/dist/esm/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -7
  114. package/dist/esm/plugins/adapters/contracts/DaiUsdsAdapterContract.js +17 -1
  115. package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +19 -1
  116. package/dist/esm/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +17 -1
  117. package/dist/esm/plugins/adapters/contracts/FluidDexAdapterContract.js +18 -1
  118. package/dist/esm/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +24 -1
  119. package/dist/esm/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +13 -1
  120. package/dist/esm/plugins/adapters/contracts/LidoV1AdapterContract.js +14 -1
  121. package/dist/esm/plugins/adapters/contracts/MellowDVVAdapterContract.js +18 -1
  122. package/dist/esm/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +18 -1
  123. package/dist/esm/plugins/adapters/contracts/MellowWrapperAdapterContract.js +14 -1
  124. package/dist/esm/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +13 -1
  125. package/dist/esm/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +15 -1
  126. package/dist/esm/plugins/adapters/contracts/PendleRouterAdapterContract.js +61 -1
  127. package/dist/esm/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +14 -1
  128. package/dist/esm/plugins/adapters/contracts/SecuritizeSwapAdapterContract.js +25 -2
  129. package/dist/esm/plugins/adapters/contracts/StakingRewardsAdapterContract.js +20 -1
  130. package/dist/esm/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +13 -1
  131. package/dist/esm/plugins/adapters/contracts/UniswapV2AdapterContract.js +10 -0
  132. package/dist/esm/plugins/adapters/contracts/UniswapV3AdapterContract.js +20 -0
  133. package/dist/esm/plugins/adapters/contracts/UniswapV4AdapterContract.js +18 -1
  134. package/dist/esm/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +17 -1
  135. package/dist/esm/plugins/adapters/contracts/VelodromeV2AdapterContract.js +13 -1
  136. package/dist/esm/plugins/adapters/contracts/WstETHV1AdapterContract.js +18 -1
  137. package/dist/esm/preview/index.js +1 -2
  138. package/dist/esm/preview/parse/classifyInnerOperations.js +14 -1
  139. package/dist/esm/preview/parse/errors.js +3 -1
  140. package/dist/esm/preview/parse/index.js +1 -1
  141. package/dist/esm/preview/parse/parseFacadeOperationCalldata.js +5 -12
  142. package/dist/esm/preview/parse/parseOperationCalldata.js +43 -2
  143. package/dist/esm/preview/parse/parsePoolOperationCalldata.js +14 -2
  144. package/dist/esm/preview/parse/parseRWAFactoryOperationCalldata.js +85 -0
  145. package/dist/esm/preview/parse/types-rwa.js +0 -0
  146. package/dist/esm/preview/parse/types.js +6 -1
  147. package/dist/esm/preview/prerequisites/AllowancePrerequisite.js +13 -13
  148. package/dist/esm/preview/prerequisites/BalancePrerequisite.js +32 -14
  149. package/dist/esm/preview/prerequisites/RWAOpenRequirementsPrerequisite.js +42 -0
  150. package/dist/esm/preview/prerequisites/buildPrerequisites.js +130 -14
  151. package/dist/esm/preview/prerequisites/index.js +1 -0
  152. package/dist/esm/preview/preview/applyInnerOperations.js +110 -0
  153. package/dist/esm/preview/preview/errors.js +27 -0
  154. package/dist/esm/preview/preview/index.js +5 -0
  155. package/dist/esm/preview/preview/previewAdjustCreditAccount.js +79 -0
  156. package/dist/esm/preview/preview/previewOpenCreditAccount.js +51 -0
  157. package/dist/esm/preview/preview/previewOperation.js +21 -0
  158. package/dist/esm/preview/preview/previewPoolOperation.js +53 -0
  159. package/dist/esm/preview/preview/types.js +0 -0
  160. package/dist/esm/preview/preview/unwrapNativeCollateral.js +21 -0
  161. package/dist/esm/preview/simulate/errors.js +0 -6
  162. package/dist/esm/preview/simulate/index.js +3 -3
  163. package/dist/esm/preview/simulate/simulateOperation.js +8 -1
  164. package/dist/esm/preview/simulate/simulatePoolOperation.js +61 -35
  165. package/dist/esm/preview/simulate/simulateRWAOperation.js +6 -0
  166. package/dist/esm/sdk/MultichainSDK.js +1 -0
  167. package/dist/esm/sdk/OnchainSDK.js +7 -3
  168. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +4 -5
  169. package/dist/esm/sdk/base/BaseContract.js +4 -2
  170. package/dist/esm/sdk/base/ChainContractsRegister.js +1 -0
  171. package/dist/esm/sdk/market/MarketRegister.js +10 -5
  172. package/dist/esm/sdk/market/ZapperRegister.js +54 -0
  173. package/dist/esm/sdk/market/rwa/securitize/SecuritizeRWAFactory.js +33 -1
  174. package/dist/esm/sdk/market/rwa/types.js +5 -2
  175. package/dist/esm/sdk/market/zapper/IERC20ZapperContract.js +3 -38
  176. package/dist/esm/sdk/market/zapper/IETHZapperContract.js +3 -38
  177. package/dist/esm/sdk/market/zapper/ZapperContract.js +82 -0
  178. package/dist/esm/sdk/market/zapper/createZapper.js +12 -4
  179. package/dist/esm/sdk/market/zapper/errors.js +13 -0
  180. package/dist/esm/sdk/market/zapper/index.js +3 -1
  181. package/dist/esm/sdk/market/zapper/types.js +0 -0
  182. package/dist/esm/sdk/options.js +39 -15
  183. package/dist/esm/sdk/router/AbstractRouterContract.js +25 -29
  184. package/dist/esm/sdk/router/RouterV310Contract.js +11 -12
  185. package/dist/esm/sdk/router/helpers.js +0 -4
  186. package/dist/esm/sdk/utils/AddressMap.js +6 -0
  187. package/dist/esm/sdk/utils/AssetsMap.js +38 -0
  188. package/dist/esm/sdk/utils/index.js +1 -0
  189. package/dist/types/abi/iERC20Zapper.d.ts +91 -23
  190. package/dist/types/abi/iETHZapper.d.ts +91 -23
  191. package/dist/types/abi/iZapper.d.ts +91 -23
  192. package/dist/types/common-utils/utils/strategies/assets/assets.d.ts +1 -1
  193. package/dist/types/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.d.ts +1 -1
  194. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-apy.d.ts +1 -1
  195. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-points.d.ts +1 -1
  196. package/dist/types/common-utils/utils/strategies/tokens/add-amount-in-target.d.ts +1 -1
  197. package/dist/types/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.d.ts +1 -1
  198. package/dist/types/common-utils/utils/strategies/types/strategy-earnings.d.ts +1 -1
  199. package/dist/types/common-utils/utils/validation/validate-balances.d.ts +1 -1
  200. package/dist/types/common-utils/utils/validation/validate-open-account.d.ts +1 -1
  201. package/dist/types/common-utils/utils/validation/validate-quota.d.ts +1 -1
  202. package/dist/types/common-utils/utils/validation/validate-token-to-obtain.d.ts +1 -1
  203. package/dist/types/history/types.d.ts +4 -4
  204. package/dist/types/plugins/adapters/abi/iConvexV1BoosterAdapter.d.ts +204 -0
  205. package/dist/types/plugins/adapters/abi/index.d.ts +1 -0
  206. package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +21 -3
  207. package/dist/types/plugins/adapters/contracts/AbstractCurveAdapter.d.ts +18 -0
  208. package/dist/types/plugins/adapters/contracts/BalancerV3RouterAdapterContract.d.ts +4 -2
  209. package/dist/types/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.d.ts +4 -2
  210. package/dist/types/plugins/adapters/contracts/CamelotV3AdapterContract.d.ts +4 -2
  211. package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +4 -2
  212. package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +8 -6
  213. package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +3 -6
  214. package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +3 -6
  215. package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +3 -6
  216. package/dist/types/plugins/adapters/contracts/CurveV1AdapterDeposit.d.ts +2 -2
  217. package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +3 -6
  218. package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +3 -6
  219. package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +4 -2
  220. package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +4 -2
  221. package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +4 -2
  222. package/dist/types/plugins/adapters/contracts/FluidDexAdapterContract.d.ts +4 -2
  223. package/dist/types/plugins/adapters/contracts/InfinifiGatewayAdapterContract.d.ts +4 -2
  224. package/dist/types/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.d.ts +4 -2
  225. package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +4 -2
  226. package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +4 -2
  227. package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +4 -2
  228. package/dist/types/plugins/adapters/contracts/MellowWrapperAdapterContract.d.ts +4 -2
  229. package/dist/types/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.d.ts +4 -2
  230. package/dist/types/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.d.ts +4 -2
  231. package/dist/types/plugins/adapters/contracts/PendleRouterAdapterContract.d.ts +4 -2
  232. package/dist/types/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.d.ts +4 -2
  233. package/dist/types/plugins/adapters/contracts/SecuritizeSwapAdapterContract.d.ts +15 -3
  234. package/dist/types/plugins/adapters/contracts/StakingRewardsAdapterContract.d.ts +4 -2
  235. package/dist/types/plugins/adapters/contracts/TraderJoeRouterAdapterContract.d.ts +4 -2
  236. package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +3 -1
  237. package/dist/types/plugins/adapters/contracts/UniswapV3AdapterContract.d.ts +3 -1
  238. package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +4 -2
  239. package/dist/types/plugins/adapters/contracts/UpshiftVaultAdapterContract.d.ts +4 -2
  240. package/dist/types/plugins/adapters/contracts/VelodromeV2AdapterContract.d.ts +4 -2
  241. package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +4 -2
  242. package/dist/types/plugins/adapters/types.d.ts +10 -0
  243. package/dist/types/preview/index.d.ts +1 -2
  244. package/dist/types/preview/parse/classifyInnerOperations.d.ts +0 -2
  245. package/dist/types/preview/parse/errors.d.ts +1 -0
  246. package/dist/types/preview/parse/index.d.ts +1 -1
  247. package/dist/types/preview/parse/parseOperationCalldata.d.ts +3 -3
  248. package/dist/types/preview/parse/parseRWAFactoryOperationCalldata.d.ts +22 -0
  249. package/dist/types/preview/parse/types-adapters.d.ts +5 -1
  250. package/dist/types/preview/parse/types-facades.d.ts +23 -34
  251. package/dist/types/preview/parse/types-pools.d.ts +90 -2
  252. package/dist/types/preview/parse/types-rwa.d.ts +48 -0
  253. package/dist/types/preview/parse/types.d.ts +11 -6
  254. package/dist/types/preview/prerequisites/AllowancePrerequisite.d.ts +1 -3
  255. package/dist/types/preview/prerequisites/BalancePrerequisite.d.ts +9 -6
  256. package/dist/types/preview/prerequisites/RWAOpenRequirementsPrerequisite.d.ts +36 -0
  257. package/dist/types/preview/prerequisites/buildPrerequisites.d.ts +15 -6
  258. package/dist/types/preview/prerequisites/index.d.ts +1 -0
  259. package/dist/types/preview/prerequisites/types.d.ts +10 -8
  260. package/dist/types/preview/preview/applyInnerOperations.d.ts +77 -0
  261. package/dist/types/preview/preview/errors.d.ts +21 -0
  262. package/dist/types/preview/preview/index.d.ts +5 -0
  263. package/dist/types/preview/preview/previewAdjustCreditAccount.d.ts +11 -0
  264. package/dist/types/preview/preview/previewOpenCreditAccount.d.ts +4 -0
  265. package/dist/types/preview/preview/previewOperation.d.ts +7 -0
  266. package/dist/types/preview/preview/previewPoolOperation.d.ts +5 -0
  267. package/dist/types/preview/preview/types.d.ts +177 -0
  268. package/dist/types/preview/preview/unwrapNativeCollateral.d.ts +20 -0
  269. package/dist/types/preview/simulate/errors.d.ts +6 -12
  270. package/dist/types/preview/simulate/index.d.ts +3 -2
  271. package/dist/types/preview/simulate/simulateFacadeOperation.d.ts +0 -2
  272. package/dist/types/preview/simulate/simulateOperation.d.ts +0 -2
  273. package/dist/types/preview/simulate/simulatePoolOperation.d.ts +9 -3
  274. package/dist/types/preview/simulate/simulateRWAOperation.d.ts +23 -0
  275. package/dist/types/preview/simulate/types.d.ts +12 -39
  276. package/dist/types/sdk/MultichainSDK.d.ts +5 -0
  277. package/dist/types/sdk/OnchainSDK.d.ts +4 -0
  278. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -1
  279. package/dist/types/sdk/accounts/types.d.ts +2 -2
  280. package/dist/types/sdk/base/BaseContract.d.ts +1 -1
  281. package/dist/types/sdk/base/TokensMeta.d.ts +1 -1
  282. package/dist/types/sdk/base/types.d.ts +18 -0
  283. package/dist/types/sdk/market/MarketRegister.d.ts +15 -6
  284. package/dist/types/sdk/market/ZapperRegister.d.ts +25 -4
  285. package/dist/types/sdk/market/rwa/securitize/SecuritizeRWAFactory.d.ts +6 -1
  286. package/dist/types/sdk/market/rwa/types.d.ts +13 -5
  287. package/dist/types/sdk/market/zapper/IERC20ZapperContract.d.ts +93 -39
  288. package/dist/types/sdk/market/zapper/IETHZapperContract.d.ts +93 -39
  289. package/dist/types/sdk/market/zapper/ZapperContract.d.ts +35 -0
  290. package/dist/types/sdk/market/zapper/createZapper.d.ts +2 -4
  291. package/dist/types/sdk/market/zapper/errors.d.ts +10 -0
  292. package/dist/types/sdk/market/zapper/index.d.ts +3 -1
  293. package/dist/types/sdk/market/zapper/types.d.ts +64 -0
  294. package/dist/types/sdk/options.d.ts +10 -5
  295. package/dist/types/sdk/pools/types.d.ts +4 -4
  296. package/dist/types/sdk/router/AbstractRouterContract.d.ts +5 -5
  297. package/dist/types/sdk/router/helpers.d.ts +1 -2
  298. package/dist/types/sdk/router/types.d.ts +1 -15
  299. package/dist/types/sdk/types/state-human.d.ts +9 -0
  300. package/dist/types/sdk/types/state.d.ts +7 -0
  301. package/dist/types/sdk/utils/AddressMap.d.ts +4 -0
  302. package/dist/types/sdk/utils/AssetsMap.d.ts +27 -0
  303. package/dist/types/sdk/utils/index.d.ts +1 -0
  304. package/package.json +3 -3
  305. package/dist/cjs/preview/parse/extractExpectedBalanceChanges.js +0 -48
  306. package/dist/cjs/preview/simulate/extractERC20Transfers.js +0 -47
  307. package/dist/cjs/preview/simulate/simulatePoolOpMulticall.js +0 -155
  308. package/dist/cjs/preview/simulate/simulatePoolOpV1.js +0 -106
  309. package/dist/esm/preview/parse/extractExpectedBalanceChanges.js +0 -24
  310. package/dist/esm/preview/simulate/constants.js +0 -4
  311. package/dist/esm/preview/simulate/extractERC20Transfers.js +0 -23
  312. package/dist/esm/preview/simulate/holders.js +0 -21
  313. package/dist/esm/preview/simulate/simulatePoolOpMulticall.js +0 -130
  314. package/dist/esm/preview/simulate/simulatePoolOpV1.js +0 -82
  315. package/dist/esm/sdk/market/zapper/Zapper.js +0 -23
  316. package/dist/types/preview/parse/extractExpectedBalanceChanges.d.ts +0 -22
  317. package/dist/types/preview/simulate/constants.d.ts +0 -6
  318. package/dist/types/preview/simulate/extractERC20Transfers.d.ts +0 -11
  319. package/dist/types/preview/simulate/holders.d.ts +0 -7
  320. package/dist/types/preview/simulate/simulatePoolOpMulticall.d.ts +0 -28
  321. package/dist/types/preview/simulate/simulatePoolOpV1.d.ts +0 -14
  322. package/dist/types/sdk/market/zapper/Zapper.d.ts +0 -13
@@ -0,0 +1,21 @@
1
+ import { AssetsMap, NATIVE_ADDRESS } from "../../sdk/index.js";
2
+ import { InvalidTransactionValueError } from "./errors.js";
3
+ function unwrapNativeCollateral(collateral, nativeAmount, wethToken) {
4
+ if (nativeAmount === 0n) {
5
+ return collateral;
6
+ }
7
+ const balances = new AssetsMap(collateral);
8
+ const wethBalance = balances.get(wethToken) ?? 0n;
9
+ if (wethBalance < nativeAmount) {
10
+ throw new InvalidTransactionValueError(nativeAmount, wethBalance);
11
+ }
12
+ balances.upsert(
13
+ wethToken,
14
+ wethBalance === nativeAmount ? void 0 : wethBalance - nativeAmount
15
+ );
16
+ balances.inc(NATIVE_ADDRESS, nativeAmount);
17
+ return balances.toAssets();
18
+ }
19
+ export {
20
+ unwrapNativeCollateral
21
+ };
@@ -27,11 +27,6 @@ function asPreviewSimulationError(reason, source) {
27
27
  { source, detail: decodeSimulationError({ error }) }
28
28
  ]);
29
29
  }
30
- function combinePreviewSimulationErrors(...errors) {
31
- return new PreviewSimulationError(
32
- errors.filter((e) => e).flatMap((e) => e?.failures ?? [])
33
- );
34
- }
35
30
  function decodeSimulationError(revert) {
36
31
  const { error, data } = revert;
37
32
  if (data && data !== "0x") {
@@ -70,6 +65,5 @@ function formatDecodedError(errorName, args) {
70
65
  export {
71
66
  PreviewSimulationError,
72
67
  asPreviewSimulationError,
73
- combinePreviewSimulationErrors,
74
68
  decodeSimulationError
75
69
  };
@@ -1,12 +1,12 @@
1
- import { ETH_SIMULATE_V1_NETWORKS } from "./constants.js";
2
1
  import { PreviewSimulationError } from "./errors.js";
3
2
  import { simulateFacadeOperation } from "./simulateFacadeOperation.js";
4
3
  import { simulateOperation } from "./simulateOperation.js";
5
4
  import { simulatePoolOperation } from "./simulatePoolOperation.js";
5
+ import { simulateRWAOperation } from "./simulateRWAOperation.js";
6
6
  export {
7
- ETH_SIMULATE_V1_NETWORKS,
8
7
  PreviewSimulationError,
9
8
  simulateFacadeOperation,
10
9
  simulateOperation,
11
- simulatePoolOperation
10
+ simulatePoolOperation,
11
+ simulateRWAOperation
12
12
  };
@@ -1,11 +1,18 @@
1
- import { isPoolOperation } from "../parse/index.js";
1
+ import {
2
+ isPoolOperation,
3
+ isRWAOperation
4
+ } from "../parse/index.js";
2
5
  import { simulateFacadeOperation } from "./simulateFacadeOperation.js";
3
6
  import { simulatePoolOperation } from "./simulatePoolOperation.js";
7
+ import { simulateRWAOperation } from "./simulateRWAOperation.js";
4
8
  async function simulateOperation(input, options) {
5
9
  const { operation } = input;
6
10
  if (isPoolOperation(operation)) {
7
11
  return simulatePoolOperation({ ...input, operation }, options);
8
12
  }
13
+ if (isRWAOperation(operation)) {
14
+ return simulateRWAOperation({ ...input, operation }, options);
15
+ }
9
16
  return simulateFacadeOperation({ ...input, operation }, options);
10
17
  }
11
18
  export {
@@ -1,40 +1,66 @@
1
- import { ETH_SIMULATE_V1_NETWORKS } from "./constants.js";
2
- import {
3
- asPreviewSimulationError,
4
- combinePreviewSimulationErrors
5
- } from "./errors.js";
6
- import { simulatePoolOpMulticall } from "./simulatePoolOpMulticall.js";
7
- import { simulatePoolOpV1 } from "./simulatePoolOpV1.js";
8
- async function simulatePoolOperation(input, options = {}) {
9
- const { sdk } = input;
10
- const { logger } = options;
11
- const useSimulateV1 = options.useSimulateV1 ?? ETH_SIMULATE_V1_NETWORKS.has(sdk.networkType);
12
- logger?.debug(
13
- { wallet: input.wallet, to: input.to },
14
- "simulating pool operation"
15
- );
16
- const [v1, multicall] = await Promise.allSettled([
17
- useSimulateV1 ? simulatePoolOpV1(input, options) : void 0,
18
- simulatePoolOpMulticall(input, options)
19
- ]);
20
- if (v1.status === "fulfilled" && v1.value) {
21
- return { status: "success", ...v1.value };
1
+ import { iPoolV310Abi } from "../../abi/310/generated.js";
2
+ import { iZapperAbi } from "../../abi/iZapper.js";
3
+ import { asPreviewSimulationError } from "./errors.js";
4
+ function previewRead(operation) {
5
+ switch (operation.operation) {
6
+ case "Deposit":
7
+ return { functionName: "previewDeposit", amount: operation.assets };
8
+ case "Mint":
9
+ return { functionName: "previewMint", amount: operation.shares };
10
+ case "Withdraw":
11
+ return { functionName: "previewWithdraw", amount: operation.assets };
12
+ case "Redeem":
13
+ return { functionName: "previewRedeem", amount: operation.shares };
14
+ }
15
+ }
16
+ function previewContract(operation) {
17
+ const { functionName, amount } = previewRead(operation);
18
+ if (operation.zapper) {
19
+ return {
20
+ address: operation.zapper,
21
+ abi: iZapperAbi,
22
+ functionName,
23
+ args: [amount]
24
+ };
22
25
  }
23
- if (multicall.status === "fulfilled") {
24
- if (v1.status === "rejected") {
25
- logger?.debug(
26
- asPreviewSimulationError(v1.reason, "eth_simulateV1"),
27
- "eth_simulateV1 flow failed; falling back to multicall result"
28
- );
29
- }
30
- return { status: "success", ...multicall.value };
26
+ return {
27
+ address: operation.pool,
28
+ abi: iPoolV310Abi,
29
+ functionName,
30
+ args: [amount]
31
+ };
32
+ }
33
+ function amountsInOut(operation, previewAmount) {
34
+ switch (operation.operation) {
35
+ case "Deposit":
36
+ return { amountIn: operation.assets, amountOut: previewAmount };
37
+ case "Mint":
38
+ return { amountIn: previewAmount, amountOut: operation.shares };
39
+ case "Withdraw":
40
+ return { amountIn: previewAmount, amountOut: operation.assets };
41
+ case "Redeem":
42
+ return { amountIn: operation.shares, amountOut: previewAmount };
43
+ }
44
+ }
45
+ async function simulatePoolOperation(input, options = {}) {
46
+ const { sdk, operation } = input;
47
+ const { blockNumber, logger } = options;
48
+ try {
49
+ const previewAmount = await sdk.client.readContract({
50
+ // `undefined` lets viem read at `latest`; `blockNumber` is only set for
51
+ // testnet forks pinned to a specific block.
52
+ blockNumber,
53
+ ...previewContract(operation)
54
+ });
55
+ return {
56
+ status: "success",
57
+ ...amountsInOut(operation, previewAmount)
58
+ };
59
+ } catch (cause) {
60
+ const error = asPreviewSimulationError(cause, "multicall");
61
+ logger?.error(error, "pool operation simulation failed");
62
+ return { status: "failure", error };
31
63
  }
32
- const error = combinePreviewSimulationErrors(
33
- v1.status === "rejected" ? asPreviewSimulationError(v1.reason, "eth_simulateV1") : void 0,
34
- asPreviewSimulationError(multicall.reason, "multicall")
35
- );
36
- logger?.error(error, "pool operation simulation failed");
37
- return { status: "failure", error };
38
64
  }
39
65
  export {
40
66
  simulatePoolOperation
@@ -0,0 +1,6 @@
1
+ async function simulateRWAOperation(_input, _options) {
2
+ throw new Error("not yet implemented");
3
+ }
4
+ export {
5
+ simulateRWAOperation
6
+ };
@@ -67,6 +67,7 @@ class MultichainSDK {
67
67
  const perChainOpts = options?.perChain?.[network] ?? {};
68
68
  return sdk.attach({
69
69
  ...perChainOpts,
70
+ loadZappers: perChainOpts.loadZappers ?? options?.loadZappers,
70
71
  redstone: {
71
72
  ...options?.redstone,
72
73
  cache: this.#redstoneCache,
@@ -126,7 +126,8 @@ class OnchainSDK extends ChainContractsRegister {
126
126
  ignoreMarkets,
127
127
  marketConfigurators: mcs,
128
128
  redstone,
129
- pyth
129
+ pyth,
130
+ loadZappers
130
131
  } = options ?? {};
131
132
  const marketConfigurators = mcs ?? TypedObjectUtils.keys(
132
133
  this.client.chain.defaultMarketConfigurators
@@ -195,6 +196,9 @@ class OnchainSDK extends ChainContractsRegister {
195
196
  blockNumber: this.currentBlock,
196
197
  gas: this.gasLimit
197
198
  });
199
+ if (loadZappers) {
200
+ await this.#marketRegister.loadZappers();
201
+ }
198
202
  }
199
203
  const pluginsList = TypedObjectUtils.entries(this.plugins);
200
204
  const pluginResponse = await Promise.allSettled(
@@ -247,7 +251,7 @@ class OnchainSDK extends ChainContractsRegister {
247
251
  `address provider version: ${this.#addressProvider.version}`
248
252
  );
249
253
  this.#marketRegister = new MarketRegister(this, ignoreMarkets);
250
- this.#marketRegister.hydrate(state.markets);
254
+ this.#marketRegister.hydrate(state);
251
255
  this.#rwa = new RWARegistry(this);
252
256
  this.#rwa.setState(state.rwa);
253
257
  for (const [name, plugin] of TypedObjectUtils.entries(this.plugins)) {
@@ -312,7 +316,7 @@ class OnchainSDK extends ChainContractsRegister {
312
316
  currentBlock: this.currentBlock,
313
317
  timestamp: this.timestamp,
314
318
  addressProvider: this.addressProvider.state,
315
- markets: this.marketRegister.state,
319
+ ...this.marketRegister.state,
316
320
  rwa: this.#rwa.state,
317
321
  plugins: Object.fromEntries(
318
322
  TypedObjectUtils.entries(this.plugins).map(([name, plugin]) => [
@@ -27,8 +27,7 @@ import {
27
27
  import {
28
28
  getRawPriceUpdates
29
29
  } from "../market/index.js";
30
- import { assetsMap } from "../router/index.js";
31
- import { AddressMap, AddressSet, hexEq } from "../utils/index.js";
30
+ import { AddressMap, AddressSet, AssetsMap, hexEq } from "../utils/index.js";
32
31
  import { simulateWithPriceUpdates } from "../utils/viem/index.js";
33
32
  import {
34
33
  extractPriceUpdates,
@@ -1718,10 +1717,10 @@ class CreditAccountsServiceV310 extends SDKConstruct {
1718
1717
  return calls;
1719
1718
  }
1720
1719
  #prepareUpdateQuotas(creditFacade, { averageQuota, minQuota }) {
1721
- const minRecord = assetsMap(minQuota);
1720
+ const minRecord = new AssetsMap(minQuota);
1722
1721
  const calls = averageQuota.map((q) => {
1723
- const minAsset = minRecord.get(q.token);
1724
- const min = minAsset && minAsset?.balance > 0 ? minAsset.balance : 0n;
1722
+ const minBalance = minRecord.get(q.token);
1723
+ const min = minBalance && minBalance > 0n ? minBalance : 0n;
1725
1724
  return {
1726
1725
  target: creditFacade,
1727
1726
  callData: encodeFunctionData({
@@ -234,6 +234,7 @@ class BaseContract extends Construct {
234
234
  const functionName = getFunctionSignature(this.abi, calldata);
235
235
  return this.wrapParseCallV2(
236
236
  functionName,
237
+ calldata,
237
238
  this.parseFunctionParamsV2(decoded, strict)
238
239
  );
239
240
  } catch (e) {
@@ -247,7 +248,7 @@ class BaseContract extends Construct {
247
248
  this.logger?.warn(e);
248
249
  const selector = calldata.slice(0, 10);
249
250
  const data = `0x${calldata.slice(10)}`;
250
- return this.wrapParseCallV2(`unknown function ${selector}`, {
251
+ return this.wrapParseCallV2(`unknown function ${selector}`, calldata, {
251
252
  _data: data
252
253
  });
253
254
  }
@@ -260,7 +261,7 @@ class BaseContract extends Construct {
260
261
  parseFunctionParamsV2(params, _strict) {
261
262
  return functionArgsToRecord(this.abi, params.functionName, params.args);
262
263
  }
263
- wrapParseCallV2(functionName, rawArgs) {
264
+ wrapParseCallV2(functionName, calldata, rawArgs) {
264
265
  return {
265
266
  chainId: this.chainId,
266
267
  target: this.address,
@@ -268,6 +269,7 @@ class BaseContract extends Construct {
268
269
  label: this.labelAddress(this.address, true),
269
270
  version: this.version,
270
271
  functionName,
272
+ calldata,
271
273
  rawArgs
272
274
  };
273
275
  }
@@ -161,6 +161,7 @@ class ChainContractsRegister {
161
161
  label: this.labelAddress(address, true),
162
162
  version: 0,
163
163
  functionName: `unknown function ${selector}`,
164
+ calldata,
164
165
  rawArgs: { _data: data }
165
166
  };
166
167
  }
@@ -35,10 +35,11 @@ class MarketRegister extends ZapperRegister {
35
35
  * bypassing on-chain reads.
36
36
  * @param state - Array of market data snapshots.
37
37
  **/
38
- hydrate(state) {
39
- const configurators = new Set(state.map((m) => m.configurator));
38
+ hydrate({ markets, zappers }) {
39
+ const configurators = new Set(markets.map((m) => m.configurator));
40
40
  this.#setMarketFilter([...configurators]);
41
- this.#setMarkets(state);
41
+ this.#setMarkets(markets);
42
+ this.hydrateZappers(zappers);
42
43
  }
43
44
  /**
44
45
  * @internal
@@ -157,7 +158,10 @@ class MarketRegister extends ZapperRegister {
157
158
  * Serializable snapshot of all loaded markets, suitable for hydration.
158
159
  **/
159
160
  get state() {
160
- return this.markets.map((market) => market.state);
161
+ return {
162
+ markets: this.markets.map((market) => market.state),
163
+ zappers: this.zappersState
164
+ };
161
165
  }
162
166
  /**
163
167
  * Returns a human-readable snapshot of all markets.
@@ -165,7 +169,8 @@ class MarketRegister extends ZapperRegister {
165
169
  **/
166
170
  stateHuman(raw = true) {
167
171
  return {
168
- markets: this.markets.map((market) => market.stateHuman(raw))
172
+ markets: this.markets.map((market) => market.stateHuman(raw)),
173
+ zappers: this.zappersStateHuman(raw)
169
174
  };
170
175
  }
171
176
  /**
@@ -55,6 +55,60 @@ class ZapperRegister extends SDKConstruct {
55
55
  }
56
56
  }
57
57
  }
58
+ /**
59
+ * Serializable snapshot of all loaded zappers, suitable for hydration.
60
+ * Returns `undefined` when zappers were never loaded (i.e. `loadZappers` was
61
+ * not called), so the not-loaded state round-trips cleanly.
62
+ **/
63
+ get zappersState() {
64
+ if (!this.#zappers) {
65
+ return void 0;
66
+ }
67
+ return this.#zappers.values().flatMap(
68
+ (zappers) => zappers.map((z) => ({
69
+ pool: z.pool,
70
+ type: z.type,
71
+ baseParams: z.baseParams,
72
+ tokenIn: z.tokenIn,
73
+ tokenOut: z.tokenOut
74
+ }))
75
+ );
76
+ }
77
+ /**
78
+ * Restores zapper state from a previously serialized snapshot,
79
+ * bypassing on-chain reads.
80
+ * @param state - Array of zapper data snapshots, or `undefined` when zappers
81
+ * were not loaded in the snapshot (leaves the registry in the not-loaded state).
82
+ **/
83
+ hydrateZappers(state) {
84
+ if (!state) {
85
+ return;
86
+ }
87
+ this.#zappers = new AddressMap(void 0, "zappers");
88
+ for (const z of state) {
89
+ this.#addZapper(z);
90
+ }
91
+ }
92
+ /**
93
+ * Returns a human-readable snapshot of all loaded zappers.
94
+ * Returns `undefined` when zappers were never loaded.
95
+ * @param raw - When `true`, includes raw/unformatted values.
96
+ **/
97
+ zappersStateHuman(_ = true) {
98
+ if (!this.#zappers) {
99
+ return void 0;
100
+ }
101
+ return this.#zappers.values().flatMap(
102
+ (zappers) => zappers.map((z) => ({
103
+ address: this.labelAddress(z.baseParams.addr),
104
+ contractType: z.contractType,
105
+ type: z.type,
106
+ pool: this.labelAddress(z.pool),
107
+ tokenIn: this.sdk.labelAddress(z.tokenIn.addr),
108
+ tokenOut: this.sdk.labelAddress(z.tokenOut.addr)
109
+ }))
110
+ );
111
+ }
58
112
  #addZapper(z) {
59
113
  const zapper = createZapper(this.sdk, z);
60
114
  const existing = this.zappers.get(z.pool);
@@ -1,4 +1,6 @@
1
- import { decodeAbiParameters } from "viem";
1
+ import {
2
+ decodeAbiParameters
3
+ } from "viem";
2
4
  import { iSecuritizeRWAFactoryAbi } from "../../../../abi/rwa/iSecuritizeRWAFactory.js";
3
5
  import { BaseContract } from "../../../base/index.js";
4
6
  import { AddressMap, AddressSet } from "../../../utils/index.js";
@@ -49,6 +51,30 @@ class SecuritizeRWAFactory extends BaseContract {
49
51
  operators: [...t.operators]
50
52
  }));
51
53
  }
54
+ parseFunctionParamsV2(params, strict) {
55
+ switch (params.functionName) {
56
+ case "openCreditAccount": {
57
+ const [creditManager, calls, tokensToRegister, signaturesToCache] = params.args;
58
+ return {
59
+ creditManager,
60
+ calls: this.register.parseMultiCallV2([...calls], strict),
61
+ tokensToRegister,
62
+ signaturesToCache
63
+ };
64
+ }
65
+ case "multicall": {
66
+ const [creditAccount, calls, tokensToRegister, signaturesToCache] = params.args;
67
+ return {
68
+ creditAccount,
69
+ calls: this.register.parseMultiCallV2([...calls], strict),
70
+ tokensToRegister,
71
+ signaturesToCache
72
+ };
73
+ }
74
+ default:
75
+ return super.parseFunctionParamsV2(params, strict);
76
+ }
77
+ }
52
78
  /**
53
79
  * {@inheritDoc IRWAFactory.decodeInvestorData}
54
80
  */
@@ -104,6 +130,12 @@ class SecuritizeRWAFactory extends BaseContract {
104
130
  })
105
131
  };
106
132
  }
133
+ /**
134
+ * {@inheritDoc IRWAFactory.getTokens}
135
+ */
136
+ getTokens() {
137
+ return this.dsTokens.map((t) => t.address);
138
+ }
107
139
  /**
108
140
  * {@inheritDoc IRWAFactory.getInvestor}
109
141
  */
@@ -1,7 +1,10 @@
1
1
  import { RWA_FACTORY_SECURITIZE } from "./securitize/index.js";
2
2
  const RWA_FACTORY_TYPES = [RWA_FACTORY_SECURITIZE];
3
- function isRWAFactory(factory, type) {
4
- return factory.contractType === type;
3
+ function isRWAFactory(contract, type) {
4
+ if (type) {
5
+ return contract.contractType === type;
6
+ }
7
+ return contract.contractType.startsWith("RWA_FACTORY::");
5
8
  }
6
9
  export {
7
10
  RWA_FACTORY_TYPES,
@@ -1,25 +1,9 @@
1
1
  import { ierc20ZapperAbi } from "../../../abi/iERC20Zapper.js";
2
- import { BaseContract } from "../../base/index.js";
2
+ import { ZapperContract } from "./ZapperContract.js";
3
3
  const abi = ierc20ZapperAbi;
4
- class IERC20ZapperContract extends BaseContract {
5
- pool;
6
- type;
7
- baseParams;
8
- tokenIn;
9
- tokenOut;
4
+ class IERC20ZapperContract extends ZapperContract {
10
5
  constructor(sdk, data) {
11
- super(sdk, {
12
- addr: data.baseParams.addr,
13
- abi,
14
- name: `ERC20Zapper(${sdk.labelAddress(data.baseParams.addr)})`,
15
- version: data.baseParams.version,
16
- contractType: data.baseParams.contractType
17
- });
18
- this.pool = data.pool;
19
- this.type = data.type;
20
- this.baseParams = data.baseParams;
21
- this.tokenIn = data.tokenIn;
22
- this.tokenOut = data.tokenOut;
6
+ super(sdk, data, abi, "ERC20Zapper");
23
7
  }
24
8
  /**
25
9
  * Deposits ERC20 tokens into the pool via this zapper.
@@ -49,25 +33,6 @@ class IERC20ZapperContract extends BaseContract {
49
33
  args: [tokenInAmount, receiver, referralCode, deadline, v, r, s]
50
34
  });
51
35
  }
52
- /**
53
- * Redeems pool shares (diesel tokens) for the underlying asset via this zapper.
54
- */
55
- redeem(tokenInAmount, receiver) {
56
- return this.createRawTx({
57
- functionName: "redeem",
58
- args: [tokenInAmount, receiver]
59
- });
60
- }
61
- /**
62
- * Redeems pool shares via this zapper with an EIP-2612 permit signature,
63
- * skipping a separate approve transaction.
64
- */
65
- redeemWithPermit(tokenInAmount, receiver, deadline, v, r, s) {
66
- return this.createRawTx({
67
- functionName: "redeemWithPermit",
68
- args: [tokenInAmount, receiver, deadline, v, r, s]
69
- });
70
- }
71
36
  }
72
37
  export {
73
38
  IERC20ZapperContract
@@ -1,25 +1,9 @@
1
1
  import { iethZapperAbi } from "../../../abi/iETHZapper.js";
2
- import { BaseContract } from "../../base/index.js";
2
+ import { ZapperContract } from "./ZapperContract.js";
3
3
  const abi = iethZapperAbi;
4
- class IETHZapperContract extends BaseContract {
5
- pool;
6
- type;
7
- baseParams;
8
- tokenIn;
9
- tokenOut;
4
+ class IETHZapperContract extends ZapperContract {
10
5
  constructor(sdk, data) {
11
- super(sdk, {
12
- addr: data.baseParams.addr,
13
- abi,
14
- name: `ETHZapper(${sdk.labelAddress(data.baseParams.addr)})`,
15
- version: data.baseParams.version,
16
- contractType: data.baseParams.contractType
17
- });
18
- this.pool = data.pool;
19
- this.type = data.type;
20
- this.baseParams = data.baseParams;
21
- this.tokenIn = data.tokenIn;
22
- this.tokenOut = data.tokenOut;
6
+ super(sdk, data, abi, "ETHZapper");
23
7
  }
24
8
  /**
25
9
  * Deposits native ETH into the pool via this zapper.
@@ -40,25 +24,6 @@ class IETHZapperContract extends BaseContract {
40
24
  args: [receiver, referralCode]
41
25
  });
42
26
  }
43
- /**
44
- * Redeems pool shares (diesel tokens) for the underlying asset via this zapper.
45
- */
46
- redeem(tokenInAmount, receiver) {
47
- return this.createRawTx({
48
- functionName: "redeem",
49
- args: [tokenInAmount, receiver]
50
- });
51
- }
52
- /**
53
- * Redeems pool shares via this zapper with an EIP-2612 permit signature,
54
- * skipping a separate approve transaction.
55
- */
56
- redeemWithPermit(tokenInAmount, receiver, deadline, v, r, s) {
57
- return this.createRawTx({
58
- functionName: "redeemWithPermit",
59
- args: [tokenInAmount, receiver, deadline, v, r, s]
60
- });
61
- }
62
27
  }
63
28
  export {
64
29
  IETHZapperContract
@@ -0,0 +1,82 @@
1
+ import { iZapperAbi } from "../../../abi/iZapper.js";
2
+ import { BaseContract } from "../../base/index.js";
3
+ import { UnsupportedZapperFunctionError } from "./errors.js";
4
+ class ZapperContract extends BaseContract {
5
+ sdk;
6
+ pool;
7
+ type;
8
+ baseParams;
9
+ tokenIn;
10
+ tokenOut;
11
+ constructor(sdk, data, abi = iZapperAbi, namePrefix = "Zapper") {
12
+ super(sdk, {
13
+ addr: data.baseParams.addr,
14
+ abi,
15
+ name: `${namePrefix}(${sdk.labelAddress(data.baseParams.addr)})`,
16
+ version: data.baseParams.version,
17
+ contractType: data.baseParams.contractType
18
+ });
19
+ this.sdk = sdk;
20
+ this.pool = data.pool;
21
+ this.type = data.type;
22
+ this.baseParams = data.baseParams;
23
+ this.tokenIn = data.tokenIn;
24
+ this.tokenOut = data.tokenOut;
25
+ }
26
+ /**
27
+ * Decodes zapper calldata into {@link ParsedZapperOperation}.
28
+ * Throws {@link UnsupportedZapperFunctionError} for unknown selectors.
29
+ */
30
+ parseOperation(calldata, value) {
31
+ const parsed = this.parseFunctionDataV2(calldata);
32
+ const { rawArgs } = parsed;
33
+ const pool = this.pool;
34
+ const zapper = this.address;
35
+ const underlying = this.sdk.marketRegister.findByPool(pool).underlying;
36
+ const receiver = rawArgs.receiver;
37
+ if (parsed.functionName.startsWith("deposit")) {
38
+ return {
39
+ operation: "Deposit",
40
+ pool,
41
+ zapper,
42
+ receiver,
43
+ assets: rawArgs.tokenInAmount ?? value ?? 0n,
44
+ underlying,
45
+ referralCode: rawArgs.referralCode
46
+ };
47
+ }
48
+ if (parsed.functionName.startsWith("redeem")) {
49
+ return {
50
+ operation: "Redeem",
51
+ pool,
52
+ zapper,
53
+ receiver,
54
+ shares: rawArgs.tokenOutAmount,
55
+ underlying
56
+ };
57
+ }
58
+ throw new UnsupportedZapperFunctionError(zapper, parsed.functionName);
59
+ }
60
+ /**
61
+ * Redeems pool shares (diesel tokens) for the underlying asset via this zapper.
62
+ */
63
+ redeem(tokenInAmount, receiver) {
64
+ return this.createRawTx({
65
+ functionName: "redeem",
66
+ args: [tokenInAmount, receiver]
67
+ });
68
+ }
69
+ /**
70
+ * Redeems pool shares via this zapper with an EIP-2612 permit signature,
71
+ * skipping a separate approve transaction.
72
+ */
73
+ redeemWithPermit(tokenInAmount, receiver, deadline, v, r, s) {
74
+ return this.createRawTx({
75
+ functionName: "redeemWithPermit",
76
+ args: [tokenInAmount, receiver, deadline, v, r, s]
77
+ });
78
+ }
79
+ }
80
+ export {
81
+ ZapperContract
82
+ };