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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (322) hide show
  1. package/dist/cjs/abi/iZapper.js +62 -24
  2. package/dist/cjs/dev/AccountOpener.js +7 -13
  3. package/dist/cjs/history/classifyMulticallOperations.js +2 -0
  4. package/dist/cjs/history/mapOperations.js +7 -0
  5. package/dist/cjs/plugins/adapters/abi/iConvexV1BoosterAdapter.js +143 -0
  6. package/dist/cjs/plugins/adapters/abi/index.js +2 -0
  7. package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +36 -0
  8. package/dist/cjs/plugins/adapters/contracts/AbstractCurveAdapter.js +66 -0
  9. package/dist/cjs/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +19 -0
  10. package/dist/cjs/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +15 -0
  11. package/dist/cjs/plugins/adapters/contracts/CamelotV3AdapterContract.js +20 -0
  12. package/dist/cjs/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +18 -0
  13. package/dist/cjs/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +28 -2
  14. package/dist/cjs/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -7
  15. package/dist/cjs/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -7
  16. package/dist/cjs/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -7
  17. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
  18. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -7
  19. package/dist/cjs/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -7
  20. package/dist/cjs/plugins/adapters/contracts/DaiUsdsAdapterContract.js +14 -0
  21. package/dist/cjs/plugins/adapters/contracts/ERC4626AdapterContract.js +15 -0
  22. package/dist/cjs/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +14 -0
  23. package/dist/cjs/plugins/adapters/contracts/FluidDexAdapterContract.js +15 -0
  24. package/dist/cjs/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +21 -0
  25. package/dist/cjs/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +10 -0
  26. package/dist/cjs/plugins/adapters/contracts/LidoV1AdapterContract.js +11 -0
  27. package/dist/cjs/plugins/adapters/contracts/MellowDVVAdapterContract.js +15 -0
  28. package/dist/cjs/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +15 -0
  29. package/dist/cjs/plugins/adapters/contracts/MellowWrapperAdapterContract.js +11 -0
  30. package/dist/cjs/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +10 -0
  31. package/dist/cjs/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +12 -0
  32. package/dist/cjs/plugins/adapters/contracts/PendleRouterAdapterContract.js +58 -0
  33. package/dist/cjs/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +11 -0
  34. package/dist/cjs/plugins/adapters/contracts/SecuritizeSwapAdapterContract.js +22 -1
  35. package/dist/cjs/plugins/adapters/contracts/StakingRewardsAdapterContract.js +17 -0
  36. package/dist/cjs/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +10 -0
  37. package/dist/cjs/plugins/adapters/contracts/UniswapV2AdapterContract.js +10 -0
  38. package/dist/cjs/plugins/adapters/contracts/UniswapV3AdapterContract.js +20 -0
  39. package/dist/cjs/plugins/adapters/contracts/UniswapV4AdapterContract.js +15 -0
  40. package/dist/cjs/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +14 -0
  41. package/dist/cjs/plugins/adapters/contracts/VelodromeV2AdapterContract.js +10 -0
  42. package/dist/cjs/plugins/adapters/contracts/WstETHV1AdapterContract.js +15 -0
  43. package/dist/cjs/preview/index.js +2 -4
  44. package/dist/cjs/preview/parse/classifyInnerOperations.js +14 -1
  45. package/dist/cjs/preview/parse/errors.js +5 -2
  46. package/dist/cjs/preview/parse/index.js +2 -2
  47. package/dist/cjs/preview/parse/parseFacadeOperationCalldata.js +5 -12
  48. package/dist/cjs/preview/parse/parseOperationCalldata.js +40 -1
  49. package/dist/cjs/preview/parse/parsePoolOperationCalldata.js +14 -2
  50. package/dist/cjs/preview/parse/parseRWAFactoryOperationCalldata.js +104 -0
  51. package/dist/cjs/preview/parse/types-rwa.js +16 -0
  52. package/dist/cjs/preview/parse/types.js +9 -2
  53. package/dist/cjs/preview/prerequisites/AllowancePrerequisite.js +13 -13
  54. package/dist/cjs/preview/prerequisites/BalancePrerequisite.js +32 -14
  55. package/dist/cjs/preview/prerequisites/RWAOpenRequirementsPrerequisite.js +66 -0
  56. package/dist/cjs/preview/prerequisites/buildPrerequisites.js +124 -14
  57. package/dist/cjs/preview/prerequisites/index.js +2 -0
  58. package/dist/cjs/preview/preview/applyInnerOperations.js +132 -0
  59. package/dist/cjs/preview/preview/errors.js +52 -0
  60. package/dist/cjs/preview/preview/index.js +30 -0
  61. package/dist/cjs/preview/preview/previewAdjustCreditAccount.js +95 -0
  62. package/dist/cjs/preview/preview/previewOpenCreditAccount.js +69 -0
  63. package/dist/cjs/preview/preview/previewOperation.js +45 -0
  64. package/dist/cjs/preview/preview/previewPoolOperation.js +75 -0
  65. package/dist/cjs/preview/preview/types.js +16 -0
  66. package/dist/cjs/{sdk/market/zapper/Zapper.js → preview/preview/unwrapNativeCollateral.js} +20 -22
  67. package/dist/cjs/preview/simulate/errors.js +0 -7
  68. package/dist/cjs/preview/simulate/index.js +5 -5
  69. package/dist/cjs/preview/simulate/simulateOperation.js +4 -0
  70. package/dist/cjs/preview/simulate/simulatePoolOperation.js +60 -31
  71. package/dist/cjs/preview/simulate/{constants.js → simulateRWAOperation.js} +8 -6
  72. package/dist/cjs/sdk/MultichainSDK.js +1 -0
  73. package/dist/cjs/sdk/OnchainSDK.js +7 -3
  74. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +3 -4
  75. package/dist/cjs/sdk/base/BaseContract.js +4 -2
  76. package/dist/cjs/sdk/base/ChainContractsRegister.js +1 -0
  77. package/dist/cjs/sdk/market/MarketRegister.js +10 -5
  78. package/dist/cjs/sdk/market/ZapperRegister.js +54 -0
  79. package/dist/cjs/sdk/market/rwa/securitize/SecuritizeRWAFactory.js +30 -0
  80. package/dist/cjs/sdk/market/rwa/types.js +5 -2
  81. package/dist/cjs/sdk/market/zapper/IERC20ZapperContract.js +3 -38
  82. package/dist/cjs/sdk/market/zapper/IETHZapperContract.js +3 -38
  83. package/dist/cjs/sdk/market/zapper/ZapperContract.js +106 -0
  84. package/dist/cjs/sdk/market/zapper/createZapper.js +12 -4
  85. package/dist/cjs/{preview/simulate/holders.js → sdk/market/zapper/errors.js} +13 -21
  86. package/dist/cjs/sdk/market/zapper/index.js +6 -2
  87. package/dist/cjs/sdk/market/zapper/types.js +16 -0
  88. package/dist/cjs/sdk/options.js +41 -17
  89. package/dist/cjs/sdk/router/AbstractRouterContract.js +21 -27
  90. package/dist/cjs/sdk/router/RouterV310Contract.js +11 -12
  91. package/dist/cjs/sdk/router/helpers.js +0 -5
  92. package/dist/cjs/sdk/utils/AddressMap.js +6 -0
  93. package/dist/cjs/sdk/utils/AssetsMap.js +62 -0
  94. package/dist/cjs/sdk/utils/index.js +2 -0
  95. package/dist/esm/abi/iZapper.js +62 -24
  96. package/dist/esm/dev/AccountOpener.js +8 -13
  97. package/dist/esm/history/classifyMulticallOperations.js +2 -0
  98. package/dist/esm/history/mapOperations.js +7 -0
  99. package/dist/esm/plugins/adapters/abi/iConvexV1BoosterAdapter.js +119 -0
  100. package/dist/esm/plugins/adapters/abi/index.js +1 -0
  101. package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +36 -0
  102. package/dist/esm/plugins/adapters/contracts/AbstractCurveAdapter.js +42 -0
  103. package/dist/esm/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +22 -1
  104. package/dist/esm/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +18 -1
  105. package/dist/esm/plugins/adapters/contracts/CamelotV3AdapterContract.js +23 -1
  106. package/dist/esm/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +22 -1
  107. package/dist/esm/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +30 -2
  108. package/dist/esm/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +2 -7
  109. package/dist/esm/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +2 -7
  110. package/dist/esm/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +2 -7
  111. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterDeposit.js +2 -2
  112. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +2 -7
  113. package/dist/esm/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +2 -7
  114. package/dist/esm/plugins/adapters/contracts/DaiUsdsAdapterContract.js +17 -1
  115. package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +19 -1
  116. package/dist/esm/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +17 -1
  117. package/dist/esm/plugins/adapters/contracts/FluidDexAdapterContract.js +18 -1
  118. package/dist/esm/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +24 -1
  119. package/dist/esm/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +13 -1
  120. package/dist/esm/plugins/adapters/contracts/LidoV1AdapterContract.js +14 -1
  121. package/dist/esm/plugins/adapters/contracts/MellowDVVAdapterContract.js +18 -1
  122. package/dist/esm/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +18 -1
  123. package/dist/esm/plugins/adapters/contracts/MellowWrapperAdapterContract.js +14 -1
  124. package/dist/esm/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +13 -1
  125. package/dist/esm/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +15 -1
  126. package/dist/esm/plugins/adapters/contracts/PendleRouterAdapterContract.js +61 -1
  127. package/dist/esm/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.js +14 -1
  128. package/dist/esm/plugins/adapters/contracts/SecuritizeSwapAdapterContract.js +25 -2
  129. package/dist/esm/plugins/adapters/contracts/StakingRewardsAdapterContract.js +20 -1
  130. package/dist/esm/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +13 -1
  131. package/dist/esm/plugins/adapters/contracts/UniswapV2AdapterContract.js +10 -0
  132. package/dist/esm/plugins/adapters/contracts/UniswapV3AdapterContract.js +20 -0
  133. package/dist/esm/plugins/adapters/contracts/UniswapV4AdapterContract.js +18 -1
  134. package/dist/esm/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +17 -1
  135. package/dist/esm/plugins/adapters/contracts/VelodromeV2AdapterContract.js +13 -1
  136. package/dist/esm/plugins/adapters/contracts/WstETHV1AdapterContract.js +18 -1
  137. package/dist/esm/preview/index.js +1 -2
  138. package/dist/esm/preview/parse/classifyInnerOperations.js +14 -1
  139. package/dist/esm/preview/parse/errors.js +3 -1
  140. package/dist/esm/preview/parse/index.js +1 -1
  141. package/dist/esm/preview/parse/parseFacadeOperationCalldata.js +5 -12
  142. package/dist/esm/preview/parse/parseOperationCalldata.js +43 -2
  143. package/dist/esm/preview/parse/parsePoolOperationCalldata.js +14 -2
  144. package/dist/esm/preview/parse/parseRWAFactoryOperationCalldata.js +85 -0
  145. package/dist/esm/preview/parse/types-rwa.js +0 -0
  146. package/dist/esm/preview/parse/types.js +6 -1
  147. package/dist/esm/preview/prerequisites/AllowancePrerequisite.js +13 -13
  148. package/dist/esm/preview/prerequisites/BalancePrerequisite.js +32 -14
  149. package/dist/esm/preview/prerequisites/RWAOpenRequirementsPrerequisite.js +42 -0
  150. package/dist/esm/preview/prerequisites/buildPrerequisites.js +130 -14
  151. package/dist/esm/preview/prerequisites/index.js +1 -0
  152. package/dist/esm/preview/preview/applyInnerOperations.js +110 -0
  153. package/dist/esm/preview/preview/errors.js +27 -0
  154. package/dist/esm/preview/preview/index.js +5 -0
  155. package/dist/esm/preview/preview/previewAdjustCreditAccount.js +79 -0
  156. package/dist/esm/preview/preview/previewOpenCreditAccount.js +51 -0
  157. package/dist/esm/preview/preview/previewOperation.js +21 -0
  158. package/dist/esm/preview/preview/previewPoolOperation.js +53 -0
  159. package/dist/esm/preview/preview/types.js +0 -0
  160. package/dist/esm/preview/preview/unwrapNativeCollateral.js +21 -0
  161. package/dist/esm/preview/simulate/errors.js +0 -6
  162. package/dist/esm/preview/simulate/index.js +3 -3
  163. package/dist/esm/preview/simulate/simulateOperation.js +8 -1
  164. package/dist/esm/preview/simulate/simulatePoolOperation.js +61 -35
  165. package/dist/esm/preview/simulate/simulateRWAOperation.js +6 -0
  166. package/dist/esm/sdk/MultichainSDK.js +1 -0
  167. package/dist/esm/sdk/OnchainSDK.js +7 -3
  168. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +4 -5
  169. package/dist/esm/sdk/base/BaseContract.js +4 -2
  170. package/dist/esm/sdk/base/ChainContractsRegister.js +1 -0
  171. package/dist/esm/sdk/market/MarketRegister.js +10 -5
  172. package/dist/esm/sdk/market/ZapperRegister.js +54 -0
  173. package/dist/esm/sdk/market/rwa/securitize/SecuritizeRWAFactory.js +33 -1
  174. package/dist/esm/sdk/market/rwa/types.js +5 -2
  175. package/dist/esm/sdk/market/zapper/IERC20ZapperContract.js +3 -38
  176. package/dist/esm/sdk/market/zapper/IETHZapperContract.js +3 -38
  177. package/dist/esm/sdk/market/zapper/ZapperContract.js +82 -0
  178. package/dist/esm/sdk/market/zapper/createZapper.js +12 -4
  179. package/dist/esm/sdk/market/zapper/errors.js +13 -0
  180. package/dist/esm/sdk/market/zapper/index.js +3 -1
  181. package/dist/esm/sdk/market/zapper/types.js +0 -0
  182. package/dist/esm/sdk/options.js +39 -15
  183. package/dist/esm/sdk/router/AbstractRouterContract.js +25 -29
  184. package/dist/esm/sdk/router/RouterV310Contract.js +11 -12
  185. package/dist/esm/sdk/router/helpers.js +0 -4
  186. package/dist/esm/sdk/utils/AddressMap.js +6 -0
  187. package/dist/esm/sdk/utils/AssetsMap.js +38 -0
  188. package/dist/esm/sdk/utils/index.js +1 -0
  189. package/dist/types/abi/iERC20Zapper.d.ts +91 -23
  190. package/dist/types/abi/iETHZapper.d.ts +91 -23
  191. package/dist/types/abi/iZapper.d.ts +91 -23
  192. package/dist/types/common-utils/utils/strategies/assets/assets.d.ts +1 -1
  193. package/dist/types/common-utils/utils/strategies/credit-managers/get-wallet-balances-allowed-on-cm.d.ts +1 -1
  194. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-apy.d.ts +1 -1
  195. package/dist/types/common-utils/utils/strategies/strategy-info/calculate-total-points.d.ts +1 -1
  196. package/dist/types/common-utils/utils/strategies/tokens/add-amount-in-target.d.ts +1 -1
  197. package/dist/types/common-utils/utils/strategies/tokens/get-list-with-amount-in-target.d.ts +1 -1
  198. package/dist/types/common-utils/utils/strategies/types/strategy-earnings.d.ts +1 -1
  199. package/dist/types/common-utils/utils/validation/validate-balances.d.ts +1 -1
  200. package/dist/types/common-utils/utils/validation/validate-open-account.d.ts +1 -1
  201. package/dist/types/common-utils/utils/validation/validate-quota.d.ts +1 -1
  202. package/dist/types/common-utils/utils/validation/validate-token-to-obtain.d.ts +1 -1
  203. package/dist/types/history/types.d.ts +4 -4
  204. package/dist/types/plugins/adapters/abi/iConvexV1BoosterAdapter.d.ts +204 -0
  205. package/dist/types/plugins/adapters/abi/index.d.ts +1 -0
  206. package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +21 -3
  207. package/dist/types/plugins/adapters/contracts/AbstractCurveAdapter.d.ts +18 -0
  208. package/dist/types/plugins/adapters/contracts/BalancerV3RouterAdapterContract.d.ts +4 -2
  209. package/dist/types/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.d.ts +4 -2
  210. package/dist/types/plugins/adapters/contracts/CamelotV3AdapterContract.d.ts +4 -2
  211. package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +4 -2
  212. package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +8 -6
  213. package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +3 -6
  214. package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +3 -6
  215. package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +3 -6
  216. package/dist/types/plugins/adapters/contracts/CurveV1AdapterDeposit.d.ts +2 -2
  217. package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +3 -6
  218. package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +3 -6
  219. package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +4 -2
  220. package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +4 -2
  221. package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +4 -2
  222. package/dist/types/plugins/adapters/contracts/FluidDexAdapterContract.d.ts +4 -2
  223. package/dist/types/plugins/adapters/contracts/InfinifiGatewayAdapterContract.d.ts +4 -2
  224. package/dist/types/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.d.ts +4 -2
  225. package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +4 -2
  226. package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +4 -2
  227. package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +4 -2
  228. package/dist/types/plugins/adapters/contracts/MellowWrapperAdapterContract.d.ts +4 -2
  229. package/dist/types/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.d.ts +4 -2
  230. package/dist/types/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.d.ts +4 -2
  231. package/dist/types/plugins/adapters/contracts/PendleRouterAdapterContract.d.ts +4 -2
  232. package/dist/types/plugins/adapters/contracts/SecuritizeOnRampAdapterContract.d.ts +4 -2
  233. package/dist/types/plugins/adapters/contracts/SecuritizeSwapAdapterContract.d.ts +15 -3
  234. package/dist/types/plugins/adapters/contracts/StakingRewardsAdapterContract.d.ts +4 -2
  235. package/dist/types/plugins/adapters/contracts/TraderJoeRouterAdapterContract.d.ts +4 -2
  236. package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +3 -1
  237. package/dist/types/plugins/adapters/contracts/UniswapV3AdapterContract.d.ts +3 -1
  238. package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +4 -2
  239. package/dist/types/plugins/adapters/contracts/UpshiftVaultAdapterContract.d.ts +4 -2
  240. package/dist/types/plugins/adapters/contracts/VelodromeV2AdapterContract.d.ts +4 -2
  241. package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +4 -2
  242. package/dist/types/plugins/adapters/types.d.ts +10 -0
  243. package/dist/types/preview/index.d.ts +1 -2
  244. package/dist/types/preview/parse/classifyInnerOperations.d.ts +0 -2
  245. package/dist/types/preview/parse/errors.d.ts +1 -0
  246. package/dist/types/preview/parse/index.d.ts +1 -1
  247. package/dist/types/preview/parse/parseOperationCalldata.d.ts +3 -3
  248. package/dist/types/preview/parse/parseRWAFactoryOperationCalldata.d.ts +22 -0
  249. package/dist/types/preview/parse/types-adapters.d.ts +5 -1
  250. package/dist/types/preview/parse/types-facades.d.ts +23 -34
  251. package/dist/types/preview/parse/types-pools.d.ts +90 -2
  252. package/dist/types/preview/parse/types-rwa.d.ts +48 -0
  253. package/dist/types/preview/parse/types.d.ts +11 -6
  254. package/dist/types/preview/prerequisites/AllowancePrerequisite.d.ts +1 -3
  255. package/dist/types/preview/prerequisites/BalancePrerequisite.d.ts +9 -6
  256. package/dist/types/preview/prerequisites/RWAOpenRequirementsPrerequisite.d.ts +36 -0
  257. package/dist/types/preview/prerequisites/buildPrerequisites.d.ts +15 -6
  258. package/dist/types/preview/prerequisites/index.d.ts +1 -0
  259. package/dist/types/preview/prerequisites/types.d.ts +10 -8
  260. package/dist/types/preview/preview/applyInnerOperations.d.ts +77 -0
  261. package/dist/types/preview/preview/errors.d.ts +21 -0
  262. package/dist/types/preview/preview/index.d.ts +5 -0
  263. package/dist/types/preview/preview/previewAdjustCreditAccount.d.ts +11 -0
  264. package/dist/types/preview/preview/previewOpenCreditAccount.d.ts +4 -0
  265. package/dist/types/preview/preview/previewOperation.d.ts +7 -0
  266. package/dist/types/preview/preview/previewPoolOperation.d.ts +5 -0
  267. package/dist/types/preview/preview/types.d.ts +177 -0
  268. package/dist/types/preview/preview/unwrapNativeCollateral.d.ts +20 -0
  269. package/dist/types/preview/simulate/errors.d.ts +6 -12
  270. package/dist/types/preview/simulate/index.d.ts +3 -2
  271. package/dist/types/preview/simulate/simulateFacadeOperation.d.ts +0 -2
  272. package/dist/types/preview/simulate/simulateOperation.d.ts +0 -2
  273. package/dist/types/preview/simulate/simulatePoolOperation.d.ts +9 -3
  274. package/dist/types/preview/simulate/simulateRWAOperation.d.ts +23 -0
  275. package/dist/types/preview/simulate/types.d.ts +12 -39
  276. package/dist/types/sdk/MultichainSDK.d.ts +5 -0
  277. package/dist/types/sdk/OnchainSDK.d.ts +4 -0
  278. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -1
  279. package/dist/types/sdk/accounts/types.d.ts +2 -2
  280. package/dist/types/sdk/base/BaseContract.d.ts +1 -1
  281. package/dist/types/sdk/base/TokensMeta.d.ts +1 -1
  282. package/dist/types/sdk/base/types.d.ts +18 -0
  283. package/dist/types/sdk/market/MarketRegister.d.ts +15 -6
  284. package/dist/types/sdk/market/ZapperRegister.d.ts +25 -4
  285. package/dist/types/sdk/market/rwa/securitize/SecuritizeRWAFactory.d.ts +6 -1
  286. package/dist/types/sdk/market/rwa/types.d.ts +13 -5
  287. package/dist/types/sdk/market/zapper/IERC20ZapperContract.d.ts +93 -39
  288. package/dist/types/sdk/market/zapper/IETHZapperContract.d.ts +93 -39
  289. package/dist/types/sdk/market/zapper/ZapperContract.d.ts +35 -0
  290. package/dist/types/sdk/market/zapper/createZapper.d.ts +2 -4
  291. package/dist/types/sdk/market/zapper/errors.d.ts +10 -0
  292. package/dist/types/sdk/market/zapper/index.d.ts +3 -1
  293. package/dist/types/sdk/market/zapper/types.d.ts +64 -0
  294. package/dist/types/sdk/options.d.ts +10 -5
  295. package/dist/types/sdk/pools/types.d.ts +4 -4
  296. package/dist/types/sdk/router/AbstractRouterContract.d.ts +5 -5
  297. package/dist/types/sdk/router/helpers.d.ts +1 -2
  298. package/dist/types/sdk/router/types.d.ts +1 -15
  299. package/dist/types/sdk/types/state-human.d.ts +9 -0
  300. package/dist/types/sdk/types/state.d.ts +7 -0
  301. package/dist/types/sdk/utils/AddressMap.d.ts +4 -0
  302. package/dist/types/sdk/utils/AssetsMap.d.ts +27 -0
  303. package/dist/types/sdk/utils/index.d.ts +1 -0
  304. package/package.json +3 -3
  305. package/dist/cjs/preview/parse/extractExpectedBalanceChanges.js +0 -48
  306. package/dist/cjs/preview/simulate/extractERC20Transfers.js +0 -47
  307. package/dist/cjs/preview/simulate/simulatePoolOpMulticall.js +0 -155
  308. package/dist/cjs/preview/simulate/simulatePoolOpV1.js +0 -106
  309. package/dist/esm/preview/parse/extractExpectedBalanceChanges.js +0 -24
  310. package/dist/esm/preview/simulate/constants.js +0 -4
  311. package/dist/esm/preview/simulate/extractERC20Transfers.js +0 -23
  312. package/dist/esm/preview/simulate/holders.js +0 -21
  313. package/dist/esm/preview/simulate/simulatePoolOpMulticall.js +0 -130
  314. package/dist/esm/preview/simulate/simulatePoolOpV1.js +0 -82
  315. package/dist/esm/sdk/market/zapper/Zapper.js +0 -23
  316. package/dist/types/preview/parse/extractExpectedBalanceChanges.d.ts +0 -22
  317. package/dist/types/preview/simulate/constants.d.ts +0 -6
  318. package/dist/types/preview/simulate/extractERC20Transfers.d.ts +0 -11
  319. package/dist/types/preview/simulate/holders.d.ts +0 -7
  320. package/dist/types/preview/simulate/simulatePoolOpMulticall.d.ts +0 -28
  321. package/dist/types/preview/simulate/simulatePoolOpV1.d.ts +0 -14
  322. package/dist/types/sdk/market/zapper/Zapper.d.ts +0 -13
@@ -1,41 +1,59 @@
1
1
  import { erc20Abi } from "viem";
2
+ import { iMulticall3Abi } from "../../abi/iMulticall3.js";
3
+ import { hexEq, NATIVE_ADDRESS } from "../../sdk/index.js";
2
4
  import {
3
5
  Prerequisite,
4
6
  toPrerequisiteError
5
7
  } from "./Prerequisite.js";
6
8
  class BalancePrerequisite extends Prerequisite {
7
- _id;
8
- _title;
9
- _detail;
9
+ #id;
10
+ #title;
11
+ #detail;
10
12
  constructor(props) {
11
13
  super();
12
- this._id = props.id ?? `balance:${props.token}:${props.owner}`;
13
- this._title = props.title ?? "Sufficient balance";
14
- this._detail = {
14
+ this.#id = props.id ?? `balance:${props.token}:${props.owner}`;
15
+ this.#title = props.title ?? "Sufficient balance";
16
+ this.#detail = {
15
17
  token: props.token,
16
18
  owner: props.owner,
17
19
  required: props.required
18
20
  };
19
21
  }
20
22
  get id() {
21
- return this._id;
23
+ return this.#id;
22
24
  }
23
25
  get kind() {
24
26
  return "balance";
25
27
  }
26
28
  get title() {
27
- return this._title;
29
+ return this.#title;
28
30
  }
29
31
  get detail() {
30
- return this._detail;
32
+ return this.#detail;
31
33
  }
32
- calls() {
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
+ }
33
51
  return [
34
52
  {
35
- address: this._detail.token,
53
+ address: this.#detail.token,
36
54
  abi: erc20Abi,
37
55
  functionName: "balanceOf",
38
- args: [this._detail.owner]
56
+ args: [this.#detail.owner]
39
57
  }
40
58
  ];
41
59
  }
@@ -45,8 +63,8 @@ class BalancePrerequisite extends Prerequisite {
45
63
  return this.errorResult(toPrerequisiteError(res?.error));
46
64
  }
47
65
  const actual = res.result;
48
- return this.satisfiedResult(actual >= this._detail.required, {
49
- ...this._detail,
66
+ return this.satisfiedResult(actual >= this.#detail.required, {
67
+ ...this.#detail,
50
68
  actual
51
69
  });
52
70
  }
@@ -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
+ };
@@ -1,8 +1,19 @@
1
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";
2
10
  import { AllowancePrerequisite } from "./AllowancePrerequisite.js";
3
11
  import { BalancePrerequisite } from "./BalancePrerequisite.js";
4
- function buildPrerequisites(tx, ctx) {
5
- const { wallet } = ctx;
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 };
6
17
  switch (tx.operation) {
7
18
  // Deposit and Mint both pull the underlying from the caller into the pool;
8
19
  // they only differ in which side (assets vs shares) the caller specifies.
@@ -11,6 +22,29 @@ function buildPrerequisites(tx, ctx) {
11
22
  // here we approximate Mint by its shares amount (a lower bound on assets is
12
23
  // not knowable from calldata alone).
13
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
+ }
14
48
  return [
15
49
  new AllowancePrerequisite({
16
50
  token: tx.underlying,
@@ -45,6 +79,23 @@ function buildPrerequisites(tx, ctx) {
45
79
  // Redeem and Withdraw both burn LP shares from `owner`; they only differ in
46
80
  // which side (shares vs assets) the caller specifies.
47
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
+ }
48
99
  const prereqs = [
49
100
  new BalancePrerequisite({
50
101
  token: tx.pool,
@@ -93,7 +144,37 @@ function buildPrerequisites(tx, ctx) {
93
144
  case "OpenCreditAccount":
94
145
  case "CloseCreditAccount":
95
146
  case "LiquidateCreditAccount":
96
- return collateralPrerequisites(tx.multicall, tx.creditManager, wallet);
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
+ );
97
178
  case "PartiallyLiquidateCreditAccount": {
98
179
  const underlying = underlyingOf(ctx.sdk, tx.creditManager);
99
180
  if (!underlying || tx.repaidAmount === 0n) {
@@ -119,28 +200,28 @@ function buildPrerequisites(tx, ctx) {
119
200
  return [];
120
201
  }
121
202
  }
122
- function collateralPrerequisites(multicall, creditManager, wallet) {
123
- const required = /* @__PURE__ */ new Map();
203
+ async function collateralPrerequisites(spenderOptions, multicall, ctx) {
204
+ const { sdk, wallet } = ctx;
205
+ const required = new AssetsMap();
124
206
  for (const op of multicall) {
125
207
  if (op.operation !== "AddCollateral" || op.amount === 0n) {
126
208
  continue;
127
209
  }
128
- const key = op.token.toLowerCase();
129
- const existing = required.get(key);
130
- required.set(key, {
131
- token: op.token,
132
- amount: (existing?.amount ?? 0n) + op.amount
133
- });
210
+ required.inc(op.token, op.amount);
211
+ }
212
+ if (required.size === 0) {
213
+ return [];
134
214
  }
215
+ const spender = await sdk.accounts.getApprovalAddress(spenderOptions);
135
216
  const prereqs = [];
136
- for (const { token, amount } of required.values()) {
217
+ for (const [token, amount] of required.entries()) {
137
218
  prereqs.push(
138
219
  new AllowancePrerequisite({
139
220
  token,
140
221
  owner: wallet,
141
- spender: creditManager,
222
+ spender,
142
223
  required: amount,
143
- title: "Collateral approved to credit manager"
224
+ title: "Collateral approved"
144
225
  }),
145
226
  new BalancePrerequisite({
146
227
  token,
@@ -152,6 +233,41 @@ function collateralPrerequisites(multicall, creditManager, wallet) {
152
233
  }
153
234
  return prereqs;
154
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
+ }
155
271
  function underlyingOf(sdk, creditManager) {
156
272
  const suite = sdk.marketRegister.creditManagers.find(
157
273
  (cm) => isAddressEqual(cm.creditManager.address, creditManager)
@@ -3,5 +3,6 @@ export * from "./BalancePrerequisite.js";
3
3
  export * from "./buildPrerequisites.js";
4
4
  export * from "./Prerequisite.js";
5
5
  export * from "./prepareAction.js";
6
+ export * from "./RWAOpenRequirementsPrerequisite.js";
6
7
  export * from "./runPrerequisites.js";
7
8
  export * from "./types.js";
@@ -0,0 +1,110 @@
1
+ import { AbstractAdapterContract } from "../../plugins/adapters/index.js";
2
+ import {
3
+ AssetsMap,
4
+ MAX_UINT256,
5
+ MIN_INT96
6
+ } from "../../sdk/index.js";
7
+ function makeInnerOperationsState() {
8
+ return {
9
+ balances: new AssetsMap(),
10
+ debt: 0n,
11
+ totalDebt: 0n,
12
+ collateralAdded: new AssetsMap(),
13
+ collateralWithdrawn: new AssetsMap(),
14
+ quotaChanges: []
15
+ };
16
+ }
17
+ function applyInnerOperations(sdk, multicall, state) {
18
+ let inBracket = false;
19
+ let storeSeen = false;
20
+ for (const op of multicall) {
21
+ switch (op.operation) {
22
+ case "AddCollateral":
23
+ state.collateralAdded.inc(op.token, op.amount);
24
+ state.balances.inc(op.token, op.amount);
25
+ break;
26
+ case "WithdrawCollateral": {
27
+ const running = state.balances.get(op.token) ?? 0n;
28
+ const amount = op.amount === MAX_UINT256 ? running > 0n ? running : 0n : op.amount;
29
+ state.balances.dec(op.token, amount);
30
+ state.collateralWithdrawn.inc(op.token, amount);
31
+ break;
32
+ }
33
+ case "IncreaseBorrowedAmount":
34
+ state.debt += op.amount;
35
+ state.totalDebt += op.amount;
36
+ state.balances.inc(op.token, op.amount);
37
+ break;
38
+ case "DecreaseBorrowedAmount": {
39
+ const repaid = op.amount > state.totalDebt ? state.totalDebt : op.amount;
40
+ state.balances.dec(op.token, repaid);
41
+ state.totalDebt -= repaid;
42
+ if (state.debt > state.totalDebt) {
43
+ state.debt = state.totalDebt;
44
+ }
45
+ break;
46
+ }
47
+ case "UpdateQuota":
48
+ state.quotaChanges.push({ token: op.token, balance: op.change });
49
+ break;
50
+ case "StoreExpectedBalances":
51
+ if (storeSeen) {
52
+ throw new Error(
53
+ "malformed multicall: duplicate storeExpectedBalances call"
54
+ );
55
+ }
56
+ storeSeen = true;
57
+ inBracket = true;
58
+ for (const { token, balance } of op.deltas) {
59
+ state.balances.inc(token, balance);
60
+ }
61
+ break;
62
+ case "CompareBalances":
63
+ if (!inBracket) {
64
+ throw new Error(
65
+ "malformed multicall: compareBalances without a preceding storeExpectedBalances"
66
+ );
67
+ }
68
+ inBracket = false;
69
+ break;
70
+ case "Execute":
71
+ if (inBracket) {
72
+ const adapter = sdk.getContract(op.adapter);
73
+ if (!(adapter instanceof AbstractAdapterContract)) {
74
+ throw new Error(
75
+ `call to ${op.adapter} between storeExpectedBalances and compareBalances is not an adapter call`
76
+ );
77
+ }
78
+ adapter.previewBalanceChanges(state.balances, op.calldata);
79
+ }
80
+ break;
81
+ }
82
+ }
83
+ if (inBracket) {
84
+ throw new Error(
85
+ "malformed multicall: storeExpectedBalances without a matching compareBalances"
86
+ );
87
+ }
88
+ }
89
+ function applyQuotaChanges(initialQuotas, changes) {
90
+ const final = initialQuotas.clone();
91
+ for (const { token, balance: change } of changes) {
92
+ if (change === MIN_INT96) {
93
+ final.upsert(token, 0n);
94
+ } else {
95
+ const next = (final.get(token) ?? 0n) + change;
96
+ final.upsert(token, next > 0n ? next : 0n);
97
+ }
98
+ }
99
+ const quotas = final.entries().filter(([, balance]) => balance > 0n).map(([token, balance]) => ({ token, balance }));
100
+ const quotasChange = final.entries().map(([token, balance]) => ({
101
+ token,
102
+ balance: balance - (initialQuotas.get(token) ?? 0n)
103
+ })).filter(({ balance }) => balance !== 0n);
104
+ return { quotas, quotasChange };
105
+ }
106
+ export {
107
+ applyInnerOperations,
108
+ applyQuotaChanges,
109
+ makeInnerOperationsState
110
+ };
@@ -0,0 +1,27 @@
1
+ class InvalidTransactionValueError extends Error {
2
+ /** Transaction `msg.value`. */
3
+ value;
4
+ /** Amount of wrapped native token added as collateral. */
5
+ wethCollateral;
6
+ constructor(value, wethCollateral) {
7
+ super(
8
+ `transaction value ${value} exceeds WETH collateral ${wethCollateral}`
9
+ );
10
+ this.name = "InvalidTransactionValueError";
11
+ this.value = value;
12
+ this.wethCollateral = wethCollateral;
13
+ }
14
+ }
15
+ class UnsupportedOperationError extends Error {
16
+ /** The parsed operation kind (the `operation` discriminant). */
17
+ operation;
18
+ constructor(operation) {
19
+ super(`operation "${operation}" is not supported by previewOperation`);
20
+ this.name = "UnsupportedOperationError";
21
+ this.operation = operation;
22
+ }
23
+ }
24
+ export {
25
+ InvalidTransactionValueError,
26
+ UnsupportedOperationError
27
+ };
@@ -0,0 +1,5 @@
1
+ export * from "./applyInnerOperations.js";
2
+ export * from "./errors.js";
3
+ export * from "./previewAdjustCreditAccount.js";
4
+ export * from "./previewOperation.js";
5
+ export * from "./types.js";
@@ -0,0 +1,79 @@
1
+ import {
2
+ AP_WETH_TOKEN,
3
+ AssetsMap,
4
+ NO_VERSION
5
+ } from "../../sdk/index.js";
6
+ import {
7
+ applyInnerOperations,
8
+ applyQuotaChanges,
9
+ makeInnerOperationsState
10
+ } from "./applyInnerOperations.js";
11
+ import { unwrapNativeCollateral } from "./unwrapNativeCollateral.js";
12
+ async function previewAdjustCreditAccount(input, operation, options) {
13
+ const { sdk, value = 0n } = input;
14
+ const market = sdk.marketRegister.findByCreditManager(
15
+ operation.creditManager
16
+ );
17
+ let ca = options?.creditAccount;
18
+ if (!ca) {
19
+ ca = await sdk.accounts.getCreditAccountData(
20
+ operation.creditAccount,
21
+ options?.blockNumber
22
+ );
23
+ }
24
+ if (!ca) {
25
+ throw new Error(`credit account ${operation.creditAccount} not found`);
26
+ }
27
+ const initialBalances = new AssetsMap();
28
+ const initialQuotas = new AssetsMap();
29
+ for (const t of ca.tokens) {
30
+ if (t.balance > 1n) {
31
+ initialBalances.upsert(t.token, t.balance);
32
+ }
33
+ if (t.quota > 1n) {
34
+ initialQuotas.upsert(t.token, t.quota);
35
+ }
36
+ }
37
+ const state = makeInnerOperationsState();
38
+ for (const [token, balance] of initialBalances.entries()) {
39
+ state.balances.upsert(token, balance);
40
+ }
41
+ state.debt = ca.debt;
42
+ state.totalDebt = ca.debt + ca.accruedInterest + ca.accruedFees;
43
+ applyInnerOperations(sdk, operation.multicall, state);
44
+ const collateralAdded = unwrapNativeCollateral(
45
+ state.collateralAdded.toAssets(),
46
+ value,
47
+ sdk.addressProvider.getAddress(AP_WETH_TOKEN, NO_VERSION)
48
+ );
49
+ const { quotas, quotasChange } = applyQuotaChanges(
50
+ initialQuotas,
51
+ state.quotaChanges
52
+ );
53
+ const assets = state.balances.toAssets(true);
54
+ const assetsChange = state.balances.entries().map(([token, balance]) => ({
55
+ token,
56
+ balance: balance - (initialBalances.get(token) ?? 0n)
57
+ })).filter(({ balance }) => balance !== 0n);
58
+ const totalValue = assets.reduce(
59
+ (acc, { token, balance }) => acc + market.priceOracle.convert(token, market.underlying, balance),
60
+ 0n
61
+ );
62
+ return {
63
+ operation: "AdjustCreditAccount",
64
+ creditManager: operation.creditManager,
65
+ creditAccount: operation.creditAccount,
66
+ collateralAdded,
67
+ collateralWithdrawn: state.collateralWithdrawn.toAssets(),
68
+ totalValue,
69
+ debt: state.debt,
70
+ debtChange: state.debt - ca.debt,
71
+ quotas,
72
+ quotasChange,
73
+ assets,
74
+ assetsChange
75
+ };
76
+ }
77
+ export {
78
+ previewAdjustCreditAccount
79
+ };
@@ -0,0 +1,51 @@
1
+ import {
2
+ AP_WETH_TOKEN,
3
+ NO_VERSION
4
+ } from "../../sdk/index.js";
5
+ import {
6
+ applyInnerOperations,
7
+ makeInnerOperationsState
8
+ } from "./applyInnerOperations.js";
9
+ import { unwrapNativeCollateral } from "./unwrapNativeCollateral.js";
10
+ function previewOpenCreditAccount(input, operation) {
11
+ const { sdk, value = 0n } = input;
12
+ const market = sdk.marketRegister.findByCreditManager(
13
+ operation.creditManager
14
+ );
15
+ const state = makeInnerOperationsState();
16
+ applyInnerOperations(sdk, operation.multicall, state);
17
+ let collateral = state.collateralAdded.toAssets();
18
+ const collateralValue = collateral.reduce(
19
+ (acc, { token, balance }) => acc + market.priceOracle.convert(token, market.underlying, balance),
20
+ 0n
21
+ );
22
+ collateral = unwrapNativeCollateral(
23
+ collateral,
24
+ value,
25
+ sdk.addressProvider.getAddress(AP_WETH_TOKEN, NO_VERSION)
26
+ );
27
+ const assets = state.balances.entries().filter(([, balance]) => balance > 1n).map(([token, balance]) => ({ token, balance }));
28
+ return {
29
+ operation: operation.operation,
30
+ creditManager: operation.creditManager,
31
+ target: inferTargetAsset(operation.multicall, state.balances),
32
+ collateral,
33
+ collateralValue,
34
+ debt: state.debt,
35
+ // On opening, initial quotas are zero, so the raw changes are the quotas.
36
+ quotas: state.quotaChanges,
37
+ assets
38
+ };
39
+ }
40
+ function inferTargetAsset(multicall, balances) {
41
+ for (const op of multicall) {
42
+ if (op.operation === "UpdateQuota" && op.change > 0n) {
43
+ const balance = balances.get(op.token);
44
+ return balance ? { token: op.token, balance } : void 0;
45
+ }
46
+ }
47
+ return void 0;
48
+ }
49
+ export {
50
+ previewOpenCreditAccount
51
+ };
@@ -0,0 +1,21 @@
1
+ import { isPoolOperation, parseOperationCalldata } from "../parse/index.js";
2
+ import { UnsupportedOperationError } from "./errors.js";
3
+ import { previewAdjustCreditAccount } from "./previewAdjustCreditAccount.js";
4
+ import { previewOpenCreditAccount } from "./previewOpenCreditAccount.js";
5
+ import { previewPoolOperation } from "./previewPoolOperation.js";
6
+ async function previewOperation(input, options) {
7
+ const operation = parseOperationCalldata(input);
8
+ if (isPoolOperation(operation)) {
9
+ return previewPoolOperation(input, operation, options);
10
+ }
11
+ if (operation.operation === "OpenCreditAccount" || operation.operation === "SecuritizeOpenCreditAccount") {
12
+ return previewOpenCreditAccount(input, operation);
13
+ }
14
+ if (operation.operation === "MultiCall" || operation.operation === "BotMulticall" || operation.operation === "SecuritizeMulticall") {
15
+ return previewAdjustCreditAccount(input, operation, options);
16
+ }
17
+ throw new UnsupportedOperationError(operation.operation);
18
+ }
19
+ export {
20
+ previewOperation
21
+ };
@@ -0,0 +1,53 @@
1
+ import {
2
+ simulatePoolOperation
3
+ } from "../simulate/index.js";
4
+ async function previewPoolOperation(input, operation, options) {
5
+ const { sdk, to, calldata } = input;
6
+ const { tokenIn, tokenOut } = operation;
7
+ const sim = await simulatePoolOperation(
8
+ { sdk, operation, to, calldata },
9
+ options
10
+ );
11
+ if (sim.status === "success") {
12
+ return {
13
+ operation: operation.operation,
14
+ pool: operation.pool,
15
+ tokenIn: { token: tokenIn, balance: sim.amountIn },
16
+ tokenOut: { token: tokenOut, balance: sim.amountOut }
17
+ };
18
+ }
19
+ const { error } = sim;
20
+ switch (operation.operation) {
21
+ case "Deposit":
22
+ return {
23
+ operation: "Deposit",
24
+ pool: operation.pool,
25
+ tokenIn: { token: tokenIn, balance: operation.assets },
26
+ tokenOut: { token: tokenOut, error }
27
+ };
28
+ case "Mint":
29
+ return {
30
+ operation: "Mint",
31
+ pool: operation.pool,
32
+ tokenIn: { token: tokenIn, error },
33
+ tokenOut: { token: tokenOut, balance: operation.shares }
34
+ };
35
+ case "Withdraw":
36
+ return {
37
+ operation: "Withdraw",
38
+ pool: operation.pool,
39
+ tokenIn: { token: tokenIn, error },
40
+ tokenOut: { token: tokenOut, balance: operation.assets }
41
+ };
42
+ case "Redeem":
43
+ return {
44
+ operation: "Redeem",
45
+ pool: operation.pool,
46
+ tokenIn: { token: tokenIn, balance: operation.shares },
47
+ tokenOut: { token: tokenOut, error }
48
+ };
49
+ }
50
+ }
51
+ export {
52
+ previewPoolOperation
53
+ };
File without changes