@gearbox-protocol/sdk 13.0.0-next.3 → 13.0.0-next.31

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 (350) hide show
  1. package/dist/cjs/abi/310/iSecuritizeDegenNFT.js +263 -0
  2. package/dist/cjs/abi/310/iSecuritizeKYCFactory.js +278 -0
  3. package/dist/cjs/dev/AccountOpener.js +45 -5
  4. package/dist/cjs/dev/providers.js +12 -0
  5. package/dist/cjs/history/assembleOperations.js +103 -0
  6. package/dist/cjs/history/classifyMulticallOperations.js +157 -0
  7. package/dist/cjs/history/errors.js +91 -0
  8. package/dist/cjs/history/extractProtocolCalls.js +53 -0
  9. package/dist/cjs/history/extractTransfers.js +168 -0
  10. package/dist/cjs/history/findFacadeCalls.js +84 -0
  11. package/dist/cjs/history/index.js +39 -0
  12. package/dist/cjs/history/inner-operations.js +16 -0
  13. package/dist/cjs/history/internal-types.js +16 -0
  14. package/dist/cjs/history/mapOperations.js +79 -0
  15. package/dist/cjs/history/package.json +1 -0
  16. package/dist/cjs/history/parseCreditAccountTransaction.js +86 -0
  17. package/dist/cjs/history/populateContractsRegister.js +68 -0
  18. package/dist/cjs/history/toLegacyOperation.js +182 -0
  19. package/dist/cjs/{plugins/adapters/contracts/YearnV2AdapterContract.js → history/trace-utils.js} +36 -21
  20. package/dist/cjs/history/types.js +16 -0
  21. package/dist/cjs/plugins/adapters/AdaptersPlugin.js +13 -106
  22. package/dist/cjs/plugins/adapters/abi/index.js +2 -0
  23. package/dist/cjs/plugins/adapters/abi/targetContractAbi.js +5168 -0
  24. package/dist/cjs/plugins/adapters/contracts/AbstractAdapter.js +102 -3
  25. package/dist/cjs/plugins/adapters/contracts/AccountMigratorAdapterContract.js +8 -1
  26. package/dist/cjs/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +40 -30
  27. package/dist/cjs/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +21 -11
  28. package/dist/cjs/plugins/adapters/contracts/CamelotV3AdapterContract.js +31 -21
  29. package/dist/cjs/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +91 -25
  30. package/dist/cjs/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +63 -25
  31. package/dist/cjs/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +68 -31
  32. package/dist/cjs/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +68 -31
  33. package/dist/cjs/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +73 -31
  34. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterDeposit.js +80 -33
  35. package/dist/cjs/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +62 -26
  36. package/dist/cjs/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +80 -34
  37. package/dist/cjs/plugins/adapters/contracts/DaiUsdsAdapterContract.js +39 -14
  38. package/dist/cjs/plugins/adapters/contracts/ERC4626AdapterContract.js +55 -27
  39. package/dist/cjs/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +39 -14
  40. package/dist/cjs/plugins/adapters/contracts/FluidDexAdapterContract.js +27 -14
  41. package/dist/cjs/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +45 -23
  42. package/dist/cjs/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.js +23 -14
  43. package/dist/cjs/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +22 -12
  44. package/dist/cjs/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.js +26 -16
  45. package/dist/cjs/plugins/adapters/contracts/LidoV1AdapterContract.js +39 -17
  46. package/dist/cjs/plugins/adapters/contracts/MellowClaimerAdapterContract.js +21 -11
  47. package/dist/cjs/plugins/adapters/contracts/MellowDVVAdapterContract.js +38 -14
  48. package/dist/cjs/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +71 -42
  49. package/dist/cjs/plugins/adapters/contracts/MellowWrapperAdapterContract.js +21 -11
  50. package/dist/cjs/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +36 -17
  51. package/dist/cjs/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +38 -21
  52. package/dist/cjs/plugins/adapters/contracts/PendleRouterAdapterContract.js +63 -53
  53. package/dist/cjs/plugins/adapters/contracts/StakingRewardsAdapterContract.js +62 -37
  54. package/dist/cjs/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +35 -25
  55. package/dist/cjs/plugins/adapters/contracts/UniswapV2AdapterContract.js +35 -21
  56. package/dist/cjs/plugins/adapters/contracts/UniswapV3AdapterContract.js +32 -23
  57. package/dist/cjs/plugins/adapters/contracts/UniswapV4AdapterContract.js +41 -27
  58. package/dist/cjs/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +34 -17
  59. package/dist/cjs/plugins/adapters/contracts/VelodromeV2AdapterContract.js +35 -25
  60. package/dist/cjs/plugins/adapters/contracts/WstETHV1AdapterContract.js +31 -11
  61. package/dist/cjs/plugins/adapters/contracts/deprecated/BalancerV2VaultAdapterContract.js +585 -0
  62. package/dist/cjs/plugins/adapters/contracts/deprecated/EqualizerRouterAdapterContract.js +262 -0
  63. package/dist/cjs/plugins/adapters/contracts/deprecated/InfraredVaultAdapterContract.js +296 -0
  64. package/dist/cjs/plugins/adapters/contracts/deprecated/KodiakIslandGatewayAdapterContract.js +415 -0
  65. package/dist/cjs/plugins/adapters/contracts/deprecated/MellowDepositQueueAdapterContract.js +74 -0
  66. package/dist/cjs/plugins/adapters/contracts/{MellowRedeemQueueAdapterContract.js → deprecated/MellowRedeemQueueAdapterContract.js} +33 -14
  67. package/dist/cjs/plugins/adapters/contracts/deprecated/MellowVaultAdapterContract.js +233 -0
  68. package/dist/cjs/plugins/adapters/contracts/deprecated/YearnV2AdapterContract.js +359 -0
  69. package/dist/cjs/plugins/adapters/contracts/deprecated/index.js +36 -0
  70. package/dist/cjs/plugins/adapters/contracts/index.js +3 -17
  71. package/dist/cjs/plugins/adapters/contracts/types.js +0 -9
  72. package/dist/cjs/plugins/adapters/createAdapter.js +140 -0
  73. package/dist/cjs/plugins/adapters/index.js +6 -0
  74. package/dist/cjs/plugins/adapters/legacyAdapterOperations.js +16 -0
  75. package/dist/cjs/plugins/adapters/transferHelpers.js +127 -0
  76. package/dist/cjs/sdk/accounts/AbstractCreditAccountsService.js +464 -105
  77. package/dist/cjs/sdk/accounts/CreditAccountsServiceV300.js +9 -4
  78. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +16 -5
  79. package/dist/cjs/sdk/base/BaseContract.js +54 -3
  80. package/dist/cjs/sdk/base/ChainContractsRegister.js +34 -1
  81. package/dist/cjs/sdk/base/Construct.js +11 -3
  82. package/dist/cjs/sdk/base/PlaceholderContract.js +2 -2
  83. package/dist/cjs/sdk/base/TokensMeta.js +161 -22
  84. package/dist/cjs/sdk/base/errors.js +35 -0
  85. package/dist/cjs/sdk/base/index.js +2 -0
  86. package/dist/cjs/sdk/chain/chains.js +2 -1
  87. package/dist/cjs/sdk/market/MarketRegister.js +2 -2
  88. package/dist/cjs/sdk/market/MarketSuite.js +3 -0
  89. package/dist/cjs/sdk/{pools/extraZappers.js → market/ZapperRegister.js} +110 -6
  90. package/dist/cjs/sdk/market/adapters/PlaceholderAdapterContracts.js +10 -4
  91. package/dist/cjs/sdk/market/adapters/{factory.js → createAdapter.js} +3 -3
  92. package/dist/cjs/sdk/market/adapters/index.js +2 -2
  93. package/dist/cjs/sdk/market/credit/CreditFacadeV310BaseContract.js +108 -0
  94. package/dist/cjs/sdk/market/credit/CreditFacadeV310Contract.js +3 -40
  95. package/dist/cjs/sdk/market/credit/index.js +2 -0
  96. package/dist/cjs/sdk/market/index.js +3 -1
  97. package/dist/cjs/sdk/market/pool/PoolSuite.js +3 -0
  98. package/dist/cjs/sdk/market/pool/PoolV300Contract.js +3 -0
  99. package/dist/cjs/sdk/market/pool/PoolV310Contract.js +17 -2
  100. package/dist/cjs/sdk/market/pool/SecuritizeKYCFactory.js +97 -0
  101. package/dist/cjs/sdk/market/pool/index.js +2 -0
  102. package/dist/cjs/sdk/market/pricefeeds/PythPriceFeed.js +20 -0
  103. package/dist/cjs/sdk/market/types.js +16 -0
  104. package/dist/cjs/sdk/pools/PoolService.js +181 -91
  105. package/dist/cjs/sdk/sdk-legacy/core/creditAccount.js +2 -0
  106. package/dist/cjs/sdk/utils/AddressMap.js +1 -1
  107. package/dist/cjs/sdk/utils/abi-decode.js +43 -2
  108. package/dist/cjs/sdk/utils/viem/sendRawTx.js +16 -0
  109. package/dist/esm/abi/310/iSecuritizeDegenNFT.js +239 -0
  110. package/dist/esm/abi/310/iSecuritizeKYCFactory.js +254 -0
  111. package/dist/esm/dev/AccountOpener.js +47 -6
  112. package/dist/esm/dev/providers.js +12 -0
  113. package/dist/esm/history/assembleOperations.js +79 -0
  114. package/dist/esm/history/classifyMulticallOperations.js +137 -0
  115. package/dist/esm/history/errors.js +62 -0
  116. package/dist/esm/history/extractProtocolCalls.js +32 -0
  117. package/dist/esm/history/extractTransfers.js +148 -0
  118. package/dist/esm/history/findFacadeCalls.js +63 -0
  119. package/dist/esm/history/index.js +9 -0
  120. package/dist/esm/history/inner-operations.js +0 -0
  121. package/dist/esm/history/internal-types.js +0 -0
  122. package/dist/esm/history/mapOperations.js +55 -0
  123. package/dist/esm/history/package.json +1 -0
  124. package/dist/esm/history/parseCreditAccountTransaction.js +62 -0
  125. package/dist/esm/history/populateContractsRegister.js +52 -0
  126. package/dist/esm/history/toLegacyOperation.js +157 -0
  127. package/dist/esm/history/trace-utils.js +36 -0
  128. package/dist/esm/history/types.js +0 -0
  129. package/dist/esm/plugins/adapters/AdaptersPlugin.js +14 -148
  130. package/dist/esm/plugins/adapters/abi/index.js +1 -0
  131. package/dist/esm/plugins/adapters/abi/targetContractAbi.js +5113 -0
  132. package/dist/esm/plugins/adapters/contracts/AbstractAdapter.js +111 -4
  133. package/dist/esm/plugins/adapters/contracts/AccountMigratorAdapterContract.js +8 -1
  134. package/dist/esm/plugins/adapters/contracts/BalancerV3RouterAdapterContract.js +40 -30
  135. package/dist/esm/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.js +21 -11
  136. package/dist/esm/plugins/adapters/contracts/CamelotV3AdapterContract.js +31 -21
  137. package/dist/esm/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.js +100 -26
  138. package/dist/esm/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.js +65 -25
  139. package/dist/esm/plugins/adapters/contracts/Curve2AssetsAdapterContract.js +70 -31
  140. package/dist/esm/plugins/adapters/contracts/Curve3AssetsAdapterContract.js +70 -31
  141. package/dist/esm/plugins/adapters/contracts/Curve4AssetsAdapterContract.js +75 -31
  142. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterDeposit.js +82 -33
  143. package/dist/esm/plugins/adapters/contracts/CurveV1AdapterStETHContract.js +64 -26
  144. package/dist/esm/plugins/adapters/contracts/CurveV1StableNGAdapterContract.js +85 -34
  145. package/dist/esm/plugins/adapters/contracts/DaiUsdsAdapterContract.js +41 -14
  146. package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +57 -27
  147. package/dist/esm/plugins/adapters/contracts/ERC4626ReferralAdapterContract.js +41 -14
  148. package/dist/esm/plugins/adapters/contracts/FluidDexAdapterContract.js +29 -14
  149. package/dist/esm/plugins/adapters/contracts/InfinifiGatewayAdapterContract.js +47 -23
  150. package/dist/esm/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.js +29 -15
  151. package/dist/esm/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.js +27 -12
  152. package/dist/esm/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.js +31 -16
  153. package/dist/esm/plugins/adapters/contracts/LidoV1AdapterContract.js +41 -17
  154. package/dist/esm/plugins/adapters/contracts/MellowClaimerAdapterContract.js +23 -11
  155. package/dist/esm/plugins/adapters/contracts/MellowDVVAdapterContract.js +40 -14
  156. package/dist/esm/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.js +74 -43
  157. package/dist/esm/plugins/adapters/contracts/MellowWrapperAdapterContract.js +23 -11
  158. package/dist/esm/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.js +38 -17
  159. package/dist/esm/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.js +44 -22
  160. package/dist/esm/plugins/adapters/contracts/PendleRouterAdapterContract.js +65 -53
  161. package/dist/esm/plugins/adapters/contracts/StakingRewardsAdapterContract.js +64 -37
  162. package/dist/esm/plugins/adapters/contracts/TraderJoeRouterAdapterContract.js +35 -25
  163. package/dist/esm/plugins/adapters/contracts/UniswapV2AdapterContract.js +36 -22
  164. package/dist/esm/plugins/adapters/contracts/UniswapV3AdapterContract.js +33 -24
  165. package/dist/esm/plugins/adapters/contracts/UniswapV4AdapterContract.js +45 -28
  166. package/dist/esm/plugins/adapters/contracts/UpshiftVaultAdapterContract.js +40 -18
  167. package/dist/esm/plugins/adapters/contracts/VelodromeV2AdapterContract.js +35 -25
  168. package/dist/esm/plugins/adapters/contracts/WstETHV1AdapterContract.js +33 -11
  169. package/dist/esm/plugins/adapters/contracts/deprecated/BalancerV2VaultAdapterContract.js +559 -0
  170. package/dist/esm/plugins/adapters/contracts/deprecated/EqualizerRouterAdapterContract.js +236 -0
  171. package/dist/esm/plugins/adapters/contracts/deprecated/InfraredVaultAdapterContract.js +272 -0
  172. package/dist/esm/plugins/adapters/contracts/deprecated/KodiakIslandGatewayAdapterContract.js +390 -0
  173. package/dist/esm/plugins/adapters/contracts/deprecated/MellowDepositQueueAdapterContract.js +52 -0
  174. package/dist/esm/plugins/adapters/contracts/deprecated/MellowRedeemQueueAdapterContract.js +45 -0
  175. package/dist/esm/plugins/adapters/contracts/deprecated/MellowVaultAdapterContract.js +209 -0
  176. package/dist/esm/plugins/adapters/contracts/deprecated/YearnV2AdapterContract.js +336 -0
  177. package/dist/esm/plugins/adapters/contracts/deprecated/index.js +8 -0
  178. package/dist/esm/plugins/adapters/contracts/index.js +1 -8
  179. package/dist/esm/plugins/adapters/contracts/types.js +0 -8
  180. package/dist/esm/plugins/adapters/createAdapter.js +158 -0
  181. package/dist/esm/plugins/adapters/index.js +3 -0
  182. package/dist/esm/plugins/adapters/legacyAdapterOperations.js +0 -0
  183. package/dist/esm/plugins/adapters/transferHelpers.js +95 -0
  184. package/dist/esm/sdk/accounts/AbstractCreditAccountsService.js +464 -105
  185. package/dist/esm/sdk/accounts/CreditAccountsServiceV300.js +9 -4
  186. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +16 -5
  187. package/dist/esm/sdk/base/BaseContract.js +56 -3
  188. package/dist/esm/sdk/base/ChainContractsRegister.js +34 -1
  189. package/dist/esm/sdk/base/Construct.js +11 -3
  190. package/dist/esm/sdk/base/PlaceholderContract.js +2 -2
  191. package/dist/esm/sdk/base/TokensMeta.js +165 -21
  192. package/dist/esm/sdk/base/errors.js +11 -0
  193. package/dist/esm/sdk/base/index.js +1 -0
  194. package/dist/esm/sdk/chain/chains.js +2 -1
  195. package/dist/esm/sdk/market/MarketRegister.js +2 -2
  196. package/dist/esm/sdk/market/MarketSuite.js +3 -0
  197. package/dist/esm/sdk/{pools/extraZappers.js → market/ZapperRegister.js} +109 -2
  198. package/dist/esm/sdk/market/adapters/PlaceholderAdapterContracts.js +14 -5
  199. package/dist/esm/sdk/market/adapters/index.js +1 -1
  200. package/dist/esm/sdk/market/credit/CreditFacadeV310BaseContract.js +86 -0
  201. package/dist/esm/sdk/market/credit/CreditFacadeV310Contract.js +3 -43
  202. package/dist/esm/sdk/market/credit/index.js +1 -0
  203. package/dist/esm/sdk/market/index.js +1 -0
  204. package/dist/esm/sdk/market/pool/PoolSuite.js +3 -0
  205. package/dist/esm/sdk/market/pool/PoolV300Contract.js +3 -0
  206. package/dist/esm/sdk/market/pool/PoolV310Contract.js +17 -2
  207. package/dist/esm/sdk/market/pool/SecuritizeKYCFactory.js +73 -0
  208. package/dist/esm/sdk/market/pool/index.js +1 -0
  209. package/dist/esm/sdk/market/pricefeeds/PythPriceFeed.js +21 -1
  210. package/dist/esm/sdk/market/types.js +0 -0
  211. package/dist/esm/sdk/pools/PoolService.js +182 -98
  212. package/dist/esm/sdk/sdk-legacy/core/creditAccount.js +2 -0
  213. package/dist/esm/sdk/utils/AddressMap.js +1 -1
  214. package/dist/esm/sdk/utils/abi-decode.js +43 -2
  215. package/dist/esm/sdk/utils/viem/sendRawTx.js +19 -1
  216. package/dist/types/abi/310/iSecuritizeDegenNFT.d.ts +324 -0
  217. package/dist/types/abi/310/iSecuritizeKYCFactory.d.ts +322 -0
  218. package/dist/types/dev/providers.d.ts +5 -5
  219. package/dist/types/history/assembleOperations.d.ts +22 -0
  220. package/dist/types/history/classifyMulticallOperations.d.ts +35 -0
  221. package/dist/types/history/errors.d.ts +30 -0
  222. package/dist/types/history/extractProtocolCalls.d.ts +8 -0
  223. package/dist/types/history/extractTransfers.d.ts +22 -0
  224. package/dist/types/history/findFacadeCalls.d.ts +9 -0
  225. package/dist/types/history/index.d.ts +6 -0
  226. package/dist/types/history/inner-operations.d.ts +57 -0
  227. package/dist/types/history/internal-types.d.ts +47 -0
  228. package/dist/types/history/mapOperations.d.ts +27 -0
  229. package/dist/types/history/parseCreditAccountTransaction.d.ts +27 -0
  230. package/dist/types/history/populateContractsRegister.d.ts +19 -0
  231. package/dist/types/history/toLegacyOperation.d.ts +18 -0
  232. package/dist/types/history/trace-utils.d.ts +12 -0
  233. package/dist/types/history/types.d.ts +71 -0
  234. package/dist/types/plugins/adapters/abi/index.d.ts +1 -0
  235. package/dist/types/plugins/adapters/abi/targetContractAbi.d.ts +8262 -0
  236. package/dist/types/plugins/adapters/contracts/AbstractAdapter.d.ts +50 -8
  237. package/dist/types/plugins/adapters/contracts/AccountMigratorAdapterContract.d.ts +238 -4
  238. package/dist/types/plugins/adapters/contracts/BalancerV3RouterAdapterContract.d.ts +113 -4
  239. package/dist/types/plugins/adapters/contracts/BalancerV3WrapperAdapterContract.d.ts +37 -4
  240. package/dist/types/plugins/adapters/contracts/CamelotV3AdapterContract.d.ts +210 -4
  241. package/dist/types/plugins/adapters/contracts/ConvexV1BaseRewardPoolAdapterContract.d.ts +407 -8
  242. package/dist/types/plugins/adapters/contracts/ConvexV1BoosterAdapterContract.d.ts +208 -5
  243. package/dist/types/plugins/adapters/contracts/Curve2AssetsAdapterContract.d.ts +1244 -10
  244. package/dist/types/plugins/adapters/contracts/Curve3AssetsAdapterContract.d.ts +1244 -10
  245. package/dist/types/plugins/adapters/contracts/Curve4AssetsAdapterContract.d.ts +1244 -10
  246. package/dist/types/plugins/adapters/contracts/CurveV1AdapterDeposit.d.ts +575 -11
  247. package/dist/types/plugins/adapters/contracts/CurveV1AdapterStETHContract.d.ts +1244 -10
  248. package/dist/types/plugins/adapters/contracts/CurveV1StableNGAdapterContract.d.ts +1213 -11
  249. package/dist/types/plugins/adapters/contracts/DaiUsdsAdapterContract.d.ts +60 -6
  250. package/dist/types/plugins/adapters/contracts/ERC4626AdapterContract.d.ts +483 -6
  251. package/dist/types/plugins/adapters/contracts/ERC4626ReferralAdapterContract.d.ts +58 -6
  252. package/dist/types/plugins/adapters/contracts/FluidDexAdapterContract.d.ts +123 -6
  253. package/dist/types/plugins/adapters/contracts/InfinifiGatewayAdapterContract.d.ts +133 -8
  254. package/dist/types/plugins/adapters/contracts/InfinifiUnwindingGatewayAdapterContract.d.ts +155 -5
  255. package/dist/types/plugins/adapters/contracts/KelpLRTDepositPoolAdapterContract.d.ts +240 -6
  256. package/dist/types/plugins/adapters/contracts/KelpLRTWithdrawalManagerAdapterContract.d.ts +356 -6
  257. package/dist/types/plugins/adapters/contracts/LidoV1AdapterContract.d.ts +94 -7
  258. package/dist/types/plugins/adapters/contracts/MellowClaimerAdapterContract.d.ts +38 -5
  259. package/dist/types/plugins/adapters/contracts/MellowDVVAdapterContract.d.ts +479 -6
  260. package/dist/types/plugins/adapters/contracts/MellowERC4626VaultAdapterContract.d.ts +483 -7
  261. package/dist/types/plugins/adapters/contracts/MellowWrapperAdapterContract.d.ts +48 -5
  262. package/dist/types/plugins/adapters/contracts/MidasIssuanceVaultAdapterContract.d.ts +42 -7
  263. package/dist/types/plugins/adapters/contracts/MidasRedemptionVaultAdapterContract.d.ts +186 -7
  264. package/dist/types/plugins/adapters/contracts/PendleRouterAdapterContract.d.ts +1010 -5
  265. package/dist/types/plugins/adapters/contracts/StakingRewardsAdapterContract.d.ts +71 -8
  266. package/dist/types/plugins/adapters/contracts/TraderJoeRouterAdapterContract.d.ts +123 -4
  267. package/dist/types/plugins/adapters/contracts/UniswapV2AdapterContract.d.ts +747 -5
  268. package/dist/types/plugins/adapters/contracts/UniswapV3AdapterContract.d.ts +171 -4
  269. package/dist/types/plugins/adapters/contracts/UniswapV4AdapterContract.d.ts +96 -5
  270. package/dist/types/plugins/adapters/contracts/UpshiftVaultAdapterContract.d.ts +74 -7
  271. package/dist/types/plugins/adapters/contracts/VelodromeV2AdapterContract.d.ts +109 -4
  272. package/dist/types/plugins/adapters/contracts/WstETHV1AdapterContract.d.ts +267 -5
  273. package/dist/types/plugins/adapters/contracts/deprecated/BalancerV2VaultAdapterContract.d.ts +1664 -0
  274. package/dist/types/plugins/adapters/contracts/deprecated/EqualizerRouterAdapterContract.d.ts +611 -0
  275. package/dist/types/plugins/adapters/contracts/deprecated/InfraredVaultAdapterContract.d.ts +686 -0
  276. package/dist/types/plugins/adapters/contracts/deprecated/KodiakIslandGatewayAdapterContract.d.ts +1270 -0
  277. package/dist/types/plugins/adapters/contracts/deprecated/MellowDepositQueueAdapterContract.d.ts +19 -0
  278. package/dist/types/plugins/adapters/contracts/deprecated/MellowRedeemQueueAdapterContract.d.ts +18 -0
  279. package/dist/types/plugins/adapters/contracts/deprecated/MellowVaultAdapterContract.d.ts +531 -0
  280. package/dist/types/plugins/adapters/contracts/deprecated/YearnV2AdapterContract.d.ts +662 -0
  281. package/dist/types/plugins/adapters/contracts/deprecated/index.d.ts +8 -0
  282. package/dist/types/plugins/adapters/contracts/index.d.ts +1 -8
  283. package/dist/types/plugins/adapters/contracts/types.d.ts +0 -6
  284. package/dist/types/plugins/adapters/createAdapter.d.ts +7 -0
  285. package/dist/types/plugins/adapters/index.d.ts +3 -0
  286. package/dist/types/plugins/adapters/legacyAdapterOperations.d.ts +200 -0
  287. package/dist/types/plugins/adapters/transferHelpers.d.ts +60 -0
  288. package/dist/types/plugins/adapters/types.d.ts +59 -1
  289. package/dist/types/sdk/accounts/AbstractCreditAccountsService.d.ts +123 -27
  290. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -1
  291. package/dist/types/sdk/accounts/types.d.ts +108 -8
  292. package/dist/types/sdk/base/BaseContract.d.ts +15 -2
  293. package/dist/types/sdk/base/ChainContractsRegister.d.ts +11 -1
  294. package/dist/types/sdk/base/Construct.d.ts +6 -3
  295. package/dist/types/sdk/base/PlaceholderContract.d.ts +2 -2
  296. package/dist/types/sdk/base/TokensMeta.d.ts +30 -5
  297. package/dist/types/sdk/base/errors.d.ts +3 -0
  298. package/dist/types/sdk/base/index.d.ts +1 -0
  299. package/dist/types/sdk/base/token-types.d.ts +10 -2
  300. package/dist/types/sdk/base/types.d.ts +31 -0
  301. package/dist/types/sdk/chain/chains.d.ts +1 -1
  302. package/dist/types/sdk/market/MarketRegister.d.ts +2 -2
  303. package/dist/types/sdk/market/MarketSuite.d.ts +2 -0
  304. package/dist/types/sdk/market/ZapperRegister.d.ts +17 -0
  305. package/dist/types/sdk/market/adapters/PlaceholderAdapterContracts.d.ts +9 -4
  306. package/dist/types/sdk/market/adapters/index.d.ts +1 -1
  307. package/dist/types/sdk/market/credit/CreditFacadeV310BaseContract.d.ts +856 -0
  308. package/dist/types/sdk/market/credit/CreditFacadeV310Contract.d.ts +6 -848
  309. package/dist/types/sdk/market/credit/index.d.ts +1 -0
  310. package/dist/types/sdk/market/index.d.ts +1 -0
  311. package/dist/types/sdk/market/pool/PoolSuite.d.ts +2 -0
  312. package/dist/types/sdk/market/pool/PoolV300Contract.d.ts +2 -0
  313. package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +6 -2
  314. package/dist/types/sdk/market/pool/SecuritizeKYCFactory.d.ts +345 -0
  315. package/dist/types/sdk/market/pool/index.d.ts +1 -0
  316. package/dist/types/sdk/market/pricefeeds/PythPriceFeed.d.ts +21 -1
  317. package/dist/types/sdk/market/types.d.ts +10 -0
  318. package/dist/types/sdk/pools/PoolService.d.ts +4 -4
  319. package/dist/types/sdk/pools/types.d.ts +25 -16
  320. package/dist/types/sdk/sdk-legacy/core/creditAccount.d.ts +1 -0
  321. package/dist/types/sdk/sdk-legacy/payload/creditAccount.d.ts +1 -0
  322. package/dist/types/sdk/utils/AddressMap.d.ts +1 -1
  323. package/dist/types/sdk/utils/abi-decode.d.ts +14 -1
  324. package/dist/types/sdk/utils/viem/sendRawTx.d.ts +5 -1
  325. package/package.json +16 -11
  326. package/dist/cjs/plugins/adapters/contracts/BalancerV2VaultAdapterContract.js +0 -51
  327. package/dist/cjs/plugins/adapters/contracts/EqualizerRouterAdapterContract.js +0 -58
  328. package/dist/cjs/plugins/adapters/contracts/InfraredVaultAdapterContract.js +0 -49
  329. package/dist/cjs/plugins/adapters/contracts/KodiakIslandGatewayAdapterContract.js +0 -56
  330. package/dist/cjs/plugins/adapters/contracts/MellowDepositQueueAdapterContract.js +0 -51
  331. package/dist/cjs/plugins/adapters/contracts/MellowVaultAdapterContract.js +0 -46
  332. package/dist/esm/plugins/adapters/contracts/BalancerV2VaultAdapterContract.js +0 -27
  333. package/dist/esm/plugins/adapters/contracts/EqualizerRouterAdapterContract.js +0 -34
  334. package/dist/esm/plugins/adapters/contracts/InfraredVaultAdapterContract.js +0 -25
  335. package/dist/esm/plugins/adapters/contracts/KodiakIslandGatewayAdapterContract.js +0 -32
  336. package/dist/esm/plugins/adapters/contracts/MellowDepositQueueAdapterContract.js +0 -27
  337. package/dist/esm/plugins/adapters/contracts/MellowRedeemQueueAdapterContract.js +0 -24
  338. package/dist/esm/plugins/adapters/contracts/MellowVaultAdapterContract.js +0 -22
  339. package/dist/esm/plugins/adapters/contracts/YearnV2AdapterContract.js +0 -22
  340. package/dist/types/plugins/adapters/contracts/BalancerV2VaultAdapterContract.d.ts +0 -482
  341. package/dist/types/plugins/adapters/contracts/EqualizerRouterAdapterContract.d.ts +0 -225
  342. package/dist/types/plugins/adapters/contracts/InfraredVaultAdapterContract.d.ts +0 -198
  343. package/dist/types/plugins/adapters/contracts/KodiakIslandGatewayAdapterContract.d.ts +0 -396
  344. package/dist/types/plugins/adapters/contracts/MellowDepositQueueAdapterContract.d.ts +0 -13
  345. package/dist/types/plugins/adapters/contracts/MellowRedeemQueueAdapterContract.d.ts +0 -12
  346. package/dist/types/plugins/adapters/contracts/MellowVaultAdapterContract.d.ts +0 -203
  347. package/dist/types/plugins/adapters/contracts/YearnV2AdapterContract.d.ts +0 -185
  348. package/dist/types/sdk/pools/extraZappers.d.ts +0 -9
  349. /package/dist/esm/sdk/market/adapters/{factory.js → createAdapter.js} +0 -0
  350. /package/dist/types/sdk/market/adapters/{factory.d.ts → createAdapter.d.ts} +0 -0
@@ -41,6 +41,7 @@ const COMPRESSORS = {
41
41
  [import_chains.chains.Mainnet.id]: "0x36F3d0Bb73CBC2E94fE24dF0f26a689409cF9023",
42
42
  [import_chains.chains.Monad.id]: "0x36F3d0Bb73CBC2E94fE24dF0f26a689409cF9023"
43
43
  };
44
+ const INVESTORS = new import_utils.AddressMap([], "investors");
44
45
  function getWithdrawalCompressorAddress(chainId) {
45
46
  return COMPRESSORS[chainId];
46
47
  }
@@ -102,6 +103,23 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
102
103
  });
103
104
  return cad;
104
105
  }
106
+ /**
107
+ * Returns credit account data for a single account with the investor address resolved.
108
+ * Loads CA via getCreditAccountData; for KYC underlyings fetches the investor from the KYC factory's getInvestor(creditAccount), otherwise uses the account owner.
109
+ * @param account - Credit account address
110
+ * @param blockNumber - Optional block number for the read
111
+ * @returns CreditAccountDataWithInvestor (CA data + investor address), or undefined if the account is not found
112
+ */
113
+ async getCreditAccountDataWithInvestor(account, blockNumber) {
114
+ const ca = await this.getCreditAccountData(account, blockNumber);
115
+ if (!ca) return ca;
116
+ const marketSuite = this.sdk.marketRegister.findByCreditManager(
117
+ ca.creditManager
118
+ );
119
+ const factory = await marketSuite.getKYCFactory();
120
+ const investor = factory ? await factory.getInvestor(ca.creditAccount, true) : void 0;
121
+ return { ...ca, investor: investor ?? ca.owner };
122
+ }
105
123
  /**
106
124
  * Methods to get all credit accounts with some optional filtering
107
125
  * Performs all necessary price feed updates under the hood
@@ -110,7 +128,7 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
110
128
  * @param blockNumber
111
129
  * @returns returned credit accounts are sorted by health factor in ascending order
112
130
  */
113
- async getCreditAccounts(options, blockNumber) {
131
+ async getCreditAccounts(options, blockNumber, priceUpdate) {
114
132
  const {
115
133
  creditManager,
116
134
  includeZeroDebt = false,
@@ -132,7 +150,7 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
132
150
  maxHealthFactor,
133
151
  reverting: false
134
152
  };
135
- const { txs: priceUpdateTxs } = await this.sdk.priceFeeds.generatePriceFeedsUpdateTxs(
153
+ const { txs: priceUpdateTxs } = priceUpdate ?? await this.sdk.priceFeeds.generatePriceFeedsUpdateTxs(
136
154
  ignoreReservePrices ? { main: true } : void 0
137
155
  );
138
156
  const allCAs = [];
@@ -161,6 +179,75 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
161
179
  );
162
180
  return allCAs.sort((a, b) => Number(a.healthFactor - b.healthFactor));
163
181
  }
182
+ /**
183
+ * Returns all credit accounts matching the filter, with investor set on each item.
184
+ * Delegates to getCreditAccounts; when options.owner is set, also loads KYC credit accounts for that owner and merges them into the list. Result is sorted by health factor ascending.
185
+ * @param options - Filter options (owner, creditManager, health factor, etc.)
186
+ * @param blockNumber - Optional block number for the read
187
+ * @returns Array of credit accounts (with investor field), sorted by health factor ascending
188
+ */
189
+ async getCreditAccountsWithInvestor(options, blockNumber) {
190
+ const { owner, ignoreReservePrices = false } = options ?? {};
191
+ const priceUpdate = await this.sdk.priceFeeds.generatePriceFeedsUpdateTxs(
192
+ ignoreReservePrices ? { main: true } : void 0
193
+ );
194
+ const { txs: priceUpdateTxs } = priceUpdate;
195
+ const [common, kyc] = await Promise.all([
196
+ this.getCreditAccounts(options, blockNumber),
197
+ owner ? this.getKYCCreditAccountsOfOwner(owner, priceUpdateTxs, blockNumber) : void 0
198
+ ]);
199
+ const allCAs = common.map(
200
+ (ca) => ({
201
+ ...ca,
202
+ investor: owner || ca.owner
203
+ })
204
+ );
205
+ allCAs.push(...kyc || []);
206
+ return allCAs.sort((a, b) => Number(a.healthFactor - b.healthFactor));
207
+ }
208
+ async getKYCCreditAccountsOfOwner(owner, priceUpdateTxs, blockNumber) {
209
+ const suites = this.marketConfigurators.map((mc) => {
210
+ const suite = this.sdk.marketRegister.markets.find(
211
+ (m) => m.configurator.address === mc
212
+ );
213
+ return suite;
214
+ });
215
+ const kycCAAddresses = await this.getKYCCaOfInvestor(owner, suites);
216
+ const kycCAs = await this.loadSpecifiedAccounts(
217
+ kycCAAddresses,
218
+ priceUpdateTxs,
219
+ blockNumber
220
+ );
221
+ return kycCAs.map((ca) => ({
222
+ ...ca,
223
+ investor: owner
224
+ }));
225
+ }
226
+ /**
227
+ * Loads credit account data for the given addresses using simulateWithPriceUpdates.
228
+ * Applies the provided price update txs before reading, so returned data is consistent with up-to-date prices.
229
+ * @param accounts - Credit account addresses to load
230
+ * @param priceUpdateTxs - Price feed update txs to simulate before the read (e.g. from generatePriceFeedsUpdateTxs)
231
+ * @param blockNumber - Optional block number for the read
232
+ * @returns Array of CreditAccountData in the same order as accounts (throws if any getCreditAccountData call reverts)
233
+ */
234
+ async loadSpecifiedAccounts(accounts, priceUpdateTxs, blockNumber) {
235
+ if (accounts.length === 0) return [];
236
+ const list = await (0, import_viem2.simulateWithPriceUpdates)(this.client, {
237
+ priceUpdates: priceUpdateTxs,
238
+ contracts: accounts.map(
239
+ (account) => ({
240
+ abi: import_creditAccountCompressor.creditAccountCompressorAbi,
241
+ address: this.#compressor,
242
+ functionName: "getCreditAccountData",
243
+ args: [account]
244
+ })
245
+ ),
246
+ blockNumber,
247
+ gas: this.sdk.gasLimit
248
+ });
249
+ return list;
250
+ }
164
251
  /**
165
252
  * Method to get all claimable rewards for credit account (ex. stkUSDS SKY rewards)
166
253
  Assosiates rewards by adapter + stakedPhantomToken
@@ -393,6 +480,13 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
393
480
  closePath
394
481
  }) {
395
482
  const cm = this.sdk.marketRegister.findCreditManager(ca.creditManager);
483
+ await this.sdk.tokensMeta.loadTokenData(cm.underlying);
484
+ const underlying = this.sdk.tokensMeta.mustGet(cm.underlying);
485
+ if (this.sdk.tokensMeta.isKYCUnderlying(underlying)) {
486
+ throw new Error(
487
+ "closeCreditAccount is not supported for KYC underlying credit accounts"
488
+ );
489
+ }
396
490
  const routerCloseResult = closePath || await this.sdk.routerFor(ca).findBestClosePath({
397
491
  creditAccount: ca,
398
492
  creditManager: cm.creditManager,
@@ -412,7 +506,12 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
412
506
  (t) => this.prepareWithdrawToken(ca.creditFacade, t, import_constants.MAX_UINT256, to)
413
507
  )
414
508
  ];
415
- const tx = operation === "close" ? cm.creditFacade.closeCreditAccount(ca.creditAccount, calls) : cm.creditFacade.multicall(ca.creditAccount, calls);
509
+ const tx = await this.closeCreditAccountTx(
510
+ cm,
511
+ ca.creditAccount,
512
+ calls,
513
+ operation
514
+ );
416
515
  return { tx, calls, routerCloseResult, creditFacade: cm.creditFacade };
417
516
  }
418
517
  /**
@@ -442,7 +541,7 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
442
541
  averageQuota
443
542
  })
444
543
  ];
445
- const tx = cm.creditFacade.multicall(creditAccount.creditAccount, calls);
544
+ const tx = await this.multicallTx(cm, creditAccount.creditAccount, calls);
446
545
  return { tx, calls, creditFacade: cm.creditFacade };
447
546
  }
448
547
  /**
@@ -484,7 +583,7 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
484
583
  averageQuota
485
584
  })
486
585
  ];
487
- const tx = cm.creditFacade.multicall(creditAccount.creditAccount, calls);
586
+ const tx = await this.multicallTx(cm, creditAccount.creditAccount, calls);
488
587
  tx.value = ethAmount.toString(10);
489
588
  return { tx, calls, creditFacade: cm.creditFacade };
490
589
  }
@@ -501,7 +600,8 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
501
600
  async changeDebt({
502
601
  creditAccount,
503
602
  amount,
504
- addCollateral
603
+ collateral,
604
+ wrapAsset
505
605
  }) {
506
606
  if (amount === 0n) {
507
607
  throw new Error("debt increase or decrease must be non-zero");
@@ -515,27 +615,37 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
515
615
  creditManager: creditAccount.creditManager,
516
616
  creditAccount
517
617
  });
518
- const addCollateralCalls = addCollateral && isDecrease ? this.prepareAddCollateral(
618
+ const addCollateralCalls = collateral && isDecrease ? this.prepareAddCollateral(
519
619
  creditAccount.creditFacade,
520
620
  [
521
621
  {
522
- token: creditAccount.underlying,
523
- balance: change
622
+ token: collateral[0].token,
623
+ balance: collateral[0].balance
524
624
  }
525
625
  ],
526
626
  {}
527
627
  ) : [];
628
+ const unwrapCalls = wrapAsset && isDecrease ? await this.getKYCWrapCalls(
629
+ wrapAsset[0].balance,
630
+ creditAccount.creditManager
631
+ ) || [] : [];
632
+ if (addCollateralCalls.length > 0 && unwrapCalls.length === 0 && collateral && collateral?.[0].token !== creditAccount.underlying) {
633
+ throw new Error(
634
+ "Can't use collateral other than underlying for non KYC market"
635
+ );
636
+ }
528
637
  const underlyingEnabled = (creditAccount.enabledTokensMask & 1n) === 1n;
529
638
  const shouldEnable = !isDecrease && !underlyingEnabled;
530
639
  const calls = [
531
640
  ...priceUpdatesCalls,
532
641
  ...addCollateralCalls,
642
+ ...unwrapCalls,
533
643
  ...shouldEnable ? this.#prepareEnableTokens(creditAccount.creditFacade, [
534
644
  creditAccount.underlying
535
645
  ]) : [],
536
646
  this.#prepareChangeDebt(creditAccount.creditFacade, change, isDecrease)
537
647
  ];
538
- const tx = cm.creditFacade.multicall(creditAccount.creditAccount, calls);
648
+ const tx = await this.multicallTx(cm, creditAccount.creditAccount, calls);
539
649
  return { tx, calls, creditFacade: cm.creditFacade };
540
650
  }
541
651
  /**
@@ -570,7 +680,7 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
570
680
  averageQuota
571
681
  })
572
682
  ];
573
- const tx = cm.creditFacade.multicall(creditAccount.creditAccount, calls);
683
+ const tx = await this.multicallTx(cm, creditAccount.creditAccount, calls);
574
684
  return { tx, calls, creditFacade: cm.creditFacade };
575
685
  }
576
686
  /**
@@ -686,7 +796,7 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
686
796
  averageQuota
687
797
  })
688
798
  ];
689
- const tx = cm.creditFacade.multicall(creditAccount.creditAccount, calls);
799
+ const tx = await this.multicallTx(cm, creditAccount.creditAccount, calls);
690
800
  return { tx, calls, creditFacade: cm.creditFacade };
691
801
  }
692
802
  /**
@@ -751,7 +861,7 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
751
861
  compareBalances,
752
862
  ...quotaCalls
753
863
  ];
754
- const tx = cm.creditFacade.multicall(creditAccount.creditAccount, calls);
864
+ const tx = await this.multicallTx(cm, creditAccount.creditAccount, calls);
755
865
  return { tx, calls, creditFacade: cm.creditFacade };
756
866
  }
757
867
  /**
@@ -778,48 +888,63 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
778
888
  ),
779
889
  ...this.#prepareEnableTokens(ca.creditFacade, enabledTokens)
780
890
  ];
781
- const tx = cm.creditFacade.multicall(ca.creditAccount, calls);
891
+ const tx = await this.multicallTx(cm, ca.creditAccount, calls);
782
892
  return { tx, calls, creditFacade: cm.creditFacade };
783
893
  }
894
+ /**
895
+ * Returns address to which approval should be given on collateral token
896
+ * It's credit manager for classical markets and special wallet for KYC markets
897
+ * @param options - {@link GetApprovalAddressProps}
898
+ * @returns
899
+ **/
900
+ async getApprovalAddress(options) {
901
+ const { creditManager } = options;
902
+ const suite = this.sdk.marketRegister.findCreditManager(creditManager);
903
+ const marketSuite = this.sdk.marketRegister.findByPool(suite.pool);
904
+ const factory = await marketSuite.getKYCFactory();
905
+ if (factory) {
906
+ if ("creditAccount" in options) {
907
+ return factory.getWallet(options.creditAccount);
908
+ }
909
+ return factory.precomputeWalletAddress(creditManager, options.borrower);
910
+ }
911
+ return suite.creditManager.address;
912
+ }
784
913
  /**
785
914
  * Executes swap specified by given calls, update quotas of affected tokens
786
- - Open credit account is executed in the following order: price update -> increase debt -> add collateral ->
787
- -> update quotas -> (optionally: execute swap path for trading/strategy) ->
788
- -> (optionally: withdraw debt for lending)
789
- - Basic open credit account: price update -> increase debt -> add collateral -> update quotas
790
- - Lending: price update -> increase debt -> add collateral -> update quotas -> withdraw debt
791
- - Strategy/trading: price update -> increase debt -> add collateral -> update quotas -> execute swap path
792
- - In strategy is possible situation when collateral is added, but not swapped; the only swapped value in this case will be debt
793
- * @param {bigint} ethAmount - native token amount to attach to tx
794
- * @param {Address} creditManager - address of credit manager to open credit account on
795
- * @param {Array<Asset>} collateral - array of collateral which can be just directly added or swapped using the path {@link Asset}
796
- * @param {Record<Address, PermitResult>} permits - permits of collateral tokens (in any permittable token is present) {@link PermitResult}
797
- * @param {bigint} debt - debt to open credit account with
798
- * @param {boolean} withdrawDebt - flag to withdraw debt to wallet after opening credit account;
799
- used for borrowing functionality
800
- * @param {bigint} referralCode - referral code to open credit account with
801
- * @param {Address} to - wallet address to transfer credit account to\
802
- * @param {Array<MultiCall>} calls - array of MultiCall from router methods findOpenStrategyPath {@link MultiCall}.
803
- Used for trading and strategy functionality
804
- * @param {Array<Asset>} averageQuota - average quota for tokens after open {@link Asset}
805
- * @param {Array<Asset>} minQuota - minimum quota for tokens after open {@link Asset}
915
+ * - Open credit account is executed in the following order: price update -> increase debt -> add collateral ->
916
+ * -> update quotas -> (optionally: execute swap path for trading/strategy) ->
917
+ * -> (optionally: withdraw debt for lending)
918
+ *- Basic open credit account: price update -> increase debt -> add collateral -> update quotas
919
+ *- Lending: price update -> increase debt -> add collateral -> update quotas -> withdraw debt
920
+ *- Strategy/trading: price update -> increase debt -> add collateral -> update quotas -> execute swap path
921
+ *- In strategy is possible situation when collateral is added, but not swapped; the only swapped value in this case will be debt
806
922
  * @returns All necessary data to execute the transaction (call, credit facade)
807
- */
808
- async openCA({
809
- ethAmount,
810
- creditManager,
811
- collateral,
812
- permits,
813
- debt,
814
- withdrawDebt,
815
- referralCode,
816
- to,
817
- calls: openPathCalls,
818
- minQuota,
819
- averageQuota
820
- }) {
923
+ **/
924
+ async openCA(props) {
925
+ const {
926
+ ethAmount,
927
+ creditManager,
928
+ reopenCreditAccount,
929
+ collateral,
930
+ permits,
931
+ debt,
932
+ withdrawToken,
933
+ referralCode,
934
+ to,
935
+ calls: openPathCalls,
936
+ callsAfter,
937
+ minQuota,
938
+ averageQuota
939
+ } = props;
821
940
  const cmSuite = this.sdk.marketRegister.findCreditManager(creditManager);
822
941
  const cm = cmSuite.creditManager;
942
+ let tokenToWithdraw;
943
+ if (withdrawToken === true) {
944
+ tokenToWithdraw = cm.underlying;
945
+ } else if (typeof withdrawToken === "string") {
946
+ tokenToWithdraw = withdrawToken;
947
+ }
823
948
  const priceUpdatesCalls = await this.getPriceUpdatesForFacade({
824
949
  creditManager: cm.address,
825
950
  desiredQuotas: averageQuota
@@ -829,13 +954,27 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
829
954
  this.#prepareIncreaseDebt(cm.creditFacade, debt),
830
955
  ...this.prepareAddCollateral(cm.creditFacade, collateral, permits),
831
956
  ...openPathCalls,
832
- ...withdrawDebt ? [this.prepareWithdrawToken(cm.creditFacade, cm.underlying, debt, to)] : [],
957
+ // путь из underlying в withdrawal token
958
+ ...tokenToWithdraw ? [
959
+ this.prepareWithdrawToken(
960
+ cm.creditFacade,
961
+ tokenToWithdraw,
962
+ import_constants.MAX_UINT256,
963
+ to
964
+ )
965
+ ] : [],
833
966
  ...this.prepareUpdateQuotas(cm.creditFacade, {
834
967
  minQuota,
835
968
  averageQuota
836
- })
969
+ }),
970
+ ...callsAfter ?? []
837
971
  ];
838
- const tx = cmSuite.creditFacade.openCreditAccount(to, calls, referralCode);
972
+ let tx;
973
+ if (reopenCreditAccount) {
974
+ tx = await this.multicallTx(cmSuite, reopenCreditAccount, calls);
975
+ } else {
976
+ tx = await this.openCreditAccountTx(cmSuite, to, calls, referralCode);
977
+ }
839
978
  tx.value = ethAmount.toString(10);
840
979
  return { calls, tx, creditFacade: cmSuite.creditFacade };
841
980
  }
@@ -919,6 +1058,130 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
919
1058
  );
920
1059
  return resp;
921
1060
  }
1061
+ /**
1062
+ * Returns multicall entries to redeem (unwrap) KYC ERC-4626 vault shares into underlying for the given credit manager.
1063
+ * Used when withdrawing debt from a KYC market: redeems adapter vault shares so the underlying can be withdrawn.
1064
+ * Only applies when the credit manager's underlying is KYC-gated and has an ERC-4626 adapter configured.
1065
+ * @param amount - Number of vault shares (adapter tokens) to redeem
1066
+ * @param creditManager - Credit manager address
1067
+ * @returns Array of MultiCall to pass to credit facade multicall, or undefined if underlying is not KYC or no adapter is configured
1068
+ */
1069
+ async getKYCUnwrapCalls(amount, creditManager) {
1070
+ const suite = this.sdk.marketRegister.findCreditManager(creditManager);
1071
+ const meta = this.sdk.tokensMeta.mustGet(suite.underlying);
1072
+ if (!this.sdk.tokensMeta.isKYCUnderlying(meta)) {
1073
+ return void 0;
1074
+ }
1075
+ const adapter = suite.creditManager.adapters.get(meta.addr);
1076
+ const adapterAddress = adapter?.address;
1077
+ if (!adapterAddress) {
1078
+ return void 0;
1079
+ }
1080
+ const mc = [
1081
+ {
1082
+ target: adapterAddress,
1083
+ callData: (0, import_viem.encodeFunctionData)({
1084
+ abi: ierc4626AdapterAbi,
1085
+ functionName: "redeem",
1086
+ args: [amount, import_constants.ADDRESS_0X0, import_constants.ADDRESS_0X0]
1087
+ })
1088
+ }
1089
+ ];
1090
+ return mc;
1091
+ }
1092
+ /**
1093
+ * Returns multicall entries to deposit (wrap) underlying into KYC ERC-4626 vault shares for the given credit manager.
1094
+ * Used when adding debt on a KYC market: deposits underlying into the adapter vault so shares are minted on the account.
1095
+ * Only applies when the credit manager's underlying is KYC-gated and has an ERC-4626 adapter configured.
1096
+ * @param amount - Amount of underlying assets to deposit into the vault (in underlying decimals)
1097
+ * @param creditManager - Credit manager address
1098
+ * @returns Array of MultiCall to pass to credit facade multicall, or undefined if underlying is not KYC or no adapter is configured
1099
+ */
1100
+ async getKYCWrapCalls(amount, creditManager) {
1101
+ const suite = this.sdk.marketRegister.findCreditManager(creditManager);
1102
+ const meta = this.sdk.tokensMeta.mustGet(suite.underlying);
1103
+ if (!this.sdk.tokensMeta.isKYCUnderlying(meta)) {
1104
+ return void 0;
1105
+ }
1106
+ const adapter = suite.creditManager.adapters.get(meta.addr);
1107
+ const adapterAddress = adapter?.address;
1108
+ if (!adapterAddress) {
1109
+ return void 0;
1110
+ }
1111
+ const mc = [
1112
+ {
1113
+ target: adapterAddress,
1114
+ callData: (0, import_viem.encodeFunctionData)({
1115
+ abi: ierc4626AdapterAbi,
1116
+ functionName: "deposit",
1117
+ args: [amount, import_constants.ADDRESS_0X0]
1118
+ })
1119
+ }
1120
+ ];
1121
+ return mc;
1122
+ }
1123
+ /**
1124
+ * Returns multicall entries to call redeemDiff on the KYC ERC-4626 adapter for the given credit manager.
1125
+ * Redeems the leftover vault shares (e.g. after repaying debt) so the account does not hold excess KYC vault tokens.
1126
+ * Only applies when the credit manager's underlying is KYC-gated and has an ERC-4626 adapter configured.
1127
+ * @param amount - Leftover vault share amount to redeem (in adapter/vault decimals)
1128
+ * @param creditManager - Credit manager address
1129
+ * @returns Array of MultiCall to pass to credit facade multicall, or undefined if underlying is not KYC or no adapter is configured
1130
+ */
1131
+ async getRedeemDiffCalls(amount, creditManager) {
1132
+ const suite = this.sdk.marketRegister.findCreditManager(creditManager);
1133
+ const meta = this.sdk.tokensMeta.mustGet(suite.underlying);
1134
+ if (!this.sdk.tokensMeta.isKYCUnderlying(meta)) {
1135
+ return void 0;
1136
+ }
1137
+ const adapter = suite.creditManager.adapters.get(meta.addr);
1138
+ const adapterAddress = adapter?.address;
1139
+ if (!adapterAddress) {
1140
+ return void 0;
1141
+ }
1142
+ const mc = [
1143
+ {
1144
+ target: adapterAddress,
1145
+ callData: (0, import_viem.encodeFunctionData)({
1146
+ abi: ierc4626AdapterAbi,
1147
+ functionName: "redeemDiff",
1148
+ args: [amount]
1149
+ })
1150
+ }
1151
+ ];
1152
+ return mc;
1153
+ }
1154
+ /**
1155
+ * Returns multicall entries to call depositDiff on the KYC ERC-4626 adapter for the given credit manager.
1156
+ * Deposits the leftover underlying (e.g. after decreasing debt) into the vault so the account does not hold excess underlying.
1157
+ * Only applies when the credit manager's underlying is KYC-gated and has an ERC-4626 adapter configured.
1158
+ * @param amount - Leftover underlying amount to deposit into the vault (in underlying decimals)
1159
+ * @param creditManager - Credit manager address
1160
+ * @returns Array of MultiCall to pass to credit facade multicall, or undefined if underlying is not KYC or no adapter is configured
1161
+ */
1162
+ async getDepositDiffCalls(amount, creditManager) {
1163
+ const suite = this.sdk.marketRegister.findCreditManager(creditManager);
1164
+ const meta = this.sdk.tokensMeta.mustGet(suite.underlying);
1165
+ if (!this.sdk.tokensMeta.isKYCUnderlying(meta)) {
1166
+ return void 0;
1167
+ }
1168
+ const adapter = suite.creditManager.adapters.get(meta.addr);
1169
+ const adapterAddress = adapter?.address;
1170
+ if (!adapterAddress) {
1171
+ return void 0;
1172
+ }
1173
+ const mc = [
1174
+ {
1175
+ target: adapterAddress,
1176
+ callData: (0, import_viem.encodeFunctionData)({
1177
+ abi: ierc4626AdapterAbi,
1178
+ functionName: "depositDiff",
1179
+ args: [amount]
1180
+ })
1181
+ }
1182
+ ];
1183
+ return mc;
1184
+ }
922
1185
  /**
923
1186
  * Returns raw txs that are needed to update all price feeds so that all credit accounts (possibly from different markets) compute
924
1187
  *
@@ -1176,78 +1439,174 @@ class AbstractCreditAccountService extends import_base.SDKConstruct {
1176
1439
  import_constants.VERSION_RANGE_310
1177
1440
  )[0];
1178
1441
  }
1442
+ /**
1443
+ * Wrapper that selects between credit facade and KYC factory
1444
+ * @param suite
1445
+ * @param to
1446
+ * @param calls
1447
+ * @param referralCode
1448
+ * @returns
1449
+ */
1450
+ async openCreditAccountTx(suite, to, calls, referralCode) {
1451
+ const marketSuite = this.sdk.marketRegister.findByPool(suite.pool);
1452
+ const factory = await marketSuite.getKYCFactory();
1453
+ if (factory) {
1454
+ const tokensToRegister = await factory.getDSTokens();
1455
+ return factory.openCreditAccount(
1456
+ suite.creditManager.address,
1457
+ calls,
1458
+ tokensToRegister
1459
+ );
1460
+ }
1461
+ return suite.creditFacade.openCreditAccount(to, calls, referralCode ?? 0n);
1462
+ }
1463
+ /**
1464
+ * Wrapper that selects between credit facade and KYC factory
1465
+ * @param suite
1466
+ * @param creditAccount
1467
+ * @param calls
1468
+ * @returns
1469
+ */
1470
+ async multicallTx(suite, creditAccount, calls) {
1471
+ const marketSuite = this.sdk.marketRegister.findByCreditManager(
1472
+ suite.creditManager.address
1473
+ );
1474
+ const factory = await marketSuite.getKYCFactory();
1475
+ if (factory) {
1476
+ const tokensToRegister = [];
1477
+ return factory.multicall(creditAccount, calls, tokensToRegister);
1478
+ }
1479
+ return suite.creditFacade.multicall(creditAccount, calls);
1480
+ }
1481
+ /**
1482
+ * Wrapper that selects between credit facade and KYC factory
1483
+ * @param suite
1484
+ * @param creditAccount
1485
+ * @param calls
1486
+ * @param operation
1487
+ * @returns
1488
+ */
1489
+ async closeCreditAccountTx(suite, creditAccount, calls, operation) {
1490
+ const marketSuite = this.sdk.marketRegister.findByCreditManager(
1491
+ suite.creditManager.address
1492
+ );
1493
+ const factory = await marketSuite.getKYCFactory();
1494
+ if (operation === "close") {
1495
+ if (factory) {
1496
+ throw new Error(
1497
+ "CloseOptions=close is not supported for KYC underlying credit accounts"
1498
+ );
1499
+ }
1500
+ return suite.creditFacade.closeCreditAccount(creditAccount, calls);
1501
+ }
1502
+ if (factory) {
1503
+ const tokensToRegister = [];
1504
+ return factory.multicall(creditAccount, calls, tokensToRegister);
1505
+ }
1506
+ return suite.creditFacade.multicall(creditAccount, calls);
1507
+ }
1508
+ /**
1509
+ * Returns all KYC credit account addresses for an investor across the given market suites.
1510
+ * Resolves KYC factory per suite, then multicalls each factory's getCreditAccounts(investor).
1511
+ * @param investor - Owner address to query
1512
+ * @param suites - Market suites (KYC factories are resolved for each; undefined entries are skipped)
1513
+ * @returns Flat array of credit account addresses from all KYC markets
1514
+ */
1515
+ async getKYCCaOfInvestor(investor, suites) {
1516
+ if (suites.length === 0 || investor === import_constants.ADDRESS_0X0) return [];
1517
+ const factories = await Promise.all(
1518
+ suites.map((suite) => suite ? suite.getKYCFactory() : void 0)
1519
+ );
1520
+ const safeFactories = factories.reduce(
1521
+ (acc, v) => {
1522
+ if (v) {
1523
+ acc.push(v);
1524
+ }
1525
+ return acc;
1526
+ },
1527
+ []
1528
+ );
1529
+ const allResp = await this.client.multicall({
1530
+ contracts: [
1531
+ ...safeFactories.map((factory) => {
1532
+ return {
1533
+ abi: factory.abi,
1534
+ address: factory.address,
1535
+ functionName: "getCreditAccounts",
1536
+ args: [investor]
1537
+ };
1538
+ })
1539
+ ],
1540
+ allowFailure: true,
1541
+ batchSize: 0
1542
+ });
1543
+ const caLists = safeFactories.reduce((acc, _, index) => {
1544
+ const response = allResp[index];
1545
+ acc.push(...response.result || []);
1546
+ return acc;
1547
+ }, []);
1548
+ return caLists;
1549
+ }
1179
1550
  }
1180
- const iMellowClaimerAdapterAbi = [
1551
+ const ierc4626AdapterAbi = [
1181
1552
  {
1182
- type: "function",
1183
- name: "getMultiVaultSubvaultIndices",
1184
- inputs: [{ name: "multiVault", type: "address", internalType: "address" }],
1185
- outputs: [
1186
- {
1187
- name: "subvaultIndices",
1188
- type: "uint256[]",
1189
- internalType: "uint256[]"
1190
- },
1191
- {
1192
- name: "withdrawalIndices",
1193
- type: "uint256[][]",
1194
- internalType: "uint256[][]"
1195
- }
1553
+ inputs: [
1554
+ { name: "assets", type: "uint256", internalType: "uint256" },
1555
+ { name: "receiver", type: "address", internalType: "address" }
1196
1556
  ],
1197
- stateMutability: "view"
1557
+ name: "deposit",
1558
+ outputs: [{ name: "useSafePrices", type: "bool", internalType: "bool" }],
1559
+ stateMutability: "nonpayable",
1560
+ type: "function"
1198
1561
  },
1199
1562
  {
1200
- type: "function",
1201
- name: "getUserSubvaultIndices",
1202
1563
  inputs: [
1203
- { name: "multiVault", type: "address", internalType: "address" },
1204
- { name: "user", type: "address", internalType: "address" }
1564
+ { name: "shares", type: "uint256", internalType: "uint256" },
1565
+ { name: "receiver", type: "address", internalType: "address" },
1566
+ { name: "owner", type: "address", internalType: "address" }
1205
1567
  ],
1206
- outputs: [
1568
+ name: "redeem",
1569
+ outputs: [{ name: "useSafePrices", type: "bool", internalType: "bool" }],
1570
+ stateMutability: "nonpayable",
1571
+ type: "function"
1572
+ },
1573
+ {
1574
+ inputs: [
1207
1575
  {
1208
- name: "subvaultIndices",
1209
- type: "uint256[]",
1210
- internalType: "uint256[]"
1211
- },
1576
+ name: "leftoverAmount",
1577
+ type: "uint256",
1578
+ internalType: "uint256"
1579
+ }
1580
+ ],
1581
+ name: "redeemDiff",
1582
+ outputs: [
1212
1583
  {
1213
- name: "withdrawalIndices",
1214
- type: "uint256[][]",
1215
- internalType: "uint256[][]"
1584
+ name: "useSafePrices",
1585
+ type: "bool",
1586
+ internalType: "bool"
1216
1587
  }
1217
1588
  ],
1218
- stateMutability: "view"
1589
+ stateMutability: "nonpayable",
1590
+ type: "function"
1219
1591
  },
1220
1592
  {
1221
- type: "function",
1222
- name: "multiAccept",
1223
1593
  inputs: [
1224
- { name: "multiVault", type: "address", internalType: "address" },
1225
1594
  {
1226
- name: "subvaultIndices",
1227
- type: "uint256[]",
1228
- internalType: "uint256[]"
1229
- },
1230
- { name: "indices", type: "uint256[][]", internalType: "uint256[][]" }
1595
+ name: "leftoverAmount",
1596
+ type: "uint256",
1597
+ internalType: "uint256"
1598
+ }
1231
1599
  ],
1232
- outputs: [{ name: "", type: "bool", internalType: "bool" }],
1233
- stateMutability: "nonpayable"
1234
- },
1235
- {
1236
- type: "function",
1237
- name: "multiAcceptAndClaim",
1238
- inputs: [
1239
- { name: "multiVault", type: "address", internalType: "address" },
1600
+ name: "depositDiff",
1601
+ outputs: [
1240
1602
  {
1241
- name: "subvaultIndices",
1242
- type: "uint256[]",
1243
- internalType: "uint256[]"
1244
- },
1245
- { name: "indices", type: "uint256[][]", internalType: "uint256[][]" },
1246
- { name: "", type: "address", internalType: "address" },
1247
- { name: "maxAssets", type: "uint256", internalType: "uint256" }
1603
+ name: "useSafePrices",
1604
+ type: "bool",
1605
+ internalType: "bool"
1606
+ }
1248
1607
  ],
1249
- outputs: [{ name: "", type: "bool", internalType: "bool" }],
1250
- stateMutability: "nonpayable"
1608
+ stateMutability: "nonpayable",
1609
+ type: "function"
1251
1610
  }
1252
1611
  ];
1253
1612
  // Annotate the CommonJS export names for ESM import in node: