@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,82 @@
1
+ import { iZapperAbi } from "../../../abi/iZapper.js";
2
+ import { BaseContract } from "../../base/index.js";
3
+ import { UnsupportedZapperFunctionError } from "./errors.js";
4
+ class ZapperContract extends BaseContract {
5
+ sdk;
6
+ pool;
7
+ type;
8
+ baseParams;
9
+ tokenIn;
10
+ tokenOut;
11
+ constructor(sdk, data, abi = iZapperAbi, namePrefix = "Zapper") {
12
+ super(sdk, {
13
+ addr: data.baseParams.addr,
14
+ abi,
15
+ name: `${namePrefix}(${sdk.labelAddress(data.baseParams.addr)})`,
16
+ version: data.baseParams.version,
17
+ contractType: data.baseParams.contractType
18
+ });
19
+ this.sdk = sdk;
20
+ this.pool = data.pool;
21
+ this.type = data.type;
22
+ this.baseParams = data.baseParams;
23
+ this.tokenIn = data.tokenIn;
24
+ this.tokenOut = data.tokenOut;
25
+ }
26
+ /**
27
+ * Decodes zapper calldata into {@link ParsedZapperOperation}.
28
+ * Throws {@link UnsupportedZapperFunctionError} for unknown selectors.
29
+ */
30
+ parseOperation(calldata, value) {
31
+ const parsed = this.parseFunctionDataV2(calldata);
32
+ const { rawArgs } = parsed;
33
+ const pool = this.pool;
34
+ const zapper = this.address;
35
+ const underlying = this.sdk.marketRegister.findByPool(pool).underlying;
36
+ const receiver = rawArgs.receiver;
37
+ if (parsed.functionName.startsWith("deposit")) {
38
+ return {
39
+ operation: "Deposit",
40
+ pool,
41
+ zapper,
42
+ receiver,
43
+ assets: rawArgs.tokenInAmount ?? value ?? 0n,
44
+ underlying,
45
+ referralCode: rawArgs.referralCode
46
+ };
47
+ }
48
+ if (parsed.functionName.startsWith("redeem")) {
49
+ return {
50
+ operation: "Redeem",
51
+ pool,
52
+ zapper,
53
+ receiver,
54
+ shares: rawArgs.tokenOutAmount,
55
+ underlying
56
+ };
57
+ }
58
+ throw new UnsupportedZapperFunctionError(zapper, parsed.functionName);
59
+ }
60
+ /**
61
+ * Redeems pool shares (diesel tokens) for the underlying asset via this zapper.
62
+ */
63
+ redeem(tokenInAmount, receiver) {
64
+ return this.createRawTx({
65
+ functionName: "redeem",
66
+ args: [tokenInAmount, receiver]
67
+ });
68
+ }
69
+ /**
70
+ * Redeems pool shares via this zapper with an EIP-2612 permit signature,
71
+ * skipping a separate approve transaction.
72
+ */
73
+ redeemWithPermit(tokenInAmount, receiver, deadline, v, r, s) {
74
+ return this.createRawTx({
75
+ functionName: "redeemWithPermit",
76
+ args: [tokenInAmount, receiver, deadline, v, r, s]
77
+ });
78
+ }
79
+ }
80
+ export {
81
+ ZapperContract
82
+ };
@@ -1,20 +1,28 @@
1
+ import { bytes32ToString } from "../../utils/index.js";
1
2
  import { IERC20ZapperContract } from "./IERC20ZapperContract.js";
2
3
  import { IETHZapperContract } from "./IETHZapperContract.js";
3
- import { Zapper } from "./Zapper.js";
4
+ import { ZapperContract } from "./ZapperContract.js";
4
5
  function createZapper(sdk, data) {
6
+ const existing = sdk.getContract(data.baseParams.addr);
7
+ if (existing) {
8
+ return existing;
9
+ }
5
10
  if (data.type === "base") {
6
- const contractType = Zapper.contractType(data.baseParams);
11
+ const contractType = bytes32ToString(data.baseParams.contractType);
7
12
  switch (contractType) {
8
13
  case "ZAPPER::ERC4626_UNDERLYING":
9
14
  return new IERC20ZapperContract(sdk, data);
10
15
  case "ZAPPER::WETH_DEPOSIT":
11
16
  return new IETHZapperContract(sdk, data);
12
17
  default:
18
+ if (sdk.strictContractTypes) {
19
+ throw new Error(`Unknown zapper contract type: ${contractType}`);
20
+ }
13
21
  sdk.logger?.warn(`Unknown zapper contract type: ${contractType}`);
14
- return new Zapper(data);
22
+ return new ZapperContract(sdk, data);
15
23
  }
16
24
  }
17
- return new Zapper(data);
25
+ return new ZapperContract(sdk, data);
18
26
  }
19
27
  export {
20
28
  createZapper
@@ -0,0 +1,13 @@
1
+ class UnsupportedZapperFunctionError extends Error {
2
+ zapper;
3
+ functionName;
4
+ constructor(zapper, functionName) {
5
+ super(`unsupported zapper function "${functionName}" on ${zapper}`);
6
+ this.name = "UnsupportedZapperFunctionError";
7
+ this.zapper = zapper;
8
+ this.functionName = functionName;
9
+ }
10
+ }
11
+ export {
12
+ UnsupportedZapperFunctionError
13
+ };
@@ -1,4 +1,6 @@
1
1
  export * from "./createZapper.js";
2
+ export * from "./errors.js";
2
3
  export * from "./IERC20ZapperContract.js";
3
4
  export * from "./IETHZapperContract.js";
4
- export * from "./Zapper.js";
5
+ export * from "./types.js";
6
+ export * from "./ZapperContract.js";
File without changes
@@ -4,12 +4,18 @@ import {
4
4
  RedstoneOptions
5
5
  } from "./market/pricefeeds/updates/index.js";
6
6
  import { ZodAddress } from "./utils/index.js";
7
- const OnchainSDKOptionsSchema = z.object({
8
- /** When `true`, throw on unrecognised contract types. */
7
+ const onchainSDKOptionsSchema = z.object({
8
+ /**
9
+ * When `true`, throw on unrecognised contract types.
10
+ **/
9
11
  strictContractTypes: z.boolean().optional(),
10
- /** Plugins that extend SDK functionality. */
12
+ /**
13
+ * Plugins that extend SDK functionality.
14
+ **/
11
15
  plugins: z.record(z.string(), z.any()).optional(),
12
- /** Custom logger implementation. */
16
+ /**
17
+ * Custom logger implementation.
18
+ **/
13
19
  logger: z.any(),
14
20
  /**
15
21
  * Explicit gas limit for read-only `eth_call` requests.
@@ -18,10 +24,14 @@ const OnchainSDKOptionsSchema = z.object({
18
24
  **/
19
25
  gasLimit: z.bigint().nonnegative().nullable().optional()
20
26
  });
21
- const AttachOptionsSchema = z.object({
22
- /** Override address of the Gearbox AddressProvider contract. */
27
+ const attachOptionsSchema = z.object({
28
+ /**
29
+ * Override address of the Gearbox AddressProvider contract.
30
+ **/
23
31
  addressProvider: ZodAddress().optional(),
24
- /** Addresses of market configurator contracts to load. */
32
+ /**
33
+ * Addresses of market configurator contracts to load.
34
+ **/
25
35
  marketConfigurators: z.array(ZodAddress()).optional(),
26
36
  /**
27
37
  * Addresses of RWA factory contracts to load.
@@ -29,18 +39,32 @@ const AttachOptionsSchema = z.object({
29
39
  * (from {@link GearboxChain.rwaFactories})
30
40
  **/
31
41
  rwaFactories: z.array(ZodAddress()).optional(),
32
- /** Pin SDK to a specific block number during attach. */
42
+ /**
43
+ * Pin SDK to a specific block number during attach.
44
+ **/
33
45
  blockNumber: z.union([z.bigint().nonnegative(), z.number().int().nonnegative()]).optional(),
34
- /** Skip fetching updatable price feeds on attach and sync. */
46
+ /**
47
+ * Skip fetching updatable price feeds on attach and sync.
48
+ **/
35
49
  ignoreUpdateablePrices: z.boolean().optional(),
36
- /** Pool addresses whose markets should be skipped. */
50
+ /**
51
+ * Pool addresses whose markets should be skipped.
52
+ **/
37
53
  ignoreMarkets: z.array(ZodAddress()).optional(),
38
- /** Options for Redstone price-feed updates. */
54
+ /**
55
+ * Options for Redstone price-feed updates.
56
+ **/
39
57
  redstone: RedstoneOptions.optional(),
40
- /** Options for Pyth price-feed updates. */
41
- pyth: PythOptions.optional()
58
+ /**
59
+ * Options for Pyth price-feed updates.
60
+ **/
61
+ pyth: PythOptions.optional(),
62
+ /**
63
+ * When `true`, automatically load zappers during attach.
64
+ **/
65
+ loadZappers: z.boolean().optional()
42
66
  });
43
67
  export {
44
- AttachOptionsSchema,
45
- OnchainSDKOptionsSchema
68
+ attachOptionsSchema,
69
+ onchainSDKOptionsSchema
46
70
  };
@@ -1,6 +1,8 @@
1
- import { BaseContract } from "../base/index.js";
1
+ import {
2
+ BaseContract
3
+ } from "../base/index.js";
2
4
  import { PERCENTAGE_FACTOR } from "../constants/math.js";
3
- import { AddressMap, AddressSet, formatBN, isDust } from "../utils/index.js";
5
+ import { AddressSet, AssetsMap, formatBN, isDust } from "../utils/index.js";
4
6
  import { limitLeftover } from "./helpers.js";
5
7
  class AbstractRouterContract extends BaseContract {
6
8
  /**
@@ -18,15 +20,15 @@ class AbstractRouterContract extends BaseContract {
18
20
  options.debtOnly
19
21
  );
20
22
  const { leftoverBalances, expectedBalances, tokensToClaim } = b;
21
- const expected = new AddressMap();
22
- const leftover = new AddressMap();
23
+ const expected = new AssetsMap();
24
+ const leftover = new AssetsMap();
23
25
  for (const token of cm.collateralTokens) {
24
- const actual = expectedBalances.get(token)?.balance || 0n;
25
- expected.upsert(token, { token, balance: actual > 10n ? actual : 0n });
26
- leftover.upsert(token, {
26
+ const actual = expectedBalances.get(token) || 0n;
27
+ expected.upsert(token, actual > 10n ? actual : 0n);
28
+ leftover.upsert(
27
29
  token,
28
- balance: limitLeftover(leftoverBalances.get(token)?.balance || 1n, token) ?? 1n
29
- });
30
+ limitLeftover(leftoverBalances.get(token) || 1n, token) ?? 1n
31
+ );
30
32
  }
31
33
  return {
32
34
  expectedBalances: expected,
@@ -35,8 +37,8 @@ class AbstractRouterContract extends BaseContract {
35
37
  };
36
38
  }
37
39
  getDefaultExpectedAndLeftover(ca, keepAssets, debtOnly) {
38
- const expectedBalances = new AddressMap();
39
- const leftoverBalances = new AddressMap();
40
+ const expectedBalances = new AssetsMap();
41
+ const leftoverBalances = new AssetsMap();
40
42
  const keepAssetsSet = new AddressSet(keepAssets);
41
43
  if (debtOnly) {
42
44
  const result = this.getLeftoversAfterBuyingDebt(ca, keepAssetsSet);
@@ -48,23 +50,23 @@ class AbstractRouterContract extends BaseContract {
48
50
  }
49
51
  for (const { token, balance, mask } of ca.tokens) {
50
52
  const isEnabled = (mask & ca.enabledTokensMask) !== 0n;
51
- expectedBalances.upsert(token, { token, balance });
53
+ expectedBalances.upsert(token, balance);
52
54
  if (keepAssetsSet.has(token) || !isEnabled || isDust({
53
55
  sdk: this.sdk,
54
56
  token,
55
57
  balance,
56
58
  creditManager: ca.creditManager
57
59
  })) {
58
- leftoverBalances.upsert(token, {
60
+ leftoverBalances.upsert(
59
61
  token,
60
- balance: limitLeftover(balance, token) ?? balance
61
- });
62
+ limitLeftover(balance, token) ?? balance
63
+ );
62
64
  }
63
65
  }
64
66
  return {
65
67
  expectedBalances,
66
68
  leftoverBalances,
67
- tokensToClaim: new AddressMap()
69
+ tokensToClaim: new AssetsMap()
68
70
  };
69
71
  }
70
72
  /**
@@ -77,16 +79,13 @@ class AbstractRouterContract extends BaseContract {
77
79
  const { priceOracle } = this.sdk.marketRegister.findByCreditManager(
78
80
  ca.creditManager
79
81
  );
80
- const expectedBalances = new AddressMap();
81
- const leftoverBalances = new AddressMap();
82
+ const expectedBalances = new AssetsMap();
83
+ const leftoverBalances = new AssetsMap();
82
84
  const usdBalances = [];
83
85
  for (const { token, balance, mask } of ca.tokens) {
84
86
  const isEnabled = (mask & ca.enabledTokensMask) !== 0n;
85
- expectedBalances.upsert(token, { token, balance });
86
- leftoverBalances.upsert(token, {
87
- token,
88
- balance: limitLeftover(balance, token) ?? balance
89
- });
87
+ expectedBalances.upsert(token, balance);
88
+ leftoverBalances.upsert(token, limitLeftover(balance, token) ?? balance);
90
89
  if (isEnabled && !keepAssets.has(token)) {
91
90
  usdBalances.push({
92
91
  token,
@@ -116,15 +115,12 @@ class AbstractRouterContract extends BaseContract {
116
115
  if (tokenAmount === 0n) {
117
116
  return void 0;
118
117
  }
119
- let leftoverBalance = leftoverBalances.get(highestToken.token)?.balance ?? 0n;
118
+ let leftoverBalance = leftoverBalances.get(highestToken.token) ?? 0n;
120
119
  leftoverBalance -= tokenAmount;
121
120
  if (leftoverBalance < 0n) {
122
121
  return void 0;
123
122
  }
124
- leftoverBalances.upsert(highestToken.token, {
125
- token: highestToken.token,
126
- balance: leftoverBalance
127
- });
123
+ leftoverBalances.upsert(highestToken.token, leftoverBalance);
128
124
  const tokenAmountStr = this.sdk.tokensMeta.formatBN(
129
125
  highestToken.token,
130
126
  tokenAmount,
@@ -137,7 +133,7 @@ class AbstractRouterContract extends BaseContract {
137
133
  return {
138
134
  expectedBalances,
139
135
  leftoverBalances,
140
- tokensToClaim: new AddressMap()
136
+ tokensToClaim: new AssetsMap()
141
137
  };
142
138
  }
143
139
  safeConvertToUSD(priceOracle, token, balance) {
@@ -1,10 +1,9 @@
1
1
  import { getAddress } from "viem";
2
2
  import { gearboxRouterAbi } from "../../abi/router/gearboxRouter.js";
3
- import { AddressMap } from "../utils/AddressMap.js";
4
3
  import { formatBN } from "../utils/formatter.js";
5
- import { isDust } from "../utils/index.js";
4
+ import { AddressMap, AssetsMap, isDust } from "../utils/index.js";
6
5
  import { AbstractRouterContract } from "./AbstractRouterContract.js";
7
- import { assetsMap, balancesMap, limitLeftover } from "./helpers.js";
6
+ import { limitLeftover } from "./helpers.js";
8
7
  const abi = gearboxRouterAbi;
9
8
  class RouterV310Contract extends AbstractRouterContract {
10
9
  #numSplits = new AddressMap();
@@ -71,8 +70,8 @@ class RouterV310Contract extends AbstractRouterContract {
71
70
  slippage
72
71
  } = props;
73
72
  const [expectedMap, leftoverMap] = [
74
- balancesMap(expectedBalances),
75
- balancesMap(leftoverBalances)
73
+ new AssetsMap(expectedBalances),
74
+ new AssetsMap(leftoverBalances)
76
75
  ];
77
76
  const getNumSplits = this.#numSplitsGetter(cm, expectedBalances);
78
77
  const tData = cm.collateralTokens.map(
@@ -157,22 +156,22 @@ class RouterV310Contract extends AbstractRouterContract {
157
156
  } = props;
158
157
  const { expectedBalances, leftoverBalances, tokensToClaim } = this.getExpectedAndLeftover(ca, cm, {
159
158
  balances: balances ? {
160
- expectedBalances: assetsMap(balances.expectedBalances),
161
- leftoverBalances: assetsMap(balances.leftoverBalances),
162
- tokensToClaim: assetsMap(balances.tokensToClaim || [])
159
+ expectedBalances: new AssetsMap(balances.expectedBalances),
160
+ leftoverBalances: new AssetsMap(balances.leftoverBalances),
161
+ tokensToClaim: new AssetsMap(balances.tokensToClaim || [])
163
162
  } : void 0,
164
163
  keepAssets: balances ? void 0 : keepAssets,
165
164
  debtOnly
166
165
  });
167
- const getNumSplits = this.#numSplitsGetter(cm, expectedBalances.values());
166
+ const getNumSplits = this.#numSplitsGetter(cm, expectedBalances.toAssets());
168
167
  const tData = [];
169
168
  for (const token of cm.collateralTokens) {
170
169
  tData.push({
171
170
  token,
172
- balance: expectedBalances.get(token)?.balance || 0n,
173
- leftoverBalance: limitLeftover(leftoverBalances.get(token)?.balance, token) ?? 0n,
171
+ balance: expectedBalances.get(token) || 0n,
172
+ leftoverBalance: limitLeftover(leftoverBalances.get(token), token) ?? 0n,
174
173
  numSplits: getNumSplits(token),
175
- claimRewards: !!tokensToClaim.get(token)
174
+ claimRewards: tokensToClaim.has(token)
176
175
  });
177
176
  }
178
177
  this.logger?.debug(
@@ -1,7 +1,4 @@
1
1
  import { AddressMap } from "../utils/index.js";
2
- function balancesMap(assets) {
3
- return new AddressMap(assets.map(({ token, balance }) => [token, balance]));
4
- }
5
2
  function assetsMap(assets) {
6
3
  return new AddressMap(assets.map((a) => [a.token, a]));
7
4
  }
@@ -16,6 +13,5 @@ function limitLeftover(balance, token) {
16
13
  }
17
14
  export {
18
15
  assetsMap,
19
- balancesMap,
20
16
  limitLeftover
21
17
  };
@@ -113,6 +113,12 @@ class AddressMap {
113
113
  keys() {
114
114
  return Array.from(this.#map.keys());
115
115
  }
116
+ /**
117
+ * Returns an unfrozen shallow copy of the map.
118
+ **/
119
+ clone() {
120
+ return new AddressMap(this.entries(), this.name);
121
+ }
116
122
  /**
117
123
  * Converts the map to a plain `Record<Address, T>` object.
118
124
  **/
@@ -0,0 +1,38 @@
1
+ import { AddressMap } from "./AddressMap.js";
2
+ class AssetsMap extends AddressMap {
3
+ /**
4
+ * @param entries - Optional initial entries as `[address, balance]` tuples or {@link Asset} objects.
5
+ * @param name - Optional label used in error messages when a lookup fails.
6
+ */
7
+ constructor(entries, name) {
8
+ super(
9
+ entries?.map((e) => Array.isArray(e) ? e : [e.token, e.balance]),
10
+ name
11
+ );
12
+ }
13
+ /**
14
+ * Adds `amount` to the token balance, treating a missing key as `0n`.
15
+ */
16
+ inc(address, amount) {
17
+ this.upsert(address, (this.get(address) ?? 0n) + amount);
18
+ }
19
+ /**
20
+ * Subtracts `amount` from the token balance, treating a missing key as `0n`.
21
+ */
22
+ dec(address, amount) {
23
+ this.inc(address, -amount);
24
+ }
25
+ /**
26
+ * Converts the map to an array of {@link Asset} objects.
27
+ * @param filterDust - If true, filters out assets with a balance less than 1.
28
+ */
29
+ toAssets(filterDust = false) {
30
+ return this.entries().filter(filterDust ? ([, balance]) => balance > 1n : () => true).map(([token, balance]) => ({ token, balance }));
31
+ }
32
+ clone() {
33
+ return new AssetsMap(this.entries(), this.name);
34
+ }
35
+ }
36
+ export {
37
+ AssetsMap
38
+ };
@@ -1,5 +1,6 @@
1
1
  export * from "./AddressMap.js";
2
2
  export * from "./AddressSet.js";
3
+ export * from "./AssetsMap.js";
3
4
  export * from "./abi-decode.js";
4
5
  export * from "./bytes32ToString.js";
5
6
  export * from "./childLogger.js";