@gearbox-protocol/sdk 14.11.3 → 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 (387) hide show
  1. package/dist/cjs/abi/iZapper.js +62 -24
  2. package/dist/cjs/common-utils/utils/index.js +2 -0
  3. package/dist/cjs/{history/trace-utils.js → common-utils/utils/trace.js} +62 -5
  4. package/dist/cjs/dev/AccountOpener.js +7 -13
  5. package/dist/cjs/dev/index.js +3 -1
  6. package/dist/cjs/dev/verifyTestnet.js +52 -0
  7. package/dist/cjs/history/assembleOperations.js +6 -6
  8. package/dist/cjs/history/classifyMulticallOperations.js +33 -25
  9. package/dist/cjs/history/index.js +0 -2
  10. package/dist/cjs/history/mapOperations.js +7 -0
  11. package/dist/cjs/history/parseCreditAccountTransaction.js +5 -6
  12. package/dist/cjs/history/toLegacyOperation.js +5 -1
  13. package/dist/cjs/plugins/adapters/abi/iConvexV1BoosterAdapter.js +143 -0
  14. package/dist/cjs/plugins/adapters/abi/index.js +2 -0
  15. package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +61 -37
  16. package/dist/cjs/plugins/adapters/contracts/AbstractCurveAdapter.js +66 -0
  17. package/dist/cjs/plugins/adapters/contracts/AccountMigratorAdapterContract.js +9 -0
  18. package/dist/cjs/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +19 -0
  19. package/dist/cjs/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +15 -0
  20. package/dist/cjs/plugins/adapters/contracts/CamelotV3AdapterContract.js +20 -0
  21. package/dist/cjs/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +18 -0
  22. package/dist/cjs/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +28 -2
  23. package/dist/cjs/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -7
  24. package/dist/cjs/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -7
  25. package/dist/cjs/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -7
  26. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
  27. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -7
  28. package/dist/cjs/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -7
  29. package/dist/cjs/plugins/adapters/contracts/DaiUsdsAdapterContract.js +14 -0
  30. package/dist/cjs/plugins/adapters/contracts/ERC4626AdapterContract.js +15 -0
  31. package/dist/cjs/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +14 -0
  32. package/dist/cjs/plugins/adapters/contracts/FluidDexAdapterContract.js +15 -0
  33. package/dist/cjs/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +21 -0
  34. package/dist/cjs/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +10 -0
  35. package/dist/cjs/plugins/adapters/contracts/LidoV1AdapterContract.js +11 -0
  36. package/dist/cjs/plugins/adapters/contracts/MellowDVVAdapterContract.js +15 -0
  37. package/dist/cjs/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +15 -0
  38. package/dist/cjs/plugins/adapters/contracts/MellowWrapperAdapterContract.js +11 -0
  39. package/dist/cjs/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +10 -0
  40. package/dist/cjs/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +12 -0
  41. package/dist/cjs/plugins/adapters/contracts/PendleRouterAdapterContract.js +58 -0
  42. package/dist/cjs/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +11 -0
  43. package/dist/cjs/plugins/adapters/contracts/SecuritizeSwapAdapterContract.js +22 -1
  44. package/dist/cjs/plugins/adapters/contracts/StakingRewardsAdapterContract.js +17 -0
  45. package/dist/cjs/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +10 -0
  46. package/dist/cjs/plugins/adapters/contracts/UniswapV2AdapterContract.js +10 -0
  47. package/dist/cjs/plugins/adapters/contracts/UniswapV3AdapterContract.js +20 -0
  48. package/dist/cjs/plugins/adapters/contracts/UniswapV4AdapterContract.js +15 -0
  49. package/dist/cjs/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +14 -0
  50. package/dist/cjs/plugins/adapters/contracts/VelodromeV2AdapterContract.js +10 -0
  51. package/dist/cjs/plugins/adapters/contracts/WstETHV1AdapterContract.js +15 -0
  52. package/dist/cjs/{history/internal-types.js → plugins/adapters/transfers.js} +2 -2
  53. package/dist/cjs/preview/index.js +26 -0
  54. package/dist/cjs/preview/package.json +1 -0
  55. package/dist/cjs/preview/parse/classifyInnerOperations.js +105 -0
  56. package/dist/cjs/preview/parse/errors.js +50 -0
  57. package/dist/cjs/preview/parse/index.js +34 -0
  58. package/dist/cjs/preview/parse/parseFacadeOperationCalldata.js +108 -0
  59. package/dist/cjs/preview/parse/parseOperationCalldata.js +85 -0
  60. package/dist/cjs/preview/parse/parsePoolOperationCalldata.js +89 -0
  61. package/dist/cjs/preview/parse/parseRWAFactoryOperationCalldata.js +104 -0
  62. package/dist/cjs/{history/inner-operations.js → preview/parse/types-adapters.js} +2 -2
  63. package/dist/cjs/preview/parse/types-facades.js +16 -0
  64. package/dist/cjs/preview/parse/types-pools.js +16 -0
  65. package/dist/cjs/preview/parse/types-rwa.js +16 -0
  66. package/dist/cjs/preview/parse/types.js +44 -0
  67. package/dist/cjs/preview/prerequisites/AllowancePrerequisite.js +78 -0
  68. package/dist/cjs/preview/prerequisites/BalancePrerequisite.js +95 -0
  69. package/dist/cjs/preview/prerequisites/Prerequisite.js +85 -0
  70. package/dist/cjs/preview/prerequisites/RWAOpenRequirementsPrerequisite.js +66 -0
  71. package/dist/cjs/preview/prerequisites/buildPrerequisites.js +297 -0
  72. package/dist/cjs/preview/prerequisites/index.js +36 -0
  73. package/dist/cjs/preview/prerequisites/prepareAction.js +48 -0
  74. package/dist/cjs/preview/prerequisites/runPrerequisites.js +71 -0
  75. package/dist/cjs/preview/prerequisites/types.js +16 -0
  76. package/dist/cjs/preview/preview/applyInnerOperations.js +132 -0
  77. package/dist/cjs/preview/preview/errors.js +52 -0
  78. package/dist/cjs/preview/preview/index.js +30 -0
  79. package/dist/cjs/preview/preview/previewAdjustCreditAccount.js +95 -0
  80. package/dist/cjs/preview/preview/previewOpenCreditAccount.js +69 -0
  81. package/dist/cjs/preview/preview/previewOperation.js +45 -0
  82. package/dist/cjs/preview/preview/previewPoolOperation.js +75 -0
  83. package/dist/cjs/preview/preview/types.js +16 -0
  84. package/dist/cjs/preview/preview/unwrapNativeCollateral.js +45 -0
  85. package/dist/cjs/preview/simulate/errors.js +91 -0
  86. package/dist/cjs/preview/simulate/index.js +40 -0
  87. package/dist/cjs/preview/simulate/simulateFacadeOperation.js +30 -0
  88. package/dist/cjs/preview/simulate/simulateOperation.js +41 -0
  89. package/dist/cjs/preview/simulate/simulatePoolOperation.js +91 -0
  90. package/dist/cjs/preview/simulate/simulateRWAOperation.js +30 -0
  91. package/dist/cjs/preview/simulate/types.js +16 -0
  92. package/dist/cjs/{history → preview/trace}/errors.js +0 -26
  93. package/dist/cjs/preview/trace/extractAdapterCallTraces.js +58 -0
  94. package/dist/cjs/{history → preview/trace}/extractTransfers.js +9 -12
  95. package/dist/cjs/{history → preview/trace}/findFacadeCalls.js +3 -3
  96. package/dist/cjs/preview/trace/index.js +30 -0
  97. package/dist/cjs/preview/trace/types.js +16 -0
  98. package/dist/cjs/sdk/MultichainSDK.js +1 -0
  99. package/dist/cjs/sdk/OnchainSDK.js +7 -3
  100. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +157 -4
  101. package/dist/cjs/sdk/base/BaseContract.js +4 -2
  102. package/dist/cjs/sdk/base/ChainContractsRegister.js +1 -0
  103. package/dist/cjs/sdk/market/MarketRegister.js +10 -5
  104. package/dist/cjs/sdk/market/ZapperRegister.js +54 -0
  105. package/dist/cjs/sdk/market/rwa/securitize/SecuritizeRWAFactory.js +30 -0
  106. package/dist/cjs/sdk/market/rwa/types.js +5 -2
  107. package/dist/cjs/sdk/market/zapper/IERC20ZapperContract.js +3 -38
  108. package/dist/cjs/sdk/market/zapper/IETHZapperContract.js +3 -38
  109. package/dist/cjs/sdk/market/zapper/ZapperContract.js +106 -0
  110. package/dist/cjs/sdk/market/zapper/createZapper.js +12 -4
  111. package/dist/cjs/sdk/market/zapper/{Zapper.js → errors.js} +13 -23
  112. package/dist/cjs/sdk/market/zapper/index.js +6 -2
  113. package/dist/cjs/sdk/market/zapper/types.js +16 -0
  114. package/dist/cjs/sdk/options.js +41 -17
  115. package/dist/cjs/sdk/router/AbstractRouterContract.js +21 -27
  116. package/dist/cjs/sdk/router/RouterV310Contract.js +11 -12
  117. package/dist/cjs/sdk/router/helpers.js +0 -5
  118. package/dist/cjs/sdk/utils/AddressMap.js +6 -0
  119. package/dist/cjs/sdk/utils/AssetsMap.js +62 -0
  120. package/dist/cjs/sdk/utils/index.js +2 -0
  121. package/dist/esm/abi/iZapper.js +62 -24
  122. package/dist/esm/common-utils/utils/index.js +1 -0
  123. package/dist/esm/common-utils/utils/trace.js +93 -0
  124. package/dist/esm/dev/AccountOpener.js +8 -13
  125. package/dist/esm/dev/index.js +1 -0
  126. package/dist/esm/dev/verifyTestnet.js +27 -0
  127. package/dist/esm/history/assembleOperations.js +8 -6
  128. package/dist/esm/history/classifyMulticallOperations.js +31 -23
  129. package/dist/esm/history/index.js +0 -1
  130. package/dist/esm/history/mapOperations.js +7 -0
  131. package/dist/esm/history/parseCreditAccountTransaction.js +3 -4
  132. package/dist/esm/history/toLegacyOperation.js +5 -1
  133. package/dist/esm/plugins/adapters/abi/iConvexV1BoosterAdapter.js +119 -0
  134. package/dist/esm/plugins/adapters/abi/index.js +1 -0
  135. package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +64 -38
  136. package/dist/esm/plugins/adapters/contracts/AbstractCurveAdapter.js +42 -0
  137. package/dist/esm/plugins/adapters/contracts/AccountMigratorAdapterContract.js +9 -0
  138. package/dist/esm/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +22 -1
  139. package/dist/esm/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +18 -1
  140. package/dist/esm/plugins/adapters/contracts/CamelotV3AdapterContract.js +23 -1
  141. package/dist/esm/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +22 -1
  142. package/dist/esm/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +30 -2
  143. package/dist/esm/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -7
  144. package/dist/esm/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -7
  145. package/dist/esm/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -7
  146. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
  147. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -7
  148. package/dist/esm/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -7
  149. package/dist/esm/plugins/adapters/contracts/DaiUsdsAdapterContract.js +17 -1
  150. package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +19 -1
  151. package/dist/esm/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +17 -1
  152. package/dist/esm/plugins/adapters/contracts/FluidDexAdapterContract.js +18 -1
  153. package/dist/esm/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +24 -1
  154. package/dist/esm/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +13 -1
  155. package/dist/esm/plugins/adapters/contracts/LidoV1AdapterContract.js +14 -1
  156. package/dist/esm/plugins/adapters/contracts/MellowDVVAdapterContract.js +18 -1
  157. package/dist/esm/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +18 -1
  158. package/dist/esm/plugins/adapters/contracts/MellowWrapperAdapterContract.js +14 -1
  159. package/dist/esm/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +13 -1
  160. package/dist/esm/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +15 -1
  161. package/dist/esm/plugins/adapters/contracts/PendleRouterAdapterContract.js +61 -1
  162. package/dist/esm/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +14 -1
  163. package/dist/esm/plugins/adapters/contracts/SecuritizeSwapAdapterContract.js +25 -2
  164. package/dist/esm/plugins/adapters/contracts/StakingRewardsAdapterContract.js +20 -1
  165. package/dist/esm/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +13 -1
  166. package/dist/esm/plugins/adapters/contracts/UniswapV2AdapterContract.js +10 -0
  167. package/dist/esm/plugins/adapters/contracts/UniswapV3AdapterContract.js +20 -0
  168. package/dist/esm/plugins/adapters/contracts/UniswapV4AdapterContract.js +18 -1
  169. package/dist/esm/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +17 -1
  170. package/dist/esm/plugins/adapters/contracts/VelodromeV2AdapterContract.js +13 -1
  171. package/dist/esm/plugins/adapters/contracts/WstETHV1AdapterContract.js +18 -1
  172. package/dist/esm/preview/index.js +3 -0
  173. package/dist/esm/preview/package.json +1 -0
  174. package/dist/esm/preview/parse/classifyInnerOperations.js +81 -0
  175. package/dist/esm/preview/parse/errors.js +24 -0
  176. package/dist/esm/preview/parse/index.js +7 -0
  177. package/dist/esm/preview/parse/parseFacadeOperationCalldata.js +84 -0
  178. package/dist/esm/preview/parse/parseOperationCalldata.js +66 -0
  179. package/dist/esm/preview/parse/parsePoolOperationCalldata.js +65 -0
  180. package/dist/esm/preview/parse/parseRWAFactoryOperationCalldata.js +85 -0
  181. package/dist/esm/preview/parse/types-facades.js +0 -0
  182. package/dist/esm/preview/parse/types-pools.js +0 -0
  183. package/dist/esm/preview/parse/types-rwa.js +0 -0
  184. package/dist/esm/preview/parse/types.js +14 -0
  185. package/dist/esm/preview/prerequisites/AllowancePrerequisite.js +57 -0
  186. package/dist/esm/preview/prerequisites/BalancePrerequisite.js +74 -0
  187. package/dist/esm/preview/prerequisites/Prerequisite.js +63 -0
  188. package/dist/esm/preview/prerequisites/RWAOpenRequirementsPrerequisite.js +42 -0
  189. package/dist/esm/preview/prerequisites/buildPrerequisites.js +279 -0
  190. package/dist/esm/preview/prerequisites/index.js +8 -0
  191. package/dist/esm/preview/prerequisites/prepareAction.js +23 -0
  192. package/dist/esm/preview/prerequisites/runPrerequisites.js +47 -0
  193. package/dist/esm/preview/prerequisites/types.js +0 -0
  194. package/dist/esm/preview/preview/applyInnerOperations.js +110 -0
  195. package/dist/esm/preview/preview/errors.js +27 -0
  196. package/dist/esm/preview/preview/index.js +5 -0
  197. package/dist/esm/preview/preview/previewAdjustCreditAccount.js +79 -0
  198. package/dist/esm/preview/preview/previewOpenCreditAccount.js +51 -0
  199. package/dist/esm/preview/preview/previewOperation.js +21 -0
  200. package/dist/esm/preview/preview/previewPoolOperation.js +53 -0
  201. package/dist/esm/preview/preview/types.js +0 -0
  202. package/dist/esm/preview/preview/unwrapNativeCollateral.js +21 -0
  203. package/dist/esm/preview/simulate/errors.js +69 -0
  204. package/dist/esm/preview/simulate/index.js +12 -0
  205. package/dist/esm/preview/simulate/simulateFacadeOperation.js +6 -0
  206. package/dist/esm/preview/simulate/simulateOperation.js +20 -0
  207. package/dist/esm/preview/simulate/simulatePoolOperation.js +67 -0
  208. package/dist/esm/preview/simulate/simulateRWAOperation.js +6 -0
  209. package/dist/esm/preview/simulate/types.js +0 -0
  210. package/dist/esm/{history → preview/trace}/errors.js +0 -24
  211. package/dist/esm/preview/trace/extractAdapterCallTraces.js +40 -0
  212. package/dist/esm/{history → preview/trace}/extractTransfers.js +9 -12
  213. package/dist/esm/{history → preview/trace}/findFacadeCalls.js +4 -2
  214. package/dist/esm/preview/trace/index.js +5 -0
  215. package/dist/esm/preview/trace/types.js +0 -0
  216. package/dist/esm/sdk/MultichainSDK.js +1 -0
  217. package/dist/esm/sdk/OnchainSDK.js +7 -3
  218. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +158 -5
  219. package/dist/esm/sdk/base/BaseContract.js +4 -2
  220. package/dist/esm/sdk/base/ChainContractsRegister.js +1 -0
  221. package/dist/esm/sdk/market/MarketRegister.js +10 -5
  222. package/dist/esm/sdk/market/ZapperRegister.js +54 -0
  223. package/dist/esm/sdk/market/rwa/securitize/SecuritizeRWAFactory.js +33 -1
  224. package/dist/esm/sdk/market/rwa/types.js +5 -2
  225. package/dist/esm/sdk/market/zapper/IERC20ZapperContract.js +3 -38
  226. package/dist/esm/sdk/market/zapper/IETHZapperContract.js +3 -38
  227. package/dist/esm/sdk/market/zapper/ZapperContract.js +82 -0
  228. package/dist/esm/sdk/market/zapper/createZapper.js +12 -4
  229. package/dist/esm/sdk/market/zapper/errors.js +13 -0
  230. package/dist/esm/sdk/market/zapper/index.js +3 -1
  231. package/dist/esm/sdk/market/zapper/types.js +0 -0
  232. package/dist/esm/sdk/options.js +39 -15
  233. package/dist/esm/sdk/router/AbstractRouterContract.js +25 -29
  234. package/dist/esm/sdk/router/RouterV310Contract.js +11 -12
  235. package/dist/esm/sdk/router/helpers.js +0 -4
  236. package/dist/esm/sdk/utils/AddressMap.js +6 -0
  237. package/dist/esm/sdk/utils/AssetsMap.js +38 -0
  238. package/dist/esm/sdk/utils/index.js +1 -0
  239. package/dist/types/abi/iERC20Zapper.d.ts +91 -23
  240. package/dist/types/abi/iETHZapper.d.ts +91 -23
  241. package/dist/types/abi/iZapper.d.ts +91 -23
  242. package/dist/types/common-utils/utils/index.d.ts +1 -0
  243. package/dist/types/common-utils/utils/strategies/assets/assets.d.ts +1 -1
  244. package/dist/types/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.d.ts +1 -1
  245. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-apy.d.ts +1 -1
  246. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-points.d.ts +1 -1
  247. package/dist/types/common-utils/utils/strategies/tokens/add-amount-in-target.d.ts +1 -1
  248. package/dist/types/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.d.ts +1 -1
  249. package/dist/types/common-utils/utils/strategies/types/strategy-earnings.d.ts +1 -1
  250. package/dist/types/common-utils/utils/trace.d.ts +73 -0
  251. package/dist/types/common-utils/utils/validation/validate-balances.d.ts +1 -1
  252. package/dist/types/common-utils/utils/validation/validate-open-account.d.ts +1 -1
  253. package/dist/types/common-utils/utils/validation/validate-quota.d.ts +1 -1
  254. package/dist/types/common-utils/utils/validation/validate-token-to-obtain.d.ts +1 -1
  255. package/dist/types/dev/index.d.ts +1 -0
  256. package/dist/types/dev/verifyTestnet.d.ts +24 -0
  257. package/dist/types/history/assembleOperations.d.ts +11 -6
  258. package/dist/types/history/classifyMulticallOperations.d.ts +21 -9
  259. package/dist/types/history/index.d.ts +0 -1
  260. package/dist/types/history/mapOperations.d.ts +7 -9
  261. package/dist/types/history/types.d.ts +22 -71
  262. package/dist/types/plugins/adapters/abi/iConvexV1BoosterAdapter.d.ts +204 -0
  263. package/dist/types/plugins/adapters/abi/index.d.ts +1 -0
  264. package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +33 -16
  265. package/dist/types/plugins/adapters/contracts/AbstractCurveAdapter.d.ts +18 -0
  266. package/dist/types/plugins/adapters/contracts/AccountMigratorAdapterContract.d.ts +10 -1
  267. package/dist/types/plugins/adapters/contracts/BalancerV3RouterAdapterContract.d.ts +4 -2
  268. package/dist/types/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.d.ts +4 -2
  269. package/dist/types/plugins/adapters/contracts/CamelotV3AdapterContract.d.ts +4 -2
  270. package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +5 -3
  271. package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +9 -7
  272. package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +3 -6
  273. package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +3 -6
  274. package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +3 -6
  275. package/dist/types/plugins/adapters/contracts/CurveV1AdapterDeposit.d.ts +3 -3
  276. package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +3 -6
  277. package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +3 -6
  278. package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +5 -3
  279. package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +5 -3
  280. package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +5 -3
  281. package/dist/types/plugins/adapters/contracts/FluidDexAdapterContract.d.ts +4 -2
  282. package/dist/types/plugins/adapters/contracts/InfinifiGatewayAdapterContract.d.ts +4 -2
  283. package/dist/types/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.d.ts +4 -2
  284. package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +5 -3
  285. package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +5 -3
  286. package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +5 -3
  287. package/dist/types/plugins/adapters/contracts/MellowWrapperAdapterContract.d.ts +4 -2
  288. package/dist/types/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.d.ts +4 -2
  289. package/dist/types/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.d.ts +4 -2
  290. package/dist/types/plugins/adapters/contracts/PendleRouterAdapterContract.d.ts +4 -2
  291. package/dist/types/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.d.ts +4 -2
  292. package/dist/types/plugins/adapters/contracts/SecuritizeSwapAdapterContract.d.ts +15 -3
  293. package/dist/types/plugins/adapters/contracts/StakingRewardsAdapterContract.d.ts +4 -2
  294. package/dist/types/plugins/adapters/contracts/TraderJoeRouterAdapterContract.d.ts +4 -2
  295. package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +4 -2
  296. package/dist/types/plugins/adapters/contracts/UniswapV3AdapterContract.d.ts +3 -1
  297. package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +5 -3
  298. package/dist/types/plugins/adapters/contracts/UpshiftVaultAdapterContract.d.ts +4 -2
  299. package/dist/types/plugins/adapters/contracts/VelodromeV2AdapterContract.d.ts +4 -2
  300. package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +5 -3
  301. package/dist/types/plugins/adapters/transferHelpers.d.ts +1 -1
  302. package/dist/types/plugins/adapters/transfers.d.ts +17 -0
  303. package/dist/types/plugins/adapters/types.d.ts +18 -46
  304. package/dist/types/preview/index.d.ts +3 -0
  305. package/dist/types/preview/parse/classifyInnerOperations.d.ts +19 -0
  306. package/dist/types/preview/parse/errors.d.ts +18 -0
  307. package/dist/types/preview/parse/index.d.ts +7 -0
  308. package/dist/types/preview/parse/parseFacadeOperationCalldata.d.ts +19 -0
  309. package/dist/types/preview/parse/parseOperationCalldata.d.ts +23 -0
  310. package/dist/types/preview/parse/parsePoolOperationCalldata.d.ts +17 -0
  311. package/dist/types/preview/parse/parseRWAFactoryOperationCalldata.d.ts +22 -0
  312. package/dist/types/preview/parse/types-adapters.d.ts +73 -0
  313. package/dist/types/preview/parse/types-facades.d.ts +147 -0
  314. package/dist/types/preview/parse/types-pools.d.ts +143 -0
  315. package/dist/types/preview/parse/types-rwa.d.ts +48 -0
  316. package/dist/types/preview/parse/types.d.ts +49 -0
  317. package/dist/types/preview/prerequisites/AllowancePrerequisite.d.ts +22 -0
  318. package/dist/types/preview/prerequisites/BalancePrerequisite.d.ts +26 -0
  319. package/dist/types/preview/prerequisites/Prerequisite.d.ts +60 -0
  320. package/dist/types/preview/prerequisites/RWAOpenRequirementsPrerequisite.d.ts +36 -0
  321. package/dist/types/preview/prerequisites/buildPrerequisites.d.ts +25 -0
  322. package/dist/types/preview/prerequisites/index.d.ts +8 -0
  323. package/dist/types/preview/prerequisites/prepareAction.d.ts +52 -0
  324. package/dist/types/preview/prerequisites/runPrerequisites.d.ts +12 -0
  325. package/dist/types/preview/prerequisites/types.d.ts +80 -0
  326. package/dist/types/preview/preview/applyInnerOperations.d.ts +77 -0
  327. package/dist/types/preview/preview/errors.d.ts +21 -0
  328. package/dist/types/preview/preview/index.d.ts +5 -0
  329. package/dist/types/preview/preview/previewAdjustCreditAccount.d.ts +11 -0
  330. package/dist/types/preview/preview/previewOpenCreditAccount.d.ts +4 -0
  331. package/dist/types/preview/preview/previewOperation.d.ts +7 -0
  332. package/dist/types/preview/preview/previewPoolOperation.d.ts +5 -0
  333. package/dist/types/preview/preview/types.d.ts +177 -0
  334. package/dist/types/preview/preview/unwrapNativeCollateral.d.ts +20 -0
  335. package/dist/types/preview/simulate/errors.d.ts +45 -0
  336. package/dist/types/preview/simulate/index.d.ts +10 -0
  337. package/dist/types/preview/simulate/simulateFacadeOperation.d.ts +23 -0
  338. package/dist/types/preview/simulate/simulateOperation.d.ts +18 -0
  339. package/dist/types/preview/simulate/simulatePoolOperation.d.ts +14 -0
  340. package/dist/types/preview/simulate/simulateRWAOperation.d.ts +23 -0
  341. package/dist/types/preview/simulate/types.d.ts +52 -0
  342. package/dist/types/{history → preview/trace}/errors.d.ts +0 -10
  343. package/dist/types/preview/trace/extractAdapterCallTraces.d.ts +23 -0
  344. package/dist/types/{history → preview/trace}/extractTransfers.d.ts +14 -5
  345. package/dist/types/{history → preview/trace}/findFacadeCalls.d.ts +3 -2
  346. package/dist/types/preview/trace/index.d.ts +5 -0
  347. package/dist/types/preview/trace/types.d.ts +21 -0
  348. package/dist/types/sdk/MultichainSDK.d.ts +5 -0
  349. package/dist/types/sdk/OnchainSDK.d.ts +4 -0
  350. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +22 -2
  351. package/dist/types/sdk/accounts/types.d.ts +84 -2
  352. package/dist/types/sdk/base/BaseContract.d.ts +1 -1
  353. package/dist/types/sdk/base/TokensMeta.d.ts +1 -1
  354. package/dist/types/sdk/base/types.d.ts +18 -0
  355. package/dist/types/sdk/market/MarketRegister.d.ts +15 -6
  356. package/dist/types/sdk/market/ZapperRegister.d.ts +25 -4
  357. package/dist/types/sdk/market/rwa/securitize/SecuritizeRWAFactory.d.ts +6 -1
  358. package/dist/types/sdk/market/rwa/types.d.ts +13 -5
  359. package/dist/types/sdk/market/zapper/IERC20ZapperContract.d.ts +93 -39
  360. package/dist/types/sdk/market/zapper/IETHZapperContract.d.ts +93 -39
  361. package/dist/types/sdk/market/zapper/ZapperContract.d.ts +35 -0
  362. package/dist/types/sdk/market/zapper/createZapper.d.ts +2 -4
  363. package/dist/types/sdk/market/zapper/errors.d.ts +10 -0
  364. package/dist/types/sdk/market/zapper/index.d.ts +3 -1
  365. package/dist/types/sdk/market/zapper/types.d.ts +64 -0
  366. package/dist/types/sdk/options.d.ts +10 -5
  367. package/dist/types/sdk/pools/types.d.ts +4 -4
  368. package/dist/types/sdk/router/AbstractRouterContract.d.ts +5 -5
  369. package/dist/types/sdk/router/helpers.d.ts +1 -2
  370. package/dist/types/sdk/router/types.d.ts +1 -15
  371. package/dist/types/sdk/types/state-human.d.ts +9 -0
  372. package/dist/types/sdk/types/state.d.ts +7 -0
  373. package/dist/types/sdk/utils/AddressMap.d.ts +4 -0
  374. package/dist/types/sdk/utils/AssetsMap.d.ts +27 -0
  375. package/dist/types/sdk/utils/index.d.ts +1 -0
  376. package/package.json +8 -3
  377. package/dist/cjs/history/extractProtocolCalls.js +0 -53
  378. package/dist/esm/history/extractProtocolCalls.js +0 -32
  379. package/dist/esm/history/trace-utils.js +0 -36
  380. package/dist/esm/sdk/market/zapper/Zapper.js +0 -23
  381. package/dist/types/history/extractProtocolCalls.d.ts +0 -8
  382. package/dist/types/history/inner-operations.d.ts +0 -57
  383. package/dist/types/history/internal-types.d.ts +0 -47
  384. package/dist/types/history/trace-utils.d.ts +0 -12
  385. package/dist/types/sdk/market/zapper/Zapper.d.ts +0 -13
  386. /package/dist/esm/{history/inner-operations.js → plugins/adapters/transfers.js} +0 -0
  387. /package/dist/esm/{history/internal-types.js → preview/parse/types-adapters.js} +0 -0
@@ -0,0 +1,65 @@
1
+ import { UnsupportedPoolFunctionError } from "./errors.js";
2
+ function parsePoolOperationCalldata(props) {
3
+ const { sdk, pool, calldata } = props;
4
+ const parsed = sdk.parseFunctionDataV2(pool.address, calldata);
5
+ const functionName = parsed.functionName.split("(")[0];
6
+ const { rawArgs } = parsed;
7
+ const underlying = pool.underlying;
8
+ switch (functionName) {
9
+ case "deposit":
10
+ case "depositWithReferral":
11
+ return {
12
+ operation: "Deposit",
13
+ pool: pool.address,
14
+ receiver: rawArgs.receiver,
15
+ assets: rawArgs.assets,
16
+ underlying,
17
+ tokenIn: underlying,
18
+ tokenOut: pool.address,
19
+ zapper: void 0,
20
+ referralCode: functionName === "depositWithReferral" ? rawArgs.referralCode : void 0
21
+ };
22
+ case "mint":
23
+ case "mintWithReferral":
24
+ return {
25
+ operation: "Mint",
26
+ pool: pool.address,
27
+ receiver: rawArgs.receiver,
28
+ shares: rawArgs.shares,
29
+ underlying,
30
+ tokenIn: underlying,
31
+ tokenOut: pool.address,
32
+ zapper: void 0,
33
+ referralCode: functionName === "mintWithReferral" ? rawArgs.referralCode : void 0
34
+ };
35
+ case "withdraw":
36
+ return {
37
+ operation: "Withdraw",
38
+ pool: pool.address,
39
+ receiver: rawArgs.receiver,
40
+ owner: rawArgs.owner,
41
+ assets: rawArgs.assets,
42
+ underlying,
43
+ tokenIn: pool.address,
44
+ tokenOut: underlying,
45
+ zapper: void 0
46
+ };
47
+ case "redeem":
48
+ return {
49
+ operation: "Redeem",
50
+ pool: pool.address,
51
+ receiver: rawArgs.receiver,
52
+ owner: rawArgs.owner,
53
+ shares: rawArgs.shares,
54
+ underlying,
55
+ tokenIn: pool.address,
56
+ tokenOut: underlying,
57
+ zapper: void 0
58
+ };
59
+ default:
60
+ throw new UnsupportedPoolFunctionError(pool.address, parsed.functionName);
61
+ }
62
+ }
63
+ export {
64
+ parsePoolOperationCalldata
65
+ };
@@ -0,0 +1,85 @@
1
+ import { AbstractAdapterContract } from "../../plugins/adapters/index.js";
2
+ import {
3
+ CreditFacadeV310Contract,
4
+ hexEq,
5
+ isRWAFactory,
6
+ RWA_FACTORY_SECURITIZE
7
+ } from "../../sdk/index.js";
8
+ import { classifyInnerOperations } from "./classifyInnerOperations.js";
9
+ function parseRWAFactoryOperationCalldata(props) {
10
+ const { contractType, address } = props.factory;
11
+ if (isRWAFactory(props.factory, RWA_FACTORY_SECURITIZE)) {
12
+ return parseSecuritizeOperationCalldata(props);
13
+ }
14
+ throw new Error(
15
+ `unsupported RWA factory type "${contractType}" on ${address}`
16
+ );
17
+ }
18
+ function parseSecuritizeOperationCalldata(props) {
19
+ const { sdk, factory, calldata } = props;
20
+ const parsed = sdk.parseFunctionDataV2(factory.address, calldata);
21
+ const functionName = parsed.functionName.split("(")[0];
22
+ const { rawArgs } = parsed;
23
+ const innerCalls = rawArgs.calls ?? [];
24
+ const tokensToRegister = [
25
+ ...rawArgs.tokensToRegister ?? []
26
+ ];
27
+ const signaturesToCache = [
28
+ ...rawArgs.signaturesToCache ?? []
29
+ ];
30
+ const suite = functionName === "openCreditAccount" ? sdk.marketRegister.findCreditManager(rawArgs.creditManager) : resolveSuiteForMulticall(sdk, factory, innerCalls);
31
+ const metadata = {
32
+ factory: factory.address,
33
+ creditManager: suite.creditManager.address,
34
+ creditFacade: suite.creditFacade.address
35
+ };
36
+ const multicall = classifyInnerOperations(innerCalls, {
37
+ sdk,
38
+ underlying: suite.underlying
39
+ });
40
+ switch (functionName) {
41
+ case "openCreditAccount":
42
+ return {
43
+ ...metadata,
44
+ operation: "SecuritizeOpenCreditAccount",
45
+ multicall,
46
+ tokensToRegister,
47
+ signaturesToCache
48
+ };
49
+ case "multicall":
50
+ return {
51
+ ...metadata,
52
+ operation: "SecuritizeMulticall",
53
+ creditAccount: rawArgs.creditAccount,
54
+ multicall,
55
+ tokensToRegister,
56
+ signaturesToCache
57
+ };
58
+ default:
59
+ throw new Error(
60
+ `unsupported RWA factory function "${parsed.functionName}" on ${factory.address}`
61
+ );
62
+ }
63
+ }
64
+ function resolveSuiteForMulticall(sdk, factory, innerCalls) {
65
+ for (const call of innerCalls) {
66
+ const contract = sdk.getContract(call.target);
67
+ if (contract instanceof CreditFacadeV310Contract) {
68
+ const suite = sdk.marketRegister.creditManagers.find(
69
+ (cm) => hexEq(cm.creditFacade.address, call.target)
70
+ );
71
+ if (suite) {
72
+ return suite;
73
+ }
74
+ }
75
+ if (contract instanceof AbstractAdapterContract) {
76
+ return sdk.marketRegister.findCreditManager(contract.creditManager);
77
+ }
78
+ }
79
+ throw new Error(
80
+ `cannot resolve credit manager for RWA factory multicall on ${factory.address}`
81
+ );
82
+ }
83
+ export {
84
+ parseRWAFactoryOperationCalldata
85
+ };
File without changes
File without changes
File without changes
@@ -0,0 +1,14 @@
1
+ export * from "./types-adapters.js";
2
+ export * from "./types-facades.js";
3
+ export * from "./types-pools.js";
4
+ export * from "./types-rwa.js";
5
+ function isPoolOperation(tx) {
6
+ return tx.operation === "Deposit" || tx.operation === "Mint" || tx.operation === "Withdraw" || tx.operation === "Redeem";
7
+ }
8
+ function isRWAOperation(tx) {
9
+ return tx.operation === "SecuritizeOpenCreditAccount" || tx.operation === "SecuritizeMulticall";
10
+ }
11
+ export {
12
+ isPoolOperation,
13
+ isRWAOperation
14
+ };
@@ -0,0 +1,57 @@
1
+ import { erc20Abi } from "viem";
2
+ import {
3
+ Prerequisite,
4
+ toPrerequisiteError
5
+ } from "./Prerequisite.js";
6
+ class AllowancePrerequisite extends Prerequisite {
7
+ #id;
8
+ #title;
9
+ #detail;
10
+ constructor(props) {
11
+ super();
12
+ this.#id = props.id ?? `allowance:${props.token}:${props.owner}:${props.spender}`;
13
+ this.#title = props.title ?? "Token approval";
14
+ this.#detail = {
15
+ token: props.token,
16
+ owner: props.owner,
17
+ spender: props.spender,
18
+ required: props.required
19
+ };
20
+ }
21
+ get id() {
22
+ return this.#id;
23
+ }
24
+ get kind() {
25
+ return "allowance";
26
+ }
27
+ get title() {
28
+ return this.#title;
29
+ }
30
+ get detail() {
31
+ return this.#detail;
32
+ }
33
+ calls() {
34
+ return [
35
+ {
36
+ address: this.#detail.token,
37
+ abi: erc20Abi,
38
+ functionName: "allowance",
39
+ args: [this.#detail.owner, this.#detail.spender]
40
+ }
41
+ ];
42
+ }
43
+ resolve(slice) {
44
+ const res = slice[0];
45
+ if (!res || res.status === "failure") {
46
+ return this.errorResult(toPrerequisiteError(res?.error));
47
+ }
48
+ const actual = res.result;
49
+ return this.satisfiedResult(actual >= this.#detail.required, {
50
+ ...this.#detail,
51
+ actual
52
+ });
53
+ }
54
+ }
55
+ export {
56
+ AllowancePrerequisite
57
+ };
@@ -0,0 +1,74 @@
1
+ import { erc20Abi } from "viem";
2
+ import { iMulticall3Abi } from "../../abi/iMulticall3.js";
3
+ import { hexEq, NATIVE_ADDRESS } from "../../sdk/index.js";
4
+ import {
5
+ Prerequisite,
6
+ toPrerequisiteError
7
+ } from "./Prerequisite.js";
8
+ class BalancePrerequisite extends Prerequisite {
9
+ #id;
10
+ #title;
11
+ #detail;
12
+ constructor(props) {
13
+ super();
14
+ this.#id = props.id ?? `balance:${props.token}:${props.owner}`;
15
+ this.#title = props.title ?? "Sufficient balance";
16
+ this.#detail = {
17
+ token: props.token,
18
+ owner: props.owner,
19
+ required: props.required
20
+ };
21
+ }
22
+ get id() {
23
+ return this.#id;
24
+ }
25
+ get kind() {
26
+ return "balance";
27
+ }
28
+ get title() {
29
+ return this.#title;
30
+ }
31
+ get detail() {
32
+ return this.#detail;
33
+ }
34
+ calls(ctx) {
35
+ if (hexEq(this.#detail.token, NATIVE_ADDRESS)) {
36
+ const multicall3 = ctx.sdk.client.chain.contracts?.multicall3?.address;
37
+ if (!multicall3) {
38
+ throw new Error(
39
+ "multicall3 is not configured for this chain, cannot read native balance"
40
+ );
41
+ }
42
+ return [
43
+ {
44
+ address: multicall3,
45
+ abi: iMulticall3Abi,
46
+ functionName: "getEthBalance",
47
+ args: [this.#detail.owner]
48
+ }
49
+ ];
50
+ }
51
+ return [
52
+ {
53
+ address: this.#detail.token,
54
+ abi: erc20Abi,
55
+ functionName: "balanceOf",
56
+ args: [this.#detail.owner]
57
+ }
58
+ ];
59
+ }
60
+ resolve(slice) {
61
+ const res = slice[0];
62
+ if (!res || res.status === "failure") {
63
+ return this.errorResult(toPrerequisiteError(res?.error));
64
+ }
65
+ const actual = res.result;
66
+ return this.satisfiedResult(actual >= this.#detail.required, {
67
+ ...this.#detail,
68
+ actual
69
+ });
70
+ }
71
+ }
72
+ export {
73
+ BalancePrerequisite
74
+ };
@@ -0,0 +1,63 @@
1
+ import {
2
+ BaseError,
3
+ ContractFunctionRevertedError
4
+ } from "viem";
5
+ function toPrerequisiteError(cause) {
6
+ if (cause instanceof BaseError) {
7
+ const reverted = cause.walk(
8
+ (e) => e instanceof ContractFunctionRevertedError
9
+ );
10
+ if (reverted instanceof ContractFunctionRevertedError) {
11
+ return {
12
+ reason: reverted.data?.errorName ?? reverted.shortMessage ?? "reverted",
13
+ cause
14
+ };
15
+ }
16
+ return { reason: cause.shortMessage ?? cause.name, cause };
17
+ }
18
+ if (cause instanceof Error) {
19
+ return { reason: cause.message, cause };
20
+ }
21
+ return { reason: "unknown error", cause };
22
+ }
23
+ class Prerequisite {
24
+ /**
25
+ * Verifies this prerequisite on its own using an `allowFailure` multicall.
26
+ * Prefer `verifyPrerequisites` to batch several checks into one round-trip.
27
+ */
28
+ async verify(ctx) {
29
+ const calls = this.calls(ctx);
30
+ const results = await ctx.sdk.client.multicall({
31
+ allowFailure: true,
32
+ contracts: calls,
33
+ // `undefined` lets viem read at `latest`; `blockNumber` is only set for
34
+ // testnet forks pinned to a specific block.
35
+ blockNumber: ctx.blockNumber
36
+ });
37
+ return this.resolve(results);
38
+ }
39
+ /** Builds a successful result; `detail` carries the on-chain `actual`. */
40
+ satisfiedResult(satisfied, detail) {
41
+ return {
42
+ id: this.id,
43
+ kind: this.kind,
44
+ title: this.title,
45
+ detail,
46
+ satisfied
47
+ };
48
+ }
49
+ /** Builds a failed result from a decoded read error. */
50
+ errorResult(error) {
51
+ return {
52
+ id: this.id,
53
+ kind: this.kind,
54
+ title: this.title,
55
+ detail: this.detail,
56
+ error
57
+ };
58
+ }
59
+ }
60
+ export {
61
+ Prerequisite,
62
+ toPrerequisiteError
63
+ };
@@ -0,0 +1,42 @@
1
+ import { Prerequisite } from "./Prerequisite.js";
2
+ class RWAOpenRequirementsPrerequisite extends Prerequisite {
3
+ #id;
4
+ #title;
5
+ #detail;
6
+ constructor(props) {
7
+ super();
8
+ this.#id = props.id ?? `rwaOpenRequirements:${props.factory}:${props.token}`;
9
+ this.#title = props.title ?? "RWA account requirements fulfilled";
10
+ this.#detail = props.requirements;
11
+ }
12
+ get id() {
13
+ return this.#id;
14
+ }
15
+ get kind() {
16
+ return "rwaOpenRequirements";
17
+ }
18
+ get title() {
19
+ return this.#title;
20
+ }
21
+ get detail() {
22
+ return this.#detail;
23
+ }
24
+ /** Pre-resolved: no on-chain reads to contribute. */
25
+ calls() {
26
+ return [];
27
+ }
28
+ resolve() {
29
+ return this.satisfiedResult(this.#satisfied(), this.#detail);
30
+ }
31
+ /**
32
+ * Satisfied when the borrower has nothing left to do: no tokens pending
33
+ * issuer-side registration and no messages left to sign.
34
+ */
35
+ #satisfied() {
36
+ const { securitizeTokensToRegister, requiredSignatures } = this.#detail;
37
+ return securitizeTokensToRegister.length === 0 && requiredSignatures.length === 0;
38
+ }
39
+ }
40
+ export {
41
+ RWAOpenRequirementsPrerequisite
42
+ };
@@ -0,0 +1,279 @@
1
+ import { isAddressEqual } from "viem";
2
+ import {
3
+ AddressSet,
4
+ AssetsMap,
5
+ NATIVE_ADDRESS
6
+ } from "../../sdk/index.js";
7
+ import {
8
+ parseOperationCalldata
9
+ } from "../parse/parseOperationCalldata.js";
10
+ import { AllowancePrerequisite } from "./AllowancePrerequisite.js";
11
+ import { BalancePrerequisite } from "./BalancePrerequisite.js";
12
+ import { RWAOpenRequirementsPrerequisite } from "./RWAOpenRequirementsPrerequisite.js";
13
+ async function buildPrerequisites(input) {
14
+ const { sdk, sender: wallet, blockNumber } = input;
15
+ const tx = parseOperationCalldata(input);
16
+ const ctx = { sdk, wallet, blockNumber };
17
+ switch (tx.operation) {
18
+ // Deposit and Mint both pull the underlying from the caller into the pool;
19
+ // they only differ in which side (assets vs shares) the caller specifies.
20
+ // The exact underlying amount for Mint is resolved by the pool, so we can
21
+ // only require an allowance/balance against the known specified amount —
22
+ // here we approximate Mint by its shares amount (a lower bound on assets is
23
+ // not knowable from calldata alone).
24
+ case "Deposit":
25
+ if (tx.zapper) {
26
+ const prereqs = [];
27
+ if (!isAddressEqual(tx.tokenIn, NATIVE_ADDRESS)) {
28
+ prereqs.push(
29
+ new AllowancePrerequisite({
30
+ token: tx.tokenIn,
31
+ owner: wallet,
32
+ spender: tx.zapper,
33
+ required: tx.assets,
34
+ title: "Token approved to zapper"
35
+ })
36
+ );
37
+ }
38
+ prereqs.push(
39
+ new BalancePrerequisite({
40
+ token: tx.tokenIn,
41
+ owner: wallet,
42
+ required: tx.assets,
43
+ title: "Sufficient token balance"
44
+ })
45
+ );
46
+ return prereqs;
47
+ }
48
+ return [
49
+ new AllowancePrerequisite({
50
+ token: tx.underlying,
51
+ owner: wallet,
52
+ spender: tx.pool,
53
+ required: tx.assets,
54
+ title: "Token approved to pool"
55
+ }),
56
+ new BalancePrerequisite({
57
+ token: tx.underlying,
58
+ owner: wallet,
59
+ required: tx.assets,
60
+ title: "Sufficient token balance"
61
+ })
62
+ ];
63
+ case "Mint":
64
+ return [
65
+ new AllowancePrerequisite({
66
+ token: tx.underlying,
67
+ owner: wallet,
68
+ spender: tx.pool,
69
+ required: tx.shares,
70
+ title: "Token approved to pool"
71
+ }),
72
+ new BalancePrerequisite({
73
+ token: tx.underlying,
74
+ owner: wallet,
75
+ required: tx.shares,
76
+ title: "Sufficient token balance"
77
+ })
78
+ ];
79
+ // Redeem and Withdraw both burn LP shares from `owner`; they only differ in
80
+ // which side (shares vs assets) the caller specifies.
81
+ case "Redeem": {
82
+ if (tx.zapper) {
83
+ return [
84
+ new BalancePrerequisite({
85
+ token: tx.tokenIn,
86
+ owner: wallet,
87
+ required: tx.shares,
88
+ title: "Sufficient share token balance"
89
+ }),
90
+ new AllowancePrerequisite({
91
+ token: tx.tokenIn,
92
+ owner: wallet,
93
+ spender: tx.zapper,
94
+ required: tx.shares,
95
+ title: "Share token approved to zapper"
96
+ })
97
+ ];
98
+ }
99
+ const prereqs = [
100
+ new BalancePrerequisite({
101
+ token: tx.pool,
102
+ owner: tx.owner,
103
+ required: tx.shares,
104
+ title: "Sufficient LP token balance"
105
+ })
106
+ ];
107
+ if (!isAddressEqual(tx.owner, wallet)) {
108
+ prereqs.push(
109
+ new AllowancePrerequisite({
110
+ token: tx.pool,
111
+ owner: tx.owner,
112
+ spender: wallet,
113
+ required: tx.shares,
114
+ title: "LP token approved to caller"
115
+ })
116
+ );
117
+ }
118
+ return prereqs;
119
+ }
120
+ case "Withdraw": {
121
+ const prereqs = [
122
+ new BalancePrerequisite({
123
+ token: tx.pool,
124
+ owner: tx.owner,
125
+ required: tx.assets,
126
+ title: "Sufficient LP token balance"
127
+ })
128
+ ];
129
+ if (!isAddressEqual(tx.owner, wallet)) {
130
+ prereqs.push(
131
+ new AllowancePrerequisite({
132
+ token: tx.pool,
133
+ owner: tx.owner,
134
+ spender: wallet,
135
+ required: tx.assets,
136
+ title: "LP token approved to caller"
137
+ })
138
+ );
139
+ }
140
+ return prereqs;
141
+ }
142
+ case "MultiCall":
143
+ case "BotMulticall":
144
+ case "OpenCreditAccount":
145
+ case "CloseCreditAccount":
146
+ case "LiquidateCreditAccount":
147
+ return collateralPrerequisites(
148
+ tx.operation === "OpenCreditAccount" ? { creditManager: tx.creditManager, borrower: wallet } : {
149
+ creditManager: tx.creditManager,
150
+ creditAccount: tx.creditAccount
151
+ },
152
+ tx.multicall,
153
+ ctx
154
+ );
155
+ // RWA-factory operations: same collateral checks as facade operations,
156
+ // plus (for opening) the factory's open-account requirements. The parsed
157
+ // operation carries template (empty) `tokensToRegister`/`signaturesToCache`;
158
+ // the prerequisite detail provides the real values.
159
+ case "SecuritizeOpenCreditAccount":
160
+ return [
161
+ ...await collateralPrerequisites(
162
+ { creditManager: tx.creditManager, borrower: wallet },
163
+ tx.multicall,
164
+ ctx
165
+ ),
166
+ ...await rwaOpenRequirementsPrerequisites(
167
+ tx.multicall,
168
+ tx.creditManager,
169
+ ctx
170
+ )
171
+ ];
172
+ case "SecuritizeMulticall":
173
+ return collateralPrerequisites(
174
+ { creditManager: tx.creditManager, creditAccount: tx.creditAccount },
175
+ tx.multicall,
176
+ ctx
177
+ );
178
+ case "PartiallyLiquidateCreditAccount": {
179
+ const underlying = underlyingOf(ctx.sdk, tx.creditManager);
180
+ if (!underlying || tx.repaidAmount === 0n) {
181
+ return [];
182
+ }
183
+ return [
184
+ new AllowancePrerequisite({
185
+ token: underlying,
186
+ owner: wallet,
187
+ spender: tx.creditManager,
188
+ required: tx.repaidAmount,
189
+ title: "Underlying approved to credit manager"
190
+ }),
191
+ new BalancePrerequisite({
192
+ token: underlying,
193
+ owner: wallet,
194
+ required: tx.repaidAmount,
195
+ title: "Sufficient underlying balance"
196
+ })
197
+ ];
198
+ }
199
+ default:
200
+ return [];
201
+ }
202
+ }
203
+ async function collateralPrerequisites(spenderOptions, multicall, ctx) {
204
+ const { sdk, wallet } = ctx;
205
+ const required = new AssetsMap();
206
+ for (const op of multicall) {
207
+ if (op.operation !== "AddCollateral" || op.amount === 0n) {
208
+ continue;
209
+ }
210
+ required.inc(op.token, op.amount);
211
+ }
212
+ if (required.size === 0) {
213
+ return [];
214
+ }
215
+ const spender = await sdk.accounts.getApprovalAddress(spenderOptions);
216
+ const prereqs = [];
217
+ for (const [token, amount] of required.entries()) {
218
+ prereqs.push(
219
+ new AllowancePrerequisite({
220
+ token,
221
+ owner: wallet,
222
+ spender,
223
+ required: amount,
224
+ title: "Collateral approved"
225
+ }),
226
+ new BalancePrerequisite({
227
+ token,
228
+ owner: wallet,
229
+ required: amount,
230
+ title: "Sufficient collateral balance"
231
+ })
232
+ );
233
+ }
234
+ return prereqs;
235
+ }
236
+ async function rwaOpenRequirementsPrerequisites(multicall, creditManager, ctx) {
237
+ const { sdk, wallet } = ctx;
238
+ const { rwaFactory } = sdk.marketRegister.findByCreditManager(creditManager);
239
+ if (!rwaFactory) {
240
+ return [];
241
+ }
242
+ const rwaTokens = new AddressSet(rwaFactory.getTokens());
243
+ const candidates = new AddressSet();
244
+ for (const op of multicall) {
245
+ if (op.operation === "AddCollateral" || op.operation === "UpdateQuota") {
246
+ candidates.add(op.token);
247
+ }
248
+ }
249
+ const prereqs = [];
250
+ for (const token of candidates) {
251
+ if (!rwaTokens.has(token)) {
252
+ continue;
253
+ }
254
+ const requirements = await sdk.accounts.getOpenAccountRequirements(
255
+ wallet,
256
+ creditManager,
257
+ { tokenOutAddress: token }
258
+ );
259
+ if (requirements) {
260
+ prereqs.push(
261
+ new RWAOpenRequirementsPrerequisite({
262
+ requirements,
263
+ token,
264
+ factory: rwaFactory.address
265
+ })
266
+ );
267
+ }
268
+ }
269
+ return prereqs;
270
+ }
271
+ function underlyingOf(sdk, creditManager) {
272
+ const suite = sdk.marketRegister.creditManagers.find(
273
+ (cm) => isAddressEqual(cm.creditManager.address, creditManager)
274
+ );
275
+ return suite?.underlying;
276
+ }
277
+ export {
278
+ buildPrerequisites
279
+ };
@@ -0,0 +1,8 @@
1
+ export * from "./AllowancePrerequisite.js";
2
+ export * from "./BalancePrerequisite.js";
3
+ export * from "./buildPrerequisites.js";
4
+ export * from "./Prerequisite.js";
5
+ export * from "./prepareAction.js";
6
+ export * from "./RWAOpenRequirementsPrerequisite.js";
7
+ export * from "./runPrerequisites.js";
8
+ export * from "./types.js";