@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
@@ -0,0 +1,18 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ //#region src/sdk/accounts/intents/utils/adjust-state-to-snapshot.ts
3
+ /**
4
+ * Maps an intents {@link OperationState} onto the {@link AccountSnapshot} that
5
+ * position-metric functions take. `accountDebt` is treated as total debt
6
+ * (principal plus accrued interest and fees).
7
+ **/
8
+ function adjustStateToSnapshot(creditManager, state) {
9
+ return {
10
+ creditManager,
11
+ assets: state.assets,
12
+ quotas: Object.values(state.quotas),
13
+ totalDebt: state.accountDebt,
14
+ totalValue: state.totalValue
15
+ };
16
+ }
17
+ //#endregion
18
+ exports.adjustStateToSnapshot = adjustStateToSnapshot;
@@ -0,0 +1,45 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_sdk_accounts_intents_utils_borrowed_amount_plus_interest_and_fees = require("./borrowed-amount-plus-interest-and-fees.js");
3
+ //#region src/sdk/accounts/intents/utils/credit-account-slice.ts
4
+ /**
5
+ * Narrows full account data down to the slice the intent engine operates on.
6
+ *
7
+ * `accountDebt` is the total repayable debt (principal + accrued interest +
8
+ * accrued fees) rather than the principal, because every debt-touching intent
9
+ * settles the full outstanding amount.
10
+ *
11
+ * Addresses are lowercased so that `eq` comparisons and `AddressMap` lookups
12
+ * behave consistently everywhere downstream.
13
+ */
14
+ function toCreditAccountSlice(ca) {
15
+ return {
16
+ creditAccount: ca.creditAccount.toLowerCase(),
17
+ creditManager: ca.creditManager.toLowerCase(),
18
+ creditFacade: ca.creditFacade.toLowerCase(),
19
+ underlying: ca.underlying.toLowerCase(),
20
+ enabledTokensMask: ca.enabledTokensMask,
21
+ totalDebtUSD: ca.totalDebtUSD,
22
+ accountDebt: require_sdk_accounts_intents_utils_borrowed_amount_plus_interest_and_fees.calcBorrowedAmountPlusInterestAndFees(ca),
23
+ tokens: ca.tokens.map((t) => ({
24
+ ...t,
25
+ token: t.token.toLowerCase()
26
+ }))
27
+ };
28
+ }
29
+ /**
30
+ * Reads an account by address and narrows it to {@link CreditAccountSlice}.
31
+ *
32
+ * The shared read model's `StrategyPosition` carries neither `tokens` nor
33
+ * `enabledTokensMask` / `creditFacade` / `totalDebtUSD`, so simulating against
34
+ * an existing position costs one account read.
35
+ *
36
+ * @throws When the account is not found in the connected markets.
37
+ */
38
+ async function fetchCreditAccountSlice(sdk, creditAccount) {
39
+ const data = await sdk.accounts.getCreditAccountData(creditAccount);
40
+ if (!data) throw new Error(`credit account not found: ${creditAccount}`);
41
+ return toCreditAccountSlice(data);
42
+ }
43
+ //#endregion
44
+ exports.fetchCreditAccountSlice = fetchCreditAccountSlice;
45
+ exports.toCreditAccountSlice = toCreditAccountSlice;
@@ -1,19 +1,28 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
- const require_sdk_accounts_intents_utils_assemble_operation_calls = require("./assemble-operation-calls.js");
3
- const require_sdk_accounts_intents_utils_borrowed_amount_plus_interest_and_fees = require("./borrowed-amount-plus-interest-and-fees.js");
4
2
  const require_sdk_accounts_intents_utils_common = require("./common.js");
5
3
  const require_sdk_accounts_intents_utils_convert_amount = require("./convert-amount.js");
4
+ const require_sdk_accounts_intents_utils_pick_token = require("./pick-token.js");
5
+ const require_sdk_accounts_intents_utils_adjust_state_to_snapshot = require("./adjust-state-to-snapshot.js");
6
+ const require_sdk_accounts_intents_utils_assemble_operation_calls = require("./assemble-operation-calls.js");
7
+ const require_sdk_accounts_intents_utils_borrowed_amount_plus_interest_and_fees = require("./borrowed-amount-plus-interest-and-fees.js");
8
+ const require_sdk_accounts_intents_utils_credit_account_slice = require("./credit-account-slice.js");
9
+ const require_sdk_accounts_intents_utils_ledger = require("./ledger.js");
6
10
  const require_sdk_accounts_intents_utils_quotas_for_update = require("./quotas-for-update.js");
7
- const require_sdk_accounts_intents_utils_simulate_assets = require("./simulate-assets.js");
8
- const require_sdk_accounts_intents_utils_simulate_adjust_state = require("./simulate-adjust-state.js");
9
- const require_sdk_accounts_intents_utils_with_quota_update = require("./with-quota-update.js");
11
+ const require_sdk_accounts_intents_utils_router_path = require("./router-path.js");
12
+ exports.OperationLedger = require_sdk_accounts_intents_utils_ledger.OperationLedger;
13
+ exports.adjustStateToSnapshot = require_sdk_accounts_intents_utils_adjust_state_to_snapshot.adjustStateToSnapshot;
10
14
  exports.assembleOperationCalls = require_sdk_accounts_intents_utils_assemble_operation_calls.assembleOperationCalls;
11
15
  exports.calcBorrowedAmountPlusInterestAndFees = require_sdk_accounts_intents_utils_borrowed_amount_plus_interest_and_fees.calcBorrowedAmountPlusInterestAndFees;
16
+ exports.clearedQuotas = require_sdk_accounts_intents_utils_quotas_for_update.clearedQuotas;
12
17
  exports.convertAmount = require_sdk_accounts_intents_utils_convert_amount.convertAmount;
18
+ exports.createRouterPaths = require_sdk_accounts_intents_utils_router_path.createRouterPaths;
13
19
  exports.eq = require_sdk_accounts_intents_utils_common.eq;
14
- exports.getOperationsWithQuotaUpdate = require_sdk_accounts_intents_utils_with_quota_update.getOperationsWithQuotaUpdate;
20
+ exports.fetchCreditAccountSlice = require_sdk_accounts_intents_utils_credit_account_slice.fetchCreditAccountSlice;
15
21
  exports.getQuotasForUpdate = require_sdk_accounts_intents_utils_quotas_for_update.getQuotasForUpdate;
16
- exports.simulateOperationAssets = require_sdk_accounts_intents_utils_simulate_assets.simulateOperationAssets;
17
- exports.simulateState = require_sdk_accounts_intents_utils_simulate_adjust_state.simulateState;
22
+ exports.isPhantomToken = require_sdk_accounts_intents_utils_pick_token.isPhantomToken;
23
+ exports.isRedemptionPhantomToken = require_sdk_accounts_intents_utils_pick_token.isRedemptionPhantomToken;
24
+ exports.pickFattestNonPhantomToken = require_sdk_accounts_intents_utils_pick_token.pickFattestNonPhantomToken;
25
+ exports.rankAccountTokens = require_sdk_accounts_intents_utils_pick_token.rankAccountTokens;
26
+ exports.toCreditAccountSlice = require_sdk_accounts_intents_utils_credit_account_slice.toCreditAccountSlice;
18
27
  exports.toRouterCaSlice = require_sdk_accounts_intents_utils_common.toRouterCaSlice;
19
28
  exports.toTargetDecimals = require_sdk_accounts_intents_utils_common.toTargetDecimals;
@@ -0,0 +1,94 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_sdk_utils_bigint_math = require("../../../utils/bigint-math.js");
3
+ //#region src/sdk/accounts/intents/utils/ledger.ts
4
+ /**
5
+ * Running account state, advanced one operation at a time.
6
+ *
7
+ * Exists because the amounts an operation is built from depend on the balances
8
+ * the previous ones left behind: a swap has to know how much of its input token
9
+ * is genuinely swap input, so the router does not sweep collateral that must
10
+ * stay put. Applying each op as it is built keeps that a single forward pass —
11
+ * a builder that re-simulated the chain from the start for every leg would be
12
+ * quadratic in the number of legs and easy to desynchronise.
13
+ */
14
+ var OperationLedger = class {
15
+ #balances = /* @__PURE__ */ new Map();
16
+ #underlying;
17
+ #convert;
18
+ #debt;
19
+ constructor(args) {
20
+ this.#underlying = args.underlying;
21
+ this.#convert = args.convert;
22
+ this.#debt = args.debt;
23
+ for (const asset of args.initialAssets) {
24
+ const token = asset.token.toLowerCase();
25
+ this.#balances.set(token, (this.#balances.get(token) ?? 0n) + asset.balance);
26
+ }
27
+ }
28
+ get debt() {
29
+ return this.#debt;
30
+ }
31
+ balanceOf(token) {
32
+ return this.#balances.get(token.toLowerCase()) ?? 0n;
33
+ }
34
+ applyAll(operations) {
35
+ for (const op of operations) this.apply(op);
36
+ return this;
37
+ }
38
+ snapshot() {
39
+ const assets = [...this.#balances.entries()].map(([token, balance]) => ({
40
+ token,
41
+ balance
42
+ }));
43
+ return {
44
+ assets,
45
+ totalValue: assets.reduce((acc, a) => acc + this.#convert(a.token, this.#underlying, a.balance), 0n),
46
+ debt: this.#debt
47
+ };
48
+ }
49
+ /** Advances the state by one operation; quota changes move no balance. */
50
+ apply(op) {
51
+ switch (op.type) {
52
+ case "changeQuota": break;
53
+ case "increaseDebt":
54
+ this.#debt += op.amount;
55
+ this.#add(this.#underlying, op.amount);
56
+ break;
57
+ case "decreaseDebt":
58
+ this.#debt = require_sdk_utils_bigint_math.BigIntMath.max(0n, this.#debt - op.amount);
59
+ this.#add(this.#underlying, -op.amount);
60
+ break;
61
+ case "addCollateral":
62
+ this.#add(op.token, op.amount);
63
+ break;
64
+ case "withdrawCollateral":
65
+ this.#add(op.token, -op.amount);
66
+ break;
67
+ case "swap":
68
+ for (const input of op.from) this.#add(input.token, -input.balance);
69
+ this.#add(op.tokenOut, op.amountOut);
70
+ break;
71
+ case "wrapRwaCollateral":
72
+ case "unwrapRwaCollateral":
73
+ this.#add(op.tokenIn, -op.amount);
74
+ this.#add(op.tokenOut, op.amountOut);
75
+ break;
76
+ case "startDelayedWithdrawal":
77
+ this.#add(op.token, -op.amountIn);
78
+ for (const out of op.outputs) this.#add(out.token, out.amount);
79
+ break;
80
+ case "claimDelayedWithdrawal":
81
+ this.#add(op.withdrawalPhantomToken, -op.withdrawalTokenSpent);
82
+ for (const out of op.outputs) this.#add(out.token, out.amount);
83
+ }
84
+ return this;
85
+ }
86
+ #add(token, delta) {
87
+ const key = token.toLowerCase();
88
+ const balance = (this.#balances.get(key) ?? 0n) + delta;
89
+ if (balance <= 0n) this.#balances.delete(key);
90
+ else this.#balances.set(key, balance);
91
+ }
92
+ };
93
+ //#endregion
94
+ exports.OperationLedger = OperationLedger;
@@ -0,0 +1,72 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_sdk_market_credit_isStrategyCollateral = require("../../../market/credit/isStrategyCollateral.js");
3
+ const require_sdk_accounts_intents_utils_common = require("./common.js");
4
+ const require_sdk_accounts_intents_utils_convert_amount = require("./convert-amount.js");
5
+ //#region src/sdk/accounts/intents/utils/pick-token.ts
6
+ /** Prefix marking every phantom-token contract type in the registry. */
7
+ const PHANTOM_TOKEN_PREFIX = "PHANTOM_TOKEN::";
8
+ /**
9
+ * Whether `token` is a phantom (a non-transferable position marker such as a
10
+ * pending delayed withdrawal).
11
+ *
12
+ * Reads `contractType` directly instead of going through
13
+ * `TokensMeta.isPhantomToken`, which throws when extended token data has not
14
+ * been loaded. Here an unknown token is simply treated as non-phantom.
15
+ */
16
+ function isPhantomToken(sdk, token) {
17
+ return !!sdk.tokensMeta.get(token)?.contractType?.startsWith(PHANTOM_TOKEN_PREFIX);
18
+ }
19
+ const REDEMPTION_PHANTOM_TOKEN_TYPES = new Set(require_sdk_market_credit_isStrategyCollateral.NON_STRATEGY_PHANTOM_TOKEN_TYPES);
20
+ /**
21
+ * Whether `token` is the phantom of a redemption in flight, rather than one of
22
+ * the phantoms a position is simply held in (Convex, Infrared, staking
23
+ * rewards), which the router sells like any other balance.
24
+ *
25
+ * Only the former stands between an account and being emptied: it cannot be
26
+ * sold and it cannot leave until its claim has landed.
27
+ */
28
+ function isRedemptionPhantomToken(sdk, token) {
29
+ const contractType = sdk.tokensMeta.get(token)?.contractType;
30
+ return !!contractType && REDEMPTION_PHANTOM_TOKEN_TYPES.has(contractType);
31
+ }
32
+ /**
33
+ * Account balances that can actually back an operation, richest first.
34
+ *
35
+ * Phantoms are dropped because a pending delayed withdrawal cannot be spent:
36
+ * it has to be claimed first, in a transaction of its own.
37
+ */
38
+ function rankAccountTokens(args) {
39
+ const { creditAccount, sdk, exclude = [] } = args;
40
+ const convert = require_sdk_accounts_intents_utils_convert_amount.convertAmount(sdk, creditAccount.creditManager);
41
+ const candidates = [];
42
+ for (const t of creditAccount.tokens) {
43
+ if (t.balance <= 0n) continue;
44
+ if (exclude.some((e) => require_sdk_accounts_intents_utils_common.eq(e, t.token))) continue;
45
+ if (isPhantomToken(sdk, t.token)) continue;
46
+ candidates.push({
47
+ token: t.token,
48
+ balance: t.balance,
49
+ valueInUnderlying: convert(t.token, creditAccount.underlying, t.balance)
50
+ });
51
+ }
52
+ candidates.sort((a, b) => {
53
+ if (a.valueInUnderlying !== b.valueInUnderlying) return a.valueInUnderlying > b.valueInUnderlying ? -1 : 1;
54
+ return a.token < b.token ? -1 : a.token > b.token ? 1 : 0;
55
+ });
56
+ return candidates;
57
+ }
58
+ /**
59
+ * Default working token for flows that do not get one from the caller: the
60
+ * most valuable non-phantom balance on the account.
61
+ *
62
+ * Used for the source of a partial withdraw and the position leg of a leverage
63
+ * adjustment, both of which the caller may override explicitly.
64
+ */
65
+ function pickFattestNonPhantomToken(args) {
66
+ return rankAccountTokens(args)[0];
67
+ }
68
+ //#endregion
69
+ exports.isPhantomToken = isPhantomToken;
70
+ exports.isRedemptionPhantomToken = isRedemptionPhantomToken;
71
+ exports.pickFattestNonPhantomToken = pickFattestNonPhantomToken;
72
+ exports.rankAccountTokens = rankAccountTokens;
@@ -1,5 +1,6 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_sdk_utils_mappers = require("../../../utils/mappers.js");
3
+ const require_sdk_constants_math = require("../../../constants/math.js");
3
4
  const require_common_utils_utils_creditAccount_quota_utils = require("../../../../common-utils/utils/creditAccount/quota-utils.js");
4
5
  //#region src/sdk/accounts/intents/utils/quotas-for-update.ts
5
6
  function getQuotasForUpdate({ assetsBefore, assetsAfter, initialQuotas, quotaReserve = 0, liquidationThresholds: liquidationThresholdsMap, quotas: quotasMap, maxDebt, underlyingToken, convert }) {
@@ -52,6 +53,31 @@ function getQuotasForUpdate({ assetsBefore, assetsAfter, initialQuotas, quotaRes
52
53
  });
53
54
  return filterQuotaUpdates(quotaResult.desiredQuota, quotaResult.quotaIncrease, quotaResult.quotaDecrease, [...new Set([...spend, ...obtain].map((q) => q.token)).values()]);
54
55
  }
56
+ /**
57
+ * The update that leaves the account holding no quota at all.
58
+ *
59
+ * Sits beside {@link getQuotasForUpdate} rather than inside it because the two
60
+ * answer different questions: that one sizes quotas to the balances an
61
+ * operation leaves behind, this one is asked for by a plan that ends the loan,
62
+ * where the right size is none whatever the balances are.
63
+ *
64
+ * `MIN_INT96` is the protocol's "reset" sentinel, which is how a decrease says
65
+ * "all of it" instead of naming an amount that interest may have moved.
66
+ */
67
+ function clearedQuotas(initialQuotas) {
68
+ const quoted = initialQuotas.filter((q) => q.quota > 0n).map((q) => q.token.toLowerCase());
69
+ return {
70
+ desiredQuota: require_sdk_utils_mappers.TypedObjectUtils.fromEntries(quoted.map((token) => [token, {
71
+ token,
72
+ balance: 0n
73
+ }])),
74
+ quotaIncrease: [],
75
+ quotaDecrease: quoted.map((token) => ({
76
+ token,
77
+ balance: require_sdk_constants_math.MIN_INT96
78
+ }))
79
+ };
80
+ }
55
81
  function collectQuotaChange(assetsBefore, assetsAfter) {
56
82
  const before = new Map(assetsBefore.map((a) => [a.token, a.balance]));
57
83
  const after = new Map(assetsAfter.map((a) => [a.token, a.balance]));
@@ -119,4 +145,5 @@ function constructAssetRecord(a) {
119
145
  }, {});
120
146
  }
121
147
  //#endregion
148
+ exports.clearedQuotas = clearedQuotas;
122
149
  exports.getQuotasForUpdate = getQuotasForUpdate;
@@ -0,0 +1,86 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_sdk_accounts_intents_utils_common = require("./common.js");
3
+ //#region src/sdk/accounts/intents/utils/router-path.ts
4
+ /**
5
+ * The engine's only door to the pathfinder.
6
+ *
7
+ * Deliberately not a quoter abstraction with an oracle-priced twin: paths are
8
+ * always resolved on-chain, because a preview whose swap amounts came from
9
+ * oracle prices could not produce the calldata that realises them.
10
+ */
11
+ function createRouterPaths(args) {
12
+ const { sdk, creditAccount, slippage } = args;
13
+ const suite = sdk.marketRegister.findCreditManager(creditAccount.creditManager);
14
+ const cmSlice = {
15
+ address: suite.creditManager.address.toLowerCase(),
16
+ creditFacade: suite.creditFacade.address.toLowerCase(),
17
+ collateralTokens: suite.creditManager.collateralTokens.map((t) => t.toLowerCase())
18
+ };
19
+ const router = sdk.routerFor({ creditFacade: suite.creditFacade.address });
20
+ return {
21
+ async swap({ tokenIn, tokenOut, amount, keep = 0n }) {
22
+ if (amount <= 0n) return {
23
+ amount: 0n,
24
+ minAmount: 0n,
25
+ calls: []
26
+ };
27
+ if (keep < 0n) throw new Error(`swap: spending ${amount} of ${tokenIn} exceeds its balance`);
28
+ if (keep > 0n) {
29
+ const expectedBalances = [{
30
+ token: tokenIn,
31
+ balance: amount + keep
32
+ }];
33
+ return router.findManyToOnePath({
34
+ creditAccount: require_sdk_accounts_intents_utils_common.toRouterCaSlice(creditAccount, expectedBalances),
35
+ creditManager: cmSlice,
36
+ expectedBalances,
37
+ leftoverBalances: [{
38
+ token: tokenIn,
39
+ balance: keep
40
+ }],
41
+ target: tokenOut,
42
+ slippage
43
+ });
44
+ }
45
+ return router.findOneTokenPath({
46
+ creditAccount: require_sdk_accounts_intents_utils_common.toRouterCaSlice(creditAccount, [{
47
+ token: tokenIn,
48
+ balance: amount
49
+ }]),
50
+ creditManager: cmSlice,
51
+ tokenIn,
52
+ tokenOut,
53
+ amount,
54
+ slippage
55
+ });
56
+ },
57
+ async closeAll({ balances }) {
58
+ const { amount, minAmount, calls } = await router.findBestClosePath({
59
+ creditAccount: require_sdk_accounts_intents_utils_common.toRouterCaSlice(creditAccount, balances),
60
+ creditManager: cmSlice,
61
+ balances: {
62
+ expectedBalances: balances,
63
+ leftoverBalances: [],
64
+ tokensToClaim: []
65
+ },
66
+ slippage
67
+ });
68
+ return {
69
+ amount,
70
+ minAmount,
71
+ calls: [...calls]
72
+ };
73
+ },
74
+ async openStrategy({ expectedBalances, leftoverBalances, target }) {
75
+ return router.findOpenStrategyPath({
76
+ creditManager: cmSlice,
77
+ expectedBalances,
78
+ leftoverBalances,
79
+ target,
80
+ slippage
81
+ });
82
+ }
83
+ };
84
+ }
85
+ //#endregion
86
+ exports.createRouterPaths = createRouterPaths;
@@ -0,0 +1,38 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_sdk_accounts_intents_utils_common = require("./utils/common.js");
3
+ const require_sdk_accounts_intents_utils_convert_amount = require("./utils/convert-amount.js");
4
+ const require_sdk_accounts_intents_utils_pick_token = require("./utils/pick-token.js");
5
+ //#region src/sdk/accounts/intents/view.ts
6
+ /**
7
+ * The account as the planners see it: a handful of numbers in underlying units
8
+ * plus balance / price lookups. Read once per preview.
9
+ *
10
+ * TVL uses the RWA-aware conversion so an `rwa.asset` balance without a direct
11
+ * pool price still counts at its wrapped value instead of throwing.
12
+ */
13
+ function accountView(creditAccount, sdk) {
14
+ const { underlying, creditManager } = creditAccount;
15
+ const price = require_sdk_accounts_intents_utils_convert_amount.convertAmount(sdk, creditManager);
16
+ const { creditFacade } = sdk.marketRegister.findCreditManager(creditManager);
17
+ let totalValue = 0n;
18
+ for (const t of creditAccount.tokens) totalValue += price(t.token, underlying, t.balance);
19
+ return {
20
+ underlying,
21
+ rwaAsset: sdk.tokensMeta.rwaUnderlyings.get(underlying)?.asset,
22
+ debt: creditAccount.accountDebt,
23
+ collateral: totalValue - creditAccount.accountDebt,
24
+ band: {
25
+ minDebt: creditFacade.minDebt,
26
+ maxDebt: creditFacade.maxDebt
27
+ },
28
+ balanceOf: (token) => creditAccount.tokens.find((t) => require_sdk_accounts_intents_utils_common.eq(t.token, token))?.balance ?? 0n,
29
+ price,
30
+ fattest: (exclude) => require_sdk_accounts_intents_utils_pick_token.pickFattestNonPhantomToken({
31
+ creditAccount,
32
+ sdk,
33
+ exclude
34
+ })?.token
35
+ };
36
+ }
37
+ //#endregion
38
+ exports.accountView = accountView;
@@ -33,7 +33,6 @@ var LiquidationsService = class extends require_sdk_base_SDKConstruct.SDKConstru
33
33
  * Accounts whose collateral computation failed are excluded.
34
34
  **/
35
35
  async getLiquidatableAccounts(props) {
36
- await this.sdk.withdrawalCompressor?.loadWithdrawableAssets(void 0, props?.blockNumber);
37
36
  const unhealthy = await this.sdk.accounts.getCreditAccounts({
38
37
  maxHealthFactor: require_sdk_constants_math.WAD - 1n,
39
38
  includeZeroDebt: false
@@ -60,7 +59,6 @@ var LiquidationsService = class extends require_sdk_base_SDKConstruct.SDKConstru
60
59
  const ca = await this.#getCreditAccountData(creditAccount, blockNumber);
61
60
  const suite = this.sdk.marketRegister.findCreditManager(ca.creditManager);
62
61
  const { priceOracle } = suite.market;
63
- await this.sdk.withdrawalCompressor?.loadWithdrawableAssets(void 0, blockNumber);
64
62
  const account = this.#buildAccount(ca, suite);
65
63
  const data = await this.#getLiquidationData(ca, liquidator, ignoreReservePrices, blockNumber);
66
64
  return {
@@ -97,7 +95,6 @@ var LiquidationsService = class extends require_sdk_base_SDKConstruct.SDKConstru
97
95
  async getLiquidationPositions(props) {
98
96
  const compressor = this.sdk.withdrawalCompressor;
99
97
  if (!compressor) return [];
100
- await compressor.loadWithdrawableAssets(void 0, props.blockNumber);
101
98
  const phantomTokens = new require_sdk_utils_AddressSet.AddressSet(compressor.getWithdrawableAssets().map((a) => a.withdrawalPhantomToken));
102
99
  const { claimable, pending } = await compressor.getExternalAccountCurrentWithdrawals({
103
100
  account: props.liquidator,
@@ -4,8 +4,10 @@ require("../../constants/addresses.js");
4
4
  require("../../constants/index.js");
5
5
  const require_sdk_utils_hex = require("../../utils/hex.js");
6
6
  require("../../utils/index.js");
7
+ const require_sdk_utils_viem_executeMulticallBatches = require("../../utils/viem/executeMulticallBatches.js");
7
8
  const require_sdk_base_BaseContract = require("../../base/BaseContract.js");
8
9
  require("../../base/index.js");
10
+ require("../../utils/viem/index.js");
9
11
  const require_sdk_accounts_withdrawal_compressor_intent_codec = require("./intent-codec.js");
10
12
  let viem = require("viem");
11
13
  //#region src/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.ts
@@ -58,37 +60,46 @@ var AbstractWithdrawalCompressorContract = class extends require_sdk_base_BaseCo
58
60
  **/
59
61
  getWithdrawableAssets(...creditManagers) {
60
62
  const cache = this.#withdrawableAssets;
61
- if (!cache) throw new Error("withdrawable assets are not loaded, call loadWithdrawableAssets first");
63
+ if (!cache) throw new Error("withdrawable assets are not loaded, check if the sdk was properly attached or hydrated");
62
64
  if (creditManagers.length === 0) return cache.values().flat();
63
65
  return creditManagers.flatMap((cm) => cache.get(cm) ?? []);
64
66
  }
65
67
  /**
66
- * {@inheritDoc IWithdrawalCompressorContract.loadWithdrawableAssets}
68
+ * {@inheritDoc IWithdrawalCompressorContract.getLoadWithdrawableAssetsMulticall}
67
69
  **/
68
- async loadWithdrawableAssets(force, blockNumber) {
69
- if (this.#withdrawableAssets && !force) return this.getWithdrawableAssets();
70
+ getLoadWithdrawableAssetsMulticall(force) {
71
+ if (this.#withdrawableAssets && !force) return {
72
+ contracts: [],
73
+ onResults: () => {}
74
+ };
70
75
  const cms = this.#sdk.marketRegister.creditManagers.map((cm) => cm.creditManager.address);
71
- const resp = await this.client.multicall({
76
+ return {
72
77
  contracts: cms.map((cm) => ({
73
78
  address: this.address,
74
79
  abi: this.abi,
75
80
  functionName: "getWithdrawableAssets",
76
81
  args: [cm]
77
82
  })),
78
- allowFailure: true,
79
- batchSize: 0,
80
- blockNumber
81
- });
82
- const cache = new require_sdk_utils_AddressMap.AddressMap(void 0, MAP_LABEL);
83
- for (let i = 0; i < resp.length; i++) {
84
- const r = resp[i];
85
- if (r.status !== "success") {
86
- this.logger?.warn(`failed to get withdrawable assets of credit manager ${cms[i]}: ${r.error}`);
87
- continue;
83
+ onResults: (resps) => {
84
+ const cache = new require_sdk_utils_AddressMap.AddressMap(void 0, MAP_LABEL);
85
+ for (let i = 0; i < resps.length; i++) {
86
+ const r = resps[i];
87
+ if (r.status !== "success") {
88
+ this.logger?.warn(`failed to get withdrawable assets of credit manager ${cms[i]}: ${r.error}`);
89
+ continue;
90
+ }
91
+ const assets = r.result;
92
+ if (assets.length > 0) cache.upsert(cms[i], assets.map((a) => toWithdrawableAsset(a, cms[i])));
93
+ }
94
+ this.#withdrawableAssets = cache;
88
95
  }
89
- if (r.result.length > 0) cache.upsert(cms[i], r.result.map((a) => toWithdrawableAsset(a, cms[i])));
90
- }
91
- this.#withdrawableAssets = cache;
96
+ };
97
+ }
98
+ /**
99
+ * {@inheritDoc IWithdrawalCompressorContract.loadWithdrawableAssets}
100
+ **/
101
+ async loadWithdrawableAssets(force, blockNumber) {
102
+ await require_sdk_utils_viem_executeMulticallBatches.executeMulticallBatches(this.client, [this.getLoadWithdrawableAssetsMulticall(force)], { blockNumber });
92
103
  return this.getWithdrawableAssets();
93
104
  }
94
105
  /**
@@ -171,7 +171,7 @@ var BaseContract = class extends require_sdk_base_Construct.Construct {
171
171
  name: decoded.functionName,
172
172
  args: decoded.args
173
173
  });
174
- if (!abiItem || abiItem.type !== "function") return `Unknown function: ${decoded.functionName}`;
174
+ if (abiItem?.type !== "function") return `Unknown function: ${decoded.functionName}`;
175
175
  const params = this.stringifyFunctionParams(decoded).map((v, i) => `${abiItem.inputs[i].name}: ${v}`);
176
176
  return `${this.name}.${decoded.functionName}({${params.join(", ")}})`;
177
177
  }