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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (444) hide show
  1. package/dist/cjs/abi/iExpirable.js +15 -0
  2. package/dist/cjs/common-utils/utils/apy/get-single-quota-borrow-rate.js +2 -0
  3. package/dist/cjs/common-utils/utils/creditAccount/calc-health-factor.js +24 -22
  4. package/dist/cjs/common-utils/utils/creditAccount/calc-quota-borrow-rate.js +2 -0
  5. package/dist/cjs/common-utils/utils/creditAccount/get-time-to-liquidation.js +8 -5
  6. package/dist/cjs/common-utils/utils/creditAccount/liquidation-price.js +21 -11
  7. package/dist/cjs/dev/AccountOpener.js +0 -1
  8. package/dist/cjs/dev/compareOpportunities.js +218 -0
  9. package/dist/cjs/model/charts.js +147 -0
  10. package/dist/cjs/model/charts.schema.js +240 -0
  11. package/dist/cjs/model/index.js +35 -22
  12. package/dist/cjs/model/liquidations.schema.js +1 -1
  13. package/dist/cjs/model/notices.schema.js +25 -0
  14. package/dist/cjs/model/opportunities.schema.js +1 -1
  15. package/dist/cjs/model/positions.schema.js +48 -2
  16. package/dist/cjs/new-sdk/AbstractNamespace.js +34 -4
  17. package/dist/cjs/new-sdk/GearboxSDK.js +72 -3
  18. package/dist/cjs/new-sdk/execute/ExecuteApi.js +95 -0
  19. package/dist/cjs/new-sdk/execute/index.js +3 -0
  20. package/dist/cjs/new-sdk/index.js +7 -0
  21. package/dist/cjs/new-sdk/opportunities/OpportunitiesNamespace.js +29 -6
  22. package/dist/cjs/new-sdk/positions/PositionsNamespace.js +3 -6
  23. package/dist/cjs/new-sdk/simulate/SimulateApi.js +361 -0
  24. package/dist/cjs/new-sdk/simulate/index.js +4 -0
  25. package/dist/cjs/new-sdk/utils/index.js +0 -1
  26. package/dist/cjs/offchain/AbstractOffchainNamespace.js +10 -7
  27. package/dist/cjs/offchain/GearboxAPI.js +7 -0
  28. package/dist/cjs/offchain/index.js +3 -0
  29. package/dist/cjs/offchain/notices/OffchainNotices.js +27 -0
  30. package/dist/cjs/offchain/notices/index.js +3 -0
  31. package/dist/cjs/offchain/opportunities/OffchainOpportunities.js +4 -8
  32. package/dist/cjs/offchain/positions/OffchainPositions.js +12 -12
  33. package/dist/cjs/preview/preview/CreditAccountState.js +14 -1
  34. package/dist/cjs/preview/preview/buildDelayedPreview.js +16 -6
  35. package/dist/cjs/preview/preview/previewAdjustCreditAccount.js +9 -2
  36. package/dist/cjs/preview/preview/previewOpenCreditAccount.js +11 -3
  37. package/dist/cjs/preview/preview/previewOperation.js +1 -1
  38. package/dist/cjs/sdk/MultichainSDK.js +3 -4
  39. package/dist/cjs/sdk/OnchainSDK.js +42 -13
  40. package/dist/cjs/sdk/accounts/CreditAccountsServiceV310.js +2 -8
  41. package/dist/cjs/sdk/accounts/credit-account-compressor/CreditAccountCompressor.js +2 -90
  42. package/dist/cjs/sdk/accounts/index.js +5 -2
  43. package/dist/cjs/sdk/accounts/intents/guards.js +114 -0
  44. package/dist/cjs/sdk/accounts/intents/index.js +216 -358
  45. package/dist/cjs/sdk/accounts/intents/math.js +56 -0
  46. package/dist/cjs/sdk/accounts/intents/open-strategy.js +133 -0
  47. package/dist/cjs/sdk/accounts/intents/operations.js +165 -0
  48. package/dist/cjs/sdk/accounts/intents/plan.js +373 -0
  49. package/dist/cjs/sdk/accounts/intents/realize.js +301 -0
  50. package/dist/cjs/sdk/accounts/intents/testing/delayed.js +50 -0
  51. package/dist/cjs/sdk/accounts/intents/testing/market.js +166 -0
  52. package/dist/cjs/sdk/accounts/intents/testing/sdk-mock.js +194 -35
  53. package/dist/cjs/sdk/accounts/intents/tests/add-collateral.fixtures.js +123 -0
  54. package/dist/cjs/sdk/accounts/intents/tests/adjust-leverage.fixtures.js +254 -0
  55. package/dist/cjs/sdk/accounts/intents/tests/deposit.fixtures.js +324 -0
  56. package/dist/cjs/sdk/accounts/intents/tests/finish-decrease-leverage.fixtures.js +242 -0
  57. package/dist/cjs/sdk/accounts/intents/tests/finish-withdraw.fixtures.js +383 -0
  58. package/dist/cjs/sdk/accounts/intents/tests/open-strategy.fixtures.js +133 -0
  59. package/dist/cjs/sdk/accounts/intents/tests/withdraw-asset.fixtures.js +131 -0
  60. package/dist/cjs/sdk/accounts/intents/tests/withdraw.fixtures.js +426 -0
  61. package/dist/cjs/sdk/accounts/intents/types.js +16 -0
  62. package/dist/cjs/sdk/accounts/intents/utils/adjust-state-to-snapshot.js +18 -0
  63. package/dist/cjs/sdk/accounts/intents/utils/credit-account-slice.js +45 -0
  64. package/dist/cjs/sdk/accounts/intents/utils/index.js +17 -8
  65. package/dist/cjs/sdk/accounts/intents/utils/ledger.js +94 -0
  66. package/dist/cjs/sdk/accounts/intents/utils/pick-token.js +72 -0
  67. package/dist/cjs/sdk/accounts/intents/utils/quotas-for-update.js +27 -0
  68. package/dist/cjs/sdk/accounts/intents/utils/router-path.js +86 -0
  69. package/dist/cjs/sdk/accounts/intents/view.js +38 -0
  70. package/dist/cjs/sdk/accounts/liquidations/LiquidationsService.js +0 -3
  71. package/dist/cjs/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.js +29 -18
  72. package/dist/cjs/sdk/base/BaseContract.js +1 -1
  73. package/dist/cjs/sdk/base/TokensMeta.js +78 -27
  74. package/dist/cjs/sdk/index.js +30 -7
  75. package/dist/cjs/sdk/market/MarketRegister.js +16 -7
  76. package/dist/cjs/sdk/market/ZapperRegister.js +56 -25
  77. package/dist/cjs/sdk/market/credit/CreditManagerV310Contract.js +1 -12
  78. package/dist/cjs/sdk/market/credit/CreditSuite.js +28 -9
  79. package/dist/cjs/sdk/market/credit/index.js +3 -0
  80. package/dist/cjs/sdk/market/credit/isStrategyCollateral.js +50 -0
  81. package/dist/cjs/sdk/market/index.js +17 -0
  82. package/dist/cjs/sdk/market/math.js +57 -44
  83. package/dist/cjs/sdk/market/oracle/PriceOracleBaseContract.js +10 -3
  84. package/dist/cjs/sdk/market/pool/PoolV310Contract.js +15 -1
  85. package/dist/cjs/sdk/market/rwa/RWARegistry.js +22 -0
  86. package/dist/cjs/sdk/opportunities/index.js +0 -13
  87. package/dist/cjs/sdk/options.js +1 -5
  88. package/dist/cjs/sdk/pools/PoolService.js +132 -3
  89. package/dist/cjs/sdk/pools/index.js +2 -0
  90. package/dist/cjs/sdk/positions/PositionsService.js +213 -1
  91. package/dist/cjs/sdk/positions/calcBorrowRate.js +43 -0
  92. package/dist/cjs/sdk/positions/calcHealthFactor.js +52 -0
  93. package/dist/cjs/sdk/positions/calcLiquidationPrice.js +23 -0
  94. package/dist/cjs/sdk/positions/calcLiquidationPriceForTarget.js +30 -0
  95. package/dist/cjs/sdk/positions/calcTimeToLiquidationMs.js +19 -0
  96. package/dist/cjs/sdk/positions/index.js +12 -1
  97. package/dist/cjs/sdk/positions/types.js +31 -0
  98. package/dist/cjs/sdk/utils/abi-decode.js +2 -2
  99. package/dist/cjs/sdk/utils/viem/executeMulticallBatches.js +32 -0
  100. package/dist/cjs/sdk/utils/viem/index.js +2 -0
  101. package/dist/esm/abi/iExpirable.js +14 -0
  102. package/dist/esm/common-utils/utils/apy/get-single-quota-borrow-rate.js +2 -0
  103. package/dist/esm/common-utils/utils/creditAccount/calc-health-factor.js +24 -22
  104. package/dist/esm/common-utils/utils/creditAccount/calc-quota-borrow-rate.js +2 -0
  105. package/dist/esm/common-utils/utils/creditAccount/get-time-to-liquidation.js +8 -5
  106. package/dist/esm/common-utils/utils/creditAccount/liquidation-price.js +21 -11
  107. package/dist/esm/dev/AccountOpener.js +1 -2
  108. package/dist/esm/dev/compareOpportunities.js +216 -0
  109. package/dist/esm/dev/withdrawalUtils.js +1 -1
  110. package/dist/esm/model/charts.js +140 -0
  111. package/dist/esm/model/charts.schema.js +226 -0
  112. package/dist/esm/model/index.js +9 -7
  113. package/dist/esm/model/liquidations.schema.js +1 -1
  114. package/dist/esm/model/notices.schema.js +23 -0
  115. package/dist/esm/model/opportunities.schema.js +1 -1
  116. package/dist/esm/model/positions.schema.js +46 -4
  117. package/dist/esm/new-sdk/AbstractNamespace.js +34 -4
  118. package/dist/esm/new-sdk/GearboxSDK.js +72 -4
  119. package/dist/esm/new-sdk/execute/ExecuteApi.js +94 -0
  120. package/dist/esm/new-sdk/execute/index.js +2 -0
  121. package/dist/esm/new-sdk/index.js +6 -2
  122. package/dist/esm/new-sdk/opportunities/OpportunitiesNamespace.js +29 -6
  123. package/dist/esm/new-sdk/positions/PositionsNamespace.js +3 -6
  124. package/dist/esm/new-sdk/simulate/SimulateApi.js +360 -0
  125. package/dist/esm/new-sdk/simulate/index.js +3 -0
  126. package/dist/esm/new-sdk/utils/index.js +0 -1
  127. package/dist/esm/offchain/AbstractOffchainNamespace.js +10 -7
  128. package/dist/esm/offchain/GearboxAPI.js +7 -0
  129. package/dist/esm/offchain/index.js +3 -1
  130. package/dist/esm/offchain/notices/OffchainNotices.js +26 -0
  131. package/dist/esm/offchain/notices/index.js +2 -0
  132. package/dist/esm/offchain/opportunities/OffchainOpportunities.js +4 -8
  133. package/dist/esm/offchain/positions/OffchainPositions.js +12 -12
  134. package/dist/esm/plugins/adapters/contracts/ERC4626AdapterContract.js +1 -1
  135. package/dist/esm/preview/preview/CreditAccountState.js +14 -1
  136. package/dist/esm/preview/preview/buildDelayedPreview.js +16 -6
  137. package/dist/esm/preview/preview/previewAdjustCreditAccount.js +9 -2
  138. package/dist/esm/preview/preview/previewOpenCreditAccount.js +11 -3
  139. package/dist/esm/preview/preview/previewOperation.js +1 -1
  140. package/dist/esm/preview/simulate/simulatePoolOperation.js +1 -1
  141. package/dist/esm/preview/trace/extractTransfers.js +1 -1
  142. package/dist/esm/sdk/MultichainSDK.js +3 -4
  143. package/dist/esm/sdk/OnchainSDK.js +42 -13
  144. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +4 -10
  145. package/dist/esm/sdk/accounts/credit-account-compressor/CreditAccountCompressor.js +2 -90
  146. package/dist/esm/sdk/accounts/index.js +3 -2
  147. package/dist/esm/sdk/accounts/intents/guards.js +108 -0
  148. package/dist/esm/sdk/accounts/intents/index.js +214 -358
  149. package/dist/esm/sdk/accounts/intents/math.js +51 -0
  150. package/dist/esm/sdk/accounts/intents/open-strategy.js +132 -0
  151. package/dist/esm/sdk/accounts/intents/operations.js +153 -0
  152. package/dist/esm/sdk/accounts/intents/plan.js +361 -0
  153. package/dist/esm/sdk/accounts/intents/realize.js +300 -0
  154. package/dist/esm/sdk/accounts/intents/testing/delayed.js +38 -0
  155. package/dist/esm/sdk/accounts/intents/testing/market.js +148 -0
  156. package/dist/esm/sdk/accounts/intents/testing/sdk-mock.js +194 -35
  157. package/dist/esm/sdk/accounts/intents/tests/add-collateral.fixtures.js +110 -0
  158. package/dist/esm/sdk/accounts/intents/tests/adjust-leverage.fixtures.js +234 -0
  159. package/dist/esm/sdk/accounts/intents/tests/deposit.fixtures.js +302 -0
  160. package/dist/esm/sdk/accounts/intents/tests/finish-decrease-leverage.fixtures.js +220 -0
  161. package/dist/esm/sdk/accounts/intents/tests/finish-withdraw.fixtures.js +355 -0
  162. package/dist/esm/sdk/accounts/intents/tests/open-strategy.fixtures.js +119 -0
  163. package/dist/esm/sdk/accounts/intents/tests/withdraw-asset.fixtures.js +117 -0
  164. package/dist/esm/sdk/accounts/intents/tests/withdraw.fixtures.js +402 -0
  165. package/dist/esm/sdk/accounts/intents/types.js +16 -1
  166. package/dist/esm/sdk/accounts/intents/utils/adjust-state-to-snapshot.js +17 -0
  167. package/dist/esm/sdk/accounts/intents/utils/credit-account-slice.js +43 -0
  168. package/dist/esm/sdk/accounts/intents/utils/index.js +9 -7
  169. package/dist/esm/sdk/accounts/intents/utils/ledger.js +93 -0
  170. package/dist/esm/sdk/accounts/intents/utils/pick-token.js +68 -0
  171. package/dist/esm/sdk/accounts/intents/utils/quotas-for-update.js +27 -1
  172. package/dist/esm/sdk/accounts/intents/utils/router-path.js +85 -0
  173. package/dist/esm/sdk/accounts/intents/view.js +37 -0
  174. package/dist/esm/sdk/accounts/liquidations/LiquidationsService.js +1 -4
  175. package/dist/esm/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.js +29 -18
  176. package/dist/esm/sdk/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -1
  177. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -1
  178. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -1
  179. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
  180. package/dist/esm/sdk/base/BaseContract.js +1 -1
  181. package/dist/esm/sdk/base/TokensMeta.js +80 -29
  182. package/dist/esm/sdk/chain/detectNetwork.js +1 -1
  183. package/dist/esm/sdk/core/createAddressProvider.js +1 -1
  184. package/dist/esm/sdk/index.js +13 -4
  185. package/dist/esm/sdk/market/MarketRegister.js +16 -7
  186. package/dist/esm/sdk/market/ZapperRegister.js +56 -25
  187. package/dist/esm/sdk/market/credit/CreditFacadeV310BaseContract.js +1 -1
  188. package/dist/esm/sdk/market/credit/CreditManagerV310Contract.js +2 -13
  189. package/dist/esm/sdk/market/credit/CreditSuite.js +29 -10
  190. package/dist/esm/sdk/market/credit/index.js +2 -1
  191. package/dist/esm/sdk/market/credit/isStrategyCollateral.js +48 -0
  192. package/dist/esm/sdk/market/index.js +3 -1
  193. package/dist/esm/sdk/market/math.js +52 -40
  194. package/dist/esm/sdk/market/oracle/PriceOracleBaseContract.js +10 -3
  195. package/dist/esm/sdk/market/pool/PoolV310Contract.js +17 -3
  196. package/dist/esm/sdk/market/rwa/RWARegistry.js +22 -0
  197. package/dist/esm/sdk/market/zapper/IETHZapperContract.js +1 -1
  198. package/dist/esm/sdk/market/zapper/ZapperContract.js +1 -1
  199. package/dist/esm/sdk/opportunities/index.js +1 -2
  200. package/dist/esm/sdk/options.js +1 -5
  201. package/dist/esm/sdk/pools/PoolService.js +133 -6
  202. package/dist/esm/sdk/pools/index.js +2 -2
  203. package/dist/esm/sdk/positions/PositionsService.js +213 -1
  204. package/dist/esm/sdk/positions/calcBorrowRate.js +42 -0
  205. package/dist/esm/sdk/positions/calcHealthFactor.js +51 -0
  206. package/dist/esm/sdk/positions/calcLiquidationPrice.js +22 -0
  207. package/dist/esm/sdk/positions/calcLiquidationPriceForTarget.js +29 -0
  208. package/dist/esm/sdk/positions/calcTimeToLiquidationMs.js +18 -0
  209. package/dist/esm/sdk/positions/index.js +7 -2
  210. package/dist/esm/sdk/positions/types.js +31 -1
  211. package/dist/esm/sdk/utils/abi-decode.js +2 -2
  212. package/dist/esm/sdk/utils/viem/executeMulticallBatches.js +31 -0
  213. package/dist/esm/sdk/utils/viem/index.js +2 -1
  214. package/dist/esm/sdk/utils/viem/simulateWithPriceUpdates.js +1 -1
  215. package/dist/types/abi/iExpirable.d.ts +14 -0
  216. package/dist/types/common-utils/utils/apy/get-single-quota-borrow-rate.d.ts +2 -0
  217. package/dist/types/common-utils/utils/creditAccount/calc-health-factor.d.ts +3 -0
  218. package/dist/types/common-utils/utils/creditAccount/calc-quota-borrow-rate.d.ts +2 -0
  219. package/dist/types/common-utils/utils/creditAccount/get-time-to-liquidation.d.ts +6 -1
  220. package/dist/types/common-utils/utils/creditAccount/liquidation-price.d.ts +3 -0
  221. package/dist/types/dev/compareOpportunities.d.ts +153 -0
  222. package/dist/types/model/charts.d.ts +349 -0
  223. package/dist/types/model/charts.schema.d.ts +364 -0
  224. package/dist/types/model/index.d.ts +8 -6
  225. package/dist/types/model/notices.d.ts +29 -0
  226. package/dist/types/model/notices.schema.d.ts +23 -0
  227. package/dist/types/model/opportunities.d.ts +9 -9
  228. package/dist/types/model/positions.d.ts +133 -7
  229. package/dist/types/model/positions.schema.d.ts +128 -1
  230. package/dist/types/new-sdk/AbstractNamespace.d.ts +15 -2
  231. package/dist/types/new-sdk/GearboxSDK.d.ts +14 -2
  232. package/dist/types/new-sdk/execute/ExecuteApi.d.ts +108 -0
  233. package/dist/types/new-sdk/execute/index.d.ts +2 -0
  234. package/dist/types/new-sdk/index.d.ts +8 -4
  235. package/dist/types/new-sdk/opportunities/OpportunitiesNamespace.d.ts +19 -7
  236. package/dist/types/new-sdk/opportunities/types.d.ts +30 -9
  237. package/dist/types/new-sdk/positions/PositionsNamespace.d.ts +4 -5
  238. package/dist/types/new-sdk/positions/types.d.ts +9 -9
  239. package/dist/types/new-sdk/simulate/SimulateApi.d.ts +90 -0
  240. package/dist/types/new-sdk/simulate/index.d.ts +3 -0
  241. package/dist/types/new-sdk/simulate/types.d.ts +508 -0
  242. package/dist/types/new-sdk/types.d.ts +35 -1
  243. package/dist/types/new-sdk/utils/index.d.ts +1 -2
  244. package/dist/types/offchain/AbstractOffchainNamespace.d.ts +5 -21
  245. package/dist/types/offchain/GearboxAPI.d.ts +6 -0
  246. package/dist/types/offchain/index.d.ts +4 -2
  247. package/dist/types/offchain/notices/OffchainNotices.d.ts +19 -0
  248. package/dist/types/offchain/notices/index.d.ts +2 -0
  249. package/dist/types/offchain/opportunities/OffchainOpportunities.d.ts +8 -4
  250. package/dist/types/offchain/positions/OffchainPositions.d.ts +8 -6
  251. package/dist/types/preview/preview/CreditAccountState.d.ts +6 -0
  252. package/dist/types/preview/preview/buildDelayedPreview.d.ts +5 -1
  253. package/dist/types/preview/preview/types.d.ts +4 -2
  254. package/dist/types/sdk/MultichainSDK.d.ts +0 -5
  255. package/dist/types/sdk/OnchainSDK.d.ts +1 -5
  256. package/dist/types/sdk/accounts/CreditAccountsServiceV310.d.ts +1 -7
  257. package/dist/types/sdk/accounts/credit-account-compressor/CreditAccountCompressor.d.ts +3 -12
  258. package/dist/types/sdk/accounts/credit-account-compressor/index.d.ts +2 -2
  259. package/dist/types/sdk/accounts/credit-account-compressor/types.d.ts +1 -19
  260. package/dist/types/sdk/accounts/index.d.ts +7 -5
  261. package/dist/types/sdk/accounts/intents/guards.d.ts +72 -0
  262. package/dist/types/sdk/accounts/intents/index.d.ts +130 -15
  263. package/dist/types/sdk/accounts/intents/math.d.ts +46 -0
  264. package/dist/types/sdk/accounts/intents/open-strategy.d.ts +64 -0
  265. package/dist/types/sdk/accounts/intents/operations.d.ts +215 -0
  266. package/dist/types/sdk/accounts/intents/plan.d.ts +189 -0
  267. package/dist/types/sdk/accounts/intents/realize.d.ts +35 -0
  268. package/dist/types/sdk/accounts/intents/testing/delayed.d.ts +50 -0
  269. package/dist/types/sdk/accounts/intents/testing/expect.d.ts +17 -21
  270. package/dist/types/sdk/accounts/intents/testing/market.d.ts +91 -0
  271. package/dist/types/sdk/accounts/intents/testing/sdk-mock.d.ts +64 -16
  272. package/dist/types/sdk/accounts/intents/tests/add-collateral.fixtures.d.ts +45 -0
  273. package/dist/types/sdk/accounts/intents/tests/adjust-leverage.fixtures.d.ts +56 -0
  274. package/dist/types/sdk/accounts/intents/tests/deposit.fixtures.d.ts +64 -0
  275. package/dist/types/sdk/accounts/intents/tests/finish-decrease-leverage.fixtures.d.ts +107 -0
  276. package/dist/types/sdk/accounts/intents/tests/finish-withdraw.fixtures.d.ts +136 -0
  277. package/dist/types/sdk/accounts/intents/tests/open-strategy.fixtures.d.ts +56 -0
  278. package/dist/types/sdk/accounts/intents/tests/withdraw-asset.fixtures.d.ts +60 -0
  279. package/dist/types/sdk/accounts/intents/tests/withdraw.fixtures.d.ts +79 -0
  280. package/dist/types/sdk/accounts/intents/types.d.ts +369 -43
  281. package/dist/types/sdk/accounts/intents/utils/adjust-state-to-snapshot.d.ts +13 -0
  282. package/dist/types/sdk/accounts/intents/utils/assemble-operation-calls.d.ts +1 -1
  283. package/dist/types/sdk/accounts/intents/utils/credit-account-slice.d.ts +29 -0
  284. package/dist/types/sdk/accounts/intents/utils/index.d.ts +7 -5
  285. package/dist/types/sdk/accounts/intents/utils/ledger.d.ts +41 -0
  286. package/dist/types/sdk/accounts/intents/utils/pick-token.d.ts +55 -0
  287. package/dist/types/sdk/accounts/intents/utils/quotas-for-update.d.ts +15 -4
  288. package/dist/types/sdk/accounts/intents/utils/router-path.d.ts +70 -0
  289. package/dist/types/sdk/accounts/intents/view.d.ts +15 -0
  290. package/dist/types/sdk/accounts/types.d.ts +17 -14
  291. package/dist/types/sdk/accounts/withdrawal-compressor/AbstractWithdrawalCompressorContract.d.ts +6 -0
  292. package/dist/types/sdk/accounts/withdrawal-compressor/types.d.ts +18 -0
  293. package/dist/types/sdk/base/TokensMeta.d.ts +44 -1
  294. package/dist/types/sdk/base/index.d.ts +2 -2
  295. package/dist/types/sdk/base/token-types.d.ts +12 -1
  296. package/dist/types/sdk/index.d.ts +28 -19
  297. package/dist/types/sdk/market/MarketRegister.d.ts +7 -3
  298. package/dist/types/sdk/market/ZapperRegister.d.ts +20 -2
  299. package/dist/types/sdk/market/credit/CreditManagerV310Contract.d.ts +0 -4
  300. package/dist/types/sdk/market/credit/CreditSuite.d.ts +6 -3
  301. package/dist/types/sdk/market/credit/index.d.ts +2 -1
  302. package/dist/types/sdk/market/credit/isStrategyCollateral.d.ts +74 -0
  303. package/dist/types/sdk/market/credit/types.d.ts +2 -9
  304. package/dist/types/sdk/market/index.d.ts +4 -2
  305. package/dist/types/sdk/market/math.d.ts +44 -34
  306. package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +6 -2
  307. package/dist/types/sdk/market/oracle/types.d.ts +10 -2
  308. package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +5 -0
  309. package/dist/types/sdk/market/pool/types.d.ts +5 -0
  310. package/dist/types/sdk/market/rwa/RWARegistry.d.ts +13 -0
  311. package/dist/types/sdk/market/types.d.ts +5 -1
  312. package/dist/types/sdk/opportunities/index.d.ts +1 -2
  313. package/dist/types/sdk/options.d.ts +0 -1
  314. package/dist/types/sdk/pools/PoolService.d.ts +32 -2
  315. package/dist/types/sdk/pools/index.d.ts +3 -3
  316. package/dist/types/sdk/pools/types.d.ts +109 -4
  317. package/dist/types/sdk/positions/PositionsService.d.ts +33 -2
  318. package/dist/types/sdk/positions/calcBorrowRate.d.ts +40 -0
  319. package/dist/types/sdk/positions/calcHealthFactor.d.ts +55 -0
  320. package/dist/types/sdk/positions/calcLiquidationPrice.d.ts +12 -0
  321. package/dist/types/sdk/positions/calcLiquidationPriceForTarget.d.ts +43 -0
  322. package/dist/types/sdk/positions/calcTimeToLiquidationMs.d.ts +16 -0
  323. package/dist/types/sdk/positions/index.d.ts +7 -2
  324. package/dist/types/sdk/positions/types.d.ts +58 -1
  325. package/dist/types/sdk/types/state.d.ts +6 -0
  326. package/dist/types/sdk/utils/viem/executeMulticallBatches.d.ts +39 -0
  327. package/dist/types/sdk/utils/viem/index.d.ts +3 -2
  328. package/package.json +2 -1
  329. package/dist/cjs/model/history.js +0 -53
  330. package/dist/cjs/model/history.schema.js +0 -128
  331. package/dist/cjs/sdk/accounts/intents/intents/index.js +0 -14
  332. package/dist/cjs/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.fixtures.js +0 -121
  333. package/dist/cjs/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.js +0 -15
  334. package/dist/cjs/sdk/accounts/intents/intents/resume/close/close.fixtures.js +0 -108
  335. package/dist/cjs/sdk/accounts/intents/intents/resume/close/close.js +0 -51
  336. package/dist/cjs/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.fixtures.js +0 -130
  337. package/dist/cjs/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.js +0 -83
  338. package/dist/cjs/sdk/accounts/intents/intents/resume/deposit/deposit.fixtures.js +0 -117
  339. package/dist/cjs/sdk/accounts/intents/intents/resume/deposit/deposit.js +0 -15
  340. package/dist/cjs/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.fixtures.js +0 -95
  341. package/dist/cjs/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.js +0 -15
  342. package/dist/cjs/sdk/accounts/intents/intents/resume/index.js +0 -13
  343. package/dist/cjs/sdk/accounts/intents/intents/resume/withdraw/withdraw.fixtures.js +0 -138
  344. package/dist/cjs/sdk/accounts/intents/intents/resume/withdraw/withdraw.js +0 -161
  345. package/dist/cjs/sdk/accounts/intents/operations/add-collateral/index.js +0 -17
  346. package/dist/cjs/sdk/accounts/intents/operations/claim-delayed/index.js +0 -54
  347. package/dist/cjs/sdk/accounts/intents/operations/close-credit-account/index.js +0 -26
  348. package/dist/cjs/sdk/accounts/intents/operations/decrease-debt/index.js +0 -12
  349. package/dist/cjs/sdk/accounts/intents/operations/increase-debt/index.js +0 -12
  350. package/dist/cjs/sdk/accounts/intents/operations/index.js +0 -27
  351. package/dist/cjs/sdk/accounts/intents/operations/quota-update/index.js +0 -22
  352. package/dist/cjs/sdk/accounts/intents/operations/repay-credit-account/index.js +0 -22
  353. package/dist/cjs/sdk/accounts/intents/operations/start-delayed-withdrawal/index.js +0 -18
  354. package/dist/cjs/sdk/accounts/intents/operations/swap/index.js +0 -18
  355. package/dist/cjs/sdk/accounts/intents/operations/unwrap-rwa-collateral/index.js +0 -27
  356. package/dist/cjs/sdk/accounts/intents/operations/withdraw-collateral/index.js +0 -43
  357. package/dist/cjs/sdk/accounts/intents/operations/wrap-rwa-collateral/index.js +0 -27
  358. package/dist/cjs/sdk/accounts/intents/quoters/close.js +0 -58
  359. package/dist/cjs/sdk/accounts/intents/quoters/index.js +0 -7
  360. package/dist/cjs/sdk/accounts/intents/quoters/swap.js +0 -79
  361. package/dist/cjs/sdk/accounts/intents/testing/expect.js +0 -167
  362. package/dist/cjs/sdk/accounts/intents/testing/resume.js +0 -172
  363. package/dist/cjs/sdk/accounts/intents/utils/simulate-adjust-state.js +0 -39
  364. package/dist/cjs/sdk/accounts/intents/utils/simulate-assets.js +0 -69
  365. package/dist/cjs/sdk/accounts/intents/utils/with-quota-update.js +0 -13
  366. package/dist/esm/model/history.js +0 -49
  367. package/dist/esm/model/history.schema.js +0 -116
  368. package/dist/esm/sdk/accounts/intents/intents/index.js +0 -8
  369. package/dist/esm/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.fixtures.js +0 -107
  370. package/dist/esm/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.js +0 -14
  371. package/dist/esm/sdk/accounts/intents/intents/resume/close/close.fixtures.js +0 -94
  372. package/dist/esm/sdk/accounts/intents/intents/resume/close/close.js +0 -50
  373. package/dist/esm/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.fixtures.js +0 -114
  374. package/dist/esm/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.js +0 -82
  375. package/dist/esm/sdk/accounts/intents/intents/resume/deposit/deposit.fixtures.js +0 -110
  376. package/dist/esm/sdk/accounts/intents/intents/resume/deposit/deposit.js +0 -14
  377. package/dist/esm/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.fixtures.js +0 -88
  378. package/dist/esm/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.js +0 -14
  379. package/dist/esm/sdk/accounts/intents/intents/resume/index.js +0 -7
  380. package/dist/esm/sdk/accounts/intents/intents/resume/withdraw/withdraw.fixtures.js +0 -121
  381. package/dist/esm/sdk/accounts/intents/intents/resume/withdraw/withdraw.js +0 -160
  382. package/dist/esm/sdk/accounts/intents/operations/add-collateral/index.js +0 -16
  383. package/dist/esm/sdk/accounts/intents/operations/claim-delayed/index.js +0 -52
  384. package/dist/esm/sdk/accounts/intents/operations/close-credit-account/index.js +0 -25
  385. package/dist/esm/sdk/accounts/intents/operations/decrease-debt/index.js +0 -11
  386. package/dist/esm/sdk/accounts/intents/operations/increase-debt/index.js +0 -11
  387. package/dist/esm/sdk/accounts/intents/operations/index.js +0 -14
  388. package/dist/esm/sdk/accounts/intents/operations/quota-update/index.js +0 -21
  389. package/dist/esm/sdk/accounts/intents/operations/repay-credit-account/index.js +0 -21
  390. package/dist/esm/sdk/accounts/intents/operations/start-delayed-withdrawal/index.js +0 -17
  391. package/dist/esm/sdk/accounts/intents/operations/swap/index.js +0 -17
  392. package/dist/esm/sdk/accounts/intents/operations/unwrap-rwa-collateral/index.js +0 -26
  393. package/dist/esm/sdk/accounts/intents/operations/withdraw-collateral/index.js +0 -42
  394. package/dist/esm/sdk/accounts/intents/operations/wrap-rwa-collateral/index.js +0 -26
  395. package/dist/esm/sdk/accounts/intents/quoters/close.js +0 -56
  396. package/dist/esm/sdk/accounts/intents/quoters/index.js +0 -3
  397. package/dist/esm/sdk/accounts/intents/quoters/swap.js +0 -77
  398. package/dist/esm/sdk/accounts/intents/testing/expect.js +0 -162
  399. package/dist/esm/sdk/accounts/intents/testing/resume.js +0 -157
  400. package/dist/esm/sdk/accounts/intents/utils/simulate-adjust-state.js +0 -38
  401. package/dist/esm/sdk/accounts/intents/utils/simulate-assets.js +0 -68
  402. package/dist/esm/sdk/accounts/intents/utils/with-quota-update.js +0 -12
  403. package/dist/types/model/history.d.ts +0 -153
  404. package/dist/types/model/history.schema.d.ts +0 -95
  405. package/dist/types/new-sdk/utils/history.d.ts +0 -18
  406. package/dist/types/sdk/accounts/intents/intents/index.d.ts +0 -8
  407. package/dist/types/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.d.ts +0 -13
  408. package/dist/types/sdk/accounts/intents/intents/resume/add-collateral/add-collateral.fixtures.d.ts +0 -38
  409. package/dist/types/sdk/accounts/intents/intents/resume/close/close.d.ts +0 -26
  410. package/dist/types/sdk/accounts/intents/intents/resume/close/close.fixtures.d.ts +0 -63
  411. package/dist/types/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.d.ts +0 -26
  412. package/dist/types/sdk/accounts/intents/intents/resume/decrease-leverage/decrease-leverage.fixtures.d.ts +0 -86
  413. package/dist/types/sdk/accounts/intents/intents/resume/deposit/deposit.d.ts +0 -13
  414. package/dist/types/sdk/accounts/intents/intents/resume/deposit/deposit.fixtures.d.ts +0 -48
  415. package/dist/types/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.d.ts +0 -13
  416. package/dist/types/sdk/accounts/intents/intents/resume/increase-leverage/increase-leverage.fixtures.d.ts +0 -46
  417. package/dist/types/sdk/accounts/intents/intents/resume/index.d.ts +0 -7
  418. package/dist/types/sdk/accounts/intents/intents/resume/withdraw/withdraw.d.ts +0 -33
  419. package/dist/types/sdk/accounts/intents/intents/resume/withdraw/withdraw.fixtures.d.ts +0 -68
  420. package/dist/types/sdk/accounts/intents/operations/add-collateral/index.d.ts +0 -23
  421. package/dist/types/sdk/accounts/intents/operations/claim-delayed/index.d.ts +0 -55
  422. package/dist/types/sdk/accounts/intents/operations/close-credit-account/index.d.ts +0 -22
  423. package/dist/types/sdk/accounts/intents/operations/decrease-debt/index.d.ts +0 -18
  424. package/dist/types/sdk/accounts/intents/operations/increase-debt/index.d.ts +0 -18
  425. package/dist/types/sdk/accounts/intents/operations/index.d.ts +0 -14
  426. package/dist/types/sdk/accounts/intents/operations/quota-update/index.d.ts +0 -24
  427. package/dist/types/sdk/accounts/intents/operations/repay-credit-account/index.d.ts +0 -31
  428. package/dist/types/sdk/accounts/intents/operations/start-delayed-withdrawal/index.d.ts +0 -23
  429. package/dist/types/sdk/accounts/intents/operations/swap/index.d.ts +0 -28
  430. package/dist/types/sdk/accounts/intents/operations/types.d.ts +0 -21
  431. package/dist/types/sdk/accounts/intents/operations/unwrap-rwa-collateral/index.d.ts +0 -30
  432. package/dist/types/sdk/accounts/intents/operations/withdraw-collateral/index.d.ts +0 -36
  433. package/dist/types/sdk/accounts/intents/operations/wrap-rwa-collateral/index.d.ts +0 -30
  434. package/dist/types/sdk/accounts/intents/quoters/close.d.ts +0 -43
  435. package/dist/types/sdk/accounts/intents/quoters/index.d.ts +0 -3
  436. package/dist/types/sdk/accounts/intents/quoters/swap.d.ts +0 -43
  437. package/dist/types/sdk/accounts/intents/testing/resume.d.ts +0 -84
  438. package/dist/types/sdk/accounts/intents/utils/simulate-adjust-state.d.ts +0 -19
  439. package/dist/types/sdk/accounts/intents/utils/simulate-assets.d.ts +0 -21
  440. package/dist/types/sdk/accounts/intents/utils/with-quota-update.d.ts +0 -16
  441. /package/dist/cjs/{new-sdk/utils/history.js → model/notices.js} +0 -0
  442. /package/dist/cjs/{sdk/accounts/intents/operations → new-sdk/simulate}/types.js +0 -0
  443. /package/dist/esm/{new-sdk/utils/history.js → model/notices.js} +0 -0
  444. /package/dist/esm/{sdk/accounts/intents/operations → new-sdk/simulate}/types.js +0 -0
@@ -1,4 +1,5 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_abi_iExpirable = require("../../abi/iExpirable.js");
2
3
  const require_abi_iStateSerializer = require("../../abi/iStateSerializer.js");
3
4
  const require_abi_iVersion = require("../../abi/iVersion.js");
4
5
  const require_sdk_utils_AddressMap = require("../utils/AddressMap.js");
@@ -7,6 +8,7 @@ const require_sdk_utils_bytes32ToString = require("../utils/bytes32ToString.js")
7
8
  const require_sdk_chain_chains = require("../chain/chains.js");
8
9
  const require_sdk_utils_formatter = require("../utils/formatter.js");
9
10
  require("../utils/index.js");
11
+ const require_sdk_utils_viem_executeMulticallBatches = require("../utils/viem/executeMulticallBatches.js");
10
12
  //#region src/sdk/base/TokensMeta.ts
11
13
  /**
12
14
  * Registry of token metadata (symbol, decimals, phantom type) keyed by address.
@@ -63,7 +65,7 @@ var TokensMeta = class extends require_sdk_utils_AddressMap.AddressMap {
63
65
  * @returns
64
66
  */
65
67
  isPhantomToken(t) {
66
- if (!this.#tokenDataLoaded.has(t.addr)) throw new Error(`extended token data not loaded for ${t.symbol} (${t.addr})`);
68
+ if (!this.#tokenDataLoaded.has(t.addr)) throw new Error(`extended token data not loaded for ${t.symbol} (${t.addr}), check if the sdk was properly attached or hydrated`);
67
69
  return !!t.contractType?.startsWith("PHANTOM_TOKEN::");
68
70
  }
69
71
  /**
@@ -168,44 +170,93 @@ var TokensMeta = class extends require_sdk_utils_AddressMap.AddressMap {
168
170
  return meta;
169
171
  }
170
172
  /**
173
+ * @internal
174
+ *
175
+ * Returns the multicall batch that loads extended token data (`contractType`
176
+ * and `serialize()`) for the tokens that do not have it yet. Used by the SDK
177
+ * to warm this cache together with other loaders in a single multicall.
178
+ *
179
+ * @param tokens - tokens to load data for, defaults to all tokens
180
+ **/
181
+ getLoadTokenDataMulticall(...tokens) {
182
+ const tokenz = new require_sdk_utils_AddressSet.AddressSet(tokens.length > 0 ? tokens : this.keys());
183
+ const tokensToLoad = Array.from(tokenz.difference(this.#tokenDataLoaded));
184
+ return {
185
+ contracts: tokensToLoad.flatMap((t) => [
186
+ {
187
+ address: t,
188
+ abi: require_abi_iVersion.iVersionAbi,
189
+ functionName: "contractType"
190
+ },
191
+ {
192
+ address: t,
193
+ abi: require_abi_iStateSerializer.iStateSerializerAbi,
194
+ functionName: "serialize"
195
+ },
196
+ {
197
+ address: t,
198
+ abi: require_abi_iExpirable.iExpirableAbi,
199
+ functionName: "isExpired"
200
+ }
201
+ ]),
202
+ onResults: (resps) => {
203
+ this.#logger?.debug(`loaded data of ${tokensToLoad.length} tokens`);
204
+ for (let i = 0; i < tokensToLoad.length; i++) {
205
+ this.#overrideTokenMeta(tokensToLoad[i], resps[3 * i], resps[3 * i + 1], resps[3 * i + 2]);
206
+ this.#tokenDataLoaded.add(tokensToLoad[i]);
207
+ }
208
+ }
209
+ };
210
+ }
211
+ /**
171
212
  * Loads token information about phantom tokens
172
213
  * In future other custom tokens types that do not have compressors might be handled here
173
214
  *
215
+ * Tokens loaded during SDK attach or restored by {@link hydrate} are skipped,
216
+ * so calling this after either is a no-op.
217
+ *
174
218
  * @param tokens - tokens to load data for, defaults to all tokens
175
219
  */
176
220
  async loadTokenData(...tokens) {
177
- const tokenz = new require_sdk_utils_AddressSet.AddressSet(tokens.length > 0 ? tokens : this.keys());
178
- const tokensToLoad = Array.from(tokenz.difference(this.#tokenDataLoaded));
179
- if (tokensToLoad.length === 0) return;
180
- const resp = await this.#client.multicall({
181
- contracts: tokensToLoad.flatMap((t) => [{
182
- address: t,
183
- abi: require_abi_iVersion.iVersionAbi,
184
- functionName: "contractType"
185
- }, {
186
- address: t,
187
- abi: require_abi_iStateSerializer.iStateSerializerAbi,
188
- functionName: "serialize"
189
- }]),
190
- allowFailure: true,
191
- batchSize: 0
192
- });
193
- this.#logger?.debug(`loaded ${resp.length} contract types`);
194
- for (let i = 0; i < tokensToLoad.length; i++) {
195
- this.#overrideTokenMeta(tokensToLoad[i], resp[2 * i], resp[2 * i + 1]);
196
- this.#tokenDataLoaded.add(tokensToLoad[i]);
197
- }
221
+ await require_sdk_utils_viem_executeMulticallBatches.executeMulticallBatches(this.#client, [this.getLoadTokenDataMulticall(...tokens)]);
222
+ }
223
+ /**
224
+ * Serializable snapshot of all token metadata, suitable for hydration.
225
+ **/
226
+ get state() {
227
+ return {
228
+ tokens: this.values(),
229
+ extendedLoaded: this.#tokenDataLoaded.asArray()
230
+ };
198
231
  }
199
- #overrideTokenMeta(token, contractTypeResp, _serializeResp) {
232
+ /**
233
+ * Restores token metadata from a previously serialized snapshot,
234
+ * bypassing on-chain reads.
235
+ *
236
+ * Entries are merged into the ones already registered by markets, zappers and
237
+ * the RWA registry (see {@link upsert}), so the snapshot must be applied last
238
+ * for its augmented fields to win.
239
+ *
240
+ * @param state - Token metadata snapshot.
241
+ **/
242
+ hydrate(state) {
243
+ for (const token of state.tokens) this.upsert(token.addr, token);
244
+ for (const token of state.extendedLoaded) this.#tokenDataLoaded.add(token);
245
+ }
246
+ #overrideTokenMeta(token, contractTypeResp, serializeResp, isExpiredResp) {
200
247
  const meta = this.mustGet(token);
248
+ const update = { ...meta };
201
249
  if (contractTypeResp.status === "success") {
202
250
  const contractType = require_sdk_utils_bytes32ToString.bytes32ToString(contractTypeResp.result);
203
- this.upsert(token, {
204
- ...meta,
205
- contractType
206
- });
251
+ update.contractType = contractType;
252
+ update.serializedParams = serializeResp.status === "success" ? serializeResp.result : void 0;
207
253
  this.#logger?.debug(`token ${meta.symbol} is ${contractType}`);
208
254
  }
255
+ if (isExpiredResp.status === "success") {
256
+ update.isExpired = isExpiredResp.result;
257
+ this.#logger?.debug(`token ${meta.symbol} is expirable, expired: ${isExpiredResp.result}`);
258
+ }
259
+ if (contractTypeResp.status === "success" || isExpiredResp.status === "success") this.upsert(token, update);
209
260
  return this.mustGet(token);
210
261
  }
211
262
  };
@@ -31,6 +31,7 @@ const require_sdk_utils_zod = require("./utils/zod.js");
31
31
  require("./utils/index.js");
32
32
  const require_sdk_utils_viem_cast = require("./utils/viem/cast.js");
33
33
  const require_sdk_utils_viem_simulateCall = require("./utils/viem/simulateCall.js");
34
+ const require_sdk_utils_viem_executeMulticallBatches = require("./utils/viem/executeMulticallBatches.js");
34
35
  const require_sdk_base_TokensMeta = require("./base/TokensMeta.js");
35
36
  const require_sdk_base_ChainContractsRegister = require("./base/ChainContractsRegister.js");
36
37
  const require_sdk_base_Construct = require("./base/Construct.js");
@@ -52,6 +53,7 @@ const require_sdk_market_credit_CreditFacadeV310Contract = require("./market/cre
52
53
  const require_sdk_market_math = require("./market/math.js");
53
54
  const require_sdk_market_credit_CreditManagerV310Contract = require("./market/credit/CreditManagerV310Contract.js");
54
55
  const require_sdk_market_credit_dominantCollateral = require("./market/credit/dominantCollateral.js");
56
+ const require_sdk_market_credit_isStrategyCollateral = require("./market/credit/isStrategyCollateral.js");
55
57
  const require_sdk_market_credit_CreditSuite = require("./market/credit/CreditSuite.js");
56
58
  const require_sdk_market_credit_expectedBalanceDeltas = require("./market/credit/expectedBalanceDeltas.js");
57
59
  const require_sdk_utils_viem_simulateMulticall = require("./utils/viem/simulateMulticall.js");
@@ -108,7 +110,8 @@ require("./market/index.js");
108
110
  const require_sdk_accounts_credit_account_compressor_CreditAccountCompressorV310Contract = require("./accounts/credit-account-compressor/CreditAccountCompressorV310Contract.js");
109
111
  const require_sdk_accounts_credit_account_compressor_CreditAccountCompressor = require("./accounts/credit-account-compressor/CreditAccountCompressor.js");
110
112
  const require_sdk_accounts_CreditAccountsServiceV310 = require("./accounts/CreditAccountsServiceV310.js");
111
- const require_sdk_accounts_intents_operations_claim_delayed_index = require("./accounts/intents/operations/claim-delayed/index.js");
113
+ const require_sdk_accounts_intents_types = require("./accounts/intents/types.js");
114
+ const require_sdk_accounts_intents_utils_credit_account_slice = require("./accounts/intents/utils/credit-account-slice.js");
112
115
  const require_sdk_accounts_intents_index = require("./accounts/intents/index.js");
113
116
  const require_sdk_accounts_liquidations_constants = require("./accounts/liquidations/constants.js");
114
117
  const require_sdk_accounts_liquidations_LiquidationsService = require("./accounts/liquidations/LiquidationsService.js");
@@ -137,7 +140,13 @@ const require_sdk_plugins_errors = require("./plugins/errors.js");
137
140
  require("./plugins/index.js");
138
141
  const require_sdk_pools_PoolService = require("./pools/PoolService.js");
139
142
  require("./pools/index.js");
143
+ const require_sdk_positions_calcBorrowRate = require("./positions/calcBorrowRate.js");
144
+ const require_sdk_positions_calcHealthFactor = require("./positions/calcHealthFactor.js");
145
+ const require_sdk_positions_calcLiquidationPriceForTarget = require("./positions/calcLiquidationPriceForTarget.js");
146
+ const require_sdk_positions_calcLiquidationPrice = require("./positions/calcLiquidationPrice.js");
147
+ const require_sdk_positions_calcTimeToLiquidationMs = require("./positions/calcTimeToLiquidationMs.js");
140
148
  const require_sdk_positions_MultichainPositionsService = require("./positions/MultichainPositionsService.js");
149
+ const require_sdk_positions_types = require("./positions/types.js");
141
150
  const require_sdk_positions_PositionsService = require("./positions/PositionsService.js");
142
151
  require("./positions/index.js");
143
152
  const require_sdk_router_helpers = require("./router/helpers.js");
@@ -225,6 +234,7 @@ exports.ExternalPriceFeedContract = require_sdk_market_pricefeeds_ExternalPriceF
225
234
  exports.GaugeContract = require_sdk_market_pool_GaugeContract.GaugeContract;
226
235
  exports.IERC20ZapperContract = require_sdk_market_zapper_IERC20ZapperContract.IERC20ZapperContract;
227
236
  exports.IETHZapperContract = require_sdk_market_zapper_IETHZapperContract.IETHZapperContract;
237
+ exports.IntentPreviewError = require_sdk_accounts_intents_types.IntentPreviewError;
228
238
  exports.InvalidDelayedIntentError = require_sdk_accounts_withdrawal_compressor_errors.InvalidDelayedIntentError;
229
239
  exports.LEVERAGE_DECIMALS = require_sdk_constants_math.LEVERAGE_DECIMALS;
230
240
  exports.LIQUIDATION_APPROVAL_BUFFER = require_sdk_accounts_liquidations_constants.LIQUIDATION_APPROVAL_BUFFER;
@@ -232,6 +242,7 @@ exports.LIQUIDATION_COMPRESSOR_V313_ADDRESS = require_sdk_accounts_liquidations_
232
242
  exports.LinearInterestRateModelContract = require_sdk_market_pool_LinearInterestRateModelContract.LinearInterestRateModelContract;
233
243
  exports.LiquidationsService = require_sdk_accounts_liquidations_LiquidationsService.LiquidationsService;
234
244
  exports.MAX_INT = require_sdk_constants_math.MAX_INT;
245
+ exports.MAX_LEVERAGE_BUFFER_BPS = require_sdk_market_math.MAX_LEVERAGE_BUFFER_BPS;
235
246
  exports.MAX_UINT16 = require_sdk_constants_math.MAX_UINT16;
236
247
  exports.MAX_UINT256 = require_sdk_constants_math.MAX_UINT256;
237
248
  exports.MIN_INT96 = require_sdk_constants_math.MIN_INT96;
@@ -247,6 +258,7 @@ exports.MultichainOpportunitiesService = require_sdk_opportunities_MultichainOpp
247
258
  exports.MultichainPositionsService = require_sdk_positions_MultichainPositionsService.MultichainPositionsService;
248
259
  exports.MultichainSDK = require_sdk_MultichainSDK.MultichainSDK;
249
260
  exports.NATIVE_ADDRESS = require_sdk_constants_addresses.NATIVE_ADDRESS;
261
+ exports.NON_STRATEGY_PHANTOM_TOKEN_TYPES = require_sdk_market_credit_isStrategyCollateral.NON_STRATEGY_PHANTOM_TOKEN_TYPES;
250
262
  exports.NOT_DEPLOYED = require_sdk_constants_addresses.NOT_DEPLOYED;
251
263
  exports.NO_VERSION = require_sdk_constants_address_provider.NO_VERSION;
252
264
  exports.NetworkType = require_sdk_chain_chains.NetworkType;
@@ -323,12 +335,21 @@ exports.ZeroPriceFeedContract = require_sdk_market_pricefeeds_ZeroPriceFeed.Zero
323
335
  exports.ZodAddress = require_sdk_utils_zod.ZodAddress;
324
336
  exports.ZodBigInt = require_sdk_utils_zod.ZodBigInt;
325
337
  exports.ZodHex = require_sdk_utils_zod.ZodHex;
326
- exports.additionalBorrowApyBps = require_sdk_market_math.additionalBorrowApyBps;
338
+ exports.accountSnapshotFromCreditAccountData = require_sdk_positions_types.accountSnapshotFromCreditAccountData;
327
339
  exports.assetsMap = require_sdk_router_helpers.assetsMap;
328
340
  exports.attachOptionsSchema = require_sdk_options.attachOptionsSchema;
329
- exports.borrowApyBps = require_sdk_market_math.borrowApyBps;
330
341
  exports.botPermissionsToString = require_sdk_constants_bot_permissions.botPermissionsToString;
331
342
  exports.bytes32ToString = require_sdk_utils_bytes32ToString.bytes32ToString;
343
+ exports.calcAdditionalBorrowApy = require_sdk_market_math.calcAdditionalBorrowApy;
344
+ exports.calcBorrowApy = require_sdk_market_math.calcBorrowApy;
345
+ exports.calcBorrowRate = require_sdk_positions_calcBorrowRate.calcBorrowRate;
346
+ exports.calcHealthFactor = require_sdk_positions_calcHealthFactor.calcHealthFactor;
347
+ exports.calcLiquidationPrice = require_sdk_positions_calcLiquidationPrice.calcLiquidationPrice;
348
+ exports.calcLiquidationPriceForTarget = require_sdk_positions_calcLiquidationPriceForTarget.calcLiquidationPriceForTarget;
349
+ exports.calcMaxLeverage = require_sdk_market_math.calcMaxLeverage;
350
+ exports.calcPositionLeverage = require_sdk_market_math.calcPositionLeverage;
351
+ exports.calcTimeToLiquidationMs = require_sdk_positions_calcTimeToLiquidationMs.calcTimeToLiquidationMs;
352
+ exports.calcUtilization = require_sdk_market_math.calcUtilization;
332
353
  exports.chains = require_sdk_chain_chains.chains;
333
354
  exports.childLogger = require_sdk_utils_childLogger.childLogger;
334
355
  exports.createAdapter = require_sdk_market_adapters_createAdapter.createAdapter;
@@ -348,7 +369,9 @@ exports.estimateRawTxGas = require_sdk_utils_viem_sendRawTx.estimateRawTxGas;
348
369
  exports.etherscanApiUrl = require_sdk_utils_etherscan.etherscanApiUrl;
349
370
  exports.etherscanUrl = require_sdk_utils_etherscan.etherscanUrl;
350
371
  exports.executeDelegatedMulticalls = require_sdk_utils_viem_executeDelegatedMulticalls.executeDelegatedMulticalls;
372
+ exports.executeMulticallBatches = require_sdk_utils_viem_executeMulticallBatches.executeMulticallBatches;
351
373
  exports.expectedBalanceDeltas = require_sdk_market_credit_expectedBalanceDeltas.expectedBalanceDeltas;
374
+ exports.fetchCreditAccountSlice = require_sdk_accounts_intents_utils_credit_account_slice.fetchCreditAccountSlice;
352
375
  exports.fetchRedstonePayloads = require_sdk_market_pricefeeds_updates_fetchRedstonePayloads.fetchRedstonePayloads;
353
376
  exports.filterDust = require_sdk_utils_filterDust.filterDust;
354
377
  exports.filterDustUSD = require_sdk_utils_filterDust.filterDustUSD;
@@ -383,6 +406,7 @@ exports.isLPPriceFeed = require_sdk_market_pricefeeds_AbstractLPPriceFeed.isLPPr
383
406
  exports.isPublicNetwork = require_sdk_chain_chains.isPublicNetwork;
384
407
  exports.isRWAFactory = require_sdk_market_rwa_types.isRWAFactory;
385
408
  exports.isRWAToken = require_sdk_chain_chains.isRWAToken;
409
+ exports.isStrategyCollateral = require_sdk_market_credit_isStrategyCollateral.isStrategyCollateral;
386
410
  exports.isSunsetPool = require_sdk_chain_chains.isSunsetPool;
387
411
  exports.isSunsetStrategy = require_sdk_chain_chains.isSunsetStrategy;
388
412
  exports.isSupportedNetwork = require_sdk_chain_chains.isSupportedNetwork;
@@ -391,7 +415,6 @@ exports.isV310 = require_sdk_constants_versions.isV310;
391
415
  exports.isVersionRange = require_sdk_constants_versions.isVersionRange;
392
416
  exports.json_parse = require_sdk_utils_json.json_parse;
393
417
  exports.json_stringify = require_sdk_utils_json.json_stringify;
394
- exports.maxLeverage = require_sdk_market_math.maxLeverage;
395
418
  exports.minSeizedAmount = require_sdk_market_math.minSeizedAmount;
396
419
  exports.mustGetDominantCollateral = require_sdk_market_credit_dominantCollateral.mustGetDominantCollateral;
397
420
  exports.numberWithCommas = require_sdk_utils_formatter.numberWithCommas;
@@ -399,8 +422,6 @@ exports.onchainSDKOptionsSchema = require_sdk_options.onchainSDKOptionsSchema;
399
422
  exports.optimalHFForPartialLiquidation = require_sdk_market_math.optimalHFForPartialLiquidation;
400
423
  exports.optimalRepaidAmount = require_sdk_market_math.optimalRepaidAmount;
401
424
  exports.percentFmt = require_sdk_utils_formatter.percentFmt;
402
- exports.positionLeverage = require_sdk_market_math.positionLeverage;
403
- exports.primaryInstantOutput = require_sdk_accounts_intents_operations_claim_delayed_index.primaryInstantOutput;
404
425
  exports.rayToBps = require_sdk_market_math.rayToBps;
405
426
  exports.rayToNumber = require_sdk_utils_formatter.rayToNumber;
406
427
  exports.retry = require_sdk_utils_retry.retry;
@@ -415,10 +436,12 @@ exports.toBN = require_sdk_utils_formatter.toBN;
415
436
  exports.toBigInt = require_sdk_utils_formatter.toBigInt;
416
437
  exports.toChainIds = require_sdk_chain_chains.toChainIds;
417
438
  exports.toClaimableWithdrawal = require_sdk_accounts_withdrawal_compressor_AbstractWithdrawalCompressorContract.toClaimableWithdrawal;
439
+ exports.toCreditAccountSlice = require_sdk_accounts_intents_utils_credit_account_slice.toCreditAccountSlice;
418
440
  exports.toPendingWithdrawal = require_sdk_accounts_withdrawal_compressor_AbstractWithdrawalCompressorContract.toPendingWithdrawal;
419
441
  exports.toRequestableWithdrawal = require_sdk_accounts_withdrawal_compressor_AbstractWithdrawalCompressorContract.toRequestableWithdrawal;
442
+ exports.toShares = require_sdk_pools_PoolService.toShares;
443
+ exports.toSharesUp = require_sdk_pools_PoolService.toSharesUp;
420
444
  exports.toSignificant = require_sdk_utils_formatter.toSignificant;
421
445
  exports.toWithdrawalStatus = require_sdk_accounts_withdrawal_compressor_types.toWithdrawalStatus;
422
446
  exports.usdToNumber = require_sdk_market_math.usdToNumber;
423
- exports.utilizationBps = require_sdk_market_math.utilizationBps;
424
447
  exports.watchBlocksAsync = require_sdk_utils_viem_watchBlocksAsync.watchBlocksAsync;
@@ -95,29 +95,38 @@ var MarketRegister = class extends require_sdk_market_ZapperRegister.ZapperRegis
95
95
  * Otherwise only prices are refreshed.
96
96
  *
97
97
  * @param ignoreUpdateablePrices - When `true`, skips off-chain price updates.
98
+ * @param extra - Additional multicalls to execute in the same batch, so that
99
+ * other registries can be synced without an extra request.
100
+ * @returns `true` when markets were fully reloaded, so that callers can
101
+ * refresh the caches derived from the market set.
98
102
  **/
99
- async syncState(ignoreUpdateablePrices) {
103
+ async syncState(ignoreUpdateablePrices, extra = []) {
100
104
  const dirty = this.markets.some((m) => m.dirty) || this.marketConfigurators.some((c) => c.dirty);
101
105
  let multicalls;
102
106
  let txs = [];
103
107
  if (dirty) {
104
108
  this.logger?.debug("some markets or market configurators are dirty, reloading everything");
105
- multicalls = this.getLoadMulticalls([...this.marketFilter.configurators]);
109
+ multicalls = [...this.getLoadMulticalls([...this.marketFilter.configurators]), ...extra];
106
110
  if (!ignoreUpdateablePrices) {
107
111
  const updatables = await this.sdk.priceFeeds.getPartialUpdatablePriceFeeds([...this.marketFilter.configurators]);
108
112
  txs = (await this.sdk.priceFeeds.generatePriceFeedsUpdateTxs(updatables)).txs;
109
113
  }
110
114
  } else if (!ignoreUpdateablePrices) {
111
- multicalls = this.#getOracleSyncMulticalls();
112
- if (!multicalls.length) return;
113
- this.logger?.debug(`syncing prices on ${multicalls.length} oracles`);
114
- txs = (await this.sdk.priceFeeds.generatePriceFeedsUpdateTxs()).txs;
115
- } else return;
115
+ const oracles = this.#getOracleSyncMulticalls();
116
+ multicalls = [...oracles, ...extra];
117
+ if (!multicalls.length) return false;
118
+ if (oracles.length) {
119
+ this.logger?.debug(`syncing prices on ${oracles.length} oracles`);
120
+ txs = (await this.sdk.priceFeeds.generatePriceFeedsUpdateTxs()).txs;
121
+ }
122
+ } else if (extra.length) multicalls = extra;
123
+ else return false;
116
124
  await require_sdk_utils_viem_executeDelegatedMulticalls.executeDelegatedMulticalls(this.client, multicalls, {
117
125
  priceUpdates: txs,
118
126
  blockNumber: this.sdk.currentBlock,
119
127
  gas: this.sdk.gasLimit
120
128
  });
129
+ return dirty;
121
130
  }
122
131
  #getOracleSyncMulticalls(oracles) {
123
132
  const uniqOracles = new require_sdk_utils_AddressMap.AddressMap();
@@ -5,53 +5,84 @@ const require_sdk_constants_versions = require("../constants/versions.js");
5
5
  require("../constants/index.js");
6
6
  const require_sdk_utils_hex = require("../utils/hex.js");
7
7
  require("../utils/index.js");
8
+ const require_sdk_utils_viem_executeMulticallBatches = require("../utils/viem/executeMulticallBatches.js");
8
9
  const require_sdk_base_SDKConstruct = require("../base/SDKConstruct.js");
9
10
  require("../base/index.js");
10
11
  const require_abi_compressors_peripheryCompressor = require("../../abi/compressors/peripheryCompressor.js");
12
+ require("../utils/viem/index.js");
11
13
  const require_sdk_market_zapper_createZapper = require("./zapper/createZapper.js");
12
14
  require("./zapper/index.js");
13
15
  //#region src/sdk/market/ZapperRegister.ts
14
16
  var ZapperRegister = class extends require_sdk_base_SDKConstruct.SDKConstruct {
15
17
  /**
16
18
  * Mapping pool.address -> Zapper[]
17
- * Needs to be loaded explicitly using loadZappers method
19
+ * Loaded during SDK attach, or restored by hydration
18
20
  */
19
21
  #zappers;
20
22
  /**
21
- * Load zappers for all pools using periphery compressor, adds hardcoded zappers
22
- */
23
- async loadZappers(force) {
24
- if (!force && this.#zappers) return;
25
- const [pcAddr] = this.sdk.addressProvider.mustGetLatest(require_sdk_constants_address_provider.AP_PERIPHERY_COMPRESSOR, require_sdk_constants_versions.VERSION_RANGE_310);
23
+ * @internal
24
+ *
25
+ * Returns the multicall batch that loads zappers of all pools from the
26
+ * periphery compressor. Used by the SDK to warm this cache together with
27
+ * other loaders in a single multicall.
28
+ *
29
+ * Returns an empty batch when zappers are already loaded and `force` is not set.
30
+ *
31
+ * @param force - reload zappers even when they are already loaded
32
+ **/
33
+ getLoadZappersMulticall(force) {
34
+ if (!force && this.#zappers) return {
35
+ contracts: [],
36
+ onResults: () => {}
37
+ };
38
+ this.#zappers = new require_sdk_utils_AddressMap.AddressMap(void 0, "zappers");
39
+ const compressor = this.sdk.addressProvider.getLatest(require_sdk_constants_address_provider.AP_PERIPHERY_COMPRESSOR, require_sdk_constants_versions.VERSION_RANGE_310);
40
+ if (!compressor) {
41
+ this.logger?.warn("no periphery compressor on this chain, skipping zappers");
42
+ return {
43
+ contracts: [],
44
+ onResults: () => {}
45
+ };
46
+ }
47
+ const [pcAddr] = compressor;
26
48
  this.logger?.debug(`loading zappers with periphery compressor ${pcAddr}`);
27
49
  const markets = this.sdk.marketRegister.markets;
28
- const resp = await this.client.multicall({
50
+ return {
29
51
  contracts: markets.map((m) => ({
30
52
  abi: require_abi_compressors_peripheryCompressor.peripheryCompressorAbi,
31
53
  address: pcAddr,
32
54
  functionName: "getZappers",
33
55
  args: [m.configurator.address, m.pool.pool.address]
34
56
  })),
35
- allowFailure: true,
36
- batchSize: 0
37
- });
38
- this.#zappers = new require_sdk_utils_AddressMap.AddressMap(void 0, "zappers");
39
- for (let i = 0; i < resp.length; i++) {
40
- const { status, result, error } = resp[i];
41
- const marketConfigurator = markets[i].configurator.address;
42
- const pool = markets[i].pool.pool.address;
43
- if (status === "success") for (const z of result) this.#addZapper({
44
- ...z,
45
- pool,
46
- type: "base"
47
- });
48
- else this.logger?.error(`failed to load zapper for market configurator ${this.labelAddress(marketConfigurator)} and pool ${this.labelAddress(pool)}: ${error}`);
49
- }
57
+ onResults: (resps) => {
58
+ for (let i = 0; i < resps.length; i++) {
59
+ const { status, result, error } = resps[i];
60
+ const marketConfigurator = markets[i].configurator.address;
61
+ const pool = markets[i].pool.pool.address;
62
+ if (status === "success") for (const z of result) this.#addZapper({
63
+ ...z,
64
+ pool,
65
+ type: "base"
66
+ });
67
+ else this.logger?.error(`failed to load zapper for market configurator ${this.labelAddress(marketConfigurator)} and pool ${this.labelAddress(pool)}: ${error}`);
68
+ }
69
+ }
70
+ };
71
+ }
72
+ /**
73
+ * Load zappers for all pools using periphery compressor, adds hardcoded zappers
74
+ *
75
+ * Zappers loaded during SDK attach or restored by hydration are kept unless
76
+ * `force` is set, so calling this after either is a no-op.
77
+ */
78
+ async loadZappers(force) {
79
+ await require_sdk_utils_viem_executeMulticallBatches.executeMulticallBatches(this.client, [this.getLoadZappersMulticall(force)]);
50
80
  }
51
81
  /**
52
82
  * Serializable snapshot of all loaded zappers, suitable for hydration.
53
- * Returns `undefined` when zappers were never loaded (i.e. `loadZappers` was
54
- * not called), so the not-loaded state round-trips cleanly.
83
+ * Returns `undefined` when zappers were never loaded (i.e. the SDK was
84
+ * attached without market configurators), so the not-loaded state round-trips
85
+ * cleanly.
55
86
  **/
56
87
  get zappersState() {
57
88
  if (!this.#zappers) return;
@@ -103,7 +134,7 @@ var ZapperRegister = class extends require_sdk_base_SDKConstruct.SDKConstruct {
103
134
  }
104
135
  }
105
136
  get zappers() {
106
- if (!this.#zappers) throw new Error("zappers not loaded, call loadZappers first");
137
+ if (!this.#zappers) throw new Error("zappers are not loaded, check if the sdk was properly attached or hydrated");
107
138
  return this.#zappers;
108
139
  }
109
140
  poolZappers(pool) {
@@ -10,7 +10,6 @@ require("../../base/index.js");
10
10
  const require_sdk_market_adapters_createAdapter = require("../adapters/createAdapter.js");
11
11
  require("../adapters/index.js");
12
12
  const require_sdk_market_math = require("../math.js");
13
- let viem = require("viem");
14
13
  //#region src/sdk/market/credit/CreditManagerV310Contract.ts
15
14
  const abi = require_abi_310_generated.iCreditManagerV310Abi;
16
15
  var CreditManagerV310Contract = class extends require_sdk_base_BaseContract.BaseContract {
@@ -65,20 +64,10 @@ var CreditManagerV310Contract = class extends require_sdk_base_BaseContract.Base
65
64
  return this.liquidationThresholds.keys();
66
65
  }
67
66
  /**
68
- * {@inheritDoc ICreditManagerContract.leverageableCollaterals}
69
- */
70
- get leverageableCollaterals() {
71
- return this.collateralTokens.filter((token) => {
72
- if ((0, viem.isAddressEqual)(token, this.underlying)) return false;
73
- const lt = this.liquidationThresholds.get(token);
74
- return !!lt && lt > 0 && lt < Number(10000n);
75
- });
76
- }
77
- /**
78
67
  * {@inheritDoc ICreditManagerContract.maxLeverage}
79
68
  */
80
69
  maxLeverage(collateral) {
81
- return require_sdk_market_math.maxLeverage(this.liquidationThresholds.mustGet(collateral));
70
+ return require_sdk_market_math.calcMaxLeverage(this.liquidationThresholds.mustGet(collateral));
82
71
  }
83
72
  /**
84
73
  * {@inheritDoc ICreditManagerContract.liquidationPremium}
@@ -12,6 +12,7 @@ const require_sdk_market_credit_createCreditConfigurator = require("./createCred
12
12
  const require_sdk_market_credit_createCreditFacade = require("./createCreditFacade.js");
13
13
  const require_sdk_market_credit_createCreditManager = require("./createCreditManager.js");
14
14
  const require_sdk_market_credit_dominantCollateral = require("./dominantCollateral.js");
15
+ const require_sdk_market_credit_isStrategyCollateral = require("./isStrategyCollateral.js");
15
16
  //#region src/sdk/market/credit/CreditSuite.ts
16
17
  /**
17
18
  * SDK aggregate for one credit-manager branch inside a market.
@@ -171,13 +172,31 @@ var CreditSuite = class extends require_sdk_base_SDKConstruct.SDKConstruct {
171
172
  return this.creditFacade.isPaused || this.market.pool.isPaused;
172
173
  }
173
174
  /**
174
- * Collateral tokens a leveraged position can be built around in this suite:
175
- * the ones the credit manager can lever up, narrowed to those the market
176
- * still accepts quota for.
175
+ * Collateral tokens a leveraged position can be built around in this suite,
176
+ * see {@link isStrategyCollateral} for the per-token criteria.
177
+ *
178
+ * A suite where no debt can be drawn at all ({@link maxBorrowAmount} is `0`,
179
+ * e.g. its debt limit is exhausted or zeroed out) offers no strategies,
180
+ * whatever its collaterals are.
177
181
  */
178
182
  get strategyCollaterals() {
179
- const { pqk } = this.market.pool;
180
- return this.creditManager.leverageableCollaterals.filter((token) => pqk.hasActiveQuota(token));
183
+ if (this.maxBorrowAmount === 0n) return [];
184
+ const { pqk, unwrappedUnderlying } = this.market.pool;
185
+ const { mainPrices } = this.market.priceOracle;
186
+ const { tokensMeta, creditManager } = this;
187
+ return creditManager.collateralTokens.filter((token) => {
188
+ const meta = tokensMeta.mustGet(token);
189
+ return require_sdk_market_credit_isStrategyCollateral.isStrategyCollateral({
190
+ token,
191
+ underlying: creditManager.underlying,
192
+ unwrappedUnderlying,
193
+ liquidationThreshold: creditManager.liquidationThresholds.mustGet(token),
194
+ contractType: meta.contractType,
195
+ isExpired: meta.isExpired,
196
+ mainPrice: mainPrices.get(token)?.price,
197
+ hasActiveQuota: pqk.hasActiveQuota(token)
198
+ });
199
+ });
181
200
  }
182
201
  /**
183
202
  * Largest debt a single new position can take on right now: the tightest of
@@ -221,16 +240,16 @@ var CreditSuite = class extends require_sdk_base_SDKConstruct.SDKConstruct {
221
240
  curator: market.curator,
222
241
  underlyingToken: market.underlyingToken,
223
242
  totalBorrow: oracle.toAmount(pool.underlying, borrowed),
224
- collateralTokens: market.collateralTokens,
243
+ collateralTokens: this.strategyCollaterals.map((t) => this.tokensMeta.mustGetToken(t)),
225
244
  paused: this.isPaused,
226
245
  rwa: market.rwa,
227
- sunset: require_sdk_chain_chains.isSunsetStrategy(cm.address, collateral, this.sdk.networkType),
246
+ sunset: market.sunset || require_sdk_chain_chains.isSunsetStrategy(cm.address, collateral, this.sdk.networkType),
228
247
  liquidationThreshold,
229
248
  liquidationPremium: cm.liquidationPremium,
230
249
  liquidationFee: cm.feeLiquidation,
231
250
  expirationDate: this.expirationDate,
232
- borrowApy: require_sdk_market_math.borrowApyBps(pool.baseInterestRate, cm.feeInterest),
233
- additionalBorrowApy: require_sdk_market_math.additionalBorrowApyBps(market.pool.pqk.quotaRate(collateral), maxLeverage),
251
+ borrowApy: require_sdk_market_math.calcBorrowApy(pool.baseInterestRate, cm.feeInterest),
252
+ additionalBorrowApy: require_sdk_market_math.calcAdditionalBorrowApy(market.pool.pqk.quotaRate(collateral), cm.feeInterest, maxLeverage),
234
253
  maxBorrowAmount: oracle.toAmount(pool.underlying, this.maxBorrowAmount),
235
254
  maxLeverage
236
255
  };
@@ -4,6 +4,7 @@ const require_sdk_market_credit_CreditFacadeV310BaseContract = require("./Credit
4
4
  const require_sdk_market_credit_CreditFacadeV310Contract = require("./CreditFacadeV310Contract.js");
5
5
  const require_sdk_market_credit_CreditManagerV310Contract = require("./CreditManagerV310Contract.js");
6
6
  const require_sdk_market_credit_dominantCollateral = require("./dominantCollateral.js");
7
+ const require_sdk_market_credit_isStrategyCollateral = require("./isStrategyCollateral.js");
7
8
  const require_sdk_market_credit_CreditSuite = require("./CreditSuite.js");
8
9
  const require_sdk_market_credit_expectedBalanceDeltas = require("./expectedBalanceDeltas.js");
9
10
  require("./types.js");
@@ -12,7 +13,9 @@ exports.CreditFacadeV310BaseContract = require_sdk_market_credit_CreditFacadeV31
12
13
  exports.CreditFacadeV310Contract = require_sdk_market_credit_CreditFacadeV310Contract.CreditFacadeV310Contract;
13
14
  exports.CreditManagerV310Contract = require_sdk_market_credit_CreditManagerV310Contract.CreditManagerV310Contract;
14
15
  exports.CreditSuite = require_sdk_market_credit_CreditSuite.CreditSuite;
16
+ exports.NON_STRATEGY_PHANTOM_TOKEN_TYPES = require_sdk_market_credit_isStrategyCollateral.NON_STRATEGY_PHANTOM_TOKEN_TYPES;
15
17
  exports.creditFacadeV310Abi = require_sdk_market_credit_CreditFacadeV310BaseContract.creditFacadeV310Abi;
16
18
  exports.dominantCollateral = require_sdk_market_credit_dominantCollateral.dominantCollateral;
17
19
  exports.expectedBalanceDeltas = require_sdk_market_credit_expectedBalanceDeltas.expectedBalanceDeltas;
20
+ exports.isStrategyCollateral = require_sdk_market_credit_isStrategyCollateral.isStrategyCollateral;
18
21
  exports.mustGetDominantCollateral = require_sdk_market_credit_dominantCollateral.mustGetDominantCollateral;
@@ -0,0 +1,50 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ require("../../constants/math.js");
3
+ require("../../constants/index.js");
4
+ let viem = require("viem");
5
+ //#region src/sdk/market/credit/isStrategyCollateral.ts
6
+ /**
7
+ * Withdrawal and redemption phantom tokens that can never be acquired as a
8
+ * strategy target. Other `PHANTOM_TOKEN::*` types (Convex, Infrared, staking
9
+ * rewards) can.
10
+ */
11
+ const NON_STRATEGY_PHANTOM_TOKEN_TYPES = [
12
+ "PHANTOM_TOKEN::INFINIFI_UNWIND",
13
+ "PHANTOM_TOKEN::MELLOW_WITHDRAWAL",
14
+ "PHANTOM_TOKEN::MIDAS_REDEMPTION",
15
+ "PHANTOM_TOKEN::SECURITIZE_RD",
16
+ "PHANTOM_TOKEN::UPSHIFT_WITHDRAW"
17
+ ];
18
+ const NON_STRATEGY_PHANTOM_TOKEN_TYPE_SET = new Set(NON_STRATEGY_PHANTOM_TOKEN_TYPES);
19
+ const RWA_UNDERLYING_PREFIX = "RWA_UNDERLYING::";
20
+ /**
21
+ * Whether a collateral token can be the target of a leveraged strategy.
22
+ *
23
+ * A token qualifies when it
24
+ *
25
+ * - has a liquidation threshold above `0` and below `100%`, and is not the
26
+ * suite's underlying — borrowing an asset against itself is not a position,
27
+ * and an LT of `0` or at least `100%` would mean unbounded leverage;
28
+ * - is not the token the market's underlying wraps, which for an RWA market
29
+ * is the same exposure as the underlying itself (also rejected when
30
+ * `contractType` starts with `"RWA_UNDERLYING::"`);
31
+ * - is not a withdrawal or redemption phantom token listed in
32
+ * {@link NON_STRATEGY_PHANTOM_TOKEN_TYPES} — those only ever appear as the
33
+ * intermediate step of a withdrawal and cannot be acquired;
34
+ * - is not an expired token, e.g. a matured Pendle PT;
35
+ * - has a non-zero main price in the market's oracle — a zero or missing
36
+ * answer (e.g. a failed or zero price feed) means the position cannot be
37
+ * valued;
38
+ * - the market still accepts quota for.
39
+ */
40
+ function isStrategyCollateral({ token, underlying, unwrappedUnderlying, liquidationThreshold, contractType, isExpired, mainPrice, hasActiveQuota }) {
41
+ if ((0, viem.isAddressEqual)(token, underlying) || (0, viem.isAddressEqual)(token, unwrappedUnderlying)) return false;
42
+ if (liquidationThreshold <= 0 || liquidationThreshold >= Number(10000n)) return false;
43
+ if (contractType && (NON_STRATEGY_PHANTOM_TOKEN_TYPE_SET.has(contractType) || contractType.startsWith(RWA_UNDERLYING_PREFIX))) return false;
44
+ if (isExpired) return false;
45
+ if (!mainPrice) return false;
46
+ return hasActiveQuota;
47
+ }
48
+ //#endregion
49
+ exports.NON_STRATEGY_PHANTOM_TOKEN_TYPES = NON_STRATEGY_PHANTOM_TOKEN_TYPES;
50
+ exports.isStrategyCollateral = isStrategyCollateral;