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

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 (436) 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 +137 -0
  9. package/dist/cjs/dev/comparePositions.js +183 -0
  10. package/dist/cjs/dev/fieldDiff.js +241 -0
  11. package/dist/cjs/model/charts.js +147 -0
  12. package/dist/cjs/model/charts.schema.js +240 -0
  13. package/dist/cjs/model/index.js +35 -22
  14. package/dist/cjs/model/liquidations.schema.js +1 -1
  15. package/dist/cjs/model/notices.schema.js +25 -0
  16. package/dist/cjs/model/opportunities.schema.js +1 -1
  17. package/dist/cjs/model/positions.schema.js +48 -2
  18. package/dist/cjs/new-sdk/AbstractNamespace.js +34 -4
  19. package/dist/cjs/new-sdk/GearboxSDK.js +72 -3
  20. package/dist/cjs/new-sdk/execute/ExecuteApi.js +95 -0
  21. package/dist/cjs/new-sdk/execute/index.js +3 -0
  22. package/dist/cjs/new-sdk/index.js +7 -0
  23. package/dist/cjs/new-sdk/opportunities/OpportunitiesNamespace.js +29 -6
  24. package/dist/cjs/new-sdk/positions/PositionsNamespace.js +3 -6
  25. package/dist/cjs/new-sdk/simulate/SimulateApi.js +361 -0
  26. package/dist/cjs/new-sdk/simulate/index.js +4 -0
  27. package/dist/cjs/new-sdk/utils/index.js +0 -1
  28. package/dist/cjs/offchain/AbstractOffchainNamespace.js +10 -7
  29. package/dist/cjs/offchain/GearboxAPI.js +7 -0
  30. package/dist/cjs/offchain/index.js +3 -0
  31. package/dist/cjs/offchain/notices/OffchainNotices.js +27 -0
  32. package/dist/cjs/offchain/notices/index.js +3 -0
  33. package/dist/cjs/offchain/opportunities/OffchainOpportunities.js +4 -8
  34. package/dist/cjs/offchain/positions/OffchainPositions.js +12 -12
  35. package/dist/cjs/preview/preview/CreditAccountState.js +14 -1
  36. package/dist/cjs/preview/preview/buildDelayedPreview.js +16 -6
  37. package/dist/cjs/preview/preview/previewAdjustCreditAccount.js +9 -2
  38. package/dist/cjs/preview/preview/previewOpenCreditAccount.js +11 -3
  39. package/dist/cjs/preview/preview/previewOperation.js +1 -1
  40. package/dist/cjs/sdk/MultichainSDK.js +3 -4
  41. package/dist/cjs/sdk/OnchainSDK.js +42 -13
  42. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +2 -8
  43. package/dist/cjs/sdk/accounts/credit-account-compressor/CreditAccountCompressor.js +2 -90
  44. package/dist/cjs/sdk/accounts/index.js +5 -2
  45. package/dist/cjs/sdk/accounts/intents/guards.js +114 -0
  46. package/dist/cjs/sdk/accounts/intents/index.js +216 -358
  47. package/dist/cjs/sdk/accounts/intents/math.js +56 -0
  48. package/dist/cjs/sdk/accounts/intents/open-strategy.js +133 -0
  49. package/dist/cjs/sdk/accounts/intents/operations.js +165 -0
  50. package/dist/cjs/sdk/accounts/intents/plan.js +373 -0
  51. package/dist/cjs/sdk/accounts/intents/realize.js +301 -0
  52. package/dist/cjs/sdk/accounts/intents/testing/delayed.js +50 -0
  53. package/dist/cjs/sdk/accounts/intents/testing/market.js +166 -0
  54. package/dist/cjs/sdk/accounts/intents/testing/sdk-mock.js +194 -35
  55. package/dist/cjs/sdk/accounts/intents/tests/add-collateral.fixtures.js +123 -0
  56. package/dist/cjs/sdk/accounts/intents/tests/adjust-leverage.fixtures.js +254 -0
  57. package/dist/cjs/sdk/accounts/intents/tests/deposit.fixtures.js +324 -0
  58. package/dist/cjs/sdk/accounts/intents/tests/finish-decrease-leverage.fixtures.js +242 -0
  59. package/dist/cjs/sdk/accounts/intents/tests/finish-withdraw.fixtures.js +383 -0
  60. package/dist/cjs/sdk/accounts/intents/tests/open-strategy.fixtures.js +133 -0
  61. package/dist/cjs/sdk/accounts/intents/tests/withdraw-asset.fixtures.js +131 -0
  62. package/dist/cjs/sdk/accounts/intents/tests/withdraw.fixtures.js +426 -0
  63. package/dist/cjs/sdk/accounts/intents/types.js +16 -0
  64. package/dist/cjs/sdk/accounts/intents/utils/adjust-state-to-snapshot.js +18 -0
  65. package/dist/cjs/sdk/accounts/intents/utils/credit-account-slice.js +45 -0
  66. package/dist/cjs/sdk/accounts/intents/utils/index.js +17 -8
  67. package/dist/cjs/sdk/accounts/intents/utils/ledger.js +94 -0
  68. package/dist/cjs/sdk/accounts/intents/utils/pick-token.js +72 -0
  69. package/dist/cjs/sdk/accounts/intents/utils/quotas-for-update.js +27 -0
  70. package/dist/cjs/sdk/accounts/intents/utils/router-path.js +86 -0
  71. package/dist/cjs/sdk/accounts/intents/view.js +38 -0
  72. package/dist/cjs/sdk/accounts/liquidations/LiquidationsService.js +0 -3
  73. package/dist/cjs/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.js +29 -18
  74. package/dist/cjs/sdk/base/BaseContract.js +1 -1
  75. package/dist/cjs/sdk/base/TokensMeta.js +78 -27
  76. package/dist/cjs/sdk/index.js +30 -7
  77. package/dist/cjs/sdk/market/MarketRegister.js +16 -7
  78. package/dist/cjs/sdk/market/ZapperRegister.js +56 -25
  79. package/dist/cjs/sdk/market/credit/CreditManagerV310Contract.js +1 -12
  80. package/dist/cjs/sdk/market/credit/CreditSuite.js +28 -9
  81. package/dist/cjs/sdk/market/credit/index.js +3 -0
  82. package/dist/cjs/sdk/market/credit/isStrategyCollateral.js +50 -0
  83. package/dist/cjs/sdk/market/index.js +17 -0
  84. package/dist/cjs/sdk/market/math.js +65 -45
  85. package/dist/cjs/sdk/market/oracle/PriceOracleBaseContract.js +10 -3
  86. package/dist/cjs/sdk/market/pool/PoolV310Contract.js +15 -1
  87. package/dist/cjs/sdk/market/rwa/RWARegistry.js +22 -0
  88. package/dist/cjs/sdk/opportunities/index.js +0 -13
  89. package/dist/cjs/sdk/options.js +1 -5
  90. package/dist/cjs/sdk/pools/PoolService.js +133 -4
  91. package/dist/cjs/sdk/pools/index.js +2 -0
  92. package/dist/cjs/sdk/positions/PositionsService.js +218 -1
  93. package/dist/cjs/sdk/positions/calcBorrowRate.js +43 -0
  94. package/dist/cjs/sdk/positions/calcHealthFactor.js +52 -0
  95. package/dist/cjs/sdk/positions/calcLiquidationPrice.js +23 -0
  96. package/dist/cjs/sdk/positions/calcLiquidationPriceForTarget.js +30 -0
  97. package/dist/cjs/sdk/positions/calcTimeToLiquidationMs.js +19 -0
  98. package/dist/cjs/sdk/positions/index.js +12 -1
  99. package/dist/cjs/sdk/positions/types.js +31 -0
  100. package/dist/cjs/sdk/utils/abi-decode.js +2 -2
  101. package/dist/cjs/sdk/utils/viem/executeMulticallBatches.js +32 -0
  102. package/dist/cjs/sdk/utils/viem/index.js +2 -0
  103. package/dist/esm/abi/iExpirable.js +14 -0
  104. package/dist/esm/common-utils/utils/apy/get-single-quota-borrow-rate.js +2 -0
  105. package/dist/esm/common-utils/utils/creditAccount/calc-health-factor.js +24 -22
  106. package/dist/esm/common-utils/utils/creditAccount/calc-quota-borrow-rate.js +2 -0
  107. package/dist/esm/common-utils/utils/creditAccount/get-time-to-liquidation.js +8 -5
  108. package/dist/esm/common-utils/utils/creditAccount/liquidation-price.js +21 -11
  109. package/dist/esm/dev/AccountOpener.js +0 -1
  110. package/dist/esm/dev/compareOpportunities.js +135 -0
  111. package/dist/esm/dev/comparePositions.js +181 -0
  112. package/dist/esm/dev/fieldDiff.js +224 -0
  113. package/dist/esm/model/charts.js +140 -0
  114. package/dist/esm/model/charts.schema.js +226 -0
  115. package/dist/esm/model/index.js +9 -7
  116. package/dist/esm/model/liquidations.schema.js +1 -1
  117. package/dist/esm/model/notices.schema.js +23 -0
  118. package/dist/esm/model/opportunities.schema.js +1 -1
  119. package/dist/esm/model/positions.schema.js +46 -4
  120. package/dist/esm/new-sdk/AbstractNamespace.js +34 -4
  121. package/dist/esm/new-sdk/GearboxSDK.js +72 -4
  122. package/dist/esm/new-sdk/execute/ExecuteApi.js +94 -0
  123. package/dist/esm/new-sdk/execute/index.js +2 -0
  124. package/dist/esm/new-sdk/index.js +6 -2
  125. package/dist/esm/new-sdk/opportunities/OpportunitiesNamespace.js +29 -6
  126. package/dist/esm/new-sdk/positions/PositionsNamespace.js +3 -6
  127. package/dist/esm/new-sdk/simulate/SimulateApi.js +360 -0
  128. package/dist/esm/new-sdk/simulate/index.js +3 -0
  129. package/dist/esm/new-sdk/utils/index.js +0 -1
  130. package/dist/esm/offchain/AbstractOffchainNamespace.js +10 -7
  131. package/dist/esm/offchain/GearboxAPI.js +7 -0
  132. package/dist/esm/offchain/index.js +3 -1
  133. package/dist/esm/offchain/notices/OffchainNotices.js +26 -0
  134. package/dist/esm/offchain/notices/index.js +2 -0
  135. package/dist/esm/offchain/opportunities/OffchainOpportunities.js +4 -8
  136. package/dist/esm/offchain/positions/OffchainPositions.js +12 -12
  137. package/dist/esm/preview/preview/CreditAccountState.js +14 -1
  138. package/dist/esm/preview/preview/buildDelayedPreview.js +16 -6
  139. package/dist/esm/preview/preview/previewAdjustCreditAccount.js +9 -2
  140. package/dist/esm/preview/preview/previewOpenCreditAccount.js +11 -3
  141. package/dist/esm/preview/preview/previewOperation.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 +2 -8
  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 +0 -3
  175. package/dist/esm/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.js +29 -18
  176. package/dist/esm/sdk/base/BaseContract.js +1 -1
  177. package/dist/esm/sdk/base/TokensMeta.js +78 -27
  178. package/dist/esm/sdk/index.js +13 -4
  179. package/dist/esm/sdk/market/MarketRegister.js +16 -7
  180. package/dist/esm/sdk/market/ZapperRegister.js +56 -25
  181. package/dist/esm/sdk/market/credit/CreditManagerV310Contract.js +2 -13
  182. package/dist/esm/sdk/market/credit/CreditSuite.js +29 -10
  183. package/dist/esm/sdk/market/credit/index.js +2 -1
  184. package/dist/esm/sdk/market/credit/isStrategyCollateral.js +48 -0
  185. package/dist/esm/sdk/market/index.js +3 -1
  186. package/dist/esm/sdk/market/math.js +60 -41
  187. package/dist/esm/sdk/market/oracle/PriceOracleBaseContract.js +10 -3
  188. package/dist/esm/sdk/market/pool/PoolV310Contract.js +16 -2
  189. package/dist/esm/sdk/market/rwa/RWARegistry.js +22 -0
  190. package/dist/esm/sdk/opportunities/index.js +1 -2
  191. package/dist/esm/sdk/options.js +1 -5
  192. package/dist/esm/sdk/pools/PoolService.js +133 -6
  193. package/dist/esm/sdk/pools/index.js +2 -2
  194. package/dist/esm/sdk/positions/PositionsService.js +218 -1
  195. package/dist/esm/sdk/positions/calcBorrowRate.js +42 -0
  196. package/dist/esm/sdk/positions/calcHealthFactor.js +51 -0
  197. package/dist/esm/sdk/positions/calcLiquidationPrice.js +22 -0
  198. package/dist/esm/sdk/positions/calcLiquidationPriceForTarget.js +29 -0
  199. package/dist/esm/sdk/positions/calcTimeToLiquidationMs.js +18 -0
  200. package/dist/esm/sdk/positions/index.js +7 -2
  201. package/dist/esm/sdk/positions/types.js +31 -1
  202. package/dist/esm/sdk/utils/abi-decode.js +2 -2
  203. package/dist/esm/sdk/utils/viem/executeMulticallBatches.js +31 -0
  204. package/dist/esm/sdk/utils/viem/index.js +2 -1
  205. package/dist/types/abi/iExpirable.d.ts +14 -0
  206. package/dist/types/common-utils/utils/apy/get-single-quota-borrow-rate.d.ts +2 -0
  207. package/dist/types/common-utils/utils/creditAccount/calc-health-factor.d.ts +3 -0
  208. package/dist/types/common-utils/utils/creditAccount/calc-quota-borrow-rate.d.ts +2 -0
  209. package/dist/types/common-utils/utils/creditAccount/get-time-to-liquidation.d.ts +6 -1
  210. package/dist/types/common-utils/utils/creditAccount/liquidation-price.d.ts +3 -0
  211. package/dist/types/dev/compareOpportunities.d.ts +105 -0
  212. package/dist/types/dev/comparePositions.d.ts +149 -0
  213. package/dist/types/dev/fieldDiff.d.ts +167 -0
  214. package/dist/types/model/charts.d.ts +349 -0
  215. package/dist/types/model/charts.schema.d.ts +364 -0
  216. package/dist/types/model/index.d.ts +8 -6
  217. package/dist/types/model/notices.d.ts +29 -0
  218. package/dist/types/model/notices.schema.d.ts +23 -0
  219. package/dist/types/model/opportunities.d.ts +9 -9
  220. package/dist/types/model/positions.d.ts +133 -7
  221. package/dist/types/model/positions.schema.d.ts +128 -1
  222. package/dist/types/new-sdk/AbstractNamespace.d.ts +15 -2
  223. package/dist/types/new-sdk/GearboxSDK.d.ts +14 -2
  224. package/dist/types/new-sdk/execute/ExecuteApi.d.ts +108 -0
  225. package/dist/types/new-sdk/execute/index.d.ts +2 -0
  226. package/dist/types/new-sdk/index.d.ts +8 -4
  227. package/dist/types/new-sdk/opportunities/OpportunitiesNamespace.d.ts +19 -7
  228. package/dist/types/new-sdk/opportunities/types.d.ts +30 -9
  229. package/dist/types/new-sdk/positions/PositionsNamespace.d.ts +4 -5
  230. package/dist/types/new-sdk/positions/types.d.ts +9 -9
  231. package/dist/types/new-sdk/simulate/SimulateApi.d.ts +90 -0
  232. package/dist/types/new-sdk/simulate/index.d.ts +3 -0
  233. package/dist/types/new-sdk/simulate/types.d.ts +508 -0
  234. package/dist/types/new-sdk/types.d.ts +35 -1
  235. package/dist/types/new-sdk/utils/index.d.ts +1 -2
  236. package/dist/types/offchain/AbstractOffchainNamespace.d.ts +5 -21
  237. package/dist/types/offchain/GearboxAPI.d.ts +6 -0
  238. package/dist/types/offchain/index.d.ts +4 -2
  239. package/dist/types/offchain/notices/OffchainNotices.d.ts +19 -0
  240. package/dist/types/offchain/notices/index.d.ts +2 -0
  241. package/dist/types/offchain/opportunities/OffchainOpportunities.d.ts +8 -4
  242. package/dist/types/offchain/positions/OffchainPositions.d.ts +8 -6
  243. package/dist/types/preview/preview/CreditAccountState.d.ts +6 -0
  244. package/dist/types/preview/preview/buildDelayedPreview.d.ts +5 -1
  245. package/dist/types/preview/preview/types.d.ts +4 -2
  246. package/dist/types/sdk/MultichainSDK.d.ts +0 -5
  247. package/dist/types/sdk/OnchainSDK.d.ts +1 -5
  248. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -7
  249. package/dist/types/sdk/accounts/credit-account-compressor/CreditAccountCompressor.d.ts +3 -12
  250. package/dist/types/sdk/accounts/credit-account-compressor/index.d.ts +2 -2
  251. package/dist/types/sdk/accounts/credit-account-compressor/types.d.ts +1 -19
  252. package/dist/types/sdk/accounts/index.d.ts +7 -5
  253. package/dist/types/sdk/accounts/intents/guards.d.ts +72 -0
  254. package/dist/types/sdk/accounts/intents/index.d.ts +130 -15
  255. package/dist/types/sdk/accounts/intents/math.d.ts +46 -0
  256. package/dist/types/sdk/accounts/intents/open-strategy.d.ts +64 -0
  257. package/dist/types/sdk/accounts/intents/operations.d.ts +215 -0
  258. package/dist/types/sdk/accounts/intents/plan.d.ts +189 -0
  259. package/dist/types/sdk/accounts/intents/realize.d.ts +35 -0
  260. package/dist/types/sdk/accounts/intents/testing/delayed.d.ts +50 -0
  261. package/dist/types/sdk/accounts/intents/testing/expect.d.ts +17 -21
  262. package/dist/types/sdk/accounts/intents/testing/market.d.ts +91 -0
  263. package/dist/types/sdk/accounts/intents/testing/sdk-mock.d.ts +64 -16
  264. package/dist/types/sdk/accounts/intents/tests/add-collateral.fixtures.d.ts +45 -0
  265. package/dist/types/sdk/accounts/intents/tests/adjust-leverage.fixtures.d.ts +56 -0
  266. package/dist/types/sdk/accounts/intents/tests/deposit.fixtures.d.ts +64 -0
  267. package/dist/types/sdk/accounts/intents/tests/finish-decrease-leverage.fixtures.d.ts +107 -0
  268. package/dist/types/sdk/accounts/intents/tests/finish-withdraw.fixtures.d.ts +136 -0
  269. package/dist/types/sdk/accounts/intents/tests/open-strategy.fixtures.d.ts +56 -0
  270. package/dist/types/sdk/accounts/intents/tests/withdraw-asset.fixtures.d.ts +60 -0
  271. package/dist/types/sdk/accounts/intents/tests/withdraw.fixtures.d.ts +79 -0
  272. package/dist/types/sdk/accounts/intents/types.d.ts +369 -43
  273. package/dist/types/sdk/accounts/intents/utils/adjust-state-to-snapshot.d.ts +13 -0
  274. package/dist/types/sdk/accounts/intents/utils/assemble-operation-calls.d.ts +1 -1
  275. package/dist/types/sdk/accounts/intents/utils/credit-account-slice.d.ts +29 -0
  276. package/dist/types/sdk/accounts/intents/utils/index.d.ts +7 -5
  277. package/dist/types/sdk/accounts/intents/utils/ledger.d.ts +41 -0
  278. package/dist/types/sdk/accounts/intents/utils/pick-token.d.ts +55 -0
  279. package/dist/types/sdk/accounts/intents/utils/quotas-for-update.d.ts +15 -4
  280. package/dist/types/sdk/accounts/intents/utils/router-path.d.ts +70 -0
  281. package/dist/types/sdk/accounts/intents/view.d.ts +15 -0
  282. package/dist/types/sdk/accounts/types.d.ts +17 -14
  283. package/dist/types/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.d.ts +6 -0
  284. package/dist/types/sdk/accounts/withdrawal-compressor/types.d.ts +18 -0
  285. package/dist/types/sdk/base/TokensMeta.d.ts +44 -1
  286. package/dist/types/sdk/base/index.d.ts +2 -2
  287. package/dist/types/sdk/base/token-types.d.ts +12 -1
  288. package/dist/types/sdk/index.d.ts +28 -19
  289. package/dist/types/sdk/market/MarketRegister.d.ts +7 -3
  290. package/dist/types/sdk/market/ZapperRegister.d.ts +20 -2
  291. package/dist/types/sdk/market/credit/CreditManagerV310Contract.d.ts +0 -4
  292. package/dist/types/sdk/market/credit/CreditSuite.d.ts +6 -3
  293. package/dist/types/sdk/market/credit/index.d.ts +2 -1
  294. package/dist/types/sdk/market/credit/isStrategyCollateral.d.ts +74 -0
  295. package/dist/types/sdk/market/credit/types.d.ts +2 -9
  296. package/dist/types/sdk/market/index.d.ts +4 -2
  297. package/dist/types/sdk/market/math.d.ts +46 -34
  298. package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +6 -2
  299. package/dist/types/sdk/market/oracle/types.d.ts +10 -2
  300. package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +5 -0
  301. package/dist/types/sdk/market/pool/types.d.ts +5 -0
  302. package/dist/types/sdk/market/rwa/RWARegistry.d.ts +13 -0
  303. package/dist/types/sdk/market/types.d.ts +5 -1
  304. package/dist/types/sdk/opportunities/index.d.ts +1 -2
  305. package/dist/types/sdk/options.d.ts +0 -1
  306. package/dist/types/sdk/pools/PoolService.d.ts +32 -2
  307. package/dist/types/sdk/pools/index.d.ts +3 -3
  308. package/dist/types/sdk/pools/types.d.ts +109 -4
  309. package/dist/types/sdk/positions/PositionsService.d.ts +33 -2
  310. package/dist/types/sdk/positions/calcBorrowRate.d.ts +40 -0
  311. package/dist/types/sdk/positions/calcHealthFactor.d.ts +55 -0
  312. package/dist/types/sdk/positions/calcLiquidationPrice.d.ts +12 -0
  313. package/dist/types/sdk/positions/calcLiquidationPriceForTarget.d.ts +43 -0
  314. package/dist/types/sdk/positions/calcTimeToLiquidationMs.d.ts +16 -0
  315. package/dist/types/sdk/positions/index.d.ts +7 -2
  316. package/dist/types/sdk/positions/types.d.ts +58 -1
  317. package/dist/types/sdk/types/state.d.ts +6 -0
  318. package/dist/types/sdk/utils/viem/executeMulticallBatches.d.ts +39 -0
  319. package/dist/types/sdk/utils/viem/index.d.ts +3 -2
  320. package/package.json +2 -1
  321. package/dist/cjs/model/history.js +0 -53
  322. package/dist/cjs/model/history.schema.js +0 -128
  323. package/dist/cjs/sdk/accounts/intents/intents/index.js +0 -14
  324. package/dist/cjs/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.fixtures.js +0 -121
  325. package/dist/cjs/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.js +0 -15
  326. package/dist/cjs/sdk/accounts/intents/intents/resume/close/close.fixtures.js +0 -108
  327. package/dist/cjs/sdk/accounts/intents/intents/resume/close/close.js +0 -51
  328. package/dist/cjs/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.fixtures.js +0 -130
  329. package/dist/cjs/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.js +0 -83
  330. package/dist/cjs/sdk/accounts/intents/intents/resume/deposit/deposit.fixtures.js +0 -117
  331. package/dist/cjs/sdk/accounts/intents/intents/resume/deposit/deposit.js +0 -15
  332. package/dist/cjs/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.fixtures.js +0 -95
  333. package/dist/cjs/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.js +0 -15
  334. package/dist/cjs/sdk/accounts/intents/intents/resume/index.js +0 -13
  335. package/dist/cjs/sdk/accounts/intents/intents/resume/withdraw/withdraw.fixtures.js +0 -138
  336. package/dist/cjs/sdk/accounts/intents/intents/resume/withdraw/withdraw.js +0 -161
  337. package/dist/cjs/sdk/accounts/intents/operations/add-collateral/index.js +0 -17
  338. package/dist/cjs/sdk/accounts/intents/operations/claim-delayed/index.js +0 -54
  339. package/dist/cjs/sdk/accounts/intents/operations/close-credit-account/index.js +0 -26
  340. package/dist/cjs/sdk/accounts/intents/operations/decrease-debt/index.js +0 -12
  341. package/dist/cjs/sdk/accounts/intents/operations/increase-debt/index.js +0 -12
  342. package/dist/cjs/sdk/accounts/intents/operations/index.js +0 -27
  343. package/dist/cjs/sdk/accounts/intents/operations/quota-update/index.js +0 -22
  344. package/dist/cjs/sdk/accounts/intents/operations/repay-credit-account/index.js +0 -22
  345. package/dist/cjs/sdk/accounts/intents/operations/start-delayed-withdrawal/index.js +0 -18
  346. package/dist/cjs/sdk/accounts/intents/operations/swap/index.js +0 -18
  347. package/dist/cjs/sdk/accounts/intents/operations/unwrap-rwa-collateral/index.js +0 -27
  348. package/dist/cjs/sdk/accounts/intents/operations/withdraw-collateral/index.js +0 -43
  349. package/dist/cjs/sdk/accounts/intents/operations/wrap-rwa-collateral/index.js +0 -27
  350. package/dist/cjs/sdk/accounts/intents/quoters/close.js +0 -58
  351. package/dist/cjs/sdk/accounts/intents/quoters/index.js +0 -7
  352. package/dist/cjs/sdk/accounts/intents/quoters/swap.js +0 -79
  353. package/dist/cjs/sdk/accounts/intents/testing/expect.js +0 -167
  354. package/dist/cjs/sdk/accounts/intents/testing/resume.js +0 -172
  355. package/dist/cjs/sdk/accounts/intents/utils/simulate-adjust-state.js +0 -39
  356. package/dist/cjs/sdk/accounts/intents/utils/simulate-assets.js +0 -69
  357. package/dist/cjs/sdk/accounts/intents/utils/with-quota-update.js +0 -13
  358. package/dist/esm/model/history.js +0 -49
  359. package/dist/esm/model/history.schema.js +0 -116
  360. package/dist/esm/sdk/accounts/intents/intents/index.js +0 -8
  361. package/dist/esm/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.fixtures.js +0 -107
  362. package/dist/esm/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.js +0 -14
  363. package/dist/esm/sdk/accounts/intents/intents/resume/close/close.fixtures.js +0 -94
  364. package/dist/esm/sdk/accounts/intents/intents/resume/close/close.js +0 -50
  365. package/dist/esm/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.fixtures.js +0 -114
  366. package/dist/esm/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.js +0 -82
  367. package/dist/esm/sdk/accounts/intents/intents/resume/deposit/deposit.fixtures.js +0 -110
  368. package/dist/esm/sdk/accounts/intents/intents/resume/deposit/deposit.js +0 -14
  369. package/dist/esm/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.fixtures.js +0 -88
  370. package/dist/esm/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.js +0 -14
  371. package/dist/esm/sdk/accounts/intents/intents/resume/index.js +0 -7
  372. package/dist/esm/sdk/accounts/intents/intents/resume/withdraw/withdraw.fixtures.js +0 -121
  373. package/dist/esm/sdk/accounts/intents/intents/resume/withdraw/withdraw.js +0 -160
  374. package/dist/esm/sdk/accounts/intents/operations/add-collateral/index.js +0 -16
  375. package/dist/esm/sdk/accounts/intents/operations/claim-delayed/index.js +0 -52
  376. package/dist/esm/sdk/accounts/intents/operations/close-credit-account/index.js +0 -25
  377. package/dist/esm/sdk/accounts/intents/operations/decrease-debt/index.js +0 -11
  378. package/dist/esm/sdk/accounts/intents/operations/increase-debt/index.js +0 -11
  379. package/dist/esm/sdk/accounts/intents/operations/index.js +0 -14
  380. package/dist/esm/sdk/accounts/intents/operations/quota-update/index.js +0 -21
  381. package/dist/esm/sdk/accounts/intents/operations/repay-credit-account/index.js +0 -21
  382. package/dist/esm/sdk/accounts/intents/operations/start-delayed-withdrawal/index.js +0 -17
  383. package/dist/esm/sdk/accounts/intents/operations/swap/index.js +0 -17
  384. package/dist/esm/sdk/accounts/intents/operations/unwrap-rwa-collateral/index.js +0 -26
  385. package/dist/esm/sdk/accounts/intents/operations/withdraw-collateral/index.js +0 -42
  386. package/dist/esm/sdk/accounts/intents/operations/wrap-rwa-collateral/index.js +0 -26
  387. package/dist/esm/sdk/accounts/intents/quoters/close.js +0 -56
  388. package/dist/esm/sdk/accounts/intents/quoters/index.js +0 -3
  389. package/dist/esm/sdk/accounts/intents/quoters/swap.js +0 -77
  390. package/dist/esm/sdk/accounts/intents/testing/expect.js +0 -162
  391. package/dist/esm/sdk/accounts/intents/testing/resume.js +0 -157
  392. package/dist/esm/sdk/accounts/intents/utils/simulate-adjust-state.js +0 -38
  393. package/dist/esm/sdk/accounts/intents/utils/simulate-assets.js +0 -68
  394. package/dist/esm/sdk/accounts/intents/utils/with-quota-update.js +0 -12
  395. package/dist/types/model/history.d.ts +0 -153
  396. package/dist/types/model/history.schema.d.ts +0 -95
  397. package/dist/types/new-sdk/utils/history.d.ts +0 -18
  398. package/dist/types/sdk/accounts/intents/intents/index.d.ts +0 -8
  399. package/dist/types/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.d.ts +0 -13
  400. package/dist/types/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.fixtures.d.ts +0 -38
  401. package/dist/types/sdk/accounts/intents/intents/resume/close/close.d.ts +0 -26
  402. package/dist/types/sdk/accounts/intents/intents/resume/close/close.fixtures.d.ts +0 -63
  403. package/dist/types/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.d.ts +0 -26
  404. package/dist/types/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.fixtures.d.ts +0 -86
  405. package/dist/types/sdk/accounts/intents/intents/resume/deposit/deposit.d.ts +0 -13
  406. package/dist/types/sdk/accounts/intents/intents/resume/deposit/deposit.fixtures.d.ts +0 -48
  407. package/dist/types/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.d.ts +0 -13
  408. package/dist/types/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.fixtures.d.ts +0 -46
  409. package/dist/types/sdk/accounts/intents/intents/resume/index.d.ts +0 -7
  410. package/dist/types/sdk/accounts/intents/intents/resume/withdraw/withdraw.d.ts +0 -33
  411. package/dist/types/sdk/accounts/intents/intents/resume/withdraw/withdraw.fixtures.d.ts +0 -68
  412. package/dist/types/sdk/accounts/intents/operations/add-collateral/index.d.ts +0 -23
  413. package/dist/types/sdk/accounts/intents/operations/claim-delayed/index.d.ts +0 -55
  414. package/dist/types/sdk/accounts/intents/operations/close-credit-account/index.d.ts +0 -22
  415. package/dist/types/sdk/accounts/intents/operations/decrease-debt/index.d.ts +0 -18
  416. package/dist/types/sdk/accounts/intents/operations/increase-debt/index.d.ts +0 -18
  417. package/dist/types/sdk/accounts/intents/operations/index.d.ts +0 -14
  418. package/dist/types/sdk/accounts/intents/operations/quota-update/index.d.ts +0 -24
  419. package/dist/types/sdk/accounts/intents/operations/repay-credit-account/index.d.ts +0 -31
  420. package/dist/types/sdk/accounts/intents/operations/start-delayed-withdrawal/index.d.ts +0 -23
  421. package/dist/types/sdk/accounts/intents/operations/swap/index.d.ts +0 -28
  422. package/dist/types/sdk/accounts/intents/operations/types.d.ts +0 -21
  423. package/dist/types/sdk/accounts/intents/operations/unwrap-rwa-collateral/index.d.ts +0 -30
  424. package/dist/types/sdk/accounts/intents/operations/withdraw-collateral/index.d.ts +0 -36
  425. package/dist/types/sdk/accounts/intents/operations/wrap-rwa-collateral/index.d.ts +0 -30
  426. package/dist/types/sdk/accounts/intents/quoters/close.d.ts +0 -43
  427. package/dist/types/sdk/accounts/intents/quoters/index.d.ts +0 -3
  428. package/dist/types/sdk/accounts/intents/quoters/swap.d.ts +0 -43
  429. package/dist/types/sdk/accounts/intents/testing/resume.d.ts +0 -84
  430. package/dist/types/sdk/accounts/intents/utils/simulate-adjust-state.d.ts +0 -19
  431. package/dist/types/sdk/accounts/intents/utils/simulate-assets.d.ts +0 -21
  432. package/dist/types/sdk/accounts/intents/utils/with-quota-update.d.ts +0 -16
  433. /package/dist/cjs/{new-sdk/utils/history.js → model/notices.js} +0 -0
  434. /package/dist/cjs/{sdk/accounts/intents/operations → new-sdk/simulate}/types.js +0 -0
  435. /package/dist/esm/{new-sdk/utils/history.js → model/notices.js} +0 -0
  436. /package/dist/esm/{sdk/accounts/intents/operations → new-sdk/simulate}/types.js +0 -0
@@ -0,0 +1,402 @@
1
+ import { POS, POS2, RWA_ASSET, UND, WALLET, buildFixtureCreditAccount, buildMarketSdk, caToken } from "../testing/market.js";
2
+ //#region src/sdk/accounts/intents/tests/withdraw.fixtures.ts
3
+ /**
4
+ * Start withdraw fixtures (intent 2.1) — one per row of the S/T matrix.
5
+ *
6
+ * Every case starts from 2000 UND of TVL against 1000 UND of debt: 1000 UND of
7
+ * collateral at 2x. Withdrawing 100 UND of value therefore repays 100 of debt
8
+ * (`dD = D0 * W / C0`), so 200 UND of value must be liquidated in total and the
9
+ * account settles at 1800 TVL / 900 debt — still 2x.
10
+ *
11
+ * `POS` and `POS2` both convert 1:1 with `UND`, keeping swap amounts honest
12
+ * against the mock router, which echoes its input amount.
13
+ */
14
+ const LT = 9200n;
15
+ const quotaOf = (balance) => balance * LT / 10000n;
16
+ /** 100 UND of value leaving the account. */
17
+ const W = 10000000000n;
18
+ /** Payout plus proportional repayment. */
19
+ const SPEND = 2n * W;
20
+ const TVL_BEFORE = 200000000000n;
21
+ const DEBT_BEFORE = 100000000000n;
22
+ const TVL_AFTER = TVL_BEFORE - SPEND;
23
+ const DEBT_AFTER = DEBT_BEFORE - W;
24
+ const QUOTA_BEFORE = quotaOf(TVL_BEFORE);
25
+ const QUOTA_AFTER = quotaOf(TVL_AFTER);
26
+ /** Quota ops carry signed deltas. */
27
+ const QUOTA_DELTA = QUOTA_AFTER - QUOTA_BEFORE;
28
+ const base = {
29
+ accountDebt: DEBT_BEFORE,
30
+ totalValue: TVL_AFTER,
31
+ accountDebtAfter: DEBT_AFTER
32
+ };
33
+ /** Row 1 — S = U, T = U: repay, then hand over the underlying. */
34
+ const case_und_und = {
35
+ ...base,
36
+ intent: {
37
+ type: "WITHDRAW",
38
+ amount: W,
39
+ to: WALLET
40
+ },
41
+ tokens: [caToken(UND, TVL_BEFORE)],
42
+ ops: [{
43
+ type: "decreaseDebt",
44
+ amount: W
45
+ }, {
46
+ type: "withdrawCollateral",
47
+ token: UND,
48
+ amount: W,
49
+ to: WALLET
50
+ }]
51
+ };
52
+ /** Row 2 — S = U, T = POS: repay, then route the payout out of the underlying. */
53
+ const case_und_pos = {
54
+ ...base,
55
+ intent: {
56
+ type: "WITHDRAW",
57
+ amount: W,
58
+ to: WALLET,
59
+ tokenOut: POS
60
+ },
61
+ tokens: [caToken(UND, TVL_BEFORE)],
62
+ ops: [
63
+ {
64
+ type: "decreaseDebt",
65
+ amount: W
66
+ },
67
+ {
68
+ type: "swap",
69
+ from: [{
70
+ token: UND,
71
+ balance: W
72
+ }],
73
+ tokenOut: POS,
74
+ amountOut: W
75
+ },
76
+ {
77
+ type: "withdrawCollateral",
78
+ token: POS,
79
+ amount: W,
80
+ to: WALLET
81
+ }
82
+ ]
83
+ };
84
+ /** Row 3 — S = POS, T = U: both legs land in the underlying, so one swap covers them. */
85
+ const case_pos_und = {
86
+ ...base,
87
+ intent: {
88
+ type: "WITHDRAW",
89
+ amount: W,
90
+ to: WALLET,
91
+ sourceToken: POS
92
+ },
93
+ tokens: [caToken(POS, TVL_BEFORE, QUOTA_BEFORE)],
94
+ ops: [
95
+ {
96
+ type: "swap",
97
+ from: [{
98
+ token: POS,
99
+ balance: SPEND
100
+ }],
101
+ tokenOut: UND,
102
+ amountOut: SPEND
103
+ },
104
+ {
105
+ type: "decreaseDebt",
106
+ amount: W
107
+ },
108
+ {
109
+ type: "withdrawCollateral",
110
+ token: UND,
111
+ amount: W,
112
+ to: WALLET
113
+ },
114
+ {
115
+ type: "changeQuota",
116
+ quotaIncrease: [],
117
+ quotaDecrease: [{
118
+ token: POS,
119
+ balance: QUOTA_DELTA
120
+ }],
121
+ desiredQuota: {}
122
+ }
123
+ ]
124
+ };
125
+ /** Row 4 — S = T = POS: only the repayment needs routing. */
126
+ const case_pos_pos = {
127
+ ...base,
128
+ intent: {
129
+ type: "WITHDRAW",
130
+ amount: W,
131
+ to: WALLET,
132
+ sourceToken: POS,
133
+ tokenOut: POS
134
+ },
135
+ tokens: [caToken(POS, TVL_BEFORE, QUOTA_BEFORE)],
136
+ ops: [
137
+ {
138
+ type: "swap",
139
+ from: [{
140
+ token: POS,
141
+ balance: W
142
+ }],
143
+ tokenOut: UND,
144
+ amountOut: W
145
+ },
146
+ {
147
+ type: "decreaseDebt",
148
+ amount: W
149
+ },
150
+ {
151
+ type: "withdrawCollateral",
152
+ token: POS,
153
+ amount: W,
154
+ to: WALLET
155
+ },
156
+ {
157
+ type: "changeQuota",
158
+ quotaIncrease: [],
159
+ quotaDecrease: [{
160
+ token: POS,
161
+ balance: QUOTA_DELTA
162
+ }],
163
+ desiredQuota: {}
164
+ }
165
+ ]
166
+ };
167
+ /** Row 5 — S = POS, T = POS2: two independent legs out of the same source. */
168
+ const case_pos_pos2 = {
169
+ ...base,
170
+ intent: {
171
+ type: "WITHDRAW",
172
+ amount: W,
173
+ to: WALLET,
174
+ sourceToken: POS,
175
+ tokenOut: POS2
176
+ },
177
+ tokens: [caToken(POS, TVL_BEFORE, QUOTA_BEFORE)],
178
+ ops: [
179
+ {
180
+ type: "swap",
181
+ from: [{
182
+ token: POS,
183
+ balance: W
184
+ }],
185
+ tokenOut: UND,
186
+ amountOut: W
187
+ },
188
+ {
189
+ type: "decreaseDebt",
190
+ amount: W
191
+ },
192
+ {
193
+ type: "swap",
194
+ from: [{
195
+ token: POS,
196
+ balance: W
197
+ }],
198
+ tokenOut: POS2,
199
+ amountOut: W
200
+ },
201
+ {
202
+ type: "withdrawCollateral",
203
+ token: POS2,
204
+ amount: W,
205
+ to: WALLET
206
+ },
207
+ {
208
+ type: "changeQuota",
209
+ quotaIncrease: [],
210
+ quotaDecrease: [{
211
+ token: POS,
212
+ balance: QUOTA_DELTA
213
+ }],
214
+ desiredQuota: {}
215
+ }
216
+ ]
217
+ };
218
+ /** RWA market: the underlying payout is force-unwrapped to the asset. */
219
+ const case_rwa_payout = {
220
+ ...base,
221
+ intent: {
222
+ type: "WITHDRAW",
223
+ amount: W,
224
+ to: WALLET,
225
+ sourceToken: POS
226
+ },
227
+ tokens: [caToken(POS, TVL_BEFORE, QUOTA_BEFORE)],
228
+ ops: [
229
+ {
230
+ type: "swap",
231
+ from: [{
232
+ token: POS,
233
+ balance: SPEND
234
+ }],
235
+ tokenOut: UND,
236
+ amountOut: SPEND
237
+ },
238
+ {
239
+ type: "decreaseDebt",
240
+ amount: W
241
+ },
242
+ {
243
+ type: "unwrapRwaCollateral",
244
+ tokenIn: UND,
245
+ amount: W,
246
+ tokenOut: RWA_ASSET,
247
+ amountOut: W
248
+ },
249
+ {
250
+ type: "withdrawCollateral",
251
+ token: RWA_ASSET,
252
+ amount: W,
253
+ to: WALLET
254
+ },
255
+ {
256
+ type: "changeQuota",
257
+ quotaIncrease: [],
258
+ quotaDecrease: [{
259
+ token: POS,
260
+ balance: QUOTA_DELTA
261
+ }],
262
+ desiredQuota: {}
263
+ }
264
+ ],
265
+ rwaAssets: { [UND]: RWA_ASSET }
266
+ };
267
+ /** Matrix baseline: 10A of position against 8U of debt (2U collateral at 5x). */
268
+ const M4_BALANCE = 1000000000n;
269
+ const M4_DEBT = 800000000n;
270
+ /** Matrix payout W: 1U. */
271
+ const M4_W = 100000000n;
272
+ /** Proportional repayment `dD = D0 * W / C0` = 4U. */
273
+ const M4_DD = 400000000n;
274
+ /** Payout plus repayment: 5U liquidated in total. */
275
+ const M4_SPEND = 500000000n;
276
+ /**
277
+ * Matrix 4.1 — withdraw 1U, source `POS`, payout `UND`.
278
+ *
279
+ * MATRIX MISMATCH: the matrix pays out first — `swap → withdrawCollateral →
280
+ * decreaseDebt → changeQuota`. The engine repays before paying out
281
+ * (`repay(dD, keep: W)` precedes the payout leg in `planWithdraw`):
282
+ * `swap → decreaseDebt → withdrawCollateral → changeQuota`. Amounts are
283
+ * identical; only the order differs.
284
+ */
285
+ const case_matrix_4_1 = {
286
+ intent: {
287
+ type: "WITHDRAW",
288
+ amount: M4_W,
289
+ to: WALLET,
290
+ sourceToken: POS
291
+ },
292
+ tokens: [caToken(POS, M4_BALANCE, quotaOf(M4_BALANCE))],
293
+ accountDebt: M4_DEBT,
294
+ totalValue: M4_SPEND,
295
+ accountDebtAfter: M4_DD,
296
+ ops: [
297
+ {
298
+ type: "swap",
299
+ from: [{
300
+ token: POS,
301
+ balance: M4_SPEND
302
+ }],
303
+ tokenOut: UND,
304
+ amountOut: M4_SPEND
305
+ },
306
+ {
307
+ type: "decreaseDebt",
308
+ amount: M4_DD
309
+ },
310
+ {
311
+ type: "withdrawCollateral",
312
+ token: UND,
313
+ amount: M4_W,
314
+ to: WALLET
315
+ },
316
+ {
317
+ type: "changeQuota",
318
+ quotaIncrease: [],
319
+ quotaDecrease: [{
320
+ token: POS,
321
+ balance: quotaOf(M4_SPEND) - quotaOf(M4_BALANCE)
322
+ }],
323
+ desiredQuota: {}
324
+ }
325
+ ]
326
+ };
327
+ /**
328
+ * Matrix 4.2 — 4.1 on the RWA market: the payout is unwrapped on the way out.
329
+ *
330
+ * MATRIX MISMATCH: same ordering divergence as 4.1 — the matrix expects
331
+ * `swap → unwrapRwaCollateral → withdrawCollateral(RWA) → decreaseDebt →
332
+ * changeQuota`, the engine repays first:
333
+ * `swap → decreaseDebt → unwrapRwaCollateral → withdrawCollateral(RWA) →
334
+ * changeQuota`.
335
+ */
336
+ const case_matrix_4_2 = {
337
+ intent: {
338
+ type: "WITHDRAW",
339
+ amount: M4_W,
340
+ to: WALLET,
341
+ sourceToken: POS
342
+ },
343
+ tokens: [caToken(POS, M4_BALANCE, quotaOf(M4_BALANCE))],
344
+ accountDebt: M4_DEBT,
345
+ totalValue: M4_SPEND,
346
+ accountDebtAfter: M4_DD,
347
+ ops: [
348
+ {
349
+ type: "swap",
350
+ from: [{
351
+ token: POS,
352
+ balance: M4_SPEND
353
+ }],
354
+ tokenOut: UND,
355
+ amountOut: M4_SPEND
356
+ },
357
+ {
358
+ type: "decreaseDebt",
359
+ amount: M4_DD
360
+ },
361
+ {
362
+ type: "unwrapRwaCollateral",
363
+ tokenIn: UND,
364
+ amount: M4_W,
365
+ tokenOut: RWA_ASSET,
366
+ amountOut: M4_W
367
+ },
368
+ {
369
+ type: "withdrawCollateral",
370
+ token: RWA_ASSET,
371
+ amount: M4_W,
372
+ to: WALLET
373
+ },
374
+ {
375
+ type: "changeQuota",
376
+ quotaIncrease: [],
377
+ quotaDecrease: [{
378
+ token: POS,
379
+ balance: quotaOf(M4_SPEND) - quotaOf(M4_BALANCE)
380
+ }],
381
+ desiredQuota: {}
382
+ }
383
+ ],
384
+ rwaAssets: { [UND]: RWA_ASSET }
385
+ };
386
+ function buildWithdrawSdk(c) {
387
+ return buildMarketSdk({ rwaAssets: c.rwaAssets });
388
+ }
389
+ function buildWithdrawProps(c, sdk) {
390
+ return {
391
+ intent: c.intent,
392
+ creditAccount: buildFixtureCreditAccount({
393
+ accountDebt: c.accountDebt,
394
+ tokens: c.tokens
395
+ }),
396
+ sdk,
397
+ quotaReserve: void 0,
398
+ slippage: void 0
399
+ };
400
+ }
401
+ //#endregion
402
+ export { DEBT_AFTER, DEBT_BEFORE, M4_BALANCE, M4_DD, M4_DEBT, M4_SPEND, M4_W, QUOTA_AFTER, QUOTA_BEFORE, QUOTA_DELTA, SPEND, TVL_AFTER, TVL_BEFORE, W, buildWithdrawProps, buildWithdrawSdk, case_matrix_4_1, case_matrix_4_2, case_pos_pos, case_pos_pos2, case_pos_und, case_rwa_payout, case_und_pos, case_und_und };
@@ -1 +1,16 @@
1
- export {};
1
+ //#region src/sdk/accounts/intents/types.ts
2
+ /**
3
+ * Validation failure that maps onto {@link PreviewErrorReason} rather than
4
+ * crashing the caller: thrown by builders, converted to `{ ok: false }` by
5
+ * `CreditAccountOperationsService.startIntent`.
6
+ */
7
+ var IntentPreviewError = class extends Error {
8
+ reason;
9
+ constructor(reason, message) {
10
+ super(message ?? reason);
11
+ this.name = "IntentPreviewError";
12
+ this.reason = reason;
13
+ }
14
+ };
15
+ //#endregion
16
+ export { IntentPreviewError };
@@ -0,0 +1,17 @@
1
+ //#region src/sdk/accounts/intents/utils/adjust-state-to-snapshot.ts
2
+ /**
3
+ * Maps an intents {@link OperationState} onto the {@link AccountSnapshot} that
4
+ * position-metric functions take. `accountDebt` is treated as total debt
5
+ * (principal plus accrued interest and fees).
6
+ **/
7
+ function adjustStateToSnapshot(creditManager, state) {
8
+ return {
9
+ creditManager,
10
+ assets: state.assets,
11
+ quotas: Object.values(state.quotas),
12
+ totalDebt: state.accountDebt,
13
+ totalValue: state.totalValue
14
+ };
15
+ }
16
+ //#endregion
17
+ export { adjustStateToSnapshot };
@@ -0,0 +1,43 @@
1
+ import { calcBorrowedAmountPlusInterestAndFees } from "./borrowed-amount-plus-interest-and-fees.js";
2
+ //#region src/sdk/accounts/intents/utils/credit-account-slice.ts
3
+ /**
4
+ * Narrows full account data down to the slice the intent engine operates on.
5
+ *
6
+ * `accountDebt` is the total repayable debt (principal + accrued interest +
7
+ * accrued fees) rather than the principal, because every debt-touching intent
8
+ * settles the full outstanding amount.
9
+ *
10
+ * Addresses are lowercased so that `eq` comparisons and `AddressMap` lookups
11
+ * behave consistently everywhere downstream.
12
+ */
13
+ function toCreditAccountSlice(ca) {
14
+ return {
15
+ creditAccount: ca.creditAccount.toLowerCase(),
16
+ creditManager: ca.creditManager.toLowerCase(),
17
+ creditFacade: ca.creditFacade.toLowerCase(),
18
+ underlying: ca.underlying.toLowerCase(),
19
+ enabledTokensMask: ca.enabledTokensMask,
20
+ totalDebtUSD: ca.totalDebtUSD,
21
+ accountDebt: calcBorrowedAmountPlusInterestAndFees(ca),
22
+ tokens: ca.tokens.map((t) => ({
23
+ ...t,
24
+ token: t.token.toLowerCase()
25
+ }))
26
+ };
27
+ }
28
+ /**
29
+ * Reads an account by address and narrows it to {@link CreditAccountSlice}.
30
+ *
31
+ * The shared read model's `StrategyPosition` carries neither `tokens` nor
32
+ * `enabledTokensMask` / `creditFacade` / `totalDebtUSD`, so simulating against
33
+ * an existing position costs one account read.
34
+ *
35
+ * @throws When the account is not found in the connected markets.
36
+ */
37
+ async function fetchCreditAccountSlice(sdk, creditAccount) {
38
+ const data = await sdk.accounts.getCreditAccountData(creditAccount);
39
+ if (!data) throw new Error(`credit account not found: ${creditAccount}`);
40
+ return toCreditAccountSlice(data);
41
+ }
42
+ //#endregion
43
+ export { fetchCreditAccountSlice, toCreditAccountSlice };
@@ -1,9 +1,11 @@
1
- import { assembleOperationCalls } from "./assemble-operation-calls.js";
2
- import { calcBorrowedAmountPlusInterestAndFees } from "./borrowed-amount-plus-interest-and-fees.js";
3
1
  import { eq, toRouterCaSlice, toTargetDecimals } from "./common.js";
4
2
  import { convertAmount } from "./convert-amount.js";
5
- import { getQuotasForUpdate } from "./quotas-for-update.js";
6
- import { simulateOperationAssets } from "./simulate-assets.js";
7
- import { simulateState } from "./simulate-adjust-state.js";
8
- import { getOperationsWithQuotaUpdate } from "./with-quota-update.js";
9
- export { assembleOperationCalls, calcBorrowedAmountPlusInterestAndFees, convertAmount, eq, getOperationsWithQuotaUpdate, getQuotasForUpdate, simulateOperationAssets, simulateState, toRouterCaSlice, toTargetDecimals };
3
+ import { isPhantomToken, isRedemptionPhantomToken, pickFattestNonPhantomToken, rankAccountTokens } from "./pick-token.js";
4
+ import { adjustStateToSnapshot } from "./adjust-state-to-snapshot.js";
5
+ import { assembleOperationCalls } from "./assemble-operation-calls.js";
6
+ import { calcBorrowedAmountPlusInterestAndFees } from "./borrowed-amount-plus-interest-and-fees.js";
7
+ import { fetchCreditAccountSlice, toCreditAccountSlice } from "./credit-account-slice.js";
8
+ import { OperationLedger } from "./ledger.js";
9
+ import { clearedQuotas, getQuotasForUpdate } from "./quotas-for-update.js";
10
+ import { createRouterPaths } from "./router-path.js";
11
+ export { OperationLedger, adjustStateToSnapshot, assembleOperationCalls, calcBorrowedAmountPlusInterestAndFees, clearedQuotas, convertAmount, createRouterPaths, eq, fetchCreditAccountSlice, getQuotasForUpdate, isPhantomToken, isRedemptionPhantomToken, pickFattestNonPhantomToken, rankAccountTokens, toCreditAccountSlice, toRouterCaSlice, toTargetDecimals };
@@ -0,0 +1,93 @@
1
+ import { BigIntMath } from "../../../utils/bigint-math.js";
2
+ //#region src/sdk/accounts/intents/utils/ledger.ts
3
+ /**
4
+ * Running account state, advanced one operation at a time.
5
+ *
6
+ * Exists because the amounts an operation is built from depend on the balances
7
+ * the previous ones left behind: a swap has to know how much of its input token
8
+ * is genuinely swap input, so the router does not sweep collateral that must
9
+ * stay put. Applying each op as it is built keeps that a single forward pass —
10
+ * a builder that re-simulated the chain from the start for every leg would be
11
+ * quadratic in the number of legs and easy to desynchronise.
12
+ */
13
+ var OperationLedger = class {
14
+ #balances = /* @__PURE__ */ new Map();
15
+ #underlying;
16
+ #convert;
17
+ #debt;
18
+ constructor(args) {
19
+ this.#underlying = args.underlying;
20
+ this.#convert = args.convert;
21
+ this.#debt = args.debt;
22
+ for (const asset of args.initialAssets) {
23
+ const token = asset.token.toLowerCase();
24
+ this.#balances.set(token, (this.#balances.get(token) ?? 0n) + asset.balance);
25
+ }
26
+ }
27
+ get debt() {
28
+ return this.#debt;
29
+ }
30
+ balanceOf(token) {
31
+ return this.#balances.get(token.toLowerCase()) ?? 0n;
32
+ }
33
+ applyAll(operations) {
34
+ for (const op of operations) this.apply(op);
35
+ return this;
36
+ }
37
+ snapshot() {
38
+ const assets = [...this.#balances.entries()].map(([token, balance]) => ({
39
+ token,
40
+ balance
41
+ }));
42
+ return {
43
+ assets,
44
+ totalValue: assets.reduce((acc, a) => acc + this.#convert(a.token, this.#underlying, a.balance), 0n),
45
+ debt: this.#debt
46
+ };
47
+ }
48
+ /** Advances the state by one operation; quota changes move no balance. */
49
+ apply(op) {
50
+ switch (op.type) {
51
+ case "changeQuota": break;
52
+ case "increaseDebt":
53
+ this.#debt += op.amount;
54
+ this.#add(this.#underlying, op.amount);
55
+ break;
56
+ case "decreaseDebt":
57
+ this.#debt = BigIntMath.max(0n, this.#debt - op.amount);
58
+ this.#add(this.#underlying, -op.amount);
59
+ break;
60
+ case "addCollateral":
61
+ this.#add(op.token, op.amount);
62
+ break;
63
+ case "withdrawCollateral":
64
+ this.#add(op.token, -op.amount);
65
+ break;
66
+ case "swap":
67
+ for (const input of op.from) this.#add(input.token, -input.balance);
68
+ this.#add(op.tokenOut, op.amountOut);
69
+ break;
70
+ case "wrapRwaCollateral":
71
+ case "unwrapRwaCollateral":
72
+ this.#add(op.tokenIn, -op.amount);
73
+ this.#add(op.tokenOut, op.amountOut);
74
+ break;
75
+ case "startDelayedWithdrawal":
76
+ this.#add(op.token, -op.amountIn);
77
+ for (const out of op.outputs) this.#add(out.token, out.amount);
78
+ break;
79
+ case "claimDelayedWithdrawal":
80
+ this.#add(op.withdrawalPhantomToken, -op.withdrawalTokenSpent);
81
+ for (const out of op.outputs) this.#add(out.token, out.amount);
82
+ }
83
+ return this;
84
+ }
85
+ #add(token, delta) {
86
+ const key = token.toLowerCase();
87
+ const balance = (this.#balances.get(key) ?? 0n) + delta;
88
+ if (balance <= 0n) this.#balances.delete(key);
89
+ else this.#balances.set(key, balance);
90
+ }
91
+ };
92
+ //#endregion
93
+ export { OperationLedger };
@@ -0,0 +1,68 @@
1
+ import { NON_STRATEGY_PHANTOM_TOKEN_TYPES } from "../../../market/credit/isStrategyCollateral.js";
2
+ import { eq } from "./common.js";
3
+ import { convertAmount } from "./convert-amount.js";
4
+ //#region src/sdk/accounts/intents/utils/pick-token.ts
5
+ /** Prefix marking every phantom-token contract type in the registry. */
6
+ const PHANTOM_TOKEN_PREFIX = "PHANTOM_TOKEN::";
7
+ /**
8
+ * Whether `token` is a phantom (a non-transferable position marker such as a
9
+ * pending delayed withdrawal).
10
+ *
11
+ * Reads `contractType` directly instead of going through
12
+ * `TokensMeta.isPhantomToken`, which throws when extended token data has not
13
+ * been loaded. Here an unknown token is simply treated as non-phantom.
14
+ */
15
+ function isPhantomToken(sdk, token) {
16
+ return !!sdk.tokensMeta.get(token)?.contractType?.startsWith(PHANTOM_TOKEN_PREFIX);
17
+ }
18
+ const REDEMPTION_PHANTOM_TOKEN_TYPES = new Set(NON_STRATEGY_PHANTOM_TOKEN_TYPES);
19
+ /**
20
+ * Whether `token` is the phantom of a redemption in flight, rather than one of
21
+ * the phantoms a position is simply held in (Convex, Infrared, staking
22
+ * rewards), which the router sells like any other balance.
23
+ *
24
+ * Only the former stands between an account and being emptied: it cannot be
25
+ * sold and it cannot leave until its claim has landed.
26
+ */
27
+ function isRedemptionPhantomToken(sdk, token) {
28
+ const contractType = sdk.tokensMeta.get(token)?.contractType;
29
+ return !!contractType && REDEMPTION_PHANTOM_TOKEN_TYPES.has(contractType);
30
+ }
31
+ /**
32
+ * Account balances that can actually back an operation, richest first.
33
+ *
34
+ * Phantoms are dropped because a pending delayed withdrawal cannot be spent:
35
+ * it has to be claimed first, in a transaction of its own.
36
+ */
37
+ function rankAccountTokens(args) {
38
+ const { creditAccount, sdk, exclude = [] } = args;
39
+ const convert = convertAmount(sdk, creditAccount.creditManager);
40
+ const candidates = [];
41
+ for (const t of creditAccount.tokens) {
42
+ if (t.balance <= 0n) continue;
43
+ if (exclude.some((e) => eq(e, t.token))) continue;
44
+ if (isPhantomToken(sdk, t.token)) continue;
45
+ candidates.push({
46
+ token: t.token,
47
+ balance: t.balance,
48
+ valueInUnderlying: convert(t.token, creditAccount.underlying, t.balance)
49
+ });
50
+ }
51
+ candidates.sort((a, b) => {
52
+ if (a.valueInUnderlying !== b.valueInUnderlying) return a.valueInUnderlying > b.valueInUnderlying ? -1 : 1;
53
+ return a.token < b.token ? -1 : a.token > b.token ? 1 : 0;
54
+ });
55
+ return candidates;
56
+ }
57
+ /**
58
+ * Default working token for flows that do not get one from the caller: the
59
+ * most valuable non-phantom balance on the account.
60
+ *
61
+ * Used for the source of a partial withdraw and the position leg of a leverage
62
+ * adjustment, both of which the caller may override explicitly.
63
+ */
64
+ function pickFattestNonPhantomToken(args) {
65
+ return rankAccountTokens(args)[0];
66
+ }
67
+ //#endregion
68
+ export { isPhantomToken, isRedemptionPhantomToken, pickFattestNonPhantomToken, rankAccountTokens };
@@ -1,4 +1,5 @@
1
1
  import { TypedObjectUtils } from "../../../utils/mappers.js";
2
+ import { MIN_INT96 } from "../../../constants/math.js";
2
3
  import { calcQuotaUpdate } from "../../../../common-utils/utils/creditAccount/quota-utils.js";
3
4
  //#region src/sdk/accounts/intents/utils/quotas-for-update.ts
4
5
  function getQuotasForUpdate({ assetsBefore, assetsAfter, initialQuotas, quotaReserve = 0, liquidationThresholds: liquidationThresholdsMap, quotas: quotasMap, maxDebt, underlyingToken, convert }) {
@@ -51,6 +52,31 @@ function getQuotasForUpdate({ assetsBefore, assetsAfter, initialQuotas, quotaRes
51
52
  });
52
53
  return filterQuotaUpdates(quotaResult.desiredQuota, quotaResult.quotaIncrease, quotaResult.quotaDecrease, [...new Set([...spend, ...obtain].map((q) => q.token)).values()]);
53
54
  }
55
+ /**
56
+ * The update that leaves the account holding no quota at all.
57
+ *
58
+ * Sits beside {@link getQuotasForUpdate} rather than inside it because the two
59
+ * answer different questions: that one sizes quotas to the balances an
60
+ * operation leaves behind, this one is asked for by a plan that ends the loan,
61
+ * where the right size is none whatever the balances are.
62
+ *
63
+ * `MIN_INT96` is the protocol's "reset" sentinel, which is how a decrease says
64
+ * "all of it" instead of naming an amount that interest may have moved.
65
+ */
66
+ function clearedQuotas(initialQuotas) {
67
+ const quoted = initialQuotas.filter((q) => q.quota > 0n).map((q) => q.token.toLowerCase());
68
+ return {
69
+ desiredQuota: TypedObjectUtils.fromEntries(quoted.map((token) => [token, {
70
+ token,
71
+ balance: 0n
72
+ }])),
73
+ quotaIncrease: [],
74
+ quotaDecrease: quoted.map((token) => ({
75
+ token,
76
+ balance: MIN_INT96
77
+ }))
78
+ };
79
+ }
54
80
  function collectQuotaChange(assetsBefore, assetsAfter) {
55
81
  const before = new Map(assetsBefore.map((a) => [a.token, a.balance]));
56
82
  const after = new Map(assetsAfter.map((a) => [a.token, a.balance]));
@@ -118,4 +144,4 @@ function constructAssetRecord(a) {
118
144
  }, {});
119
145
  }
120
146
  //#endregion
121
- export { getQuotasForUpdate };
147
+ export { clearedQuotas, getQuotasForUpdate };