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

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 +130 -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 +90 -0
  62. package/dist/cjs/preview/preview/previewOpenCreditAccount.js +67 -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 +53 -23
  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 +97 -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 +108 -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 +74 -0
  156. package/dist/esm/preview/preview/previewOpenCreditAccount.js +49 -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 +54 -24
  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 +73 -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 +11 -3
  279. package/dist/types/sdk/accounts/types.d.ts +66 -8
  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 +44 -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 { isPoolOperation, parseOperationCalldata } from "../parse/index.js";
2
+ import { UnsupportedOperationError } from "./errors.js";
3
+ import { previewAdjustCreditAccount } from "./previewAdjustCreditAccount.js";
4
+ import { previewOpenCreditAccount } from "./previewOpenCreditAccount.js";
5
+ import { previewPoolOperation } from "./previewPoolOperation.js";
6
+ async function previewOperation(input, options) {
7
+ const operation = parseOperationCalldata(input);
8
+ if (isPoolOperation(operation)) {
9
+ return previewPoolOperation(input, operation, options);
10
+ }
11
+ if (operation.operation === "OpenCreditAccount" || operation.operation === "SecuritizeOpenCreditAccount") {
12
+ return previewOpenCreditAccount(input, operation);
13
+ }
14
+ if (operation.operation === "MultiCall" || operation.operation === "BotMulticall" || operation.operation === "SecuritizeMulticall") {
15
+ return previewAdjustCreditAccount(input, operation, options);
16
+ }
17
+ throw new UnsupportedOperationError(operation.operation);
18
+ }
19
+ export {
20
+ previewOperation
21
+ };
@@ -0,0 +1,53 @@
1
+ import {
2
+ simulatePoolOperation
3
+ } from "../simulate/index.js";
4
+ async function previewPoolOperation(input, operation, options) {
5
+ const { sdk, to, calldata } = input;
6
+ const { tokenIn, tokenOut } = operation;
7
+ const sim = await simulatePoolOperation(
8
+ { sdk, operation, to, calldata },
9
+ options
10
+ );
11
+ if (sim.status === "success") {
12
+ return {
13
+ operation: operation.operation,
14
+ pool: operation.pool,
15
+ tokenIn: { token: tokenIn, balance: sim.amountIn },
16
+ tokenOut: { token: tokenOut, balance: sim.amountOut }
17
+ };
18
+ }
19
+ const { error } = sim;
20
+ switch (operation.operation) {
21
+ case "Deposit":
22
+ return {
23
+ operation: "Deposit",
24
+ pool: operation.pool,
25
+ tokenIn: { token: tokenIn, balance: operation.assets },
26
+ tokenOut: { token: tokenOut, error }
27
+ };
28
+ case "Mint":
29
+ return {
30
+ operation: "Mint",
31
+ pool: operation.pool,
32
+ tokenIn: { token: tokenIn, error },
33
+ tokenOut: { token: tokenOut, balance: operation.shares }
34
+ };
35
+ case "Withdraw":
36
+ return {
37
+ operation: "Withdraw",
38
+ pool: operation.pool,
39
+ tokenIn: { token: tokenIn, error },
40
+ tokenOut: { token: tokenOut, balance: operation.assets }
41
+ };
42
+ case "Redeem":
43
+ return {
44
+ operation: "Redeem",
45
+ pool: operation.pool,
46
+ tokenIn: { token: tokenIn, balance: operation.shares },
47
+ tokenOut: { token: tokenOut, error }
48
+ };
49
+ }
50
+ }
51
+ export {
52
+ previewPoolOperation
53
+ };
File without changes
@@ -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,
@@ -616,14 +615,12 @@ class CreditAccountsServiceV310 extends SDKConstruct {
616
615
  creditManager: cm.creditManager,
617
616
  slippage
618
617
  });
619
- const operationCalls = [
620
- ...routerCloseResult.calls,
621
- ...this.#prepareDisableQuotas(ca),
622
- ...this.#prepareDecreaseDebt(ca),
623
- ...assetsToWithdraw.map(
624
- (t) => this.#prepareWithdrawToken(ca.creditFacade, t, MAX_UINT256, to)
625
- )
626
- ];
618
+ const operationCalls = await this.assembleCloseCreditAccountCalls({
619
+ creditAccount: ca,
620
+ routerCalls: routerCloseResult.calls,
621
+ assetsToWithdraw,
622
+ to
623
+ });
627
624
  const calls = operation === "close" ? operationCalls : await this.#prependPriceUpdates(ca.creditManager, operationCalls, ca);
628
625
  const tx = await this.#closeCreditAccountTx(
629
626
  cm,
@@ -633,6 +630,32 @@ class CreditAccountsServiceV310 extends SDKConstruct {
633
630
  );
634
631
  return { tx, calls, routerCloseResult, creditFacade: cm.creditFacade };
635
632
  }
633
+ /**
634
+ * {@inheritDoc ICreditAccountsService.assembleCloseCreditAccountCalls}
635
+ */
636
+ async assembleCloseCreditAccountCalls({
637
+ creditAccount: ca,
638
+ routerCalls,
639
+ assetsToWithdraw,
640
+ to
641
+ }) {
642
+ const cm = this.sdk.marketRegister.findCreditManager(ca.creditManager);
643
+ await this.sdk.tokensMeta.loadTokenData(cm.underlying);
644
+ const underlying = this.sdk.tokensMeta.mustGet(cm.underlying);
645
+ if (this.sdk.tokensMeta.isRWAUnderlying(underlying)) {
646
+ throw new Error(
647
+ "closeCreditAccount is not supported for RWA underlying credit accounts"
648
+ );
649
+ }
650
+ return [
651
+ ...routerCalls,
652
+ ...this.#prepareDisableQuotas(ca),
653
+ ...this.#prepareDecreaseDebt(ca),
654
+ ...assetsToWithdraw.map(
655
+ (t) => this.#prepareWithdrawToken(ca.creditFacade, t, MAX_UINT256, to)
656
+ )
657
+ ];
658
+ }
636
659
  /**
637
660
  * {@inheritDoc ICreditAccountsService.updateQuotas}
638
661
  **/
@@ -1302,8 +1325,23 @@ class CreditAccountsServiceV310 extends SDKConstruct {
1302
1325
  /**
1303
1326
  * {@inheritDoc ICreditAccountsService.repayCreditAccount}
1304
1327
  */
1305
- async repayCreditAccount({
1306
- operation,
1328
+ async repayCreditAccount(props) {
1329
+ const { operation, creditAccount: ca } = props;
1330
+ const cm = this.sdk.marketRegister.findCreditManager(ca.creditManager);
1331
+ const operationCalls = await this.assembleRepayCreditAccountCalls(props);
1332
+ const calls = operation === "close" ? operationCalls : await this.#prependPriceUpdates(ca.creditManager, operationCalls, ca);
1333
+ const tx = await this.#closeCreditAccountTx(
1334
+ cm,
1335
+ ca.creditAccount,
1336
+ calls,
1337
+ operation
1338
+ );
1339
+ return { tx, calls, creditFacade: cm.creditFacade };
1340
+ }
1341
+ /**
1342
+ * {@inheritDoc ICreditAccountsService.assembleRepayCreditAccountCalls}
1343
+ */
1344
+ async assembleRepayCreditAccountCalls({
1307
1345
  collateralAssets,
1308
1346
  assetsToWithdraw,
1309
1347
  creditAccount: ca,
@@ -1312,7 +1350,6 @@ class CreditAccountsServiceV310 extends SDKConstruct {
1312
1350
  tokensToClaim,
1313
1351
  calls: wrapCalls = []
1314
1352
  }) {
1315
- const cm = this.sdk.marketRegister.findCreditManager(ca.creditManager);
1316
1353
  const addCollateral = collateralAssets.filter((a) => a.balance > 0);
1317
1354
  const router = this.sdk.routerFor(ca);
1318
1355
  const unwrapCalls = await this.getRedeemDiffCalls(1n, ca.creditManager) ?? [];
@@ -1331,14 +1368,7 @@ class CreditAccountsServiceV310 extends SDKConstruct {
1331
1368
  (t) => this.#prepareWithdrawToken(ca.creditFacade, t.token, MAX_UINT256, to)
1332
1369
  )
1333
1370
  ];
1334
- const calls = operation === "close" ? operationCalls : await this.#prependPriceUpdates(ca.creditManager, operationCalls, ca);
1335
- const tx = await this.#closeCreditAccountTx(
1336
- cm,
1337
- ca.creditAccount,
1338
- calls,
1339
- operation
1340
- );
1341
- return { tx, calls, creditFacade: cm.creditFacade };
1371
+ return operationCalls;
1342
1372
  }
1343
1373
  /**
1344
1374
  * {@inheritDoc ICreditAccountsService.repayAndLiquidateCreditAccount}
@@ -1718,10 +1748,10 @@ class CreditAccountsServiceV310 extends SDKConstruct {
1718
1748
  return calls;
1719
1749
  }
1720
1750
  #prepareUpdateQuotas(creditFacade, { averageQuota, minQuota }) {
1721
- const minRecord = assetsMap(minQuota);
1751
+ const minRecord = new AssetsMap(minQuota);
1722
1752
  const calls = averageQuota.map((q) => {
1723
- const minAsset = minRecord.get(q.token);
1724
- const min = minAsset && minAsset?.balance > 0 ? minAsset.balance : 0n;
1753
+ const minBalance = minRecord.get(q.token);
1754
+ const min = minBalance && minBalance > 0n ? minBalance : 0n;
1725
1755
  return {
1726
1756
  target: creditFacade,
1727
1757
  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,