@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,373 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_sdk_constants_math = require("../../constants/math.js");
3
+ require("../../constants/index.js");
4
+ const require_sdk_accounts_intents_types = require("./types.js");
5
+ const require_sdk_accounts_intents_utils_common = require("./utils/common.js");
6
+ const require_sdk_accounts_intents_math = require("./math.js");
7
+ //#region src/sdk/accounts/intents/plan.ts
8
+ /** Whatever the previous convert produced. */
9
+ const RAISED = { raised: true };
10
+ /** Intent 5: the token lands as is; debt is untouched. */
11
+ function planAddCollateral(intent) {
12
+ assertPositive(intent.amount, "addCollateral");
13
+ return [add(intent.token, intent.amount, intent.value)];
14
+ }
15
+ /** Intent 4: one asset out at fixed debt. */
16
+ function planWithdrawAsset(intent, view) {
17
+ assertPositive(intent.amount, "withdrawAsset");
18
+ return payout(view, intent.token, intent.amount, intent.to);
19
+ }
20
+ /** Intent 6: collateral fixed, debt retargeted to `C0 · (L1 − 1)`. */
21
+ function planAdjustLeverage(intent, view) {
22
+ const { U, delta } = leverageShape(intent, view);
23
+ if (delta === 0n) return [];
24
+ const T = intent.token ?? positionToken(view, "adjustLeverage");
25
+ if (delta > 0n) return [borrow(delta), convert(U, T, delta)];
26
+ const shortfall = -delta - view.balanceOf(U);
27
+ if (shortfall > 0n && require_sdk_accounts_intents_utils_common.eq(T, U)) throw new require_sdk_accounts_intents_types.IntentPreviewError("insufficientSourceBalance", `adjustLeverage: needs ${-delta} underlying, account holds ${view.balanceOf(U)}`);
28
+ return [...shortfall > 0n ? [convert(T, U, view.price(U, T, shortfall))] : [], repay(-delta)];
29
+ }
30
+ /** Intents 1.1 / 1.2: collateral grows by `a`, debt grows to match. */
31
+ function planDeposit(intent, view) {
32
+ assertPositive(intent.amount, "deposit");
33
+ const U = view.underlying;
34
+ if (!require_sdk_accounts_intents_utils_common.eq(intent.token, U) && !(view.rwaAsset && require_sdk_accounts_intents_utils_common.eq(intent.token, view.rwaAsset))) throw new require_sdk_accounts_intents_types.IntentPreviewError("unsupportedCollateralToken", `deposit: only ${U}${view.rwaAsset ? ` or ${view.rwaAsset}` : ""} can be deposited, got ${intent.token}`);
35
+ const aU = view.price(intent.token, U, intent.amount);
36
+ const debtDelta = intent.targetLeverage === void 0 ? require_sdk_accounts_intents_math.proportionalDebt(view, aU) : require_sdk_accounts_intents_math.debtForLeverage(view.collateral + aU, intent.targetLeverage) - view.debt;
37
+ if (debtDelta < 0n) throw new require_sdk_accounts_intents_types.IntentPreviewError("leverageOutOfRange", `deposit: target leverage ${intent.targetLeverage} would require repaying debt`);
38
+ require_sdk_accounts_intents_math.assertDebtInBand(view.debt + debtDelta, view.band);
39
+ const T = intent.positionToken ?? positionToken(view, "deposit");
40
+ const depositStays = require_sdk_accounts_intents_utils_common.eq(intent.token, T);
41
+ return [
42
+ add(intent.token, intent.amount, intent.value),
43
+ ...depositStays ? [] : [convert(intent.token, U, intent.amount)],
44
+ ...debtDelta > 0n ? [borrow(debtDelta)] : [],
45
+ convert(U, T, debtDelta + (depositStays ? 0n : aU))
46
+ ].filter((s) => s.kind !== "convert" || s.amount !== 0n);
47
+ }
48
+ /**
49
+ * Intent 3: funding comes in from the wallet and goes straight into the debt.
50
+ * Collateral never moves, so the whole plan is the funding's way to `U`.
51
+ *
52
+ * Funding in `U` needs no way there: it lands and is repaid, which is the whole
53
+ * plan. An RWA market also takes the raw asset behind its underlying, and that
54
+ * one is wrapped on the way in.
55
+ *
56
+ * `MAX_UINT256` settles the loan: the wallet is asked for the debt as it stands
57
+ * plus the headroom {@link SETTLE_MARGIN} allows for the interest of the blocks
58
+ * still to come, since the facade is told to repay everything outstanding
59
+ * rather than the amount quoted here.
60
+ */
61
+ function planRepay(intent, view) {
62
+ assertPositive(intent.amount, "repay");
63
+ const U = view.underlying;
64
+ const fundsInU = require_sdk_accounts_intents_utils_common.eq(intent.token, U);
65
+ if (!fundsInU && !(view.rwaAsset && require_sdk_accounts_intents_utils_common.eq(intent.token, view.rwaAsset))) throw new require_sdk_accounts_intents_types.IntentPreviewError("unsupportedCollateralToken", `repay: only ${U}${view.rwaAsset ? ` or ${view.rwaAsset}` : ""} can be repaid with, got ${intent.token}`);
66
+ if (view.debt <= 0n) throw new require_sdk_accounts_intents_types.IntentPreviewError("debtOutOfRange", "repay: the account owes nothing");
67
+ const funding = everything(intent.amount) ? view.price(U, intent.token, withMargin(view.debt)) : intent.amount;
68
+ const repaid = min(view.price(intent.token, U, funding), view.debt);
69
+ require_sdk_accounts_intents_math.assertDebtInBand(view.debt - repaid, view.band);
70
+ return [
71
+ add(intent.token, funding, intent.value),
72
+ ...fundsInU ? [] : [convert(intent.token, U, funding)],
73
+ ...repaid === view.debt ? [clearQuotas()] : [],
74
+ repay(repaid)
75
+ ];
76
+ }
77
+ /**
78
+ * Intent 2.1: `W` of value leaves, debt shrinks by `D0 · W / C0` so leverage
79
+ * holds. Both are funded by the source `S`.
80
+ */
81
+ function planWithdraw(intent, view) {
82
+ const { U, T, S, WU, dD, all } = withdrawShape(intent, view);
83
+ if (all) return [
84
+ clearQuotas(),
85
+ { kind: "closeAll" },
86
+ ...view.debt > 0n ? [repay(view.debt)] : [],
87
+ {
88
+ kind: "sweep",
89
+ to: intent.to
90
+ }
91
+ ];
92
+ if (require_sdk_accounts_intents_utils_common.eq(T, U)) return [
93
+ convert(S, U, view.price(U, S, WU + dD)),
94
+ repay(dD, intent.amount),
95
+ ...payout(view, U, intent.amount, intent.to)
96
+ ];
97
+ return [
98
+ convert(S, U, view.price(U, S, dD)),
99
+ repay(dD),
100
+ convert(S, T, view.price(U, S, WU)),
101
+ ...payout(view, T, RAISED, intent.to)
102
+ ];
103
+ }
104
+ /**
105
+ * Intent 2.1 against a source that cannot be sold on a DEX.
106
+ *
107
+ * Some collateral only converts through its issuer — a Securitize dsToken, a
108
+ * Mellow share — which answers a redemption request now and pays out days
109
+ * later. The trade is unchanged; what changes is that the proceeds do not exist
110
+ * yet, so this half only requests the redemption:
111
+ *
112
+ * ```
113
+ * request(S, W + dD) → [days] → claim → convert → repay → withdraw
114
+ * ```
115
+ *
116
+ * The tail is planned at claim time by {@link planFinishWithdraw}, from the
117
+ * intent this request records — only then is the claimed amount, and the token
118
+ * it arrived in, known.
119
+ */
120
+ function planWithdrawDelayed(intent, view) {
121
+ const { U, T, S, WU, dD, all } = withdrawShape(intent, view);
122
+ if (all) throw new require_sdk_accounts_intents_types.IntentPreviewError("noDelayedRoute", "withdraw: taking the whole net value cannot be started as a redemption");
123
+ if (!require_sdk_accounts_intents_utils_common.eq(T, U) && !(view.rwaAsset && require_sdk_accounts_intents_utils_common.eq(T, view.rwaAsset))) throw new require_sdk_accounts_intents_types.IntentPreviewError("noDelayedRoute", `withdraw: a delayed route cannot pay out in ${T}`);
124
+ const payoutIsSource = require_sdk_accounts_intents_utils_common.eq(T, S);
125
+ return [{
126
+ kind: "request",
127
+ token: S,
128
+ amount: view.price(U, S, payoutIsSource ? dD : WU + dD),
129
+ reserve: payoutIsSource ? intent.amount : 0n,
130
+ record: {
131
+ type: "WITHDRAW_COLLATERAL",
132
+ to: intent.to,
133
+ withdrawToken: T,
134
+ withdrawAmount: intent.amount,
135
+ sourceToken: S,
136
+ debtRepaid: dD
137
+ }
138
+ }];
139
+ }
140
+ /**
141
+ * Intent 6.2 against a position token that only redeems through its issuer.
142
+ *
143
+ * Only deleveraging can be delayed: raising leverage borrows and buys, both of
144
+ * which settle at once. The request covers whatever idle underlying does not
145
+ * already, and the tail repays from the claim.
146
+ */
147
+ function planAdjustLeverageDelayed(intent, view) {
148
+ const { U, delta } = leverageShape(intent, view);
149
+ if (delta >= 0n) throw new require_sdk_accounts_intents_types.IntentPreviewError("noDelayedRoute", "adjustLeverage: only deleveraging can settle with a delay");
150
+ const shortfall = -delta - view.balanceOf(U);
151
+ if (shortfall <= 0n) throw new require_sdk_accounts_intents_types.IntentPreviewError("noDelayedRoute", "adjustLeverage: idle underlying covers the repayment, nothing to redeem");
152
+ const T = intent.token ?? positionToken(view, "adjustLeverage");
153
+ return [{
154
+ kind: "request",
155
+ token: T,
156
+ amount: view.price(U, T, shortfall),
157
+ reserve: 0n,
158
+ record: { type: "DECREASE_LEVERAGE" }
159
+ }];
160
+ }
161
+ /** Everything claimed goes into the debt. */
162
+ function planFinishDecreaseLeverage(claimable, claimed, view) {
163
+ return [
164
+ claim(claimable),
165
+ convert(claimed.token, view.underlying, claimed.amount),
166
+ repay(RAISED)
167
+ ];
168
+ }
169
+ /**
170
+ * The claim is split between the promised payout `W` and the debt the leading
171
+ * half deferred: the payout is served first, the debt gets what is left, so a
172
+ * routing shortfall shows as leverage a touch above target rather than as a
173
+ * payout the wallet was promised and did not get.
174
+ */
175
+ function planFinishWithdraw(intent, claimable, claimed, view) {
176
+ const U = view.underlying;
177
+ const T = intent.withdrawToken;
178
+ const W = intent.withdrawAmount;
179
+ if (!require_sdk_accounts_intents_utils_common.eq(T, U) && !(view.rwaAsset && require_sdk_accounts_intents_utils_common.eq(T, view.rwaAsset))) throw new require_sdk_accounts_intents_types.IntentPreviewError("noDelayedRoute", `finishWithdraw: cannot pay out in ${T}`);
180
+ if (intent.debtRepaid === 0n) return [
181
+ claim(claimable),
182
+ convert(claimed.token, T, claimed.amount),
183
+ ...payout(view, T, {
184
+ raised: true,
185
+ max: W
186
+ }, intent.to)
187
+ ];
188
+ if (require_sdk_accounts_intents_utils_common.eq(intent.sourceToken, T)) return [
189
+ claim(claimable),
190
+ convert(claimed.token, U, claimed.amount),
191
+ repay({
192
+ raised: true,
193
+ max: intent.debtRepaid
194
+ }),
195
+ ...payout(view, T, W, intent.to)
196
+ ];
197
+ if (require_sdk_accounts_intents_utils_common.eq(T, U)) return [
198
+ claim(claimable),
199
+ convert(claimed.token, U, claimed.amount),
200
+ repay(intent.debtRepaid, W),
201
+ ...payout(view, U, {
202
+ raised: true,
203
+ max: W
204
+ }, intent.to)
205
+ ];
206
+ const reserved = min(view.price(T, claimed.token, W), claimed.amount);
207
+ return [
208
+ claim(claimable),
209
+ convert(claimed.token, U, claimed.amount - reserved),
210
+ repay({
211
+ raised: true,
212
+ max: intent.debtRepaid
213
+ }),
214
+ convert(claimed.token, T, reserved),
215
+ ...payout(view, T, {
216
+ raised: true,
217
+ max: W
218
+ }, intent.to)
219
+ ];
220
+ }
221
+ /** Nothing is owed beyond the claim: the tokens land and quotas catch up. */
222
+ function planFinishClaimOnly(claimable) {
223
+ return [claim(claimable)];
224
+ }
225
+ /**
226
+ * What a withdrawal comes down to: the payout `W` of `T` priced in the
227
+ * underlying, the debt `dD` that keeps leverage flat, and the source `S` both
228
+ * are funded from. Shared so that the instant and the delayed leading half
229
+ * cannot disagree on the amounts.
230
+ */
231
+ function withdrawShape(intent, view) {
232
+ assertPositive(intent.amount, "withdraw");
233
+ const U = view.underlying;
234
+ const T = intent.tokenOut ?? U;
235
+ const S = intent.sourceToken ?? sourceToken(view);
236
+ if (everything(intent.amount)) {
237
+ assertHasValue(view);
238
+ return {
239
+ U,
240
+ T,
241
+ S,
242
+ WU: view.collateral,
243
+ dD: view.debt,
244
+ all: true
245
+ };
246
+ }
247
+ const WU = view.price(T, U, intent.amount);
248
+ if (WU <= 0n) throw new require_sdk_accounts_intents_types.IntentPreviewError("insufficientSourceBalance", `withdraw: cannot price ${intent.amount} of ${T}`);
249
+ if (WU >= view.collateral) {
250
+ assertHasValue(view);
251
+ return {
252
+ U,
253
+ T,
254
+ S,
255
+ WU,
256
+ dD: view.debt,
257
+ all: true
258
+ };
259
+ }
260
+ const dD = require_sdk_accounts_intents_math.proportionalDebt(view, WU);
261
+ require_sdk_accounts_intents_math.assertDebtInBand(view.debt - dD, view.band);
262
+ return {
263
+ U,
264
+ T,
265
+ S,
266
+ WU,
267
+ dD,
268
+ all: false
269
+ };
270
+ }
271
+ /**
272
+ * The debt move a leverage target implies. Shared by the instant and the
273
+ * delayed leading half; the token that funds it is resolved by the caller,
274
+ * once it knows the move needs one at all.
275
+ */
276
+ function leverageShape(intent, view) {
277
+ require_sdk_accounts_intents_math.assertLeverageAtLeastOne(intent.targetLeverage);
278
+ if (view.collateral <= 0n) throw new require_sdk_accounts_intents_types.IntentPreviewError("insufficientSourceBalance", "adjustLeverage: account has no collateral to lever");
279
+ const target = require_sdk_accounts_intents_math.debtForLeverage(view.collateral, intent.targetLeverage);
280
+ require_sdk_accounts_intents_math.assertDebtInBand(target, view.band);
281
+ return {
282
+ U: view.underlying,
283
+ delta: target - view.debt
284
+ };
285
+ }
286
+ const add = (token, amount, value) => ({
287
+ kind: "add",
288
+ token,
289
+ amount,
290
+ value
291
+ });
292
+ const borrow = (amount) => ({
293
+ kind: "borrow",
294
+ amount
295
+ });
296
+ const repay = (amount, keep) => keep === void 0 ? {
297
+ kind: "repay",
298
+ amount
299
+ } : {
300
+ kind: "repay",
301
+ amount,
302
+ keep
303
+ };
304
+ const convert = (from, to, amount) => ({
305
+ kind: "convert",
306
+ from,
307
+ to,
308
+ amount
309
+ });
310
+ const claim = (claimable) => ({
311
+ kind: "claim",
312
+ claimable
313
+ });
314
+ const clearQuotas = () => ({ kind: "clearQuotas" });
315
+ /**
316
+ * Headroom a settlement raises on top of the debt it read, in
317
+ * `PERCENTAGE_FACTOR`: enough interest for the transaction to sit in the
318
+ * mempool for hours at any sane borrow rate, small enough not to matter to the
319
+ * wallet that fronts it.
320
+ */
321
+ const SETTLE_MARGIN = 10n;
322
+ const withMargin = (debt) => debt + debt * SETTLE_MARGIN / require_sdk_constants_math.PERCENTAGE_FACTOR;
323
+ /** The amount that asks for all of it, whatever "all" turns out to be. */
324
+ const everything = (amount) => amount >= require_sdk_constants_math.MAX_UINT256;
325
+ const min = (a, b) => a < b ? a : b;
326
+ /**
327
+ * Hands `amount` of `token` to `to`. The wrapped underlying of an RWA market
328
+ * cannot leave the account, so it is unwrapped into the raw asset on the way.
329
+ */
330
+ function payout(view, token, amount, to) {
331
+ if (view.rwaAsset && require_sdk_accounts_intents_utils_common.eq(token, view.underlying)) return [convert(view.underlying, view.rwaAsset, amount), {
332
+ kind: "withdraw",
333
+ token: view.rwaAsset,
334
+ amount: RAISED,
335
+ to
336
+ }];
337
+ return [{
338
+ kind: "withdraw",
339
+ token,
340
+ amount,
341
+ to
342
+ }];
343
+ }
344
+ function positionToken(view, flow) {
345
+ const pick = view.fattest([view.underlying]);
346
+ if (!pick) throw new require_sdk_accounts_intents_types.IntentPreviewError("insufficientSourceBalance", `${flow}: no position token on the account`);
347
+ return pick;
348
+ }
349
+ function sourceToken(view) {
350
+ const pick = view.fattest();
351
+ if (!pick) throw new require_sdk_accounts_intents_types.IntentPreviewError("insufficientSourceBalance", "withdraw: account has no spendable balance");
352
+ return pick;
353
+ }
354
+ /** An account whose debt has eaten its collateral has nothing to hand over. */
355
+ function assertHasValue(view) {
356
+ if (view.collateral <= 0n) throw new require_sdk_accounts_intents_types.IntentPreviewError("insufficientSourceBalance", `withdraw: nothing to withdraw, net value is ${view.collateral}`);
357
+ }
358
+ function assertPositive(amount, flow) {
359
+ if (amount <= 0n) throw new require_sdk_accounts_intents_types.IntentPreviewError("insufficientSourceBalance", `${flow}: amount must be positive`);
360
+ }
361
+ //#endregion
362
+ exports.RAISED = RAISED;
363
+ exports.planAddCollateral = planAddCollateral;
364
+ exports.planAdjustLeverage = planAdjustLeverage;
365
+ exports.planAdjustLeverageDelayed = planAdjustLeverageDelayed;
366
+ exports.planDeposit = planDeposit;
367
+ exports.planFinishClaimOnly = planFinishClaimOnly;
368
+ exports.planFinishDecreaseLeverage = planFinishDecreaseLeverage;
369
+ exports.planFinishWithdraw = planFinishWithdraw;
370
+ exports.planRepay = planRepay;
371
+ exports.planWithdraw = planWithdraw;
372
+ exports.planWithdrawAsset = planWithdrawAsset;
373
+ exports.planWithdrawDelayed = planWithdrawDelayed;
@@ -0,0 +1,301 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_sdk_market_math = require("../../market/math.js");
3
+ const require_sdk_accounts_intents_types = require("./types.js");
4
+ const require_sdk_accounts_intents_utils_common = require("./utils/common.js");
5
+ const require_sdk_accounts_intents_utils_convert_amount = require("./utils/convert-amount.js");
6
+ const require_sdk_accounts_intents_utils_pick_token = require("./utils/pick-token.js");
7
+ const require_sdk_accounts_intents_guards = require("./guards.js");
8
+ const require_sdk_accounts_intents_utils_ledger = require("./utils/ledger.js");
9
+ const require_sdk_accounts_intents_utils_quotas_for_update = require("./utils/quotas-for-update.js");
10
+ const require_sdk_accounts_intents_utils_router_path = require("./utils/router-path.js");
11
+ const require_sdk_accounts_intents_operations = require("./operations.js");
12
+ //#region src/sdk/accounts/intents/realize.ts
13
+ /**
14
+ * Turns a plan into operations: the one place that talks to the router, knows
15
+ * how an RWA leg differs from a swap, and keeps the running balances.
16
+ *
17
+ * Steps are applied to a ledger as they are built, so every leg sees the
18
+ * balances the previous ones left behind: a swap only spends what the plan
19
+ * says and keeps the rest of its input token in place, a repayment never
20
+ * exceeds the underlying actually raised. Once the walk is done the projected
21
+ * balances yield the quota update and the reported state.
22
+ */
23
+ async function realize(steps, props) {
24
+ const { creditAccount, sdk, slippage, quotaReserve } = props;
25
+ const { underlying } = creditAccount;
26
+ const rwaAsset = sdk.tokensMeta.rwaUnderlyings.get(underlying)?.asset;
27
+ const price = require_sdk_accounts_intents_utils_convert_amount.convertAmount(sdk, creditAccount.creditManager);
28
+ const paths = require_sdk_accounts_intents_utils_router_path.createRouterPaths({
29
+ sdk,
30
+ creditAccount,
31
+ slippage
32
+ });
33
+ const market = sdk.marketRegister.findByCreditManager(creditAccount.creditManager);
34
+ const suite = sdk.marketRegister.findCreditManager(creditAccount.creditManager);
35
+ const ledger = new require_sdk_accounts_intents_utils_ledger.OperationLedger({
36
+ initialAssets: creditAccount.tokens,
37
+ underlying,
38
+ debt: creditAccount.accountDebt,
39
+ convert: price
40
+ });
41
+ const operations = [];
42
+ const push = (op) => {
43
+ operations.push(op);
44
+ ledger.apply(op);
45
+ };
46
+ /** Output of the last convert or claim, for `RAISED` amounts. */
47
+ let raised = 0n;
48
+ let delayed;
49
+ /**
50
+ * Set by a `clearQuotas` step, which settles the quotas mid-walk instead of
51
+ * at the end — and settles them at none, whatever the balances turn out to be.
52
+ */
53
+ let cleared;
54
+ /**
55
+ * Whether anything leaves the account, which is what makes the credit manager
56
+ * judge the closing collateral check at safe prices.
57
+ */
58
+ let paysOut = false;
59
+ const amountOf = (a) => typeof a === "bigint" ? a : min(raised, a.max ?? raised);
60
+ const assertHolds = (token, amount, what) => {
61
+ const held = ledger.balanceOf(token);
62
+ if (amount <= 0n || held < amount) throw new require_sdk_accounts_intents_types.IntentPreviewError("insufficientSourceBalance", `${what}: needs ${amount} of ${token}, account holds ${held}`);
63
+ };
64
+ for (const step of steps) switch (step.kind) {
65
+ case "add":
66
+ push(require_sdk_accounts_intents_operations.buildAddCollateralOperation({
67
+ token: step.token,
68
+ amount: step.amount,
69
+ value: step.value,
70
+ creditAccount,
71
+ sdk
72
+ }));
73
+ break;
74
+ case "borrow":
75
+ require_sdk_accounts_intents_guards.assertCanBorrow(suite, step.amount);
76
+ push(require_sdk_accounts_intents_operations.buildIncreaseDebtOperation({
77
+ amount: step.amount,
78
+ creditAccount,
79
+ sdk
80
+ }));
81
+ break;
82
+ case "repay": {
83
+ const amount = min(amountOf(step.amount), ledger.balanceOf(underlying) - (step.keep ?? 0n));
84
+ if (amount > 0n) push(require_sdk_accounts_intents_operations.buildDecreaseDebtOperation({
85
+ amount,
86
+ full: amount >= ledger.debt,
87
+ creditAccount,
88
+ sdk
89
+ }));
90
+ break;
91
+ }
92
+ case "clearQuotas":
93
+ cleared = require_sdk_accounts_intents_utils_quotas_for_update.clearedQuotas(creditAccount.tokens);
94
+ if (cleared.quotaDecrease.length > 0) push(require_sdk_accounts_intents_operations.buildQuotaUpdateOperation({
95
+ update: cleared,
96
+ creditAccount,
97
+ sdk
98
+ }));
99
+ break;
100
+ case "convert": {
101
+ const amount = amountOf(step.amount);
102
+ if (amount <= 0n) {
103
+ raised = 0n;
104
+ break;
105
+ }
106
+ assertHolds(step.from, amount, "convert");
107
+ if (require_sdk_accounts_intents_utils_common.eq(step.from, step.to)) {
108
+ raised = amount;
109
+ break;
110
+ }
111
+ const wrap = rwaAsset && require_sdk_accounts_intents_utils_common.eq(step.from, rwaAsset) && require_sdk_accounts_intents_utils_common.eq(step.to, underlying);
112
+ const unwrap = rwaAsset && require_sdk_accounts_intents_utils_common.eq(step.from, underlying) && require_sdk_accounts_intents_utils_common.eq(step.to, rwaAsset);
113
+ if (wrap || unwrap) {
114
+ const amountOut = require_sdk_accounts_intents_utils_common.toTargetDecimals(amount, step.from, step.to, sdk);
115
+ push(await (wrap ? require_sdk_accounts_intents_operations.buildWrapRwaCollateralOperation : require_sdk_accounts_intents_operations.buildUnwrapRwaCollateralOperation)({
116
+ tokenIn: step.from,
117
+ amountIn: amount,
118
+ tokenOut: step.to,
119
+ amountOut,
120
+ creditAccount,
121
+ sdk
122
+ }));
123
+ raised = amountOut;
124
+ break;
125
+ }
126
+ const held = ledger.balanceOf(step.from);
127
+ const leg = await paths.swap({
128
+ tokenIn: step.from,
129
+ tokenOut: step.to,
130
+ amount,
131
+ keep: held - amount
132
+ });
133
+ push(require_sdk_accounts_intents_operations.buildSwapOperation({
134
+ tokenIn: step.from,
135
+ amountIn: amount,
136
+ tokenOut: step.to,
137
+ amountOut: leg.minAmount,
138
+ calls: leg.calls
139
+ }));
140
+ raised = leg.minAmount;
141
+ break;
142
+ }
143
+ case "closeAll": {
144
+ const balances = ledger.snapshot().assets.filter((a) => !require_sdk_accounts_intents_utils_common.eq(a.token, underlying) && a.balance > DUST);
145
+ const pending = balances.find((a) => require_sdk_accounts_intents_utils_pick_token.isRedemptionPhantomToken(sdk, a.token));
146
+ if (pending) throw new require_sdk_accounts_intents_types.IntentPreviewError("withdrawalInProgress", `closeAll: ${pending.token} is a pending withdrawal, claim it first`);
147
+ if (balances.length > 0) {
148
+ const leg = await paths.closeAll({ balances });
149
+ if (leg.calls.length > 0) push(require_sdk_accounts_intents_operations.buildCloseSwapOperation({
150
+ from: balances,
151
+ tokenOut: underlying,
152
+ amountOut: leg.minAmount,
153
+ calls: leg.calls
154
+ }));
155
+ }
156
+ raised = ledger.balanceOf(underlying);
157
+ break;
158
+ }
159
+ case "withdraw": {
160
+ const amount = amountOf(step.amount);
161
+ assertHolds(step.token, amount, "withdraw");
162
+ paysOut = true;
163
+ push(require_sdk_accounts_intents_operations.buildWithdrawCollateralOperation({
164
+ token: step.token,
165
+ amount,
166
+ to: step.to,
167
+ creditAccount,
168
+ sdk
169
+ }));
170
+ break;
171
+ }
172
+ case "request": {
173
+ const asset = await delayedConfig(sdk, creditAccount, step.token);
174
+ if (ledger.balanceOf(asset.withdrawalPhantomToken) > 0n) throw new require_sdk_accounts_intents_types.IntentPreviewError("withdrawalInProgress", `request: ${asset.withdrawalPhantomToken} already holds a pending withdrawal`);
175
+ assertHolds(step.token, step.amount + step.reserve, "request");
176
+ const preview = await sdk.accounts.previewDelayedWithdrawal({
177
+ creditAccount: creditAccount.creditAccount,
178
+ token: step.token,
179
+ amount: step.amount,
180
+ withdrawalPhantomToken: asset.withdrawalPhantomToken,
181
+ intent: step.record
182
+ });
183
+ push(require_sdk_accounts_intents_operations.buildStartDelayedWithdrawalOperation({
184
+ preview,
185
+ creditAccount,
186
+ sdk
187
+ }));
188
+ delayed = {
189
+ record: step.record,
190
+ claimableAt: preview.claimableAt,
191
+ settlement: preview.outputs.some((o) => o.isDelayed) ? "delayed" : "instant"
192
+ };
193
+ raised = require_sdk_accounts_intents_operations.instantOutput(preview.outputs)?.amount ?? 0n;
194
+ break;
195
+ }
196
+ case "claim":
197
+ push(require_sdk_accounts_intents_operations.buildClaimDelayedWithdrawalOperation({
198
+ claimable: step.claimable,
199
+ creditAccount,
200
+ sdk
201
+ }));
202
+ raised = require_sdk_accounts_intents_operations.instantOutput(step.claimable.outputs)?.amount ?? 0n;
203
+ break;
204
+ case "sweep": {
205
+ paysOut = true;
206
+ const wrapped = ledger.balanceOf(underlying);
207
+ if (rwaAsset && wrapped > 0n) push(await require_sdk_accounts_intents_operations.buildUnwrapRwaCollateralOperation({
208
+ tokenIn: underlying,
209
+ amountIn: wrapped,
210
+ tokenOut: rwaAsset,
211
+ amountOut: require_sdk_accounts_intents_utils_common.toTargetDecimals(wrapped, underlying, rwaAsset, sdk),
212
+ creditAccount,
213
+ sdk
214
+ }));
215
+ for (const { token, balance } of ledger.snapshot().assets) push(require_sdk_accounts_intents_operations.buildWithdrawCollateralOperation({
216
+ token,
217
+ amount: balance,
218
+ to: step.to,
219
+ all: true,
220
+ creditAccount,
221
+ sdk
222
+ }));
223
+ break;
224
+ }
225
+ }
226
+ const { assets, totalValue, debt } = ledger.snapshot();
227
+ require_sdk_accounts_intents_guards.assertGrowthAllowed({
228
+ sdk,
229
+ suite,
230
+ market,
231
+ before: creditAccount.tokens,
232
+ after: assets
233
+ });
234
+ const quotas = cleared ?? require_sdk_accounts_intents_utils_quotas_for_update.getQuotasForUpdate({
235
+ assetsBefore: creditAccount.tokens,
236
+ assetsAfter: assets,
237
+ initialQuotas: creditAccount.tokens,
238
+ quotaReserve,
239
+ underlyingToken: underlying,
240
+ liquidationThresholds: suite.creditManager.liquidationThresholds,
241
+ quotas: market.pool.pqk.quotas,
242
+ maxDebt: suite.creditFacade.maxDebt,
243
+ convert: price
244
+ });
245
+ if (!cleared && quotas.quotaIncrease.length + quotas.quotaDecrease.length > 0) {
246
+ require_sdk_accounts_intents_guards.assertQuotaHeadroom(market, quotas.quotaIncrease);
247
+ push(require_sdk_accounts_intents_operations.buildQuotaUpdateOperation({
248
+ update: quotas,
249
+ creditAccount,
250
+ sdk
251
+ }));
252
+ }
253
+ const snapshot = {
254
+ creditManager: creditAccount.creditManager,
255
+ assets,
256
+ quotas: Object.values(quotas.desiredQuota),
257
+ totalDebt: debt,
258
+ totalValue
259
+ };
260
+ const metrics = {
261
+ healthFactor: sdk.positions.healthFactor(snapshot),
262
+ overallApy: 0,
263
+ borrowRate: sdk.positions.borrowRate(snapshot),
264
+ timeToLiquidation: sdk.positions.timeToLiquidation(snapshot),
265
+ liquidationPrice: sdk.positions.liquidationPrice(snapshot)
266
+ };
267
+ require_sdk_accounts_intents_guards.assertCollateralised(paysOut ? sdk.positions.healthFactor(snapshot, { safePrices: true }) : metrics.healthFactor);
268
+ return {
269
+ operations,
270
+ state: {
271
+ totalValue,
272
+ accountDebt: debt,
273
+ leverage: require_sdk_market_math.calcPositionLeverage(totalValue, debt),
274
+ assets,
275
+ quotas: quotas.desiredQuota,
276
+ ...metrics
277
+ },
278
+ calls: callsOf(operations),
279
+ delayed
280
+ };
281
+ }
282
+ /**
283
+ * The redemption config for `token`, when the credit manager offers exactly one.
284
+ *
285
+ * Several configs mean several venues with different delays and outputs, and
286
+ * nothing in the intent says which one was meant.
287
+ */
288
+ async function delayedConfig(sdk, creditAccount, token) {
289
+ const compressor = sdk.withdrawalCompressor;
290
+ if (!compressor) throw new require_sdk_accounts_intents_types.IntentPreviewError("noDelayedRoute", "request: chain has no withdrawal compressor");
291
+ const assets = await compressor.findWithdrawableAssets(creditAccount.creditManager, token);
292
+ if (assets.length === 0) throw new require_sdk_accounts_intents_types.IntentPreviewError("noDelayedRoute", `request: ${token} has no delayed withdrawal config`);
293
+ if (assets.length > 1) throw new require_sdk_accounts_intents_types.IntentPreviewError("multipleDelayedWithdrawals", `request: ${token} has ${assets.length} delayed withdrawal configs`);
294
+ return assets[0];
295
+ }
296
+ const callsOf = (operations) => operations.flatMap((op) => op.calls);
297
+ const min = (a, b) => a < b ? a : b;
298
+ /** Balance the router's close path refuses to route, and leaves in place. */
299
+ const DUST = 10n;
300
+ //#endregion
301
+ exports.realize = realize;