@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
@@ -31,6 +31,7 @@ const COMPRESSORS = {
31
31
  [chains.Mainnet.id]: "0x36F3d0Bb73CBC2E94fE24dF0f26a689409cF9023",
32
32
  [chains.Monad.id]: "0x36F3d0Bb73CBC2E94fE24dF0f26a689409cF9023"
33
33
  };
34
+ const INVESTORS = new AddressMap([], "investors");
34
35
  function getWithdrawalCompressorAddress(chainId) {
35
36
  return COMPRESSORS[chainId];
36
37
  }
@@ -92,6 +93,23 @@ class AbstractCreditAccountService extends SDKConstruct {
92
93
  });
93
94
  return cad;
94
95
  }
96
+ /**
97
+ * Returns credit account data for a single account with the investor address resolved.
98
+ * Loads CA via getCreditAccountData; for KYC underlyings fetches the investor from the KYC factory's getInvestor(creditAccount), otherwise uses the account owner.
99
+ * @param account - Credit account address
100
+ * @param blockNumber - Optional block number for the read
101
+ * @returns CreditAccountDataWithInvestor (CA data + investor address), or undefined if the account is not found
102
+ */
103
+ async getCreditAccountDataWithInvestor(account, blockNumber) {
104
+ const ca = await this.getCreditAccountData(account, blockNumber);
105
+ if (!ca) return ca;
106
+ const marketSuite = this.sdk.marketRegister.findByCreditManager(
107
+ ca.creditManager
108
+ );
109
+ const factory = await marketSuite.getKYCFactory();
110
+ const investor = factory ? await factory.getInvestor(ca.creditAccount, true) : void 0;
111
+ return { ...ca, investor: investor ?? ca.owner };
112
+ }
95
113
  /**
96
114
  * Methods to get all credit accounts with some optional filtering
97
115
  * Performs all necessary price feed updates under the hood
@@ -100,7 +118,7 @@ class AbstractCreditAccountService extends SDKConstruct {
100
118
  * @param blockNumber
101
119
  * @returns returned credit accounts are sorted by health factor in ascending order
102
120
  */
103
- async getCreditAccounts(options, blockNumber) {
121
+ async getCreditAccounts(options, blockNumber, priceUpdate) {
104
122
  const {
105
123
  creditManager,
106
124
  includeZeroDebt = false,
@@ -122,7 +140,7 @@ class AbstractCreditAccountService extends SDKConstruct {
122
140
  maxHealthFactor,
123
141
  reverting: false
124
142
  };
125
- const { txs: priceUpdateTxs } = await this.sdk.priceFeeds.generatePriceFeedsUpdateTxs(
143
+ const { txs: priceUpdateTxs } = priceUpdate ?? await this.sdk.priceFeeds.generatePriceFeedsUpdateTxs(
126
144
  ignoreReservePrices ? { main: true } : void 0
127
145
  );
128
146
  const allCAs = [];
@@ -151,6 +169,75 @@ class AbstractCreditAccountService extends SDKConstruct {
151
169
  );
152
170
  return allCAs.sort((a, b) => Number(a.healthFactor - b.healthFactor));
153
171
  }
172
+ /**
173
+ * Returns all credit accounts matching the filter, with investor set on each item.
174
+ * 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.
175
+ * @param options - Filter options (owner, creditManager, health factor, etc.)
176
+ * @param blockNumber - Optional block number for the read
177
+ * @returns Array of credit accounts (with investor field), sorted by health factor ascending
178
+ */
179
+ async getCreditAccountsWithInvestor(options, blockNumber) {
180
+ const { owner, ignoreReservePrices = false } = options ?? {};
181
+ const priceUpdate = await this.sdk.priceFeeds.generatePriceFeedsUpdateTxs(
182
+ ignoreReservePrices ? { main: true } : void 0
183
+ );
184
+ const { txs: priceUpdateTxs } = priceUpdate;
185
+ const [common, kyc] = await Promise.all([
186
+ this.getCreditAccounts(options, blockNumber),
187
+ owner ? this.getKYCCreditAccountsOfOwner(owner, priceUpdateTxs, blockNumber) : void 0
188
+ ]);
189
+ const allCAs = common.map(
190
+ (ca) => ({
191
+ ...ca,
192
+ investor: owner || ca.owner
193
+ })
194
+ );
195
+ allCAs.push(...kyc || []);
196
+ return allCAs.sort((a, b) => Number(a.healthFactor - b.healthFactor));
197
+ }
198
+ async getKYCCreditAccountsOfOwner(owner, priceUpdateTxs, blockNumber) {
199
+ const suites = this.marketConfigurators.map((mc) => {
200
+ const suite = this.sdk.marketRegister.markets.find(
201
+ (m) => m.configurator.address === mc
202
+ );
203
+ return suite;
204
+ });
205
+ const kycCAAddresses = await this.getKYCCaOfInvestor(owner, suites);
206
+ const kycCAs = await this.loadSpecifiedAccounts(
207
+ kycCAAddresses,
208
+ priceUpdateTxs,
209
+ blockNumber
210
+ );
211
+ return kycCAs.map((ca) => ({
212
+ ...ca,
213
+ investor: owner
214
+ }));
215
+ }
216
+ /**
217
+ * Loads credit account data for the given addresses using simulateWithPriceUpdates.
218
+ * Applies the provided price update txs before reading, so returned data is consistent with up-to-date prices.
219
+ * @param accounts - Credit account addresses to load
220
+ * @param priceUpdateTxs - Price feed update txs to simulate before the read (e.g. from generatePriceFeedsUpdateTxs)
221
+ * @param blockNumber - Optional block number for the read
222
+ * @returns Array of CreditAccountData in the same order as accounts (throws if any getCreditAccountData call reverts)
223
+ */
224
+ async loadSpecifiedAccounts(accounts, priceUpdateTxs, blockNumber) {
225
+ if (accounts.length === 0) return [];
226
+ const list = await simulateWithPriceUpdates(this.client, {
227
+ priceUpdates: priceUpdateTxs,
228
+ contracts: accounts.map(
229
+ (account) => ({
230
+ abi: creditAccountCompressorAbi,
231
+ address: this.#compressor,
232
+ functionName: "getCreditAccountData",
233
+ args: [account]
234
+ })
235
+ ),
236
+ blockNumber,
237
+ gas: this.sdk.gasLimit
238
+ });
239
+ return list;
240
+ }
154
241
  /**
155
242
  * Method to get all claimable rewards for credit account (ex. stkUSDS SKY rewards)
156
243
  Assosiates rewards by adapter + stakedPhantomToken
@@ -383,6 +470,13 @@ class AbstractCreditAccountService extends SDKConstruct {
383
470
  closePath
384
471
  }) {
385
472
  const cm = this.sdk.marketRegister.findCreditManager(ca.creditManager);
473
+ await this.sdk.tokensMeta.loadTokenData(cm.underlying);
474
+ const underlying = this.sdk.tokensMeta.mustGet(cm.underlying);
475
+ if (this.sdk.tokensMeta.isKYCUnderlying(underlying)) {
476
+ throw new Error(
477
+ "closeCreditAccount is not supported for KYC underlying credit accounts"
478
+ );
479
+ }
386
480
  const routerCloseResult = closePath || await this.sdk.routerFor(ca).findBestClosePath({
387
481
  creditAccount: ca,
388
482
  creditManager: cm.creditManager,
@@ -402,7 +496,12 @@ class AbstractCreditAccountService extends SDKConstruct {
402
496
  (t) => this.prepareWithdrawToken(ca.creditFacade, t, MAX_UINT256, to)
403
497
  )
404
498
  ];
405
- const tx = operation === "close" ? cm.creditFacade.closeCreditAccount(ca.creditAccount, calls) : cm.creditFacade.multicall(ca.creditAccount, calls);
499
+ const tx = await this.closeCreditAccountTx(
500
+ cm,
501
+ ca.creditAccount,
502
+ calls,
503
+ operation
504
+ );
406
505
  return { tx, calls, routerCloseResult, creditFacade: cm.creditFacade };
407
506
  }
408
507
  /**
@@ -432,7 +531,7 @@ class AbstractCreditAccountService extends SDKConstruct {
432
531
  averageQuota
433
532
  })
434
533
  ];
435
- const tx = cm.creditFacade.multicall(creditAccount.creditAccount, calls);
534
+ const tx = await this.multicallTx(cm, creditAccount.creditAccount, calls);
436
535
  return { tx, calls, creditFacade: cm.creditFacade };
437
536
  }
438
537
  /**
@@ -474,7 +573,7 @@ class AbstractCreditAccountService extends SDKConstruct {
474
573
  averageQuota
475
574
  })
476
575
  ];
477
- const tx = cm.creditFacade.multicall(creditAccount.creditAccount, calls);
576
+ const tx = await this.multicallTx(cm, creditAccount.creditAccount, calls);
478
577
  tx.value = ethAmount.toString(10);
479
578
  return { tx, calls, creditFacade: cm.creditFacade };
480
579
  }
@@ -491,7 +590,8 @@ class AbstractCreditAccountService extends SDKConstruct {
491
590
  async changeDebt({
492
591
  creditAccount,
493
592
  amount,
494
- addCollateral
593
+ collateral,
594
+ wrapAsset
495
595
  }) {
496
596
  if (amount === 0n) {
497
597
  throw new Error("debt increase or decrease must be non-zero");
@@ -505,27 +605,37 @@ class AbstractCreditAccountService extends SDKConstruct {
505
605
  creditManager: creditAccount.creditManager,
506
606
  creditAccount
507
607
  });
508
- const addCollateralCalls = addCollateral && isDecrease ? this.prepareAddCollateral(
608
+ const addCollateralCalls = collateral && isDecrease ? this.prepareAddCollateral(
509
609
  creditAccount.creditFacade,
510
610
  [
511
611
  {
512
- token: creditAccount.underlying,
513
- balance: change
612
+ token: collateral[0].token,
613
+ balance: collateral[0].balance
514
614
  }
515
615
  ],
516
616
  {}
517
617
  ) : [];
618
+ const unwrapCalls = wrapAsset && isDecrease ? await this.getKYCWrapCalls(
619
+ wrapAsset[0].balance,
620
+ creditAccount.creditManager
621
+ ) || [] : [];
622
+ if (addCollateralCalls.length > 0 && unwrapCalls.length === 0 && collateral && collateral?.[0].token !== creditAccount.underlying) {
623
+ throw new Error(
624
+ "Can't use collateral other than underlying for non KYC market"
625
+ );
626
+ }
518
627
  const underlyingEnabled = (creditAccount.enabledTokensMask & 1n) === 1n;
519
628
  const shouldEnable = !isDecrease && !underlyingEnabled;
520
629
  const calls = [
521
630
  ...priceUpdatesCalls,
522
631
  ...addCollateralCalls,
632
+ ...unwrapCalls,
523
633
  ...shouldEnable ? this.#prepareEnableTokens(creditAccount.creditFacade, [
524
634
  creditAccount.underlying
525
635
  ]) : [],
526
636
  this.#prepareChangeDebt(creditAccount.creditFacade, change, isDecrease)
527
637
  ];
528
- const tx = cm.creditFacade.multicall(creditAccount.creditAccount, calls);
638
+ const tx = await this.multicallTx(cm, creditAccount.creditAccount, calls);
529
639
  return { tx, calls, creditFacade: cm.creditFacade };
530
640
  }
531
641
  /**
@@ -560,7 +670,7 @@ class AbstractCreditAccountService extends SDKConstruct {
560
670
  averageQuota
561
671
  })
562
672
  ];
563
- const tx = cm.creditFacade.multicall(creditAccount.creditAccount, calls);
673
+ const tx = await this.multicallTx(cm, creditAccount.creditAccount, calls);
564
674
  return { tx, calls, creditFacade: cm.creditFacade };
565
675
  }
566
676
  /**
@@ -676,7 +786,7 @@ class AbstractCreditAccountService extends SDKConstruct {
676
786
  averageQuota
677
787
  })
678
788
  ];
679
- const tx = cm.creditFacade.multicall(creditAccount.creditAccount, calls);
789
+ const tx = await this.multicallTx(cm, creditAccount.creditAccount, calls);
680
790
  return { tx, calls, creditFacade: cm.creditFacade };
681
791
  }
682
792
  /**
@@ -741,7 +851,7 @@ class AbstractCreditAccountService extends SDKConstruct {
741
851
  compareBalances,
742
852
  ...quotaCalls
743
853
  ];
744
- const tx = cm.creditFacade.multicall(creditAccount.creditAccount, calls);
854
+ const tx = await this.multicallTx(cm, creditAccount.creditAccount, calls);
745
855
  return { tx, calls, creditFacade: cm.creditFacade };
746
856
  }
747
857
  /**
@@ -768,48 +878,63 @@ class AbstractCreditAccountService extends SDKConstruct {
768
878
  ),
769
879
  ...this.#prepareEnableTokens(ca.creditFacade, enabledTokens)
770
880
  ];
771
- const tx = cm.creditFacade.multicall(ca.creditAccount, calls);
881
+ const tx = await this.multicallTx(cm, ca.creditAccount, calls);
772
882
  return { tx, calls, creditFacade: cm.creditFacade };
773
883
  }
884
+ /**
885
+ * Returns address to which approval should be given on collateral token
886
+ * It's credit manager for classical markets and special wallet for KYC markets
887
+ * @param options - {@link GetApprovalAddressProps}
888
+ * @returns
889
+ **/
890
+ async getApprovalAddress(options) {
891
+ const { creditManager } = options;
892
+ const suite = this.sdk.marketRegister.findCreditManager(creditManager);
893
+ const marketSuite = this.sdk.marketRegister.findByPool(suite.pool);
894
+ const factory = await marketSuite.getKYCFactory();
895
+ if (factory) {
896
+ if ("creditAccount" in options) {
897
+ return factory.getWallet(options.creditAccount);
898
+ }
899
+ return factory.precomputeWalletAddress(creditManager, options.borrower);
900
+ }
901
+ return suite.creditManager.address;
902
+ }
774
903
  /**
775
904
  * Executes swap specified by given calls, update quotas of affected tokens
776
- - Open credit account is executed in the following order: price update -> increase debt -> add collateral ->
777
- -> update quotas -> (optionally: execute swap path for trading/strategy) ->
778
- -> (optionally: withdraw debt for lending)
779
- - Basic open credit account: price update -> increase debt -> add collateral -> update quotas
780
- - Lending: price update -> increase debt -> add collateral -> update quotas -> withdraw debt
781
- - Strategy/trading: price update -> increase debt -> add collateral -> update quotas -> execute swap path
782
- - In strategy is possible situation when collateral is added, but not swapped; the only swapped value in this case will be debt
783
- * @param {bigint} ethAmount - native token amount to attach to tx
784
- * @param {Address} creditManager - address of credit manager to open credit account on
785
- * @param {Array<Asset>} collateral - array of collateral which can be just directly added or swapped using the path {@link Asset}
786
- * @param {Record<Address, PermitResult>} permits - permits of collateral tokens (in any permittable token is present) {@link PermitResult}
787
- * @param {bigint} debt - debt to open credit account with
788
- * @param {boolean} withdrawDebt - flag to withdraw debt to wallet after opening credit account;
789
- used for borrowing functionality
790
- * @param {bigint} referralCode - referral code to open credit account with
791
- * @param {Address} to - wallet address to transfer credit account to\
792
- * @param {Array<MultiCall>} calls - array of MultiCall from router methods findOpenStrategyPath {@link MultiCall}.
793
- Used for trading and strategy functionality
794
- * @param {Array<Asset>} averageQuota - average quota for tokens after open {@link Asset}
795
- * @param {Array<Asset>} minQuota - minimum quota for tokens after open {@link Asset}
905
+ * - Open credit account is executed in the following order: price update -> increase debt -> add collateral ->
906
+ * -> update quotas -> (optionally: execute swap path for trading/strategy) ->
907
+ * -> (optionally: withdraw debt for lending)
908
+ *- Basic open credit account: price update -> increase debt -> add collateral -> update quotas
909
+ *- Lending: price update -> increase debt -> add collateral -> update quotas -> withdraw debt
910
+ *- Strategy/trading: price update -> increase debt -> add collateral -> update quotas -> execute swap path
911
+ *- In strategy is possible situation when collateral is added, but not swapped; the only swapped value in this case will be debt
796
912
  * @returns All necessary data to execute the transaction (call, credit facade)
797
- */
798
- async openCA({
799
- ethAmount,
800
- creditManager,
801
- collateral,
802
- permits,
803
- debt,
804
- withdrawDebt,
805
- referralCode,
806
- to,
807
- calls: openPathCalls,
808
- minQuota,
809
- averageQuota
810
- }) {
913
+ **/
914
+ async openCA(props) {
915
+ const {
916
+ ethAmount,
917
+ creditManager,
918
+ reopenCreditAccount,
919
+ collateral,
920
+ permits,
921
+ debt,
922
+ withdrawToken,
923
+ referralCode,
924
+ to,
925
+ calls: openPathCalls,
926
+ callsAfter,
927
+ minQuota,
928
+ averageQuota
929
+ } = props;
811
930
  const cmSuite = this.sdk.marketRegister.findCreditManager(creditManager);
812
931
  const cm = cmSuite.creditManager;
932
+ let tokenToWithdraw;
933
+ if (withdrawToken === true) {
934
+ tokenToWithdraw = cm.underlying;
935
+ } else if (typeof withdrawToken === "string") {
936
+ tokenToWithdraw = withdrawToken;
937
+ }
813
938
  const priceUpdatesCalls = await this.getPriceUpdatesForFacade({
814
939
  creditManager: cm.address,
815
940
  desiredQuotas: averageQuota
@@ -819,13 +944,27 @@ class AbstractCreditAccountService extends SDKConstruct {
819
944
  this.#prepareIncreaseDebt(cm.creditFacade, debt),
820
945
  ...this.prepareAddCollateral(cm.creditFacade, collateral, permits),
821
946
  ...openPathCalls,
822
- ...withdrawDebt ? [this.prepareWithdrawToken(cm.creditFacade, cm.underlying, debt, to)] : [],
947
+ // путь из underlying в withdrawal token
948
+ ...tokenToWithdraw ? [
949
+ this.prepareWithdrawToken(
950
+ cm.creditFacade,
951
+ tokenToWithdraw,
952
+ MAX_UINT256,
953
+ to
954
+ )
955
+ ] : [],
823
956
  ...this.prepareUpdateQuotas(cm.creditFacade, {
824
957
  minQuota,
825
958
  averageQuota
826
- })
959
+ }),
960
+ ...callsAfter ?? []
827
961
  ];
828
- const tx = cmSuite.creditFacade.openCreditAccount(to, calls, referralCode);
962
+ let tx;
963
+ if (reopenCreditAccount) {
964
+ tx = await this.multicallTx(cmSuite, reopenCreditAccount, calls);
965
+ } else {
966
+ tx = await this.openCreditAccountTx(cmSuite, to, calls, referralCode);
967
+ }
829
968
  tx.value = ethAmount.toString(10);
830
969
  return { calls, tx, creditFacade: cmSuite.creditFacade };
831
970
  }
@@ -909,6 +1048,130 @@ class AbstractCreditAccountService extends SDKConstruct {
909
1048
  );
910
1049
  return resp;
911
1050
  }
1051
+ /**
1052
+ * Returns multicall entries to redeem (unwrap) KYC ERC-4626 vault shares into underlying for the given credit manager.
1053
+ * Used when withdrawing debt from a KYC market: redeems adapter vault shares so the underlying can be withdrawn.
1054
+ * Only applies when the credit manager's underlying is KYC-gated and has an ERC-4626 adapter configured.
1055
+ * @param amount - Number of vault shares (adapter tokens) to redeem
1056
+ * @param creditManager - Credit manager address
1057
+ * @returns Array of MultiCall to pass to credit facade multicall, or undefined if underlying is not KYC or no adapter is configured
1058
+ */
1059
+ async getKYCUnwrapCalls(amount, creditManager) {
1060
+ const suite = this.sdk.marketRegister.findCreditManager(creditManager);
1061
+ const meta = this.sdk.tokensMeta.mustGet(suite.underlying);
1062
+ if (!this.sdk.tokensMeta.isKYCUnderlying(meta)) {
1063
+ return void 0;
1064
+ }
1065
+ const adapter = suite.creditManager.adapters.get(meta.addr);
1066
+ const adapterAddress = adapter?.address;
1067
+ if (!adapterAddress) {
1068
+ return void 0;
1069
+ }
1070
+ const mc = [
1071
+ {
1072
+ target: adapterAddress,
1073
+ callData: encodeFunctionData({
1074
+ abi: ierc4626AdapterAbi,
1075
+ functionName: "redeem",
1076
+ args: [amount, ADDRESS_0X0, ADDRESS_0X0]
1077
+ })
1078
+ }
1079
+ ];
1080
+ return mc;
1081
+ }
1082
+ /**
1083
+ * Returns multicall entries to deposit (wrap) underlying into KYC ERC-4626 vault shares for the given credit manager.
1084
+ * Used when adding debt on a KYC market: deposits underlying into the adapter vault so shares are minted on the account.
1085
+ * Only applies when the credit manager's underlying is KYC-gated and has an ERC-4626 adapter configured.
1086
+ * @param amount - Amount of underlying assets to deposit into the vault (in underlying decimals)
1087
+ * @param creditManager - Credit manager address
1088
+ * @returns Array of MultiCall to pass to credit facade multicall, or undefined if underlying is not KYC or no adapter is configured
1089
+ */
1090
+ async getKYCWrapCalls(amount, creditManager) {
1091
+ const suite = this.sdk.marketRegister.findCreditManager(creditManager);
1092
+ const meta = this.sdk.tokensMeta.mustGet(suite.underlying);
1093
+ if (!this.sdk.tokensMeta.isKYCUnderlying(meta)) {
1094
+ return void 0;
1095
+ }
1096
+ const adapter = suite.creditManager.adapters.get(meta.addr);
1097
+ const adapterAddress = adapter?.address;
1098
+ if (!adapterAddress) {
1099
+ return void 0;
1100
+ }
1101
+ const mc = [
1102
+ {
1103
+ target: adapterAddress,
1104
+ callData: encodeFunctionData({
1105
+ abi: ierc4626AdapterAbi,
1106
+ functionName: "deposit",
1107
+ args: [amount, ADDRESS_0X0]
1108
+ })
1109
+ }
1110
+ ];
1111
+ return mc;
1112
+ }
1113
+ /**
1114
+ * Returns multicall entries to call redeemDiff on the KYC ERC-4626 adapter for the given credit manager.
1115
+ * Redeems the leftover vault shares (e.g. after repaying debt) so the account does not hold excess KYC vault tokens.
1116
+ * Only applies when the credit manager's underlying is KYC-gated and has an ERC-4626 adapter configured.
1117
+ * @param amount - Leftover vault share amount to redeem (in adapter/vault decimals)
1118
+ * @param creditManager - Credit manager address
1119
+ * @returns Array of MultiCall to pass to credit facade multicall, or undefined if underlying is not KYC or no adapter is configured
1120
+ */
1121
+ async getRedeemDiffCalls(amount, creditManager) {
1122
+ const suite = this.sdk.marketRegister.findCreditManager(creditManager);
1123
+ const meta = this.sdk.tokensMeta.mustGet(suite.underlying);
1124
+ if (!this.sdk.tokensMeta.isKYCUnderlying(meta)) {
1125
+ return void 0;
1126
+ }
1127
+ const adapter = suite.creditManager.adapters.get(meta.addr);
1128
+ const adapterAddress = adapter?.address;
1129
+ if (!adapterAddress) {
1130
+ return void 0;
1131
+ }
1132
+ const mc = [
1133
+ {
1134
+ target: adapterAddress,
1135
+ callData: encodeFunctionData({
1136
+ abi: ierc4626AdapterAbi,
1137
+ functionName: "redeemDiff",
1138
+ args: [amount]
1139
+ })
1140
+ }
1141
+ ];
1142
+ return mc;
1143
+ }
1144
+ /**
1145
+ * Returns multicall entries to call depositDiff on the KYC ERC-4626 adapter for the given credit manager.
1146
+ * Deposits the leftover underlying (e.g. after decreasing debt) into the vault so the account does not hold excess underlying.
1147
+ * Only applies when the credit manager's underlying is KYC-gated and has an ERC-4626 adapter configured.
1148
+ * @param amount - Leftover underlying amount to deposit into the vault (in underlying decimals)
1149
+ * @param creditManager - Credit manager address
1150
+ * @returns Array of MultiCall to pass to credit facade multicall, or undefined if underlying is not KYC or no adapter is configured
1151
+ */
1152
+ async getDepositDiffCalls(amount, creditManager) {
1153
+ const suite = this.sdk.marketRegister.findCreditManager(creditManager);
1154
+ const meta = this.sdk.tokensMeta.mustGet(suite.underlying);
1155
+ if (!this.sdk.tokensMeta.isKYCUnderlying(meta)) {
1156
+ return void 0;
1157
+ }
1158
+ const adapter = suite.creditManager.adapters.get(meta.addr);
1159
+ const adapterAddress = adapter?.address;
1160
+ if (!adapterAddress) {
1161
+ return void 0;
1162
+ }
1163
+ const mc = [
1164
+ {
1165
+ target: adapterAddress,
1166
+ callData: encodeFunctionData({
1167
+ abi: ierc4626AdapterAbi,
1168
+ functionName: "depositDiff",
1169
+ args: [amount]
1170
+ })
1171
+ }
1172
+ ];
1173
+ return mc;
1174
+ }
912
1175
  /**
913
1176
  * Returns raw txs that are needed to update all price feeds so that all credit accounts (possibly from different markets) compute
914
1177
  *
@@ -1166,78 +1429,174 @@ class AbstractCreditAccountService extends SDKConstruct {
1166
1429
  VERSION_RANGE_310
1167
1430
  )[0];
1168
1431
  }
1432
+ /**
1433
+ * Wrapper that selects between credit facade and KYC factory
1434
+ * @param suite
1435
+ * @param to
1436
+ * @param calls
1437
+ * @param referralCode
1438
+ * @returns
1439
+ */
1440
+ async openCreditAccountTx(suite, to, calls, referralCode) {
1441
+ const marketSuite = this.sdk.marketRegister.findByPool(suite.pool);
1442
+ const factory = await marketSuite.getKYCFactory();
1443
+ if (factory) {
1444
+ const tokensToRegister = await factory.getDSTokens();
1445
+ return factory.openCreditAccount(
1446
+ suite.creditManager.address,
1447
+ calls,
1448
+ tokensToRegister
1449
+ );
1450
+ }
1451
+ return suite.creditFacade.openCreditAccount(to, calls, referralCode ?? 0n);
1452
+ }
1453
+ /**
1454
+ * Wrapper that selects between credit facade and KYC factory
1455
+ * @param suite
1456
+ * @param creditAccount
1457
+ * @param calls
1458
+ * @returns
1459
+ */
1460
+ async multicallTx(suite, creditAccount, calls) {
1461
+ const marketSuite = this.sdk.marketRegister.findByCreditManager(
1462
+ suite.creditManager.address
1463
+ );
1464
+ const factory = await marketSuite.getKYCFactory();
1465
+ if (factory) {
1466
+ const tokensToRegister = [];
1467
+ return factory.multicall(creditAccount, calls, tokensToRegister);
1468
+ }
1469
+ return suite.creditFacade.multicall(creditAccount, calls);
1470
+ }
1471
+ /**
1472
+ * Wrapper that selects between credit facade and KYC factory
1473
+ * @param suite
1474
+ * @param creditAccount
1475
+ * @param calls
1476
+ * @param operation
1477
+ * @returns
1478
+ */
1479
+ async closeCreditAccountTx(suite, creditAccount, calls, operation) {
1480
+ const marketSuite = this.sdk.marketRegister.findByCreditManager(
1481
+ suite.creditManager.address
1482
+ );
1483
+ const factory = await marketSuite.getKYCFactory();
1484
+ if (operation === "close") {
1485
+ if (factory) {
1486
+ throw new Error(
1487
+ "CloseOptions=close is not supported for KYC underlying credit accounts"
1488
+ );
1489
+ }
1490
+ return suite.creditFacade.closeCreditAccount(creditAccount, calls);
1491
+ }
1492
+ if (factory) {
1493
+ const tokensToRegister = [];
1494
+ return factory.multicall(creditAccount, calls, tokensToRegister);
1495
+ }
1496
+ return suite.creditFacade.multicall(creditAccount, calls);
1497
+ }
1498
+ /**
1499
+ * Returns all KYC credit account addresses for an investor across the given market suites.
1500
+ * Resolves KYC factory per suite, then multicalls each factory's getCreditAccounts(investor).
1501
+ * @param investor - Owner address to query
1502
+ * @param suites - Market suites (KYC factories are resolved for each; undefined entries are skipped)
1503
+ * @returns Flat array of credit account addresses from all KYC markets
1504
+ */
1505
+ async getKYCCaOfInvestor(investor, suites) {
1506
+ if (suites.length === 0 || investor === ADDRESS_0X0) return [];
1507
+ const factories = await Promise.all(
1508
+ suites.map((suite) => suite ? suite.getKYCFactory() : void 0)
1509
+ );
1510
+ const safeFactories = factories.reduce(
1511
+ (acc, v) => {
1512
+ if (v) {
1513
+ acc.push(v);
1514
+ }
1515
+ return acc;
1516
+ },
1517
+ []
1518
+ );
1519
+ const allResp = await this.client.multicall({
1520
+ contracts: [
1521
+ ...safeFactories.map((factory) => {
1522
+ return {
1523
+ abi: factory.abi,
1524
+ address: factory.address,
1525
+ functionName: "getCreditAccounts",
1526
+ args: [investor]
1527
+ };
1528
+ })
1529
+ ],
1530
+ allowFailure: true,
1531
+ batchSize: 0
1532
+ });
1533
+ const caLists = safeFactories.reduce((acc, _, index) => {
1534
+ const response = allResp[index];
1535
+ acc.push(...response.result || []);
1536
+ return acc;
1537
+ }, []);
1538
+ return caLists;
1539
+ }
1169
1540
  }
1170
- const iMellowClaimerAdapterAbi = [
1541
+ const ierc4626AdapterAbi = [
1171
1542
  {
1172
- type: "function",
1173
- name: "getMultiVaultSubvaultIndices",
1174
- inputs: [{ name: "multiVault", type: "address", internalType: "address" }],
1175
- outputs: [
1176
- {
1177
- name: "subvaultIndices",
1178
- type: "uint256[]",
1179
- internalType: "uint256[]"
1180
- },
1181
- {
1182
- name: "withdrawalIndices",
1183
- type: "uint256[][]",
1184
- internalType: "uint256[][]"
1185
- }
1543
+ inputs: [
1544
+ { name: "assets", type: "uint256", internalType: "uint256" },
1545
+ { name: "receiver", type: "address", internalType: "address" }
1186
1546
  ],
1187
- stateMutability: "view"
1547
+ name: "deposit",
1548
+ outputs: [{ name: "useSafePrices", type: "bool", internalType: "bool" }],
1549
+ stateMutability: "nonpayable",
1550
+ type: "function"
1188
1551
  },
1189
1552
  {
1190
- type: "function",
1191
- name: "getUserSubvaultIndices",
1192
1553
  inputs: [
1193
- { name: "multiVault", type: "address", internalType: "address" },
1194
- { name: "user", type: "address", internalType: "address" }
1554
+ { name: "shares", type: "uint256", internalType: "uint256" },
1555
+ { name: "receiver", type: "address", internalType: "address" },
1556
+ { name: "owner", type: "address", internalType: "address" }
1195
1557
  ],
1196
- outputs: [
1558
+ name: "redeem",
1559
+ outputs: [{ name: "useSafePrices", type: "bool", internalType: "bool" }],
1560
+ stateMutability: "nonpayable",
1561
+ type: "function"
1562
+ },
1563
+ {
1564
+ inputs: [
1197
1565
  {
1198
- name: "subvaultIndices",
1199
- type: "uint256[]",
1200
- internalType: "uint256[]"
1201
- },
1566
+ name: "leftoverAmount",
1567
+ type: "uint256",
1568
+ internalType: "uint256"
1569
+ }
1570
+ ],
1571
+ name: "redeemDiff",
1572
+ outputs: [
1202
1573
  {
1203
- name: "withdrawalIndices",
1204
- type: "uint256[][]",
1205
- internalType: "uint256[][]"
1574
+ name: "useSafePrices",
1575
+ type: "bool",
1576
+ internalType: "bool"
1206
1577
  }
1207
1578
  ],
1208
- stateMutability: "view"
1579
+ stateMutability: "nonpayable",
1580
+ type: "function"
1209
1581
  },
1210
1582
  {
1211
- type: "function",
1212
- name: "multiAccept",
1213
1583
  inputs: [
1214
- { name: "multiVault", type: "address", internalType: "address" },
1215
1584
  {
1216
- name: "subvaultIndices",
1217
- type: "uint256[]",
1218
- internalType: "uint256[]"
1219
- },
1220
- { name: "indices", type: "uint256[][]", internalType: "uint256[][]" }
1585
+ name: "leftoverAmount",
1586
+ type: "uint256",
1587
+ internalType: "uint256"
1588
+ }
1221
1589
  ],
1222
- outputs: [{ name: "", type: "bool", internalType: "bool" }],
1223
- stateMutability: "nonpayable"
1224
- },
1225
- {
1226
- type: "function",
1227
- name: "multiAcceptAndClaim",
1228
- inputs: [
1229
- { name: "multiVault", type: "address", internalType: "address" },
1590
+ name: "depositDiff",
1591
+ outputs: [
1230
1592
  {
1231
- name: "subvaultIndices",
1232
- type: "uint256[]",
1233
- internalType: "uint256[]"
1234
- },
1235
- { name: "indices", type: "uint256[][]", internalType: "uint256[][]" },
1236
- { name: "", type: "address", internalType: "address" },
1237
- { name: "maxAssets", type: "uint256", internalType: "uint256" }
1593
+ name: "useSafePrices",
1594
+ type: "bool",
1595
+ internalType: "bool"
1596
+ }
1238
1597
  ],
1239
- outputs: [{ name: "", type: "bool", internalType: "bool" }],
1240
- stateMutability: "nonpayable"
1598
+ stateMutability: "nonpayable",
1599
+ type: "function"
1241
1600
  }
1242
1601
  ];
1243
1602
  export {