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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) hide show
  1. package/dist/cjs/abi/iExpirable.js +15 -0
  2. package/dist/cjs/common-utils/utils/apy/get-single-quota-borrow-rate.js +2 -0
  3. package/dist/cjs/common-utils/utils/creditAccount/calc-health-factor.js +24 -22
  4. package/dist/cjs/common-utils/utils/creditAccount/calc-quota-borrow-rate.js +2 -0
  5. package/dist/cjs/common-utils/utils/creditAccount/get-time-to-liquidation.js +8 -5
  6. package/dist/cjs/common-utils/utils/creditAccount/liquidation-price.js +21 -11
  7. package/dist/cjs/dev/AccountOpener.js +0 -1
  8. package/dist/cjs/dev/compareOpportunities.js +218 -0
  9. package/dist/cjs/model/charts.js +147 -0
  10. package/dist/cjs/model/charts.schema.js +240 -0
  11. package/dist/cjs/model/index.js +35 -22
  12. package/dist/cjs/model/liquidations.schema.js +1 -1
  13. package/dist/cjs/model/notices.schema.js +25 -0
  14. package/dist/cjs/model/opportunities.schema.js +1 -1
  15. package/dist/cjs/model/positions.schema.js +48 -2
  16. package/dist/cjs/new-sdk/AbstractNamespace.js +34 -4
  17. package/dist/cjs/new-sdk/GearboxSDK.js +72 -3
  18. package/dist/cjs/new-sdk/execute/ExecuteApi.js +95 -0
  19. package/dist/cjs/new-sdk/execute/index.js +3 -0
  20. package/dist/cjs/new-sdk/index.js +7 -0
  21. package/dist/cjs/new-sdk/opportunities/OpportunitiesNamespace.js +29 -6
  22. package/dist/cjs/new-sdk/positions/PositionsNamespace.js +3 -6
  23. package/dist/cjs/new-sdk/simulate/SimulateApi.js +361 -0
  24. package/dist/cjs/new-sdk/simulate/index.js +4 -0
  25. package/dist/cjs/new-sdk/utils/index.js +0 -1
  26. package/dist/cjs/offchain/AbstractOffchainNamespace.js +10 -7
  27. package/dist/cjs/offchain/GearboxAPI.js +7 -0
  28. package/dist/cjs/offchain/index.js +3 -0
  29. package/dist/cjs/offchain/notices/OffchainNotices.js +27 -0
  30. package/dist/cjs/offchain/notices/index.js +3 -0
  31. package/dist/cjs/offchain/opportunities/OffchainOpportunities.js +4 -8
  32. package/dist/cjs/offchain/positions/OffchainPositions.js +12 -12
  33. package/dist/cjs/preview/preview/CreditAccountState.js +14 -1
  34. package/dist/cjs/preview/preview/buildDelayedPreview.js +16 -6
  35. package/dist/cjs/preview/preview/previewAdjustCreditAccount.js +9 -2
  36. package/dist/cjs/preview/preview/previewOpenCreditAccount.js +11 -3
  37. package/dist/cjs/preview/preview/previewOperation.js +1 -1
  38. package/dist/cjs/sdk/MultichainSDK.js +3 -4
  39. package/dist/cjs/sdk/OnchainSDK.js +42 -13
  40. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +2 -8
  41. package/dist/cjs/sdk/accounts/credit-account-compressor/CreditAccountCompressor.js +2 -90
  42. package/dist/cjs/sdk/accounts/index.js +5 -2
  43. package/dist/cjs/sdk/accounts/intents/guards.js +114 -0
  44. package/dist/cjs/sdk/accounts/intents/index.js +216 -358
  45. package/dist/cjs/sdk/accounts/intents/math.js +56 -0
  46. package/dist/cjs/sdk/accounts/intents/open-strategy.js +133 -0
  47. package/dist/cjs/sdk/accounts/intents/operations.js +165 -0
  48. package/dist/cjs/sdk/accounts/intents/plan.js +373 -0
  49. package/dist/cjs/sdk/accounts/intents/realize.js +301 -0
  50. package/dist/cjs/sdk/accounts/intents/testing/delayed.js +50 -0
  51. package/dist/cjs/sdk/accounts/intents/testing/market.js +166 -0
  52. package/dist/cjs/sdk/accounts/intents/testing/sdk-mock.js +194 -35
  53. package/dist/cjs/sdk/accounts/intents/tests/add-collateral.fixtures.js +123 -0
  54. package/dist/cjs/sdk/accounts/intents/tests/adjust-leverage.fixtures.js +254 -0
  55. package/dist/cjs/sdk/accounts/intents/tests/deposit.fixtures.js +324 -0
  56. package/dist/cjs/sdk/accounts/intents/tests/finish-decrease-leverage.fixtures.js +242 -0
  57. package/dist/cjs/sdk/accounts/intents/tests/finish-withdraw.fixtures.js +383 -0
  58. package/dist/cjs/sdk/accounts/intents/tests/open-strategy.fixtures.js +133 -0
  59. package/dist/cjs/sdk/accounts/intents/tests/withdraw-asset.fixtures.js +131 -0
  60. package/dist/cjs/sdk/accounts/intents/tests/withdraw.fixtures.js +426 -0
  61. package/dist/cjs/sdk/accounts/intents/types.js +16 -0
  62. package/dist/cjs/sdk/accounts/intents/utils/adjust-state-to-snapshot.js +18 -0
  63. package/dist/cjs/sdk/accounts/intents/utils/credit-account-slice.js +45 -0
  64. package/dist/cjs/sdk/accounts/intents/utils/index.js +17 -8
  65. package/dist/cjs/sdk/accounts/intents/utils/ledger.js +94 -0
  66. package/dist/cjs/sdk/accounts/intents/utils/pick-token.js +72 -0
  67. package/dist/cjs/sdk/accounts/intents/utils/quotas-for-update.js +27 -0
  68. package/dist/cjs/sdk/accounts/intents/utils/router-path.js +86 -0
  69. package/dist/cjs/sdk/accounts/intents/view.js +38 -0
  70. package/dist/cjs/sdk/accounts/liquidations/LiquidationsService.js +0 -3
  71. package/dist/cjs/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.js +29 -18
  72. package/dist/cjs/sdk/base/BaseContract.js +1 -1
  73. package/dist/cjs/sdk/base/TokensMeta.js +78 -27
  74. package/dist/cjs/sdk/index.js +30 -7
  75. package/dist/cjs/sdk/market/MarketRegister.js +16 -7
  76. package/dist/cjs/sdk/market/ZapperRegister.js +56 -25
  77. package/dist/cjs/sdk/market/credit/CreditManagerV310Contract.js +1 -12
  78. package/dist/cjs/sdk/market/credit/CreditSuite.js +28 -9
  79. package/dist/cjs/sdk/market/credit/index.js +3 -0
  80. package/dist/cjs/sdk/market/credit/isStrategyCollateral.js +50 -0
  81. package/dist/cjs/sdk/market/index.js +17 -0
  82. package/dist/cjs/sdk/market/math.js +57 -44
  83. package/dist/cjs/sdk/market/oracle/PriceOracleBaseContract.js +10 -3
  84. package/dist/cjs/sdk/market/pool/PoolV310Contract.js +15 -1
  85. package/dist/cjs/sdk/market/rwa/RWARegistry.js +22 -0
  86. package/dist/cjs/sdk/opportunities/index.js +0 -13
  87. package/dist/cjs/sdk/options.js +1 -5
  88. package/dist/cjs/sdk/pools/PoolService.js +132 -3
  89. package/dist/cjs/sdk/pools/index.js +2 -0
  90. package/dist/cjs/sdk/positions/PositionsService.js +213 -1
  91. package/dist/cjs/sdk/positions/calcBorrowRate.js +43 -0
  92. package/dist/cjs/sdk/positions/calcHealthFactor.js +52 -0
  93. package/dist/cjs/sdk/positions/calcLiquidationPrice.js +23 -0
  94. package/dist/cjs/sdk/positions/calcLiquidationPriceForTarget.js +30 -0
  95. package/dist/cjs/sdk/positions/calcTimeToLiquidationMs.js +19 -0
  96. package/dist/cjs/sdk/positions/index.js +12 -1
  97. package/dist/cjs/sdk/positions/types.js +31 -0
  98. package/dist/cjs/sdk/utils/abi-decode.js +2 -2
  99. package/dist/cjs/sdk/utils/viem/executeMulticallBatches.js +32 -0
  100. package/dist/cjs/sdk/utils/viem/index.js +2 -0
  101. package/dist/esm/abi/iExpirable.js +14 -0
  102. package/dist/esm/common-utils/utils/apy/get-single-quota-borrow-rate.js +2 -0
  103. package/dist/esm/common-utils/utils/creditAccount/calc-health-factor.js +24 -22
  104. package/dist/esm/common-utils/utils/creditAccount/calc-quota-borrow-rate.js +2 -0
  105. package/dist/esm/common-utils/utils/creditAccount/get-time-to-liquidation.js +8 -5
  106. package/dist/esm/common-utils/utils/creditAccount/liquidation-price.js +21 -11
  107. package/dist/esm/dev/AccountOpener.js +1 -2
  108. package/dist/esm/dev/compareOpportunities.js +216 -0
  109. package/dist/esm/dev/withdrawalUtils.js +1 -1
  110. package/dist/esm/model/charts.js +140 -0
  111. package/dist/esm/model/charts.schema.js +226 -0
  112. package/dist/esm/model/index.js +9 -7
  113. package/dist/esm/model/liquidations.schema.js +1 -1
  114. package/dist/esm/model/notices.schema.js +23 -0
  115. package/dist/esm/model/opportunities.schema.js +1 -1
  116. package/dist/esm/model/positions.schema.js +46 -4
  117. package/dist/esm/new-sdk/AbstractNamespace.js +34 -4
  118. package/dist/esm/new-sdk/GearboxSDK.js +72 -4
  119. package/dist/esm/new-sdk/execute/ExecuteApi.js +94 -0
  120. package/dist/esm/new-sdk/execute/index.js +2 -0
  121. package/dist/esm/new-sdk/index.js +6 -2
  122. package/dist/esm/new-sdk/opportunities/OpportunitiesNamespace.js +29 -6
  123. package/dist/esm/new-sdk/positions/PositionsNamespace.js +3 -6
  124. package/dist/esm/new-sdk/simulate/SimulateApi.js +360 -0
  125. package/dist/esm/new-sdk/simulate/index.js +3 -0
  126. package/dist/esm/new-sdk/utils/index.js +0 -1
  127. package/dist/esm/offchain/AbstractOffchainNamespace.js +10 -7
  128. package/dist/esm/offchain/GearboxAPI.js +7 -0
  129. package/dist/esm/offchain/index.js +3 -1
  130. package/dist/esm/offchain/notices/OffchainNotices.js +26 -0
  131. package/dist/esm/offchain/notices/index.js +2 -0
  132. package/dist/esm/offchain/opportunities/OffchainOpportunities.js +4 -8
  133. package/dist/esm/offchain/positions/OffchainPositions.js +12 -12
  134. package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +1 -1
  135. package/dist/esm/preview/preview/CreditAccountState.js +14 -1
  136. package/dist/esm/preview/preview/buildDelayedPreview.js +16 -6
  137. package/dist/esm/preview/preview/previewAdjustCreditAccount.js +9 -2
  138. package/dist/esm/preview/preview/previewOpenCreditAccount.js +11 -3
  139. package/dist/esm/preview/preview/previewOperation.js +1 -1
  140. package/dist/esm/preview/simulate/simulatePoolOperation.js +1 -1
  141. package/dist/esm/preview/trace/extractTransfers.js +1 -1
  142. package/dist/esm/sdk/MultichainSDK.js +3 -4
  143. package/dist/esm/sdk/OnchainSDK.js +42 -13
  144. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +4 -10
  145. package/dist/esm/sdk/accounts/credit-account-compressor/CreditAccountCompressor.js +2 -90
  146. package/dist/esm/sdk/accounts/index.js +3 -2
  147. package/dist/esm/sdk/accounts/intents/guards.js +108 -0
  148. package/dist/esm/sdk/accounts/intents/index.js +214 -358
  149. package/dist/esm/sdk/accounts/intents/math.js +51 -0
  150. package/dist/esm/sdk/accounts/intents/open-strategy.js +132 -0
  151. package/dist/esm/sdk/accounts/intents/operations.js +153 -0
  152. package/dist/esm/sdk/accounts/intents/plan.js +361 -0
  153. package/dist/esm/sdk/accounts/intents/realize.js +300 -0
  154. package/dist/esm/sdk/accounts/intents/testing/delayed.js +38 -0
  155. package/dist/esm/sdk/accounts/intents/testing/market.js +148 -0
  156. package/dist/esm/sdk/accounts/intents/testing/sdk-mock.js +194 -35
  157. package/dist/esm/sdk/accounts/intents/tests/add-collateral.fixtures.js +110 -0
  158. package/dist/esm/sdk/accounts/intents/tests/adjust-leverage.fixtures.js +234 -0
  159. package/dist/esm/sdk/accounts/intents/tests/deposit.fixtures.js +302 -0
  160. package/dist/esm/sdk/accounts/intents/tests/finish-decrease-leverage.fixtures.js +220 -0
  161. package/dist/esm/sdk/accounts/intents/tests/finish-withdraw.fixtures.js +355 -0
  162. package/dist/esm/sdk/accounts/intents/tests/open-strategy.fixtures.js +119 -0
  163. package/dist/esm/sdk/accounts/intents/tests/withdraw-asset.fixtures.js +117 -0
  164. package/dist/esm/sdk/accounts/intents/tests/withdraw.fixtures.js +402 -0
  165. package/dist/esm/sdk/accounts/intents/types.js +16 -1
  166. package/dist/esm/sdk/accounts/intents/utils/adjust-state-to-snapshot.js +17 -0
  167. package/dist/esm/sdk/accounts/intents/utils/credit-account-slice.js +43 -0
  168. package/dist/esm/sdk/accounts/intents/utils/index.js +9 -7
  169. package/dist/esm/sdk/accounts/intents/utils/ledger.js +93 -0
  170. package/dist/esm/sdk/accounts/intents/utils/pick-token.js +68 -0
  171. package/dist/esm/sdk/accounts/intents/utils/quotas-for-update.js +27 -1
  172. package/dist/esm/sdk/accounts/intents/utils/router-path.js +85 -0
  173. package/dist/esm/sdk/accounts/intents/view.js +37 -0
  174. package/dist/esm/sdk/accounts/liquidations/LiquidationsService.js +1 -4
  175. package/dist/esm/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.js +29 -18
  176. package/dist/esm/sdk/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -1
  177. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -1
  178. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -1
  179. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
  180. package/dist/esm/sdk/base/BaseContract.js +1 -1
  181. package/dist/esm/sdk/base/TokensMeta.js +80 -29
  182. package/dist/esm/sdk/chain/detectNetwork.js +1 -1
  183. package/dist/esm/sdk/core/createAddressProvider.js +1 -1
  184. package/dist/esm/sdk/index.js +13 -4
  185. package/dist/esm/sdk/market/MarketRegister.js +16 -7
  186. package/dist/esm/sdk/market/ZapperRegister.js +56 -25
  187. package/dist/esm/sdk/market/credit/CreditFacadeV310BaseContract.js +1 -1
  188. package/dist/esm/sdk/market/credit/CreditManagerV310Contract.js +2 -13
  189. package/dist/esm/sdk/market/credit/CreditSuite.js +29 -10
  190. package/dist/esm/sdk/market/credit/index.js +2 -1
  191. package/dist/esm/sdk/market/credit/isStrategyCollateral.js +48 -0
  192. package/dist/esm/sdk/market/index.js +3 -1
  193. package/dist/esm/sdk/market/math.js +52 -40
  194. package/dist/esm/sdk/market/oracle/PriceOracleBaseContract.js +10 -3
  195. package/dist/esm/sdk/market/pool/PoolV310Contract.js +17 -3
  196. package/dist/esm/sdk/market/rwa/RWARegistry.js +22 -0
  197. package/dist/esm/sdk/market/zapper/IETHZapperContract.js +1 -1
  198. package/dist/esm/sdk/market/zapper/ZapperContract.js +1 -1
  199. package/dist/esm/sdk/opportunities/index.js +1 -2
  200. package/dist/esm/sdk/options.js +1 -5
  201. package/dist/esm/sdk/pools/PoolService.js +133 -6
  202. package/dist/esm/sdk/pools/index.js +2 -2
  203. package/dist/esm/sdk/positions/PositionsService.js +213 -1
  204. package/dist/esm/sdk/positions/calcBorrowRate.js +42 -0
  205. package/dist/esm/sdk/positions/calcHealthFactor.js +51 -0
  206. package/dist/esm/sdk/positions/calcLiquidationPrice.js +22 -0
  207. package/dist/esm/sdk/positions/calcLiquidationPriceForTarget.js +29 -0
  208. package/dist/esm/sdk/positions/calcTimeToLiquidationMs.js +18 -0
  209. package/dist/esm/sdk/positions/index.js +7 -2
  210. package/dist/esm/sdk/positions/types.js +31 -1
  211. package/dist/esm/sdk/utils/abi-decode.js +2 -2
  212. package/dist/esm/sdk/utils/viem/executeMulticallBatches.js +31 -0
  213. package/dist/esm/sdk/utils/viem/index.js +2 -1
  214. package/dist/esm/sdk/utils/viem/simulateWithPriceUpdates.js +1 -1
  215. package/dist/types/abi/iExpirable.d.ts +14 -0
  216. package/dist/types/common-utils/utils/apy/get-single-quota-borrow-rate.d.ts +2 -0
  217. package/dist/types/common-utils/utils/creditAccount/calc-health-factor.d.ts +3 -0
  218. package/dist/types/common-utils/utils/creditAccount/calc-quota-borrow-rate.d.ts +2 -0
  219. package/dist/types/common-utils/utils/creditAccount/get-time-to-liquidation.d.ts +6 -1
  220. package/dist/types/common-utils/utils/creditAccount/liquidation-price.d.ts +3 -0
  221. package/dist/types/dev/compareOpportunities.d.ts +153 -0
  222. package/dist/types/model/charts.d.ts +349 -0
  223. package/dist/types/model/charts.schema.d.ts +364 -0
  224. package/dist/types/model/index.d.ts +8 -6
  225. package/dist/types/model/notices.d.ts +29 -0
  226. package/dist/types/model/notices.schema.d.ts +23 -0
  227. package/dist/types/model/opportunities.d.ts +9 -9
  228. package/dist/types/model/positions.d.ts +133 -7
  229. package/dist/types/model/positions.schema.d.ts +128 -1
  230. package/dist/types/new-sdk/AbstractNamespace.d.ts +15 -2
  231. package/dist/types/new-sdk/GearboxSDK.d.ts +14 -2
  232. package/dist/types/new-sdk/execute/ExecuteApi.d.ts +108 -0
  233. package/dist/types/new-sdk/execute/index.d.ts +2 -0
  234. package/dist/types/new-sdk/index.d.ts +8 -4
  235. package/dist/types/new-sdk/opportunities/OpportunitiesNamespace.d.ts +19 -7
  236. package/dist/types/new-sdk/opportunities/types.d.ts +30 -9
  237. package/dist/types/new-sdk/positions/PositionsNamespace.d.ts +4 -5
  238. package/dist/types/new-sdk/positions/types.d.ts +9 -9
  239. package/dist/types/new-sdk/simulate/SimulateApi.d.ts +90 -0
  240. package/dist/types/new-sdk/simulate/index.d.ts +3 -0
  241. package/dist/types/new-sdk/simulate/types.d.ts +508 -0
  242. package/dist/types/new-sdk/types.d.ts +35 -1
  243. package/dist/types/new-sdk/utils/index.d.ts +1 -2
  244. package/dist/types/offchain/AbstractOffchainNamespace.d.ts +5 -21
  245. package/dist/types/offchain/GearboxAPI.d.ts +6 -0
  246. package/dist/types/offchain/index.d.ts +4 -2
  247. package/dist/types/offchain/notices/OffchainNotices.d.ts +19 -0
  248. package/dist/types/offchain/notices/index.d.ts +2 -0
  249. package/dist/types/offchain/opportunities/OffchainOpportunities.d.ts +8 -4
  250. package/dist/types/offchain/positions/OffchainPositions.d.ts +8 -6
  251. package/dist/types/preview/preview/CreditAccountState.d.ts +6 -0
  252. package/dist/types/preview/preview/buildDelayedPreview.d.ts +5 -1
  253. package/dist/types/preview/preview/types.d.ts +4 -2
  254. package/dist/types/sdk/MultichainSDK.d.ts +0 -5
  255. package/dist/types/sdk/OnchainSDK.d.ts +1 -5
  256. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -7
  257. package/dist/types/sdk/accounts/credit-account-compressor/CreditAccountCompressor.d.ts +3 -12
  258. package/dist/types/sdk/accounts/credit-account-compressor/index.d.ts +2 -2
  259. package/dist/types/sdk/accounts/credit-account-compressor/types.d.ts +1 -19
  260. package/dist/types/sdk/accounts/index.d.ts +7 -5
  261. package/dist/types/sdk/accounts/intents/guards.d.ts +72 -0
  262. package/dist/types/sdk/accounts/intents/index.d.ts +130 -15
  263. package/dist/types/sdk/accounts/intents/math.d.ts +46 -0
  264. package/dist/types/sdk/accounts/intents/open-strategy.d.ts +64 -0
  265. package/dist/types/sdk/accounts/intents/operations.d.ts +215 -0
  266. package/dist/types/sdk/accounts/intents/plan.d.ts +189 -0
  267. package/dist/types/sdk/accounts/intents/realize.d.ts +35 -0
  268. package/dist/types/sdk/accounts/intents/testing/delayed.d.ts +50 -0
  269. package/dist/types/sdk/accounts/intents/testing/expect.d.ts +17 -21
  270. package/dist/types/sdk/accounts/intents/testing/market.d.ts +91 -0
  271. package/dist/types/sdk/accounts/intents/testing/sdk-mock.d.ts +64 -16
  272. package/dist/types/sdk/accounts/intents/tests/add-collateral.fixtures.d.ts +45 -0
  273. package/dist/types/sdk/accounts/intents/tests/adjust-leverage.fixtures.d.ts +56 -0
  274. package/dist/types/sdk/accounts/intents/tests/deposit.fixtures.d.ts +64 -0
  275. package/dist/types/sdk/accounts/intents/tests/finish-decrease-leverage.fixtures.d.ts +107 -0
  276. package/dist/types/sdk/accounts/intents/tests/finish-withdraw.fixtures.d.ts +136 -0
  277. package/dist/types/sdk/accounts/intents/tests/open-strategy.fixtures.d.ts +56 -0
  278. package/dist/types/sdk/accounts/intents/tests/withdraw-asset.fixtures.d.ts +60 -0
  279. package/dist/types/sdk/accounts/intents/tests/withdraw.fixtures.d.ts +79 -0
  280. package/dist/types/sdk/accounts/intents/types.d.ts +369 -43
  281. package/dist/types/sdk/accounts/intents/utils/adjust-state-to-snapshot.d.ts +13 -0
  282. package/dist/types/sdk/accounts/intents/utils/assemble-operation-calls.d.ts +1 -1
  283. package/dist/types/sdk/accounts/intents/utils/credit-account-slice.d.ts +29 -0
  284. package/dist/types/sdk/accounts/intents/utils/index.d.ts +7 -5
  285. package/dist/types/sdk/accounts/intents/utils/ledger.d.ts +41 -0
  286. package/dist/types/sdk/accounts/intents/utils/pick-token.d.ts +55 -0
  287. package/dist/types/sdk/accounts/intents/utils/quotas-for-update.d.ts +15 -4
  288. package/dist/types/sdk/accounts/intents/utils/router-path.d.ts +70 -0
  289. package/dist/types/sdk/accounts/intents/view.d.ts +15 -0
  290. package/dist/types/sdk/accounts/types.d.ts +17 -14
  291. package/dist/types/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.d.ts +6 -0
  292. package/dist/types/sdk/accounts/withdrawal-compressor/types.d.ts +18 -0
  293. package/dist/types/sdk/base/TokensMeta.d.ts +44 -1
  294. package/dist/types/sdk/base/index.d.ts +2 -2
  295. package/dist/types/sdk/base/token-types.d.ts +12 -1
  296. package/dist/types/sdk/index.d.ts +28 -19
  297. package/dist/types/sdk/market/MarketRegister.d.ts +7 -3
  298. package/dist/types/sdk/market/ZapperRegister.d.ts +20 -2
  299. package/dist/types/sdk/market/credit/CreditManagerV310Contract.d.ts +0 -4
  300. package/dist/types/sdk/market/credit/CreditSuite.d.ts +6 -3
  301. package/dist/types/sdk/market/credit/index.d.ts +2 -1
  302. package/dist/types/sdk/market/credit/isStrategyCollateral.d.ts +74 -0
  303. package/dist/types/sdk/market/credit/types.d.ts +2 -9
  304. package/dist/types/sdk/market/index.d.ts +4 -2
  305. package/dist/types/sdk/market/math.d.ts +44 -34
  306. package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +6 -2
  307. package/dist/types/sdk/market/oracle/types.d.ts +10 -2
  308. package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +5 -0
  309. package/dist/types/sdk/market/pool/types.d.ts +5 -0
  310. package/dist/types/sdk/market/rwa/RWARegistry.d.ts +13 -0
  311. package/dist/types/sdk/market/types.d.ts +5 -1
  312. package/dist/types/sdk/opportunities/index.d.ts +1 -2
  313. package/dist/types/sdk/options.d.ts +0 -1
  314. package/dist/types/sdk/pools/PoolService.d.ts +32 -2
  315. package/dist/types/sdk/pools/index.d.ts +3 -3
  316. package/dist/types/sdk/pools/types.d.ts +109 -4
  317. package/dist/types/sdk/positions/PositionsService.d.ts +33 -2
  318. package/dist/types/sdk/positions/calcBorrowRate.d.ts +40 -0
  319. package/dist/types/sdk/positions/calcHealthFactor.d.ts +55 -0
  320. package/dist/types/sdk/positions/calcLiquidationPrice.d.ts +12 -0
  321. package/dist/types/sdk/positions/calcLiquidationPriceForTarget.d.ts +43 -0
  322. package/dist/types/sdk/positions/calcTimeToLiquidationMs.d.ts +16 -0
  323. package/dist/types/sdk/positions/index.d.ts +7 -2
  324. package/dist/types/sdk/positions/types.d.ts +58 -1
  325. package/dist/types/sdk/types/state.d.ts +6 -0
  326. package/dist/types/sdk/utils/viem/executeMulticallBatches.d.ts +39 -0
  327. package/dist/types/sdk/utils/viem/index.d.ts +3 -2
  328. package/package.json +2 -1
  329. package/dist/cjs/model/history.js +0 -53
  330. package/dist/cjs/model/history.schema.js +0 -128
  331. package/dist/cjs/sdk/accounts/intents/intents/index.js +0 -14
  332. package/dist/cjs/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.fixtures.js +0 -121
  333. package/dist/cjs/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.js +0 -15
  334. package/dist/cjs/sdk/accounts/intents/intents/resume/close/close.fixtures.js +0 -108
  335. package/dist/cjs/sdk/accounts/intents/intents/resume/close/close.js +0 -51
  336. package/dist/cjs/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.fixtures.js +0 -130
  337. package/dist/cjs/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.js +0 -83
  338. package/dist/cjs/sdk/accounts/intents/intents/resume/deposit/deposit.fixtures.js +0 -117
  339. package/dist/cjs/sdk/accounts/intents/intents/resume/deposit/deposit.js +0 -15
  340. package/dist/cjs/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.fixtures.js +0 -95
  341. package/dist/cjs/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.js +0 -15
  342. package/dist/cjs/sdk/accounts/intents/intents/resume/index.js +0 -13
  343. package/dist/cjs/sdk/accounts/intents/intents/resume/withdraw/withdraw.fixtures.js +0 -138
  344. package/dist/cjs/sdk/accounts/intents/intents/resume/withdraw/withdraw.js +0 -161
  345. package/dist/cjs/sdk/accounts/intents/operations/add-collateral/index.js +0 -17
  346. package/dist/cjs/sdk/accounts/intents/operations/claim-delayed/index.js +0 -54
  347. package/dist/cjs/sdk/accounts/intents/operations/close-credit-account/index.js +0 -26
  348. package/dist/cjs/sdk/accounts/intents/operations/decrease-debt/index.js +0 -12
  349. package/dist/cjs/sdk/accounts/intents/operations/increase-debt/index.js +0 -12
  350. package/dist/cjs/sdk/accounts/intents/operations/index.js +0 -27
  351. package/dist/cjs/sdk/accounts/intents/operations/quota-update/index.js +0 -22
  352. package/dist/cjs/sdk/accounts/intents/operations/repay-credit-account/index.js +0 -22
  353. package/dist/cjs/sdk/accounts/intents/operations/start-delayed-withdrawal/index.js +0 -18
  354. package/dist/cjs/sdk/accounts/intents/operations/swap/index.js +0 -18
  355. package/dist/cjs/sdk/accounts/intents/operations/unwrap-rwa-collateral/index.js +0 -27
  356. package/dist/cjs/sdk/accounts/intents/operations/withdraw-collateral/index.js +0 -43
  357. package/dist/cjs/sdk/accounts/intents/operations/wrap-rwa-collateral/index.js +0 -27
  358. package/dist/cjs/sdk/accounts/intents/quoters/close.js +0 -58
  359. package/dist/cjs/sdk/accounts/intents/quoters/index.js +0 -7
  360. package/dist/cjs/sdk/accounts/intents/quoters/swap.js +0 -79
  361. package/dist/cjs/sdk/accounts/intents/testing/expect.js +0 -167
  362. package/dist/cjs/sdk/accounts/intents/testing/resume.js +0 -172
  363. package/dist/cjs/sdk/accounts/intents/utils/simulate-adjust-state.js +0 -39
  364. package/dist/cjs/sdk/accounts/intents/utils/simulate-assets.js +0 -69
  365. package/dist/cjs/sdk/accounts/intents/utils/with-quota-update.js +0 -13
  366. package/dist/esm/model/history.js +0 -49
  367. package/dist/esm/model/history.schema.js +0 -116
  368. package/dist/esm/sdk/accounts/intents/intents/index.js +0 -8
  369. package/dist/esm/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.fixtures.js +0 -107
  370. package/dist/esm/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.js +0 -14
  371. package/dist/esm/sdk/accounts/intents/intents/resume/close/close.fixtures.js +0 -94
  372. package/dist/esm/sdk/accounts/intents/intents/resume/close/close.js +0 -50
  373. package/dist/esm/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.fixtures.js +0 -114
  374. package/dist/esm/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.js +0 -82
  375. package/dist/esm/sdk/accounts/intents/intents/resume/deposit/deposit.fixtures.js +0 -110
  376. package/dist/esm/sdk/accounts/intents/intents/resume/deposit/deposit.js +0 -14
  377. package/dist/esm/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.fixtures.js +0 -88
  378. package/dist/esm/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.js +0 -14
  379. package/dist/esm/sdk/accounts/intents/intents/resume/index.js +0 -7
  380. package/dist/esm/sdk/accounts/intents/intents/resume/withdraw/withdraw.fixtures.js +0 -121
  381. package/dist/esm/sdk/accounts/intents/intents/resume/withdraw/withdraw.js +0 -160
  382. package/dist/esm/sdk/accounts/intents/operations/add-collateral/index.js +0 -16
  383. package/dist/esm/sdk/accounts/intents/operations/claim-delayed/index.js +0 -52
  384. package/dist/esm/sdk/accounts/intents/operations/close-credit-account/index.js +0 -25
  385. package/dist/esm/sdk/accounts/intents/operations/decrease-debt/index.js +0 -11
  386. package/dist/esm/sdk/accounts/intents/operations/increase-debt/index.js +0 -11
  387. package/dist/esm/sdk/accounts/intents/operations/index.js +0 -14
  388. package/dist/esm/sdk/accounts/intents/operations/quota-update/index.js +0 -21
  389. package/dist/esm/sdk/accounts/intents/operations/repay-credit-account/index.js +0 -21
  390. package/dist/esm/sdk/accounts/intents/operations/start-delayed-withdrawal/index.js +0 -17
  391. package/dist/esm/sdk/accounts/intents/operations/swap/index.js +0 -17
  392. package/dist/esm/sdk/accounts/intents/operations/unwrap-rwa-collateral/index.js +0 -26
  393. package/dist/esm/sdk/accounts/intents/operations/withdraw-collateral/index.js +0 -42
  394. package/dist/esm/sdk/accounts/intents/operations/wrap-rwa-collateral/index.js +0 -26
  395. package/dist/esm/sdk/accounts/intents/quoters/close.js +0 -56
  396. package/dist/esm/sdk/accounts/intents/quoters/index.js +0 -3
  397. package/dist/esm/sdk/accounts/intents/quoters/swap.js +0 -77
  398. package/dist/esm/sdk/accounts/intents/testing/expect.js +0 -162
  399. package/dist/esm/sdk/accounts/intents/testing/resume.js +0 -157
  400. package/dist/esm/sdk/accounts/intents/utils/simulate-adjust-state.js +0 -38
  401. package/dist/esm/sdk/accounts/intents/utils/simulate-assets.js +0 -68
  402. package/dist/esm/sdk/accounts/intents/utils/with-quota-update.js +0 -12
  403. package/dist/types/model/history.d.ts +0 -153
  404. package/dist/types/model/history.schema.d.ts +0 -95
  405. package/dist/types/new-sdk/utils/history.d.ts +0 -18
  406. package/dist/types/sdk/accounts/intents/intents/index.d.ts +0 -8
  407. package/dist/types/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.d.ts +0 -13
  408. package/dist/types/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.fixtures.d.ts +0 -38
  409. package/dist/types/sdk/accounts/intents/intents/resume/close/close.d.ts +0 -26
  410. package/dist/types/sdk/accounts/intents/intents/resume/close/close.fixtures.d.ts +0 -63
  411. package/dist/types/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.d.ts +0 -26
  412. package/dist/types/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.fixtures.d.ts +0 -86
  413. package/dist/types/sdk/accounts/intents/intents/resume/deposit/deposit.d.ts +0 -13
  414. package/dist/types/sdk/accounts/intents/intents/resume/deposit/deposit.fixtures.d.ts +0 -48
  415. package/dist/types/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.d.ts +0 -13
  416. package/dist/types/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.fixtures.d.ts +0 -46
  417. package/dist/types/sdk/accounts/intents/intents/resume/index.d.ts +0 -7
  418. package/dist/types/sdk/accounts/intents/intents/resume/withdraw/withdraw.d.ts +0 -33
  419. package/dist/types/sdk/accounts/intents/intents/resume/withdraw/withdraw.fixtures.d.ts +0 -68
  420. package/dist/types/sdk/accounts/intents/operations/add-collateral/index.d.ts +0 -23
  421. package/dist/types/sdk/accounts/intents/operations/claim-delayed/index.d.ts +0 -55
  422. package/dist/types/sdk/accounts/intents/operations/close-credit-account/index.d.ts +0 -22
  423. package/dist/types/sdk/accounts/intents/operations/decrease-debt/index.d.ts +0 -18
  424. package/dist/types/sdk/accounts/intents/operations/increase-debt/index.d.ts +0 -18
  425. package/dist/types/sdk/accounts/intents/operations/index.d.ts +0 -14
  426. package/dist/types/sdk/accounts/intents/operations/quota-update/index.d.ts +0 -24
  427. package/dist/types/sdk/accounts/intents/operations/repay-credit-account/index.d.ts +0 -31
  428. package/dist/types/sdk/accounts/intents/operations/start-delayed-withdrawal/index.d.ts +0 -23
  429. package/dist/types/sdk/accounts/intents/operations/swap/index.d.ts +0 -28
  430. package/dist/types/sdk/accounts/intents/operations/types.d.ts +0 -21
  431. package/dist/types/sdk/accounts/intents/operations/unwrap-rwa-collateral/index.d.ts +0 -30
  432. package/dist/types/sdk/accounts/intents/operations/withdraw-collateral/index.d.ts +0 -36
  433. package/dist/types/sdk/accounts/intents/operations/wrap-rwa-collateral/index.d.ts +0 -30
  434. package/dist/types/sdk/accounts/intents/quoters/close.d.ts +0 -43
  435. package/dist/types/sdk/accounts/intents/quoters/index.d.ts +0 -3
  436. package/dist/types/sdk/accounts/intents/quoters/swap.d.ts +0 -43
  437. package/dist/types/sdk/accounts/intents/testing/resume.d.ts +0 -84
  438. package/dist/types/sdk/accounts/intents/utils/simulate-adjust-state.d.ts +0 -19
  439. package/dist/types/sdk/accounts/intents/utils/simulate-assets.d.ts +0 -21
  440. package/dist/types/sdk/accounts/intents/utils/with-quota-update.d.ts +0 -16
  441. /package/dist/cjs/{new-sdk/utils/history.js → model/notices.js} +0 -0
  442. /package/dist/cjs/{sdk/accounts/intents/operations → new-sdk/simulate}/types.js +0 -0
  443. /package/dist/esm/{new-sdk/utils/history.js → model/notices.js} +0 -0
  444. /package/dist/esm/{sdk/accounts/intents/operations → new-sdk/simulate}/types.js +0 -0
@@ -1,3 +1,6 @@
1
+ import "../../../constants/math.js";
2
+ import "../../../constants/index.js";
3
+ import { PositionsService } from "../../../positions/PositionsService.js";
1
4
  import { vi } from "vitest";
2
5
  //#region src/sdk/accounts/intents/testing/sdk-mock.ts
3
6
  /**
@@ -6,19 +9,19 @@ import { vi } from "vitest";
6
9
  * The service resolves all market data through `OnchainSDK`
7
10
  * (`marketRegister`, `tokensMeta`, `accounts`). `buildMockSdk` builds a mock
8
11
  * from plain records; assemble mocks ECHO recognizable sentinel calls derived
9
- * from their inputs, so `result.instant.calls` pins down which ops reached the
12
+ * from their inputs, so `result.calls` pins down which ops reached the
10
13
  * assembler and in which order.
11
14
  */
12
- /** Fixture `claimableWithdrawal.claimCalls` content; echoes through claim ops. */
13
- const MOCK_CLAIM_CALL = {
14
- target: "0x1111111111111111111111111111111111111111",
15
- callData: "0x"
16
- };
17
- /** Recognizable router call embedded in close path results. */
15
+ /** Recognizable router call embedded in routed leg results. */
18
16
  const MOCK_ROUTER_CALL = {
19
17
  target: "0x9999999999999999999999999999999999999999",
20
18
  callData: "0x"
21
19
  };
20
+ /** Router call of the many-to-one leg an exit routes. */
21
+ const MOCK_CLOSE_CALL = {
22
+ target: "0x9595959595959595959595959595959595959595",
23
+ callData: "0x"
24
+ };
22
25
  /** Returned by the `getRWAWrapCalls` mock; passes through per wrap op. */
23
26
  const MOCK_RWA_WRAP_CALL = {
24
27
  target: "0x8888888888888888888888888888888888888888",
@@ -29,9 +32,14 @@ const MOCK_RWA_UNWRAP_CALL = {
29
32
  target: "0x7777777777777777777777777777777777777777",
30
33
  callData: "0x"
31
34
  };
32
- /** Returned by the `assembleCloseCreditAccountCalls` mock. */
33
- const MOCK_CLOSE_CALL = {
34
- target: "0x5555555555555555555555555555555555555555",
35
+ /** Fixture `claimableWithdrawal.claimCalls` content; echoes through claim ops. */
36
+ const MOCK_CLAIM_CALL = {
37
+ target: "0x1111111111111111111111111111111111111111",
38
+ callData: "0x"
39
+ };
40
+ /** Fixture `requestableWithdrawal.requestCalls`; echoes through request ops. */
41
+ const MOCK_REQUEST_CALL = {
42
+ target: "0x2222222222222222222222222222222222222222",
35
43
  callData: "0x"
36
44
  };
37
45
  /** One sentinel call per plain encodable op type. */
@@ -77,30 +85,99 @@ function buildMockSdk(args) {
77
85
  if (fromPrice === void 0 || toPrice === void 0) throw new Error(`mock priceOracle: missing price for ${from} or ${target}`);
78
86
  return amount * fromPrice * 10n ** BigInt(decimalsOf(target)) / (toPrice * 10n ** BigInt(decimalsOf(from)));
79
87
  };
80
- const quotas = { values: () => Object.values(args.quotas).map((q) => ({
88
+ const fullQuota = (q) => ({
81
89
  cumulativeIndexLU: 0n,
82
90
  totalQuoted: 0n,
83
91
  quotaIncreaseFee: 0n,
84
92
  ...q
85
- })) };
86
- const liquidationThresholds = { entries: () => Object.entries(args.liquidationThresholds) };
93
+ });
94
+ const quotaOf = (token) => args.quotas[token.toLowerCase()] ?? args.quotas[token];
95
+ const quotas = {
96
+ values: () => Object.values(args.quotas).map(fullQuota),
97
+ get: (token) => {
98
+ const q = quotaOf(token);
99
+ return q === void 0 ? void 0 : fullQuota(q);
100
+ }
101
+ };
102
+ const liquidationThresholds = {
103
+ entries: () => Object.entries(args.liquidationThresholds),
104
+ get: (token) => args.liquidationThresholds[token.toLowerCase()] ?? args.liquidationThresholds[token]
105
+ };
106
+ const mainPriceOf = (token) => {
107
+ const key = token.toLowerCase();
108
+ const price = args.prices[key] ?? args.prices[token];
109
+ if (price === void 0) throw new Error(`mock priceOracle: missing main price for ${token}`);
110
+ return price;
111
+ };
112
+ const reservePriceOf = (token) => {
113
+ const key = token.toLowerCase();
114
+ const price = args.reservePrices?.[key] ?? args.reservePrices?.[token];
115
+ if (price === void 0) throw new Error(`mock priceOracle: missing reserve price for ${token}`);
116
+ return price;
117
+ };
118
+ const poolPaused = args.poolPaused ?? false;
87
119
  const market = {
88
- priceOracle: { convert },
120
+ priceOracle: {
121
+ convert,
122
+ mainPrice: mainPriceOf,
123
+ reservePrice: reservePriceOf,
124
+ convertToUSD: (token, amount) => {
125
+ const from = token.toLowerCase();
126
+ const price = args.prices[from] ?? args.prices[token];
127
+ if (price === void 0) throw new Error(`mock priceOracle: missing price for ${from}`);
128
+ return amount * price / 10n ** BigInt(decimalsOf(from));
129
+ },
130
+ safeConvertToUSD: (token, amount) => {
131
+ const from = token.toLowerCase();
132
+ const price = args.prices[from] ?? args.prices[token];
133
+ if (price === void 0) return null;
134
+ return amount * price / 10n ** BigInt(decimalsOf(from));
135
+ }
136
+ },
89
137
  pool: {
90
- pqk: { quotas },
138
+ pqk: {
139
+ quotas,
140
+ quotaRate: (token) => Number(quotaOf(token)?.rate ?? 0n),
141
+ hasActiveQuota: (token) => {
142
+ const q = quotaOf(token);
143
+ return !!q?.isActive && q.limit > 0n;
144
+ }
145
+ },
146
+ pool: {
147
+ baseInterestRate: args.baseInterestRate ?? 0n,
148
+ isPaused: poolPaused,
149
+ availableLiquidity: args.availableLiquidity ?? 115792089237316195423570985008687907853269984665640564039457584007913129639935n,
150
+ creditManagerDebtParams: { get: () => ({ available: args.debtLimitAvailable ?? 115792089237316195423570985008687907853269984665640564039457584007913129639935n }) }
151
+ },
152
+ isPaused: poolPaused,
91
153
  underlying: args.underlying
92
154
  }
93
155
  };
156
+ const collateralTokens = [args.underlying.toLowerCase(), ...Object.keys(args.liquidationThresholds).map((t) => t.toLowerCase()).filter((t) => t !== args.underlying.toLowerCase())];
157
+ const forbidden = new Set((args.forbiddenTokens ?? []).map((t) => t.toLowerCase()));
158
+ const forbiddenTokensMask = collateralTokens.reduce((mask, token, i) => forbidden.has(token) ? mask | 1n << BigInt(i) : mask, 0n);
159
+ const facadePaused = args.facadePaused ?? false;
160
+ const expirationDate = args.expirationDate ?? 0;
94
161
  const creditManagerSuite = {
95
162
  creditManager: {
96
163
  address: args.creditManager,
97
164
  liquidationThresholds,
98
- collateralTokens: []
165
+ collateralTokens,
166
+ feeInterest: args.feeInterest ?? 0
99
167
  },
100
168
  creditFacade: {
101
169
  address: args.creditFacade,
102
- maxDebt: args.maxDebt
103
- }
170
+ maxDebt: args.maxDebt,
171
+ minDebt: args.minDebt ?? 0n,
172
+ isPaused: facadePaused,
173
+ expirable: expirationDate > 0,
174
+ expirationDate,
175
+ maxDebtPerBlockMultiplier: args.maxDebtPerBlockMultiplier ?? 2,
176
+ forbiddenTokensMask
177
+ },
178
+ market,
179
+ isPaused: facadePaused || poolPaused,
180
+ isExpired: expirationDate > 0 && expirationDate < (args.timestamp ?? 0)
104
181
  };
105
182
  const routeCalls = (tokenIn, tokenOut) => {
106
183
  const underlying = args.underlying.toLowerCase();
@@ -112,10 +189,6 @@ function buildMockSdk(args) {
112
189
  return [MOCK_ROUTER_CALL];
113
190
  };
114
191
  const router = {
115
- findBestClosePath: vi.fn(async () => {
116
- if (!args.closePath) throw new Error("mock router: closePath not configured");
117
- return args.closePath;
118
- }),
119
192
  findOneTokenPath: vi.fn(async ({ amount, tokenIn, tokenOut }) => ({
120
193
  amount,
121
194
  minAmount: amount,
@@ -130,20 +203,77 @@ function buildMockSdk(args) {
130
203
  calls: routeCalls(tokenIn, target)
131
204
  };
132
205
  }),
133
- findOpenStrategyPath: vi.fn(async ({ expectedBalances, leftoverBalances }) => {
134
- const spent = expectedBalances.reduce((acc, a) => acc + a.balance, 0n) - leftoverBalances.reduce((acc, a) => acc + a.balance, 0n);
206
+ findOpenStrategyPath: vi.fn(async ({ expectedBalances, leftoverBalances, target }) => {
207
+ const targetLc = target.toLowerCase();
208
+ const leftover = new Map(leftoverBalances.map((a) => [a.token.toLowerCase(), a.balance]));
209
+ const balances = {};
210
+ let amount = 0n;
211
+ for (const a of expectedBalances) {
212
+ const token = a.token.toLowerCase();
213
+ if (token === targetLc) {
214
+ balances[token] = (balances[token] ?? 0n) + a.balance;
215
+ continue;
216
+ }
217
+ const keep = leftover.get(token) ?? 0n;
218
+ const spend = a.balance > keep ? a.balance - keep : 0n;
219
+ balances[token] = a.balance - spend;
220
+ amount += convert(token, targetLc, spend);
221
+ }
222
+ balances[targetLc] = (balances[targetLc] ?? 0n) + amount;
135
223
  return {
136
- amount: spent,
137
- minAmount: spent,
138
- calls: [MOCK_ROUTER_CALL],
139
- minAssets: [],
140
- averageAssets: []
224
+ amount,
225
+ minAmount: amount,
226
+ balances,
227
+ minBalances: { ...balances },
228
+ calls: [MOCK_ROUTER_CALL]
229
+ };
230
+ }),
231
+ findBestClosePath: vi.fn(async ({ balances }) => {
232
+ const underlying = args.underlying.toLowerCase();
233
+ const sold = (balances?.expectedBalances ?? []).filter((a) => a.token.toLowerCase() !== underlying && a.balance > 10n);
234
+ const amount = sold.reduce((acc, a) => acc + convert(a.token, underlying, a.balance), 0n);
235
+ return {
236
+ amount,
237
+ minAmount: amount,
238
+ underlyingBalance: amount,
239
+ calls: sold.length === 0 ? [] : [MOCK_CLOSE_CALL]
141
240
  };
142
241
  })
143
242
  };
144
- return {
243
+ const phantoms = new Set((args.phantoms ?? []).map((t) => t.toLowerCase()));
244
+ const venuesOf = (token) => args.delayed?.[token.toLowerCase()] ?? [];
245
+ const withdrawalCompressor = args.delayed ? { findWithdrawableAssets: vi.fn(async (creditManager, token) => venuesOf(token).map((v) => ({
246
+ creditManager,
247
+ token,
248
+ withdrawalPhantomToken: v.withdrawalPhantomToken,
249
+ underlying: v.underlying ?? args.underlying,
250
+ withdrawalLength: 172800n
251
+ }))) } : void 0;
252
+ const previewDelayedWithdrawal = vi.fn(async ({ token, amount, withdrawalPhantomToken }) => {
253
+ const venue = venuesOf(token).find((v) => v.withdrawalPhantomToken === withdrawalPhantomToken) ?? venuesOf(token)[0];
254
+ if (!venue) throw new Error(`mock compressor: ${token} has no delayed route`);
255
+ return {
256
+ token,
257
+ amountIn: amount,
258
+ outputs: venue.outputs?.(amount) ?? [{
259
+ token: venue.withdrawalPhantomToken,
260
+ amount,
261
+ isDelayed: true
262
+ }],
263
+ requestCalls: [MOCK_REQUEST_CALL],
264
+ claimableAt: venue.claimableAt ?? 172800n
265
+ };
266
+ });
267
+ const sdk = {
268
+ chainId: 1,
269
+ currentBlock: 1n,
270
+ timestamp: args.timestamp ?? 0,
271
+ withdrawalCompressor,
145
272
  tokensMeta: {
146
- get: (token) => ({ decimals: decimalsOf(token) }),
273
+ get: (token) => ({
274
+ decimals: decimalsOf(token),
275
+ contractType: phantoms.has(token.toLowerCase()) ? "PHANTOM_TOKEN::SECURITIZE_RD" : void 0
276
+ }),
147
277
  rwaUnderlyings: { get: (token) => {
148
278
  const asset = args.rwaAssets?.[token.toLowerCase()];
149
279
  return asset ? { asset } : void 0;
@@ -155,18 +285,47 @@ function buildMockSdk(args) {
155
285
  },
156
286
  routerFor: vi.fn(() => router),
157
287
  accounts: {
288
+ getCreditAccountData: vi.fn(async (address) => {
289
+ const slice = args.creditAccounts?.find((ca) => ca.creditAccount.toLowerCase() === address.toLowerCase());
290
+ return slice ? payloadOf(slice) : void 0;
291
+ }),
158
292
  assembleCaOperations: vi.fn(({ operations }) => operations.flatMap(echoEncodableOpCalls)),
159
293
  prepareIncreaseDebt: vi.fn(() => CA_OP_CALLS.increaseDebt),
160
294
  prepareChangeDebt: vi.fn(() => CA_OP_CALLS.decreaseDebt),
161
295
  prepareAddCollateral: vi.fn(() => [CA_OP_CALLS.addCollateral]),
162
296
  prepareWithdrawToken: vi.fn(() => CA_OP_CALLS.withdrawCollateral),
163
297
  prepareUpdateQuotas: vi.fn(() => [CA_OP_CALLS.changeQuota]),
164
- assembleClaimDelayedCalls: vi.fn(({ claimableNow }) => [...claimableNow.claimCalls]),
165
- assembleCloseCreditAccountCalls: vi.fn(async () => [MOCK_CLOSE_CALL]),
166
298
  assembleRWAWrapCalls: vi.fn(async () => [MOCK_RWA_WRAP_CALL]),
167
- assembleRWAUnwrapCalls: vi.fn(async () => [MOCK_RWA_UNWRAP_CALL])
299
+ assembleRWAUnwrapCalls: vi.fn(async () => [MOCK_RWA_UNWRAP_CALL]),
300
+ previewDelayedWithdrawal,
301
+ assembleStartDelayedWithdrawalCalls: vi.fn(({ preview }) => [...preview.requestCalls]),
302
+ assembleClaimDelayedCalls: vi.fn(({ claimableNow }) => [...claimableNow.claimCalls])
168
303
  }
169
304
  };
305
+ Object.assign(sdk, { positions: new PositionsService(sdk) });
306
+ return sdk;
307
+ }
308
+ /** A full account payload carrying exactly what the slice builder reads back. */
309
+ function payloadOf(slice) {
310
+ return {
311
+ creditAccount: slice.creditAccount,
312
+ creditManager: slice.creditManager,
313
+ creditFacade: slice.creditFacade,
314
+ underlying: slice.underlying,
315
+ owner: slice.creditAccount,
316
+ expirationDate: 0,
317
+ enabledTokensMask: slice.enabledTokensMask,
318
+ debt: slice.accountDebt,
319
+ accruedInterest: 0n,
320
+ accruedFees: 0n,
321
+ totalDebtUSD: slice.totalDebtUSD,
322
+ totalValueUSD: 0n,
323
+ twvUSD: 0n,
324
+ totalValue: 0n,
325
+ healthFactor: 0n,
326
+ success: true,
327
+ tokens: slice.tokens
328
+ };
170
329
  }
171
330
  //#endregion
172
- export { CA_OP_CALLS, MOCK_CLAIM_CALL, MOCK_CLOSE_CALL, MOCK_ROUTER_CALL, MOCK_RWA_UNWRAP_CALL, MOCK_RWA_WRAP_CALL, buildMockSdk };
331
+ export { CA_OP_CALLS, MOCK_CLAIM_CALL, MOCK_CLOSE_CALL, MOCK_REQUEST_CALL, MOCK_ROUTER_CALL, MOCK_RWA_UNWRAP_CALL, MOCK_RWA_WRAP_CALL, buildMockSdk };
@@ -0,0 +1,110 @@
1
+ import { ANY, RWA_ASSET, UND, buildFixtureCreditAccount, buildMarketSdk, caToken, valueInUnd } from "../testing/market.js";
2
+ //#region src/sdk/accounts/intents/tests/add-collateral.fixtures.ts
3
+ /**
4
+ * Start add-collateral fixtures (intent 5).
5
+ *
6
+ * Only the position token can be deposited, so every case is a single
7
+ * `addCollateral` plus the quota increase implied by the new balance. Debt never
8
+ * moves.
9
+ */
10
+ /** Quota bought for a freshly obtained balance: value in UND scaled by its LT. */
11
+ function quotaFor(amount, token, lt) {
12
+ return valueInUnd(amount, token) * lt / 10000n;
13
+ }
14
+ const LT_ANY = 9200n;
15
+ /** 1000 UND of pre-existing collateral, 500 UND of debt. */
16
+ const BASE_UND = 100000000000n;
17
+ const DEBT = 50000000000n;
18
+ /** 2000 ANY = 1000 UND at fixture prices. */
19
+ const ADD_ANY = 2000000000000000000000n;
20
+ /** 500 UND. */
21
+ const ADD_UND = 50000000000n;
22
+ /** 1000 RWA_ASSET = 1000 UND at fixture prices. */
23
+ const ADD_RWA = 100000000000n;
24
+ const QUOTA_ANY = quotaFor(ADD_ANY, ANY, LT_ANY);
25
+ const QUOTA_RWA = quotaFor(ADD_RWA, RWA_ASSET, LT_ANY);
26
+ /** Position token with a quota: addCollateral then buy quota for it. */
27
+ const case_position_token = {
28
+ intent: {
29
+ type: "ADD_COLLATERAL",
30
+ token: ANY,
31
+ amount: ADD_ANY
32
+ },
33
+ tokens: [caToken(UND, BASE_UND)],
34
+ accountDebt: DEBT,
35
+ totalValue: BASE_UND + valueInUnd(ADD_ANY, ANY),
36
+ ops: [{
37
+ type: "addCollateral",
38
+ token: ANY,
39
+ amount: ADD_ANY,
40
+ value: void 0
41
+ }, {
42
+ type: "changeQuota",
43
+ quotaIncrease: [{
44
+ token: ANY,
45
+ balance: QUOTA_ANY
46
+ }],
47
+ quotaDecrease: [],
48
+ desiredQuota: {}
49
+ }]
50
+ };
51
+ /** Underlying has no quota, so the flow is a bare addCollateral. */
52
+ const case_underlying = {
53
+ intent: {
54
+ type: "ADD_COLLATERAL",
55
+ token: UND,
56
+ amount: ADD_UND
57
+ },
58
+ tokens: [caToken(ANY, ADD_ANY, QUOTA_ANY)],
59
+ accountDebt: DEBT,
60
+ totalValue: valueInUnd(ADD_ANY, ANY) + ADD_UND,
61
+ ops: [{
62
+ type: "addCollateral",
63
+ token: UND,
64
+ amount: ADD_UND,
65
+ value: void 0
66
+ }]
67
+ };
68
+ /** RWA market: the rwa asset is deposited as-is, with no wrap leg. */
69
+ const case_rwa_asset = {
70
+ intent: {
71
+ type: "ADD_COLLATERAL",
72
+ token: RWA_ASSET,
73
+ amount: ADD_RWA
74
+ },
75
+ tokens: [caToken(UND, BASE_UND)],
76
+ accountDebt: DEBT,
77
+ totalValue: BASE_UND + valueInUnd(ADD_RWA, RWA_ASSET),
78
+ ops: [{
79
+ type: "addCollateral",
80
+ token: RWA_ASSET,
81
+ amount: ADD_RWA,
82
+ value: void 0
83
+ }, {
84
+ type: "changeQuota",
85
+ quotaIncrease: [{
86
+ token: RWA_ASSET,
87
+ balance: QUOTA_RWA
88
+ }],
89
+ quotaDecrease: [],
90
+ desiredQuota: {}
91
+ }],
92
+ rwaAssets: { [UND]: RWA_ASSET }
93
+ };
94
+ function buildAddCollateralSdk(c) {
95
+ return buildMarketSdk({ rwaAssets: c.rwaAssets });
96
+ }
97
+ function buildAddCollateralProps(c, sdk) {
98
+ return {
99
+ intent: c.intent,
100
+ creditAccount: buildFixtureCreditAccount({
101
+ accountDebt: c.accountDebt,
102
+ tokens: c.tokens
103
+ }),
104
+ sdk,
105
+ quotaReserve: void 0,
106
+ slippage: void 0
107
+ };
108
+ }
109
+ //#endregion
110
+ export { ADD_ANY, ADD_RWA, ADD_UND, BASE_UND, DEBT, LT_ANY, QUOTA_ANY, QUOTA_RWA, buildAddCollateralProps, buildAddCollateralSdk, case_position_token, case_rwa_asset, case_underlying };
@@ -0,0 +1,234 @@
1
+ import { POS, RWA_ASSET, UND, buildFixtureCreditAccount, buildMarketSdk, caToken } from "../testing/market.js";
2
+ //#region src/sdk/accounts/intents/tests/adjust-leverage.fixtures.ts
3
+ /**
4
+ * Start adjust-leverage fixtures (intent 6), collateral held fixed.
5
+ *
6
+ * Every case starts from 1000 UND of TVL against 500 UND of debt, i.e. 500 UND
7
+ * of collateral at 2x. Because collateral is the invariant, a target of 3x means
8
+ * `D1 = 500 * 2 = 1000` and a target of 2x from 3x means repaying back to 500.
9
+ *
10
+ * `POS` is used as the position token: it converts 1:1 with `UND`, which is the
11
+ * only way the mock router's echo-the-input behaviour stays decimals-honest.
12
+ */
13
+ const LT = 9200n;
14
+ /** 500 UND. */
15
+ const STEP = 50000000000n;
16
+ /** 1000 UND. */
17
+ const TVL_2X = 100000000000n;
18
+ /** 1500 UND. */
19
+ const TVL_3X = 150000000000n;
20
+ const DEBT_2X = STEP;
21
+ const DEBT_3X = TVL_2X;
22
+ /** Leverage targets in LEVERAGE_DECIMALS (100n = 1x). */
23
+ const LEV_2X = 200n;
24
+ const LEV_3X = 300n;
25
+ const quotaOf = (balance) => balance * LT / 10000n;
26
+ const QUOTA_1000 = quotaOf(TVL_2X);
27
+ const QUOTA_1500 = quotaOf(TVL_3X);
28
+ /** Quota ops carry signed deltas. */
29
+ const QUOTA_UP = QUOTA_1500 - QUOTA_1000;
30
+ const QUOTA_DOWN = QUOTA_1000 - QUOTA_1500;
31
+ /** 2x → 3x: borrow the difference and buy the position token with it. */
32
+ const case_increase = {
33
+ intent: {
34
+ type: "ADJUST_LEVERAGE",
35
+ targetLeverage: LEV_3X,
36
+ token: POS
37
+ },
38
+ tokens: [caToken(POS, TVL_2X, QUOTA_1000)],
39
+ accountDebt: DEBT_2X,
40
+ totalValue: TVL_3X,
41
+ accountDebtAfter: DEBT_3X,
42
+ ops: [
43
+ {
44
+ type: "increaseDebt",
45
+ amount: STEP
46
+ },
47
+ {
48
+ type: "swap",
49
+ from: [{
50
+ token: UND,
51
+ balance: STEP
52
+ }],
53
+ tokenOut: POS,
54
+ amountOut: STEP
55
+ },
56
+ {
57
+ type: "changeQuota",
58
+ quotaIncrease: [{
59
+ token: POS,
60
+ balance: QUOTA_UP
61
+ }],
62
+ quotaDecrease: [],
63
+ desiredQuota: {}
64
+ }
65
+ ]
66
+ };
67
+ /** Position token is the underlying: borrowing alone reaches the target. */
68
+ const case_increase_underlying = {
69
+ intent: {
70
+ type: "ADJUST_LEVERAGE",
71
+ targetLeverage: LEV_3X,
72
+ token: UND
73
+ },
74
+ tokens: [caToken(UND, TVL_2X)],
75
+ accountDebt: DEBT_2X,
76
+ totalValue: TVL_3X,
77
+ accountDebtAfter: DEBT_3X,
78
+ ops: [{
79
+ type: "increaseDebt",
80
+ amount: STEP
81
+ }]
82
+ };
83
+ /** RWA market: the borrowed wrapper is unwrapped instead of swapped. */
84
+ const case_increase_rwa = {
85
+ intent: {
86
+ type: "ADJUST_LEVERAGE",
87
+ targetLeverage: LEV_3X,
88
+ token: RWA_ASSET
89
+ },
90
+ tokens: [caToken(RWA_ASSET, TVL_2X, QUOTA_1000)],
91
+ accountDebt: DEBT_2X,
92
+ totalValue: TVL_3X,
93
+ accountDebtAfter: DEBT_3X,
94
+ ops: [
95
+ {
96
+ type: "increaseDebt",
97
+ amount: STEP
98
+ },
99
+ {
100
+ type: "unwrapRwaCollateral",
101
+ tokenIn: UND,
102
+ amount: STEP,
103
+ tokenOut: RWA_ASSET,
104
+ amountOut: STEP
105
+ },
106
+ {
107
+ type: "changeQuota",
108
+ quotaIncrease: [{
109
+ token: RWA_ASSET,
110
+ balance: QUOTA_UP
111
+ }],
112
+ quotaDecrease: [],
113
+ desiredQuota: {}
114
+ }
115
+ ],
116
+ rwaAssets: { [UND]: RWA_ASSET }
117
+ };
118
+ /** 3x → 2x: sell position token, repay with the proceeds. */
119
+ const case_decrease = {
120
+ intent: {
121
+ type: "ADJUST_LEVERAGE",
122
+ targetLeverage: LEV_2X,
123
+ token: POS
124
+ },
125
+ tokens: [caToken(POS, TVL_3X, QUOTA_1500)],
126
+ accountDebt: DEBT_3X,
127
+ totalValue: TVL_2X,
128
+ accountDebtAfter: DEBT_2X,
129
+ ops: [
130
+ {
131
+ type: "swap",
132
+ from: [{
133
+ token: POS,
134
+ balance: STEP
135
+ }],
136
+ tokenOut: UND,
137
+ amountOut: STEP
138
+ },
139
+ {
140
+ type: "decreaseDebt",
141
+ amount: STEP
142
+ },
143
+ {
144
+ type: "changeQuota",
145
+ quotaIncrease: [],
146
+ quotaDecrease: [{
147
+ token: POS,
148
+ balance: QUOTA_DOWN
149
+ }],
150
+ desiredQuota: {}
151
+ }
152
+ ]
153
+ };
154
+ /** Idle underlying already covers the repayment, so no swap leg is built. */
155
+ const case_decrease_from_idle_underlying = {
156
+ intent: {
157
+ type: "ADJUST_LEVERAGE",
158
+ targetLeverage: LEV_2X,
159
+ token: POS
160
+ },
161
+ tokens: [caToken(POS, TVL_2X, QUOTA_1000), caToken(UND, STEP)],
162
+ accountDebt: DEBT_3X,
163
+ totalValue: TVL_2X,
164
+ accountDebtAfter: DEBT_2X,
165
+ ops: [{
166
+ type: "decreaseDebt",
167
+ amount: STEP
168
+ }]
169
+ };
170
+ /** RWA market: the asset is wrapped back into the underlying to repay. */
171
+ const case_decrease_rwa = {
172
+ intent: {
173
+ type: "ADJUST_LEVERAGE",
174
+ targetLeverage: LEV_2X,
175
+ token: RWA_ASSET
176
+ },
177
+ tokens: [caToken(RWA_ASSET, TVL_3X, QUOTA_1500)],
178
+ accountDebt: DEBT_3X,
179
+ totalValue: TVL_2X,
180
+ accountDebtAfter: DEBT_2X,
181
+ ops: [
182
+ {
183
+ type: "wrapRwaCollateral",
184
+ tokenIn: RWA_ASSET,
185
+ amount: STEP,
186
+ tokenOut: UND,
187
+ amountOut: STEP
188
+ },
189
+ {
190
+ type: "decreaseDebt",
191
+ amount: STEP
192
+ },
193
+ {
194
+ type: "changeQuota",
195
+ quotaIncrease: [],
196
+ quotaDecrease: [{
197
+ token: RWA_ASSET,
198
+ balance: QUOTA_DOWN
199
+ }],
200
+ desiredQuota: {}
201
+ }
202
+ ],
203
+ rwaAssets: { [UND]: RWA_ASSET }
204
+ };
205
+ /** Target equals the current leverage: nothing to do. */
206
+ const case_noop = {
207
+ intent: {
208
+ type: "ADJUST_LEVERAGE",
209
+ targetLeverage: LEV_2X,
210
+ token: POS
211
+ },
212
+ tokens: [caToken(POS, TVL_2X, QUOTA_1000)],
213
+ accountDebt: DEBT_2X,
214
+ totalValue: TVL_2X,
215
+ accountDebtAfter: DEBT_2X,
216
+ ops: []
217
+ };
218
+ function buildAdjustLeverageSdk(c) {
219
+ return buildMarketSdk({ rwaAssets: c.rwaAssets });
220
+ }
221
+ function buildAdjustLeverageProps(c, sdk) {
222
+ return {
223
+ intent: c.intent,
224
+ creditAccount: buildFixtureCreditAccount({
225
+ accountDebt: c.accountDebt,
226
+ tokens: c.tokens
227
+ }),
228
+ sdk,
229
+ quotaReserve: void 0,
230
+ slippage: void 0
231
+ };
232
+ }
233
+ //#endregion
234
+ export { DEBT_2X, DEBT_3X, LEV_2X, LEV_3X, QUOTA_1000, QUOTA_1500, QUOTA_DOWN, QUOTA_UP, STEP, TVL_2X, TVL_3X, buildAdjustLeverageProps, buildAdjustLeverageSdk, case_decrease, case_decrease_from_idle_underlying, case_decrease_rwa, case_increase, case_increase_rwa, case_increase_underlying, case_noop };