@gearbox-protocol/sdk 14.12.0-next.66 → 14.12.0-next.68

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 (244) hide show
  1. package/dist/cjs/common-utils/index.js +2 -2
  2. package/dist/cjs/common-utils/utils/apy/calculate-safe-borrow-rate.js +3 -3
  3. package/dist/cjs/common-utils/utils/assets-math.js +7 -7
  4. package/dist/cjs/common-utils/utils/creditAccount/calc-health-factor.js +2 -2
  5. package/dist/cjs/common-utils/utils/creditAccount/debt.js +2 -2
  6. package/dist/cjs/common-utils/utils/creditAccount/quota-utils.js +5 -5
  7. package/dist/cjs/common-utils/utils/index.js +2 -2
  8. package/dist/cjs/common-utils/utils/strategies/leverage/calculate-max-leverage-factor.js +2 -2
  9. package/dist/cjs/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.js +5 -5
  10. package/dist/cjs/common-utils/utils/strategies/strategy-info/calculate-total-points.js +2 -2
  11. package/dist/cjs/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.js +2 -2
  12. package/dist/cjs/common-utils/utils/validation/validate-open-account-pool-status.js +4 -4
  13. package/dist/cjs/model/history.js +28 -0
  14. package/dist/cjs/model/history.schema.js +84 -0
  15. package/dist/cjs/model/index.js +77 -0
  16. package/dist/cjs/model/liquidations.js +23 -0
  17. package/dist/cjs/model/liquidations.schema.js +93 -0
  18. package/dist/cjs/model/opportunities.js +55 -0
  19. package/dist/cjs/model/opportunities.schema.js +223 -0
  20. package/dist/cjs/model/package.json +1 -0
  21. package/dist/cjs/model/positions.js +1 -0
  22. package/dist/cjs/model/positions.schema.js +120 -0
  23. package/dist/cjs/model/primitives.js +1 -0
  24. package/dist/cjs/model/primitives.schema.js +85 -0
  25. package/dist/cjs/new-sdk/AbstractNamespace.js +158 -0
  26. package/dist/cjs/new-sdk/GearboxSDK.js +122 -0
  27. package/dist/cjs/new-sdk/index.js +11 -0
  28. package/dist/cjs/new-sdk/opportunities/OpportunitiesNamespace.js +122 -0
  29. package/dist/cjs/new-sdk/opportunities/index.js +4 -0
  30. package/dist/cjs/new-sdk/opportunities/types.js +1 -0
  31. package/dist/cjs/new-sdk/package.json +1 -0
  32. package/dist/cjs/new-sdk/types.js +22 -0
  33. package/dist/cjs/new-sdk/utils/history.js +1 -0
  34. package/dist/cjs/new-sdk/utils/index.js +2 -0
  35. package/dist/cjs/offchain/GearboxAPI.js +33 -0
  36. package/dist/cjs/offchain/index.js +8 -0
  37. package/dist/cjs/offchain/opportunities/OffchainOpportunities.js +97 -0
  38. package/dist/cjs/offchain/opportunities/index.js +4 -0
  39. package/dist/cjs/offchain/package.json +1 -0
  40. package/dist/cjs/offchain/types.js +1 -0
  41. package/dist/cjs/preview/preview/buildDelayedPreview.js +5 -5
  42. package/dist/cjs/rewards/rewards/api.js +2 -2
  43. package/dist/cjs/rewards/rewards/extra-apy.js +2 -2
  44. package/dist/cjs/sdk/MultichainSDK.js +18 -2
  45. package/dist/cjs/sdk/OnchainSDK.js +8 -1
  46. package/dist/cjs/sdk/accounts/index.js +2 -0
  47. package/dist/cjs/sdk/accounts/liquidations/LiquidationsService.js +161 -106
  48. package/dist/cjs/sdk/accounts/liquidations/MultichainLiquidationsService.js +32 -38
  49. package/dist/cjs/sdk/accounts/liquidations/constants.js +13 -0
  50. package/dist/cjs/sdk/accounts/liquidations/index.js +2 -0
  51. package/dist/cjs/sdk/base/MultichainConstruct.js +80 -0
  52. package/dist/cjs/sdk/base/TokensMeta.js +51 -0
  53. package/dist/cjs/sdk/base/index.js +2 -0
  54. package/dist/cjs/sdk/chain/chains.js +76 -0
  55. package/dist/cjs/sdk/chain/index.js +4 -0
  56. package/dist/cjs/sdk/core/errors.js +13 -0
  57. package/dist/cjs/sdk/core/index.js +2 -1
  58. package/dist/cjs/sdk/index.js +25 -1
  59. package/dist/cjs/sdk/market/MarketConfiguratorContract.js +14 -0
  60. package/dist/cjs/sdk/market/MarketSuite.js +159 -0
  61. package/dist/cjs/sdk/market/credit/CreditManagerV310Contract.js +26 -0
  62. package/dist/cjs/sdk/market/credit/CreditSuite.js +92 -0
  63. package/dist/cjs/sdk/market/math.js +104 -0
  64. package/dist/cjs/sdk/market/oracle/PriceOracleBaseContract.js +52 -0
  65. package/dist/cjs/sdk/market/pool/LinearInterestRateModelContract.js +30 -0
  66. package/dist/cjs/sdk/market/pool/PoolQuotaKeeperV310Contract.js +26 -0
  67. package/dist/cjs/sdk/market/pool/PoolSuite.js +28 -0
  68. package/dist/cjs/sdk/market/pool/PoolV310Contract.js +27 -0
  69. package/dist/cjs/sdk/market/pool/math.js +44 -0
  70. package/dist/cjs/sdk/market/pricefeeds/AbstractPriceFeed.js +17 -0
  71. package/dist/cjs/sdk/opportunities/MultichainOpportunitiesService.js +60 -0
  72. package/dist/cjs/sdk/opportunities/OpportunitiesService.js +48 -0
  73. package/dist/cjs/sdk/opportunities/index.js +12 -0
  74. package/dist/cjs/sdk/types/multichain.js +1 -0
  75. package/dist/cjs/{common-utils → sdk}/utils/bigint-math.js +11 -11
  76. package/dist/cjs/sdk/utils/index.js +3 -0
  77. package/dist/cjs/sdk/utils/zod.js +12 -0
  78. package/dist/esm/common-utils/index.js +1 -1
  79. package/dist/esm/common-utils/utils/apy/calculate-safe-borrow-rate.js +1 -1
  80. package/dist/esm/common-utils/utils/assets-math.js +1 -1
  81. package/dist/esm/common-utils/utils/creditAccount/calc-health-factor.js +1 -1
  82. package/dist/esm/common-utils/utils/creditAccount/debt.js +1 -1
  83. package/dist/esm/common-utils/utils/creditAccount/quota-utils.js +1 -1
  84. package/dist/esm/common-utils/utils/index.js +1 -1
  85. package/dist/esm/common-utils/utils/strategies/leverage/calculate-max-leverage-factor.js +1 -1
  86. package/dist/esm/common-utils/utils/strategies/leverage/calculate-max-strategy-debt.js +1 -1
  87. package/dist/esm/common-utils/utils/strategies/strategy-info/calculate-total-points.js +1 -1
  88. package/dist/esm/common-utils/utils/strategies/strategy-info/get-cm-you-can-earn.js +1 -1
  89. package/dist/esm/common-utils/utils/validation/validate-open-account-pool-status.js +1 -1
  90. package/dist/esm/dev/AccountOpener.js +1 -1
  91. package/dist/esm/dev/withdrawalUtils.js +1 -1
  92. package/dist/esm/model/history.js +26 -0
  93. package/dist/esm/model/history.schema.js +76 -0
  94. package/dist/esm/model/index.js +11 -0
  95. package/dist/esm/model/liquidations.js +22 -0
  96. package/dist/esm/model/liquidations.schema.js +85 -0
  97. package/dist/esm/model/opportunities.js +51 -0
  98. package/dist/esm/model/opportunities.schema.js +201 -0
  99. package/dist/esm/model/package.json +1 -0
  100. package/dist/esm/model/positions.js +1 -0
  101. package/dist/esm/model/positions.schema.js +109 -0
  102. package/dist/esm/model/primitives.js +1 -0
  103. package/dist/esm/model/primitives.schema.js +75 -0
  104. package/dist/esm/new-sdk/AbstractNamespace.js +157 -0
  105. package/dist/esm/new-sdk/GearboxSDK.js +121 -0
  106. package/dist/esm/new-sdk/index.js +7 -0
  107. package/dist/esm/new-sdk/opportunities/OpportunitiesNamespace.js +121 -0
  108. package/dist/esm/new-sdk/opportunities/index.js +3 -0
  109. package/dist/esm/new-sdk/opportunities/types.js +1 -0
  110. package/dist/esm/new-sdk/package.json +1 -0
  111. package/dist/esm/new-sdk/types.js +21 -0
  112. package/dist/esm/new-sdk/utils/history.js +1 -0
  113. package/dist/esm/new-sdk/utils/index.js +2 -0
  114. package/dist/esm/offchain/GearboxAPI.js +32 -0
  115. package/dist/esm/offchain/index.js +5 -0
  116. package/dist/esm/offchain/opportunities/OffchainOpportunities.js +95 -0
  117. package/dist/esm/offchain/opportunities/index.js +2 -0
  118. package/dist/esm/offchain/package.json +1 -0
  119. package/dist/esm/offchain/types.js +1 -0
  120. package/dist/esm/preview/preview/buildDelayedPreview.js +1 -1
  121. package/dist/esm/preview/simulate/simulatePoolOperation.js +1 -1
  122. package/dist/esm/preview/trace/extractTransfers.js +1 -1
  123. package/dist/esm/rewards/rewards/api.js +1 -1
  124. package/dist/esm/rewards/rewards/extra-apy.js +1 -1
  125. package/dist/esm/sdk/MultichainSDK.js +18 -2
  126. package/dist/esm/sdk/OnchainSDK.js +8 -1
  127. package/dist/esm/sdk/accounts/CreditAccountsServiceV310.js +2 -2
  128. package/dist/esm/sdk/accounts/index.js +2 -2
  129. package/dist/esm/sdk/accounts/liquidations/LiquidationsService.js +164 -109
  130. package/dist/esm/sdk/accounts/liquidations/MultichainLiquidationsService.js +32 -38
  131. package/dist/esm/sdk/accounts/liquidations/constants.js +12 -1
  132. package/dist/esm/sdk/accounts/liquidations/index.js +2 -2
  133. package/dist/esm/sdk/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -1
  134. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -1
  135. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -1
  136. package/dist/esm/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
  137. package/dist/esm/sdk/base/MultichainConstruct.js +79 -0
  138. package/dist/esm/sdk/base/TokensMeta.js +53 -2
  139. package/dist/esm/sdk/base/index.js +2 -1
  140. package/dist/esm/sdk/chain/chains.js +74 -2
  141. package/dist/esm/sdk/chain/detectNetwork.js +1 -1
  142. package/dist/esm/sdk/chain/index.js +2 -2
  143. package/dist/esm/sdk/core/createAddressProvider.js +1 -1
  144. package/dist/esm/sdk/core/errors.js +13 -1
  145. package/dist/esm/sdk/core/index.js +2 -2
  146. package/dist/esm/sdk/index.js +11 -5
  147. package/dist/esm/sdk/market/MarketConfiguratorContract.js +14 -0
  148. package/dist/esm/sdk/market/MarketSuite.js +159 -0
  149. package/dist/esm/sdk/market/credit/CreditFacadeV310BaseContract.js +1 -1
  150. package/dist/esm/sdk/market/credit/CreditManagerV310Contract.js +26 -0
  151. package/dist/esm/sdk/market/credit/CreditSuite.js +92 -0
  152. package/dist/esm/sdk/market/math.js +98 -0
  153. package/dist/esm/sdk/market/oracle/PriceOracleBaseContract.js +52 -0
  154. package/dist/esm/sdk/market/pool/LinearInterestRateModelContract.js +30 -0
  155. package/dist/esm/sdk/market/pool/PoolQuotaKeeperV310Contract.js +26 -0
  156. package/dist/esm/sdk/market/pool/PoolSuite.js +28 -0
  157. package/dist/esm/sdk/market/pool/PoolV310Contract.js +28 -1
  158. package/dist/esm/sdk/market/pool/math.js +41 -0
  159. package/dist/esm/sdk/market/pricefeeds/AbstractPriceFeed.js +17 -0
  160. package/dist/esm/sdk/market/zapper/IETHZapperContract.js +1 -1
  161. package/dist/esm/sdk/market/zapper/ZapperContract.js +1 -1
  162. package/dist/esm/sdk/opportunities/MultichainOpportunitiesService.js +59 -0
  163. package/dist/esm/sdk/opportunities/OpportunitiesService.js +47 -0
  164. package/dist/esm/sdk/opportunities/index.js +4 -0
  165. package/dist/esm/sdk/pools/PoolService.js +1 -1
  166. package/dist/esm/sdk/types/multichain.js +1 -0
  167. package/dist/esm/{common-utils → sdk}/utils/bigint-math.js +11 -11
  168. package/dist/esm/sdk/utils/index.js +3 -2
  169. package/dist/esm/sdk/utils/viem/simulateWithPriceUpdates.js +1 -1
  170. package/dist/esm/sdk/utils/zod.js +13 -2
  171. package/dist/types/common-utils/index.d.ts +1 -1
  172. package/dist/types/common-utils/utils/index.d.ts +1 -1
  173. package/dist/types/model/history.d.ts +105 -0
  174. package/dist/types/model/history.schema.d.ts +66 -0
  175. package/dist/types/model/index.d.ts +11 -0
  176. package/dist/types/model/liquidations.d.ts +238 -0
  177. package/dist/types/model/liquidations.schema.d.ts +294 -0
  178. package/dist/types/model/opportunities.d.ts +584 -0
  179. package/dist/types/model/opportunities.schema.d.ts +1037 -0
  180. package/dist/types/model/positions.d.ts +247 -0
  181. package/dist/types/model/positions.schema.d.ts +701 -0
  182. package/dist/types/model/primitives.d.ts +194 -0
  183. package/dist/types/model/primitives.schema.d.ts +81 -0
  184. package/dist/types/new-sdk/AbstractNamespace.d.ts +119 -0
  185. package/dist/types/new-sdk/GearboxSDK.d.ts +78 -0
  186. package/dist/types/new-sdk/index.d.ts +9 -0
  187. package/dist/types/new-sdk/opportunities/OpportunitiesNamespace.d.ts +69 -0
  188. package/dist/types/new-sdk/opportunities/index.d.ts +3 -0
  189. package/dist/types/new-sdk/opportunities/types.d.ts +66 -0
  190. package/dist/types/new-sdk/types.d.ts +149 -0
  191. package/dist/types/new-sdk/utils/history.d.ts +44 -0
  192. package/dist/types/new-sdk/utils/index.d.ts +2 -0
  193. package/dist/types/offchain/GearboxAPI.d.ts +31 -0
  194. package/dist/types/offchain/index.d.ts +5 -0
  195. package/dist/types/offchain/opportunities/OffchainOpportunities.d.ts +69 -0
  196. package/dist/types/offchain/opportunities/index.d.ts +2 -0
  197. package/dist/types/offchain/types.d.ts +50 -0
  198. package/dist/types/sdk/MultichainSDK.d.ts +15 -2
  199. package/dist/types/sdk/OnchainSDK.d.ts +9 -3
  200. package/dist/types/sdk/accounts/index.d.ts +3 -3
  201. package/dist/types/sdk/accounts/liquidations/LiquidationsService.d.ts +24 -16
  202. package/dist/types/sdk/accounts/liquidations/MultichainLiquidationsService.d.ts +26 -20
  203. package/dist/types/sdk/accounts/liquidations/constants.d.ts +12 -1
  204. package/dist/types/sdk/accounts/liquidations/index.d.ts +3 -3
  205. package/dist/types/sdk/accounts/liquidations/types.d.ts +34 -309
  206. package/dist/types/sdk/base/MultichainConstruct.d.ts +57 -0
  207. package/dist/types/sdk/base/TokensMeta.d.ts +26 -0
  208. package/dist/types/sdk/base/index.d.ts +2 -1
  209. package/dist/types/sdk/chain/chains.d.ts +68 -1
  210. package/dist/types/sdk/chain/index.d.ts +2 -2
  211. package/dist/types/sdk/core/errors.d.ts +10 -1
  212. package/dist/types/sdk/core/index.d.ts +2 -2
  213. package/dist/types/sdk/index.d.ts +15 -8
  214. package/dist/types/sdk/market/MarketConfiguratorContract.d.ts +9 -0
  215. package/dist/types/sdk/market/MarketSuite.d.ts +98 -1
  216. package/dist/types/sdk/market/credit/CreditManagerV310Contract.d.ts +14 -0
  217. package/dist/types/sdk/market/credit/CreditSuite.d.ts +43 -0
  218. package/dist/types/sdk/market/credit/types.d.ts +22 -0
  219. package/dist/types/sdk/market/index.d.ts +2 -2
  220. package/dist/types/sdk/market/math.d.ts +74 -0
  221. package/dist/types/sdk/market/oracle/PriceOracleBaseContract.d.ts +23 -0
  222. package/dist/types/sdk/market/oracle/types.d.ts +46 -0
  223. package/dist/types/sdk/market/pool/LinearInterestRateModelContract.d.ts +12 -0
  224. package/dist/types/sdk/market/pool/PoolQuotaKeeperV310Contract.d.ts +22 -1
  225. package/dist/types/sdk/market/pool/PoolSuite.d.ts +23 -0
  226. package/dist/types/sdk/market/pool/PoolV310Contract.d.ts +18 -0
  227. package/dist/types/sdk/market/pool/math.d.ts +57 -0
  228. package/dist/types/sdk/market/pool/types.d.ts +23 -0
  229. package/dist/types/sdk/market/pricefeeds/AbstractPriceFeed.d.ts +6 -0
  230. package/dist/types/sdk/market/pricefeeds/types.d.ts +10 -0
  231. package/dist/types/sdk/opportunities/MultichainOpportunitiesService.d.ts +40 -0
  232. package/dist/types/sdk/opportunities/OpportunitiesService.d.ts +42 -0
  233. package/dist/types/sdk/opportunities/index.d.ts +4 -0
  234. package/dist/types/sdk/types/index.d.ts +2 -1
  235. package/dist/types/sdk/types/multichain.d.ts +65 -0
  236. package/dist/types/sdk/types/state.d.ts +1 -1
  237. package/dist/types/sdk/types/transactions.d.ts +3 -0
  238. package/dist/types/{common-utils → sdk}/utils/bigint-math.d.ts +7 -11
  239. package/dist/types/sdk/utils/index.d.ts +3 -2
  240. package/dist/types/sdk/utils/zod.d.ts +6 -2
  241. package/package.json +16 -1
  242. package/dist/cjs/sdk/accounts/liquidations/helpers.js +0 -201
  243. package/dist/esm/sdk/accounts/liquidations/helpers.js +0 -192
  244. package/dist/types/sdk/accounts/liquidations/helpers.d.ts +0 -140
@@ -1,5 +1,5 @@
1
- import { LIQUIDATION_COMPRESSOR_V313_ADDRESS } from "./constants.js";
1
+ import { DUST_THRESHOLD, LIQUIDATION_APPROVAL_BUFFER, LIQUIDATION_COMPRESSOR_V313_ADDRESS } from "./constants.js";
2
2
  import { LiquidationsService } from "./LiquidationsService.js";
3
3
  import { MultichainLiquidationsService } from "./MultichainLiquidationsService.js";
4
4
  import "./types.js";
5
- export { LIQUIDATION_COMPRESSOR_V313_ADDRESS, LiquidationsService, MultichainLiquidationsService };
5
+ export { DUST_THRESHOLD, LIQUIDATION_APPROVAL_BUFFER, LIQUIDATION_COMPRESSOR_V313_ADDRESS, LiquidationsService, MultichainLiquidationsService };
@@ -1,7 +1,7 @@
1
- import { iRedemptionLoggerV310Abi } from "../../../abi/iRedemptionLoggerV310.js";
2
1
  import { BaseContract } from "../../base/BaseContract.js";
3
2
  import "../../base/index.js";
4
3
  import { decodeDelayedIntent } from "./intent-codec.js";
4
+ import { iRedemptionLoggerV310Abi } from "../../../abi/iRedemptionLoggerV310.js";
5
5
  import { InvalidDelayedIntentError } from "./errors.js";
6
6
  //#region src/sdk/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.ts
7
7
  const abi = iRedemptionLoggerV310Abi;
@@ -1,5 +1,5 @@
1
- import { iWithdrawalCompressorV310Abi } from "../../../abi/IWithdrawalCompressorV310.js";
2
1
  import { AbstractWithdrawalCompressorContract } from "./AbstractWithdrawalCompressorContract.js";
2
+ import { iWithdrawalCompressorV310Abi } from "../../../abi/IWithdrawalCompressorV310.js";
3
3
  //#region src/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.ts
4
4
  const abi = iWithdrawalCompressorV310Abi;
5
5
  /**
@@ -1,5 +1,5 @@
1
- import { iWithdrawalCompressorV311Abi } from "../../../abi/IWithdrawalCompressorV311.js";
2
1
  import { AbstractWithdrawalCompressorContract } from "./AbstractWithdrawalCompressorContract.js";
2
+ import { iWithdrawalCompressorV311Abi } from "../../../abi/IWithdrawalCompressorV311.js";
3
3
  //#region src/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.ts
4
4
  const abi = iWithdrawalCompressorV311Abi;
5
5
  /**
@@ -1,6 +1,6 @@
1
- import { iWithdrawalCompressorV313Abi } from "../../../abi/IWithdrawalCompressorV313.js";
2
1
  import { encodeDelayedIntent } from "./intent-codec.js";
3
2
  import { AbstractWithdrawalCompressorContract, iCreditAccountAbi, toClaimableWithdrawal, toPendingWithdrawal, toRequestableWithdrawal } from "./AbstractWithdrawalCompressorContract.js";
3
+ import { iWithdrawalCompressorV313Abi } from "../../../abi/IWithdrawalCompressorV313.js";
4
4
  import { toWithdrawalStatus } from "./types.js";
5
5
  //#region src/sdk/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.ts
6
6
  const abi = iWithdrawalCompressorV313Abi;
@@ -0,0 +1,79 @@
1
+ import { ChainNotConfiguredError } from "../core/errors.js";
2
+ //#region src/sdk/base/MultichainConstruct.ts
3
+ /**
4
+ * @internal
5
+ * Base class for services that fan out over the chains of a
6
+ * {@link MultichainSDK}, the cross-chain counterpart of {@link SDKConstruct}.
7
+ *
8
+ * Requests are soft-failing: a chain that rejects (including a chain that is
9
+ * not configured in the SDK) is logged as a warning and contributes no payload,
10
+ * while the remaining chains still return their results. Every queried chain is
11
+ * reported in {@link MultichainResult.meta}.
12
+ *
13
+ * @typeParam Plugins - Map of attached plugin types.
14
+ **/
15
+ var MultichainConstruct = class {
16
+ sdk;
17
+ constructor(sdk) {
18
+ this.sdk = sdk;
19
+ }
20
+ /**
21
+ * Fans out a request that returns a list, concatenating the lists of all
22
+ * chains that responded successfully.
23
+ **/
24
+ async queryChains(props) {
25
+ const { values, meta } = await this.#settle(props);
26
+ return {
27
+ result: values.flat(),
28
+ meta
29
+ };
30
+ }
31
+ /**
32
+ * Fans out a request with no payload, reporting the outcome of every queried
33
+ * chain in {@link MultichainResult.meta}.
34
+ **/
35
+ async runChains(props) {
36
+ const { meta } = await this.#settle(props);
37
+ return {
38
+ result: void 0,
39
+ meta
40
+ };
41
+ }
42
+ /**
43
+ * Runs the request on all queried chains in parallel. Duplicate networks are
44
+ * queried once, and {@link SettledChains.meta} follows the requested order.
45
+ **/
46
+ async #settle({ networks, label, run }) {
47
+ const requested = networks ? [...new Set(networks)] : [...this.sdk.chains.keys()];
48
+ const settled = await Promise.allSettled(requested.map(async (network) => {
49
+ const chainSdk = this.sdk.chains.get(network);
50
+ if (!chainSdk) throw new ChainNotConfiguredError(network);
51
+ return run(chainSdk);
52
+ }));
53
+ const values = [];
54
+ const meta = [];
55
+ settled.forEach((result, i) => {
56
+ const network = requested[i];
57
+ if (result.status === "fulfilled") {
58
+ values.push(result.value);
59
+ meta.push({
60
+ network,
61
+ status: "success"
62
+ });
63
+ return;
64
+ }
65
+ (this.sdk.chains.get(network)?.logger ?? this.sdk.logger)?.warn(result.reason, `failed to ${label} on ${network}`);
66
+ meta.push({
67
+ network,
68
+ status: "error",
69
+ error: result.reason
70
+ });
71
+ });
72
+ return {
73
+ values,
74
+ meta
75
+ };
76
+ }
77
+ };
78
+ //#endregion
79
+ export { MultichainConstruct };
@@ -1,10 +1,11 @@
1
- import { iStateSerializerAbi } from "../../abi/iStateSerializer.js";
2
- import { iVersionAbi } from "../../abi/iVersion.js";
3
1
  import { AddressMap } from "../utils/AddressMap.js";
4
2
  import { AddressSet } from "../utils/AddressSet.js";
5
3
  import { bytes32ToString } from "../utils/bytes32ToString.js";
4
+ import { getAssetType } from "../chain/chains.js";
6
5
  import { formatBN } from "../utils/formatter.js";
7
6
  import "../utils/index.js";
7
+ import { iStateSerializerAbi } from "../../abi/iStateSerializer.js";
8
+ import { iVersionAbi } from "../../abi/iVersion.js";
8
9
  //#region src/sdk/base/TokensMeta.ts
9
10
  /**
10
11
  * Registry of token metadata (symbol, decimals, phantom type) keyed by address.
@@ -90,6 +91,56 @@ var TokensMeta = class extends AddressMap {
90
91
  for (const [token, meta] of this.entries()) if (this.isRWAUnderlying(meta)) result.upsert(token, meta);
91
92
  return result;
92
93
  }
94
+ /**
95
+ * Describes a token the way the shared read model does.
96
+ *
97
+ * @param address - Token address.
98
+ * @throws If the token is not in the registry.
99
+ */
100
+ mustGetToken(address) {
101
+ const meta = this.mustGet(address);
102
+ return {
103
+ chainId: this.#client.chain.id,
104
+ address: meta.addr,
105
+ symbol: meta.symbol,
106
+ name: meta.name,
107
+ decimals: meta.decimals,
108
+ assetType: getAssetType(meta.addr, this.#networkType)
109
+ };
110
+ }
111
+ /**
112
+ * Like {@link mustGetToken}, but returns `undefined` instead of throwing when the
113
+ * token is not in the registry.
114
+ *
115
+ * @param address - Token address.
116
+ */
117
+ getToken(address) {
118
+ return this.get(address) ? this.mustGetToken(address) : void 0;
119
+ }
120
+ /**
121
+ * The token an RWA wrapper holds, or the token itself when it is not one.
122
+ *
123
+ * An RWA market borrows a compliance wrapper (e.g. `dcUSDC`) that converts
124
+ * one-for-one with the token behind it (`USDC`), and only that token means
125
+ * anything to a reader. Pricing still goes through the wrapper, which is what
126
+ * a market's oracle knows.
127
+ *
128
+ * @param token - Token address, wrapper or not.
129
+ */
130
+ unwrapRWA(token) {
131
+ const meta = this.get(token);
132
+ if (!meta || !this.isRWAUnderlying(meta)) return token;
133
+ if (!this.has(meta.asset)) {
134
+ this.#logger?.debug(`no token meta for ${meta.asset} wrapped by ${token}, reporting the wrapper instead`);
135
+ return token;
136
+ }
137
+ return meta.asset;
138
+ }
139
+ get #networkType() {
140
+ const { chain } = this.#client;
141
+ if ("network" in chain) return chain.network;
142
+ throw new Error(`chain ${chain.id} is not a Gearbox SDK chain`);
143
+ }
93
144
  formatBN(arg0, arg1, arg2) {
94
145
  const token = typeof arg0 === "object" ? arg0.token : arg0;
95
146
  const amount = typeof arg0 === "object" ? arg0.balance : arg1;
@@ -3,8 +3,9 @@ import { ChainContractsRegister } from "./ChainContractsRegister.js";
3
3
  import { Construct } from "./Construct.js";
4
4
  import { BaseContract, ContractParseError } from "./BaseContract.js";
5
5
  import { MissingSerializedParamsError } from "./errors.js";
6
+ import { MultichainConstruct } from "./MultichainConstruct.js";
6
7
  import { PlaceholderContract } from "./PlaceholderContract.js";
7
8
  import { SDKConstruct } from "./SDKConstruct.js";
8
9
  import { PHANTOM_TOKEN_CONTRACT_TYPES, RWA_ON_DEMAND_LP_MONOPOLIZED, RWA_UNDERLYING_DEFAULT, RWA_UNDERLYING_ON_DEMAND } from "./token-types.js";
9
10
  import { VotingContractStatus } from "./types.js";
10
- export { BaseContract, ChainContractsRegister, Construct, ContractParseError, MissingSerializedParamsError, PHANTOM_TOKEN_CONTRACT_TYPES, PlaceholderContract, RWA_ON_DEMAND_LP_MONOPOLIZED, RWA_UNDERLYING_DEFAULT, RWA_UNDERLYING_ON_DEMAND, SDKConstruct, TokensMeta, VotingContractStatus };
11
+ export { BaseContract, ChainContractsRegister, Construct, ContractParseError, MissingSerializedParamsError, MultichainConstruct, PHANTOM_TOKEN_CONTRACT_TYPES, PlaceholderContract, RWA_ON_DEMAND_LP_MONOPOLIZED, RWA_UNDERLYING_DEFAULT, RWA_UNDERLYING_ON_DEMAND, SDKConstruct, TokensMeta, VotingContractStatus };
@@ -1,5 +1,5 @@
1
1
  import { TypedObjectUtils } from "../utils/mappers.js";
2
- import { defineChain } from "viem";
2
+ import { defineChain, isAddressEqual } from "viem";
3
3
  import { arbitrum, avalanche, base, berachain, bsc, etherlink, hemi, lisk, mainnet, megaeth, monad, optimism, plasma, somnia, sonic, worldchain } from "viem/chains";
4
4
  import { z } from "zod/v4";
5
5
  //#region src/sdk/chain/chains.ts
@@ -62,6 +62,19 @@ const chains = {
62
62
  "0xa770ce584adb6491a2138da6eaec33243bdcd248": "Testnet Curator"
63
63
  },
64
64
  rwaFactories: [],
65
+ underlyingAssetTypes: {
66
+ "0x7f39C581F595B53c5cb19bD0b3f8dA6c935E2Ca0": "ETH",
67
+ "0xC02aaA39b223FE8D0A0e5C4F27eAD9083C756Cc2": "ETH",
68
+ "0x18084fbA666a33d37592fA2633fD49a74DD93a88": "BTC",
69
+ "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48": "Stable",
70
+ "0x2260FAC5E5542a773Aa44fBCfeDf7C193bc2C599": "BTC"
71
+ },
72
+ rwaTokens: [
73
+ "0x17418038ecF73BA4026c4f428547BF099706F27B",
74
+ "0x51C2d74017390CbBd30550179A16A1c28F7210fc",
75
+ "0x238a700eD6165261Cf8b2e544ba797BC11e466Ba",
76
+ "0x7433806912Eae67919e66aea853d46Fa0aef98A8"
77
+ ],
65
78
  isPublic: true,
66
79
  wellKnownToken: {
67
80
  address: "0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48",
@@ -152,6 +165,12 @@ const chains = {
152
165
  "0x16956912813ab9a38d95730b52a8cf53e860a7c5": "Tulipa",
153
166
  "0x7c6ee1bf9c1eb3ee55bdbdc1e8d0317aab718e0a": "UltraYield"
154
167
  },
168
+ underlyingAssetTypes: {
169
+ "0x3bd359C1119dA7Da1D913D1C4D2B7c461115433A": "ETH",
170
+ "0x754704Bc059F8C67012fEd69BC8A327a5aafb603": "Stable",
171
+ "0xe7cd86e13AC4309349F30B3435a9d337750fC82D": "Stable",
172
+ "0x00000000eFE302BEAA2b3e6e1b18d08D69a9012a": "Stable"
173
+ },
155
174
  rwaFactories: [],
156
175
  isPublic: true,
157
176
  wellKnownToken: {
@@ -223,6 +242,7 @@ const chains = {
223
242
  ...etherlink,
224
243
  network: "Etherlink",
225
244
  defaultMarketConfigurators: { "0x577424f0e6f50db668cc1bc76babb87e36732291": "Re7" },
245
+ underlyingAssetTypes: { "0x796Ea11Fa2dD751eD01b53C372fFDB4AAa8f00F9": "Stable" },
226
246
  rwaFactories: [],
227
247
  isPublic: true,
228
248
  wellKnownToken: {
@@ -269,6 +289,10 @@ const chains = {
269
289
  "0xce1cf71a28837daaa7b92d00ca4ef2fd649c2a67": "Hyperithm",
270
290
  "0x9655f82b585b11cee8a05576ed8efcf755cec04b": "TelosC"
271
291
  },
292
+ underlyingAssetTypes: {
293
+ "0xB8CE59FC3717ada4C02eaDF9682A9e934F625ebb": "Stable",
294
+ "0x5d3a1Ff2b6BAb83b63cd9AD0787074081a52ef34": "Stable"
295
+ },
272
296
  rwaFactories: [],
273
297
  isPublic: true,
274
298
  wellKnownToken: {
@@ -288,6 +312,10 @@ const chains = {
288
312
  blockTime: 200,
289
313
  network: "Somnia",
290
314
  defaultMarketConfigurators: { "0x1ca8b92aa7233a9f8f7ba031ac45c878141adff0": "Invariant Group" },
315
+ underlyingAssetTypes: {
316
+ "0x28BEc7E30E6faee657a03e19Bf1128AaD7632A00": "Stable",
317
+ "0x046EDe9564A72571df6F5e44d0405360c0f4dCab": "ETH"
318
+ },
291
319
  rwaFactories: [],
292
320
  isPublic: true,
293
321
  wellKnownToken: {
@@ -378,5 +406,49 @@ function findCuratorMarketConfigurator(curator, network) {
378
406
  };
379
407
  for (const [a, c] of TypedObjectUtils.entries(all)) if (c === curator) return a;
380
408
  }
409
+ /**
410
+ * Looks up the {@link AssetType} of a token in hardcoded classifier.
411
+ * Not all tokens are classified, only underlyings, so the default answer is `undefined`.
412
+ *
413
+ * @param token - Token address
414
+ * @param network - Network the token lives on.
415
+ * @returns The asset type, or `undefined` when the token is not classified
416
+ **/
417
+ function getAssetType(token, network) {
418
+ const table = chains[network].underlyingAssetTypes;
419
+ if (!table) return;
420
+ for (const [a, assetType] of TypedObjectUtils.entries(table)) if (isAddressEqual(a, token)) return assetType;
421
+ }
422
+ /**
423
+ * Checks whether a token represents a real-world asset, per the curated list of
424
+ * a network.
425
+ *
426
+ * @param token - Token address.
427
+ * @param network - Network the token lives on.
428
+ **/
429
+ function isRWAToken(token, network) {
430
+ return !!chains[network].rwaTokens?.some((t) => isAddressEqual(t, token));
431
+ }
432
+ /**
433
+ * Checks whether a pool is on the sunset list of a network.
434
+ *
435
+ * @param pool - Pool address.
436
+ * @param network - Network the pool lives on.
437
+ **/
438
+ function isSunsetPool(pool, network) {
439
+ return !!chains[network].sunsetPools?.some((p) => isAddressEqual(p, pool));
440
+ }
441
+ /**
442
+ * Checks whether a strategy is on the sunset list of a network. Both halves of
443
+ * the strategy key must match: a credit manager can wind down one collateral
444
+ * and keep the rest.
445
+ *
446
+ * @param creditManager - Credit manager address.
447
+ * @param collateral - Target collateral of the strategy.
448
+ * @param network - Network the strategy lives on.
449
+ **/
450
+ function isSunsetStrategy(creditManager, collateral, network) {
451
+ return !!chains[network].sunsetStrategies?.some((s) => isAddressEqual(s.creditManager, creditManager) && isAddressEqual(s.collateral, collateral));
452
+ }
381
453
  //#endregion
382
- export { NetworkType, SUPPORTED_NETWORKS, chains, findCuratorMarketConfigurator, getChain, getCuratorName, getNetworkType, isPublicNetwork, isSupportedNetwork };
454
+ export { NetworkType, SUPPORTED_NETWORKS, chains, findCuratorMarketConfigurator, getAssetType, getChain, getCuratorName, getNetworkType, isPublicNetwork, isRWAToken, isSunsetPool, isSunsetStrategy, isSupportedNetwork };
@@ -1,5 +1,5 @@
1
- import { ierc20Abi } from "../../abi/iERC20.js";
2
1
  import { chains } from "./chains.js";
2
+ import { ierc20Abi } from "../../abi/iERC20.js";
3
3
  //#region src/sdk/chain/detectNetwork.ts
4
4
  /**
5
5
  * Detects the network type from the given client.
@@ -1,3 +1,3 @@
1
- import { NetworkType, SUPPORTED_NETWORKS, chains, findCuratorMarketConfigurator, getChain, getCuratorName, getNetworkType, isPublicNetwork, isSupportedNetwork } from "./chains.js";
1
+ import { NetworkType, SUPPORTED_NETWORKS, chains, findCuratorMarketConfigurator, getAssetType, getChain, getCuratorName, getNetworkType, isPublicNetwork, isRWAToken, isSunsetPool, isSunsetStrategy, isSupportedNetwork } from "./chains.js";
2
2
  import { detectNetwork } from "./detectNetwork.js";
3
- export { NetworkType, SUPPORTED_NETWORKS, chains, detectNetwork, findCuratorMarketConfigurator, getChain, getCuratorName, getNetworkType, isPublicNetwork, isSupportedNetwork };
3
+ export { NetworkType, SUPPORTED_NETWORKS, chains, detectNetwork, findCuratorMarketConfigurator, getAssetType, getChain, getCuratorName, getNetworkType, isPublicNetwork, isRWAToken, isSunsetPool, isSunsetStrategy, isSupportedNetwork };
@@ -1,8 +1,8 @@
1
- import { iVersionAbi } from "../../abi/iVersion.js";
2
1
  import { AP_MARKET_COMPRESSOR, AP_PRICE_FEED_COMPRESSOR } from "../constants/address-provider.js";
3
2
  import { isV310 } from "../constants/versions.js";
4
3
  import "../constants/index.js";
5
4
  import { hexEq } from "../utils/hex.js";
5
+ import { iVersionAbi } from "../../abi/iVersion.js";
6
6
  import { AddressProviderV310Contract } from "./AddressProviderV310Contract.js";
7
7
  //#region src/sdk/core/createAddressProvider.ts
8
8
  const OVERRIDE_ADDRESSES = { Mainnet: {
@@ -51,6 +51,18 @@ var SdkMissingChainStateError = class extends BaseError {
51
51
  }
52
52
  };
53
53
  /**
54
+ * Thrown when a chain that is not configured in {@link MultichainSDK} is
55
+ * requested.
56
+ */
57
+ var ChainNotConfiguredError = class extends BaseError {
58
+ name = "ChainNotConfiguredError";
59
+ network;
60
+ constructor(network) {
61
+ super(`Chain ${String(network)} is not configured in this MultichainSDK`);
62
+ this.network = network;
63
+ }
64
+ };
65
+ /**
54
66
  * Thrown by {@link MultichainSDK.syncState} when one or more per-chain syncs
55
67
  * fail. Wraps the individual errors keyed by network.
56
68
  */
@@ -64,4 +76,4 @@ var SdkSyncFailedError = class extends BaseError {
64
76
  }
65
77
  };
66
78
  //#endregion
67
- export { SdkAlreadyAttachedError, SdkChainMismatchError, SdkMissingChainStateError, SdkNotAttachedError, SdkStateVersionMismatchError, SdkSyncFailedError };
79
+ export { ChainNotConfiguredError, SdkAlreadyAttachedError, SdkChainMismatchError, SdkMissingChainStateError, SdkNotAttachedError, SdkStateVersionMismatchError, SdkSyncFailedError };
@@ -1,5 +1,5 @@
1
+ import { ChainNotConfiguredError, SdkAlreadyAttachedError, SdkChainMismatchError, SdkMissingChainStateError, SdkNotAttachedError, SdkStateVersionMismatchError, SdkSyncFailedError } from "./errors.js";
1
2
  import { AddressProviderV310Contract } from "./AddressProviderV310Contract.js";
2
3
  import { createAddressProvider, hydrateAddressProvider } from "./createAddressProvider.js";
3
- import { SdkAlreadyAttachedError, SdkChainMismatchError, SdkMissingChainStateError, SdkNotAttachedError, SdkStateVersionMismatchError, SdkSyncFailedError } from "./errors.js";
4
4
  import "./types.js";
5
- export { AddressProviderV310Contract, SdkAlreadyAttachedError, SdkChainMismatchError, SdkMissingChainStateError, SdkNotAttachedError, SdkStateVersionMismatchError, SdkSyncFailedError, createAddressProvider, hydrateAddressProvider };
5
+ export { AddressProviderV310Contract, ChainNotConfiguredError, SdkAlreadyAttachedError, SdkChainMismatchError, SdkMissingChainStateError, SdkNotAttachedError, SdkStateVersionMismatchError, SdkSyncFailedError, createAddressProvider, hydrateAddressProvider };
@@ -3,11 +3,12 @@ import { AddressSet } from "./utils/AddressSet.js";
3
3
  import { AssetsMap } from "./utils/AssetsMap.js";
4
4
  import { json_parse, json_stringify } from "./utils/json.js";
5
5
  import { functionArgsToMap, functionArgsToRecord, getFunctionSignature } from "./utils/abi-decode.js";
6
+ import { BigIntMath } from "./utils/bigint-math.js";
6
7
  import { bytes32ToString } from "./utils/bytes32ToString.js";
7
8
  import { childLogger } from "./utils/childLogger.js";
8
9
  import { createRawTx } from "./utils/createRawTx.js";
9
10
  import { TypedObjectUtils } from "./utils/mappers.js";
10
- import { NetworkType, SUPPORTED_NETWORKS, chains, findCuratorMarketConfigurator, getChain, getCuratorName, getNetworkType, isPublicNetwork, isSupportedNetwork } from "./chain/chains.js";
11
+ import { NetworkType, SUPPORTED_NETWORKS, chains, findCuratorMarketConfigurator, getAssetType, getChain, getCuratorName, getNetworkType, isPublicNetwork, isRWAToken, isSunsetPool, isSunsetStrategy, isSupportedNetwork } from "./chain/chains.js";
11
12
  import { detectNetwork } from "./chain/detectNetwork.js";
12
13
  import "./chain/index.js";
13
14
  import { etherscanApiUrl, etherscanUrl } from "./utils/etherscan.js";
@@ -25,7 +26,7 @@ import { fmtBinaryMask, formatBN, formatBNvalue, formatDuration, formatLeverage,
25
26
  import { hexEq } from "./utils/hex.js";
26
27
  import { retry } from "./utils/retry.js";
27
28
  import { toAddress } from "./utils/toAddress.js";
28
- import { ZodAddress } from "./utils/zod.js";
29
+ import { ZodAddress, ZodHex } from "./utils/zod.js";
29
30
  import "./utils/index.js";
30
31
  import { generateCastTraceCall, getCastTraceArgs } from "./utils/viem/cast.js";
31
32
  import { SimulationError, simulateCall } from "./utils/viem/simulateCall.js";
@@ -34,6 +35,8 @@ import { ChainContractsRegister } from "./base/ChainContractsRegister.js";
34
35
  import { Construct } from "./base/Construct.js";
35
36
  import { BaseContract, ContractParseError } from "./base/BaseContract.js";
36
37
  import { MissingSerializedParamsError } from "./base/errors.js";
38
+ import { ChainNotConfiguredError, SdkAlreadyAttachedError, SdkChainMismatchError, SdkMissingChainStateError, SdkNotAttachedError, SdkStateVersionMismatchError, SdkSyncFailedError } from "./core/errors.js";
39
+ import { MultichainConstruct } from "./base/MultichainConstruct.js";
37
40
  import { PlaceholderContract } from "./base/PlaceholderContract.js";
38
41
  import { SDKConstruct } from "./base/SDKConstruct.js";
39
42
  import { PHANTOM_TOKEN_CONTRACT_TYPES, RWA_ON_DEMAND_LP_MONOPOLIZED, RWA_UNDERLYING_DEFAULT, RWA_UNDERLYING_ON_DEMAND } from "./base/token-types.js";
@@ -44,6 +47,7 @@ import { createAdapter } from "./market/adapters/createAdapter.js";
44
47
  import { CreditConfiguratorV310Contract } from "./market/credit/CreditConfiguratorV310Contract.js";
45
48
  import { CreditFacadeV310BaseContract, creditFacadeV310Abi as abi } from "./market/credit/CreditFacadeV310BaseContract.js";
46
49
  import { CreditFacadeV310Contract } from "./market/credit/CreditFacadeV310Contract.js";
50
+ import { additionalBorrowApyBps, borrowApyBps, maxLeverage, rayToBps, usdToNumber, utilizationBps } from "./market/math.js";
47
51
  import { CreditManagerV310Contract } from "./market/credit/CreditManagerV310Contract.js";
48
52
  import { CreditSuite } from "./market/credit/CreditSuite.js";
49
53
  import { simulateMulticall } from "./utils/viem/simulateMulticall.js";
@@ -99,7 +103,7 @@ import { RWARegistry } from "./market/rwa/RWARegistry.js";
99
103
  import { RWA_FACTORY_TYPES, isRWAFactory } from "./market/rwa/types.js";
100
104
  import "./market/index.js";
101
105
  import { CreditAccountsServiceV310 } from "./accounts/CreditAccountsServiceV310.js";
102
- import { LIQUIDATION_COMPRESSOR_V313_ADDRESS } from "./accounts/liquidations/constants.js";
106
+ import { DUST_THRESHOLD, LIQUIDATION_APPROVAL_BUFFER, LIQUIDATION_COMPRESSOR_V313_ADDRESS } from "./accounts/liquidations/constants.js";
103
107
  import { LiquidationsService } from "./accounts/liquidations/LiquidationsService.js";
104
108
  import { MultichainLiquidationsService } from "./accounts/liquidations/MultichainLiquidationsService.js";
105
109
  import { DELAYED_INTENT_TYPES, DELAYED_INTENT_VERSION, decodeDelayedIntent, encodeDelayedIntent } from "./accounts/withdrawal-compressor/intent-codec.js";
@@ -116,8 +120,10 @@ import { createWithdrawalCompressor } from "./accounts/withdrawal-compressor/cre
116
120
  import "./accounts/index.js";
117
121
  import { AddressProviderV310Contract } from "./core/AddressProviderV310Contract.js";
118
122
  import { createAddressProvider, hydrateAddressProvider } from "./core/createAddressProvider.js";
119
- import { SdkAlreadyAttachedError, SdkChainMismatchError, SdkMissingChainStateError, SdkNotAttachedError, SdkStateVersionMismatchError, SdkSyncFailedError } from "./core/errors.js";
120
123
  import "./core/index.js";
124
+ import { MultichainOpportunitiesService } from "./opportunities/MultichainOpportunitiesService.js";
125
+ import { OpportunitiesService } from "./opportunities/OpportunitiesService.js";
126
+ import "./opportunities/index.js";
121
127
  import { BasePlugin } from "./plugins/BasePlugin.js";
122
128
  import { PluginStateVersionError } from "./plugins/errors.js";
123
129
  import "./plugins/index.js";
@@ -131,4 +137,4 @@ import { OnchainSDK, STATE_VERSION } from "./OnchainSDK.js";
131
137
  import { MultichainSDK } from "./MultichainSDK.js";
132
138
  import { attachOptionsSchema, onchainSDKOptionsSchema } from "./options.js";
133
139
  import "./types/index.js";
134
- export { ADDRESS_0X0, ADDRESS_PROVIDER_V310, AP_ACCOUNT_FACTORY, AP_ACL, AP_BOT_LIST, AP_BYTECODE_REPOSITORY, AP_CONTRACTS_REGISTER, AP_CONTROLLER_TIMELOCK, AP_CREDIT_ACCOUNT_COMPRESSOR, AP_CREDIT_SUITE_COMPRESSOR, AP_DATA_COMPRESSOR, AP_DELEVERAGE_BOT_HV, AP_DELEVERAGE_BOT_LV, AP_DELEVERAGE_BOT_PEGGED, AP_GAUGE_COMPRESSOR, AP_GEAR_STAKING, AP_GEAR_TOKEN, AP_INFLATION_ATTACK_BLOCKER, AP_INSOLVENCY_CHECKER, AP_MARKET_COMPRESSOR, AP_MARKET_CONFIGURATOR, AP_PARTIAL_LIQUIDATION_BOT, AP_PERIPHERY_COMPRESSOR, AP_PRICE_FEED_COMPRESSOR, AP_PRICE_FEED_STORE, AP_PRICE_ORACLE, AP_REDEMPTION_LOGGER, AP_REWARDS_COMPRESSOR, AP_ROUTER, AP_RWA_COMPRESSOR, AP_TOKEN_COMPRESSOR, AP_TREASURY, AP_WETH_GATEWAY, AP_WETH_TOKEN, AP_ZAPPER_REGISTER, AP_ZERO_PRICE_FEED, AbstractLPPriceFeedContract, AbstractPriceFeedContract, AbstractWithdrawalCompressorContract, AddressMap, AddressProviderV310Contract, AddressSet, AssetsMap, BLOCKS_PER_WEEK_BY_NETWORK, BalancerStablePriceFeedContract, BalancerWeightedPriceFeedContract, BaseContract, BasePlugin, BotPermissions, BoundedPriceFeedContract, ChainContractsRegister, CompositePriceFeedContract, Construct, ContractParseError, CreditAccountsServiceV310, CreditConfiguratorV310Contract, CreditFacadeV310BaseContract, CreditFacadeV310Contract, CreditManagerV310Contract, CreditSuite, CurveCryptoPriceFeedContract, CurveStablePriceFeedContract, CurveUSDPriceFeedContract, DELAYED_INTENT_TYPES, DELAYED_INTENT_VERSION, Erc4626PriceFeedContract, ExternalPriceFeedContract, GaugeContract, IERC20ZapperContract, IETHZapperContract, InvalidDelayedIntentError, LEVERAGE_DECIMALS, LIQUIDATION_COMPRESSOR_V313_ADDRESS, LinearInterestRateModelContract, LiquidationsService, MAX_INT, MAX_UINT16, MAX_UINT256, MIN_INT96, MULTICALL_ADDRESS, MarketRegister, MarketSuite, MellowLRTPriceFeedContract, MidasLiquidatorContract, MissingSerializedParamsError, MultichainLiquidationsService, MultichainSDK, NATIVE_ADDRESS, NOT_DEPLOYED, NO_VERSION, NetworkType, OnchainSDK, PERCENTAGE_DECIMALS, PERCENTAGE_FACTOR, PERCENTAGE_FACTOR_1KK, PERIPHERY_CONTRACTS, PHANTOM_TOKEN_CONTRACT_TYPES, PHANTOM_TOKEN_MIDAS_REDEMPTION, PHANTOM_TOKEN_SECURITIZE_REDEMPTION, PRICE_DECIMALS, PRICE_DECIMALS_POW, PartialPriceFeedInitError, PendleTWAPPTPriceFeed, PlaceholderAdapterContract, PlaceholderContract, PluginStateVersionError, PoolService, PoolSuite, PoolV310Contract, PriceFeedRef, PriceFeedRegister, PriceOracleV310Contract, PythPriceFeed, RAMP_DURATION_BY_NETWORK, RAY, RAY_DECIMALS_POW, RWARegistry, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, RWA_LIQUIDATOR_MIDAS, RWA_LIQUIDATOR_SECURITIZE, RWA_ON_DEMAND_LP_MONOPOLIZED, RWA_UNDERLYING_DEFAULT, RWA_UNDERLYING_ON_DEMAND, RedemptionLoggerV310Contract, RedstonePriceFeedContract, RouterV310Contract, SDKConstruct, SECONDS_PER_YEAR, SECURITIZE_REGISTER_VAULT_TYPES, SLIPPAGE_DECIMALS, STATE_VERSION, SUPPORTED_NETWORKS, SdkAlreadyAttachedError, SdkChainMismatchError, SdkMissingChainStateError, SdkNotAttachedError, SdkStateVersionMismatchError, SdkSyncFailedError, SecuritizeLiquidatorContract, SecuritizeRWAFactory, SimulateWithPriceUpdatesError, SimulationError, TokensMeta, TypedObjectUtils, UnsupportedZapperFunctionError, VERSION_RANGE_310, VotingContractStatus, WAD, WAD_DECIMALS_POW, WithdrawalCompressorV310Contract, WithdrawalCompressorV311Contract, WithdrawalCompressorV313Contract, WstETHPriceFeedContract, YearnPriceFeedContract, ZapperContract, ZeroPriceFeedContract, ZodAddress, assetsMap, attachOptionsSchema, botPermissionsToString, bytes32ToString, chains, childLogger, createAdapter, createAddressProvider, createPriceOracle, createRawTx, createRedemptionLogger, createRouter, createWithdrawalCompressor, createZapper, abi as creditFacadeV310Abi, decodeDelayedIntent, detectNetwork, encodeDelayedIntent, estimateRawTxGas, etherscanApiUrl, etherscanUrl, executeDelegatedMulticalls, fetchPythPayloads, fetchRedstonePayloads, filterDust, filterDustUSD, findCuratorMarketConfigurator, fmtBinaryMask, formatBN, formatBNvalue, formatDuration, formatLeverage, formatNumberToString_, formatPercentage, formatTimestamp, functionArgsToMap, functionArgsToRecord, generateCastTraceCall, getCastTraceArgs, getChain, getCuratorName, getFunctionSignature, getNetworkType, getRawPriceUpdates, getSimulateWithPriceUpdatesError, getWithdrawalCompressorAddress, halfRAY, hexEq, hydrateAddressProvider, iCreditAccountAbi, isDust, isLPPriceFeed, isPublicNetwork, isRWAFactory, isSupportedNetwork, isUpdatablePriceFeed, isV310, isVersionRange, json_parse, json_stringify, numberWithCommas, onchainSDKOptionsSchema, percentFmt, rayToNumber, retry, sendRawTx, shortAddress, shortHash, simulateCall, simulateMulticall, simulateWithPriceUpdates, toAddress, toBN, toBigInt, toClaimableWithdrawal, toPendingWithdrawal, toRequestableWithdrawal, toSignificant, toWithdrawalStatus, watchBlocksAsync };
140
+ export { ADDRESS_0X0, ADDRESS_PROVIDER_V310, AP_ACCOUNT_FACTORY, AP_ACL, AP_BOT_LIST, AP_BYTECODE_REPOSITORY, AP_CONTRACTS_REGISTER, AP_CONTROLLER_TIMELOCK, AP_CREDIT_ACCOUNT_COMPRESSOR, AP_CREDIT_SUITE_COMPRESSOR, AP_DATA_COMPRESSOR, AP_DELEVERAGE_BOT_HV, AP_DELEVERAGE_BOT_LV, AP_DELEVERAGE_BOT_PEGGED, AP_GAUGE_COMPRESSOR, AP_GEAR_STAKING, AP_GEAR_TOKEN, AP_INFLATION_ATTACK_BLOCKER, AP_INSOLVENCY_CHECKER, AP_MARKET_COMPRESSOR, AP_MARKET_CONFIGURATOR, AP_PARTIAL_LIQUIDATION_BOT, AP_PERIPHERY_COMPRESSOR, AP_PRICE_FEED_COMPRESSOR, AP_PRICE_FEED_STORE, AP_PRICE_ORACLE, AP_REDEMPTION_LOGGER, AP_REWARDS_COMPRESSOR, AP_ROUTER, AP_RWA_COMPRESSOR, AP_TOKEN_COMPRESSOR, AP_TREASURY, AP_WETH_GATEWAY, AP_WETH_TOKEN, AP_ZAPPER_REGISTER, AP_ZERO_PRICE_FEED, AbstractLPPriceFeedContract, AbstractPriceFeedContract, AbstractWithdrawalCompressorContract, AddressMap, AddressProviderV310Contract, AddressSet, AssetsMap, BLOCKS_PER_WEEK_BY_NETWORK, BalancerStablePriceFeedContract, BalancerWeightedPriceFeedContract, BaseContract, BasePlugin, BigIntMath, BotPermissions, BoundedPriceFeedContract, ChainContractsRegister, ChainNotConfiguredError, CompositePriceFeedContract, Construct, ContractParseError, CreditAccountsServiceV310, CreditConfiguratorV310Contract, CreditFacadeV310BaseContract, CreditFacadeV310Contract, CreditManagerV310Contract, CreditSuite, CurveCryptoPriceFeedContract, CurveStablePriceFeedContract, CurveUSDPriceFeedContract, DELAYED_INTENT_TYPES, DELAYED_INTENT_VERSION, DUST_THRESHOLD, Erc4626PriceFeedContract, ExternalPriceFeedContract, GaugeContract, IERC20ZapperContract, IETHZapperContract, InvalidDelayedIntentError, LEVERAGE_DECIMALS, LIQUIDATION_APPROVAL_BUFFER, LIQUIDATION_COMPRESSOR_V313_ADDRESS, LinearInterestRateModelContract, LiquidationsService, MAX_INT, MAX_UINT16, MAX_UINT256, MIN_INT96, MULTICALL_ADDRESS, MarketRegister, MarketSuite, MellowLRTPriceFeedContract, MidasLiquidatorContract, MissingSerializedParamsError, MultichainConstruct, MultichainLiquidationsService, MultichainOpportunitiesService, MultichainSDK, NATIVE_ADDRESS, NOT_DEPLOYED, NO_VERSION, NetworkType, OnchainSDK, OpportunitiesService, PERCENTAGE_DECIMALS, PERCENTAGE_FACTOR, PERCENTAGE_FACTOR_1KK, PERIPHERY_CONTRACTS, PHANTOM_TOKEN_CONTRACT_TYPES, PHANTOM_TOKEN_MIDAS_REDEMPTION, PHANTOM_TOKEN_SECURITIZE_REDEMPTION, PRICE_DECIMALS, PRICE_DECIMALS_POW, PartialPriceFeedInitError, PendleTWAPPTPriceFeed, PlaceholderAdapterContract, PlaceholderContract, PluginStateVersionError, PoolService, PoolSuite, PoolV310Contract, PriceFeedRef, PriceFeedRegister, PriceOracleV310Contract, PythPriceFeed, RAMP_DURATION_BY_NETWORK, RAY, RAY_DECIMALS_POW, RWARegistry, RWA_FACTORY_SECURITIZE, RWA_FACTORY_TYPES, RWA_LIQUIDATOR_MIDAS, RWA_LIQUIDATOR_SECURITIZE, RWA_ON_DEMAND_LP_MONOPOLIZED, RWA_UNDERLYING_DEFAULT, RWA_UNDERLYING_ON_DEMAND, RedemptionLoggerV310Contract, RedstonePriceFeedContract, RouterV310Contract, SDKConstruct, SECONDS_PER_YEAR, SECURITIZE_REGISTER_VAULT_TYPES, SLIPPAGE_DECIMALS, STATE_VERSION, SUPPORTED_NETWORKS, SdkAlreadyAttachedError, SdkChainMismatchError, SdkMissingChainStateError, SdkNotAttachedError, SdkStateVersionMismatchError, SdkSyncFailedError, SecuritizeLiquidatorContract, SecuritizeRWAFactory, SimulateWithPriceUpdatesError, SimulationError, TokensMeta, TypedObjectUtils, UnsupportedZapperFunctionError, VERSION_RANGE_310, VotingContractStatus, WAD, WAD_DECIMALS_POW, WithdrawalCompressorV310Contract, WithdrawalCompressorV311Contract, WithdrawalCompressorV313Contract, WstETHPriceFeedContract, YearnPriceFeedContract, ZapperContract, ZeroPriceFeedContract, ZodAddress, ZodHex, additionalBorrowApyBps, assetsMap, attachOptionsSchema, borrowApyBps, botPermissionsToString, bytes32ToString, chains, childLogger, createAdapter, createAddressProvider, createPriceOracle, createRawTx, createRedemptionLogger, createRouter, createWithdrawalCompressor, createZapper, abi as creditFacadeV310Abi, decodeDelayedIntent, detectNetwork, encodeDelayedIntent, estimateRawTxGas, etherscanApiUrl, etherscanUrl, executeDelegatedMulticalls, fetchPythPayloads, fetchRedstonePayloads, filterDust, filterDustUSD, findCuratorMarketConfigurator, fmtBinaryMask, formatBN, formatBNvalue, formatDuration, formatLeverage, formatNumberToString_, formatPercentage, formatTimestamp, functionArgsToMap, functionArgsToRecord, generateCastTraceCall, getAssetType, getCastTraceArgs, getChain, getCuratorName, getFunctionSignature, getNetworkType, getRawPriceUpdates, getSimulateWithPriceUpdatesError, getWithdrawalCompressorAddress, halfRAY, hexEq, hydrateAddressProvider, iCreditAccountAbi, isDust, isLPPriceFeed, isPublicNetwork, isRWAFactory, isRWAToken, isSunsetPool, isSunsetStrategy, isSupportedNetwork, isUpdatablePriceFeed, isV310, isVersionRange, json_parse, json_stringify, maxLeverage, numberWithCommas, onchainSDKOptionsSchema, percentFmt, rayToBps, rayToNumber, retry, sendRawTx, shortAddress, shortHash, simulateCall, simulateMulticall, simulateWithPriceUpdates, toAddress, toBN, toBigInt, toClaimableWithdrawal, toPendingWithdrawal, toRequestableWithdrawal, toSignificant, toWithdrawalStatus, usdToNumber, utilizationBps, watchBlocksAsync };
@@ -1,4 +1,5 @@
1
1
  import { iMarketConfiguratorV310Abi } from "../../abi/310/generated.js";
2
+ import { getCuratorName } from "../chain/chains.js";
2
3
  import { AP_MARKET_CONFIGURATOR } from "../constants/address-provider.js";
3
4
  import "../constants/index.js";
4
5
  import { BaseContract } from "../base/BaseContract.js";
@@ -24,6 +25,19 @@ var MarketConfiguratorContract = class extends BaseContract {
24
25
  });
25
26
  this.register.setAddressLabel(this.address, `Market configurator ${this.#curatorName}`);
26
27
  }
28
+ /**
29
+ * The entity operating this configurator, as the shared read model describes
30
+ * it. The curated per-chain table wins over the name the contract reports,
31
+ * because the two sources must agree across services and only the table is
32
+ * shared with the backend.
33
+ */
34
+ get curator() {
35
+ return {
36
+ address: this.address,
37
+ name: getCuratorName(this.address, this.networkType) ?? this.#curatorName ?? "Unknown",
38
+ url: null
39
+ };
40
+ }
27
41
  static async getPeripheryContractBatch(configurators, client, contract, blockNumber) {
28
42
  return await client.multicall({
29
43
  allowFailure: true,