@gearbox-protocol/sdk 18.3.0 → 18.4.0

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 (181) hide show
  1. package/dist/cjs/abi/310/iKillSwitchProxy.js +130 -0
  2. package/dist/cjs/onchain/accounts/intents/maxBorrowAndWithdraw.js +3 -1
  3. package/dist/cjs/onchain/index.js +18 -0
  4. package/dist/cjs/onchain/market/adapters/abi/adapters/iTreehouseFastlaneAdapter.js +113 -0
  5. package/dist/cjs/onchain/market/adapters/abi/adapters/iTreehouseRedemptionGatewayAdapter.js +258 -0
  6. package/dist/cjs/onchain/market/adapters/abi/adapters/iTreehouseRouterAdapter.js +161 -0
  7. package/dist/cjs/onchain/market/adapters/abi/adapters/index.js +6 -0
  8. package/dist/cjs/onchain/market/adapters/abi/index.js +13 -0
  9. package/dist/cjs/onchain/market/adapters/abi/treehouse/iTreehouseFastlane.js +39 -0
  10. package/dist/cjs/onchain/market/adapters/abi/treehouse/iTreehouseRedemptionGateway.js +230 -0
  11. package/dist/cjs/onchain/market/adapters/abi/treehouse/iTreehouseRouter.js +29 -0
  12. package/dist/cjs/onchain/market/adapters/abi/treehouse/index.js +7 -0
  13. package/dist/cjs/onchain/market/adapters/contracts/TreehouseFastlaneAdapterContract.js +72 -0
  14. package/dist/cjs/onchain/market/adapters/contracts/TreehouseRedemptionGatewayAdapterContract.js +117 -0
  15. package/dist/cjs/onchain/market/adapters/contracts/TreehouseRouterAdapterContract.js +61 -0
  16. package/dist/cjs/onchain/market/adapters/contracts/index.js +6 -0
  17. package/dist/cjs/onchain/market/adapters/createAdapter.js +6 -0
  18. package/dist/cjs/onchain/market/adapters/index.js +18 -0
  19. package/dist/cjs/onchain/market/index.js +18 -0
  20. package/dist/cjs/permissionless/api/index.js +31 -0
  21. package/dist/cjs/permissionless/api/oracles/PermissionlessOracles.js +637 -65
  22. package/dist/cjs/permissionless/api/oracles/enrich.js +99 -0
  23. package/dist/cjs/permissionless/api/oracles/index.js +33 -0
  24. package/dist/cjs/permissionless/api/oracles/onchain-feed.js +25 -0
  25. package/dist/cjs/permissionless/api/oracles/schemas.js +84 -59
  26. package/dist/cjs/permissionless/api/oracles/score/formula.js +56 -0
  27. package/dist/cjs/permissionless/api/oracles/score/index.js +11 -0
  28. package/dist/cjs/permissionless/api/oracles/score/run.js +252 -0
  29. package/dist/cjs/permissionless/api/oracles/score/types.js +1 -0
  30. package/dist/cjs/permissionless/api/oracles/stress/classify.js +258 -0
  31. package/dist/cjs/permissionless/api/oracles/stress/index.js +24 -0
  32. package/dist/cjs/permissionless/api/oracles/stress/override.js +125 -0
  33. package/dist/cjs/permissionless/api/oracles/stress/run.js +485 -0
  34. package/dist/cjs/permissionless/api/oracles/stress/score.js +98 -0
  35. package/dist/cjs/permissionless/api/oracles/stress/types.js +1 -0
  36. package/dist/cjs/permissionless/api/schemas.js +0 -3
  37. package/dist/cjs/permissionless/api/transactions/InstanceOwnerTransactions.js +14 -3
  38. package/dist/cjs/permissionless/api/transactions/lp-price-feeds.js +10 -4
  39. package/dist/cjs/permissionless/bindings/bytecode-repository.js +8 -0
  40. package/dist/cjs/permissionless/bindings/governance/governor.js +1 -1
  41. package/dist/cjs/permissionless/bindings/index.js +8 -3
  42. package/dist/cjs/permissionless/bindings/kill-switch-proxy.js +188 -0
  43. package/dist/cjs/permissionless/bindings/market-configurator-factory.js +39 -1
  44. package/dist/cjs/permissionless/bindings/market-configurator.js +142 -0
  45. package/dist/cjs/permissionless/index.js +42 -3
  46. package/dist/cjs/permissionless/utils/index.js +3 -0
  47. package/dist/cjs/permissionless/utils/literals.js +2 -0
  48. package/dist/cjs/permissionless/utils/price-update/get-prices.js +64 -0
  49. package/dist/cjs/permissionless/utils/price-update/index.js +2 -0
  50. package/dist/cjs/testnets/TestnetsAPI.js +179 -0
  51. package/dist/cjs/testnets/errors/TestnetNotFoundError.js +15 -0
  52. package/dist/cjs/testnets/errors/TestnetRequestFailedError.js +24 -0
  53. package/dist/cjs/testnets/errors/TestnetStatusError.js +19 -0
  54. package/dist/cjs/testnets/errors/TestnetValidationError.js +24 -0
  55. package/dist/cjs/testnets/errors/TestnetWaitTimeoutError.js +30 -0
  56. package/dist/cjs/testnets/errors/TestnetsError.js +34 -0
  57. package/dist/cjs/testnets/errors/index.js +13 -0
  58. package/dist/cjs/testnets/index.js +32 -0
  59. package/dist/cjs/testnets/package.json +1 -0
  60. package/dist/cjs/testnets/schemas.js +242 -0
  61. package/dist/cjs/testnets/types.js +1 -0
  62. package/dist/esm/abi/310/iKillSwitchProxy.js +129 -0
  63. package/dist/esm/onchain/accounts/intents/maxBorrowAndWithdraw.js +3 -1
  64. package/dist/esm/onchain/index.js +10 -1
  65. package/dist/esm/onchain/market/adapters/abi/adapters/iTreehouseFastlaneAdapter.js +112 -0
  66. package/dist/esm/onchain/market/adapters/abi/adapters/iTreehouseRedemptionGatewayAdapter.js +257 -0
  67. package/dist/esm/onchain/market/adapters/abi/adapters/iTreehouseRouterAdapter.js +160 -0
  68. package/dist/esm/onchain/market/adapters/abi/adapters/index.js +4 -1
  69. package/dist/esm/onchain/market/adapters/abi/index.js +8 -1
  70. package/dist/esm/onchain/market/adapters/abi/treehouse/iTreehouseFastlane.js +38 -0
  71. package/dist/esm/onchain/market/adapters/abi/treehouse/iTreehouseRedemptionGateway.js +229 -0
  72. package/dist/esm/onchain/market/adapters/abi/treehouse/iTreehouseRouter.js +28 -0
  73. package/dist/esm/onchain/market/adapters/abi/treehouse/index.js +4 -0
  74. package/dist/esm/onchain/market/adapters/contracts/TreehouseFastlaneAdapterContract.js +71 -0
  75. package/dist/esm/onchain/market/adapters/contracts/TreehouseRedemptionGatewayAdapterContract.js +116 -0
  76. package/dist/esm/onchain/market/adapters/contracts/TreehouseRouterAdapterContract.js +60 -0
  77. package/dist/esm/onchain/market/adapters/contracts/index.js +4 -1
  78. package/dist/esm/onchain/market/adapters/createAdapter.js +6 -0
  79. package/dist/esm/onchain/market/adapters/index.js +10 -1
  80. package/dist/esm/onchain/market/index.js +10 -1
  81. package/dist/esm/permissionless/api/index.js +7 -1
  82. package/dist/esm/permissionless/api/oracles/PermissionlessOracles.js +639 -67
  83. package/dist/esm/permissionless/api/oracles/enrich.js +94 -0
  84. package/dist/esm/permissionless/api/oracles/index.js +10 -1
  85. package/dist/esm/permissionless/api/oracles/onchain-feed.js +24 -0
  86. package/dist/esm/permissionless/api/oracles/schemas.js +80 -58
  87. package/dist/esm/permissionless/api/oracles/score/formula.js +51 -0
  88. package/dist/esm/permissionless/api/oracles/score/index.js +4 -0
  89. package/dist/esm/permissionless/api/oracles/score/run.js +250 -0
  90. package/dist/esm/permissionless/api/oracles/score/types.js +1 -0
  91. package/dist/esm/permissionless/api/oracles/stress/classify.js +256 -0
  92. package/dist/esm/permissionless/api/oracles/stress/index.js +6 -0
  93. package/dist/esm/permissionless/api/oracles/stress/override.js +119 -0
  94. package/dist/esm/permissionless/api/oracles/stress/run.js +478 -0
  95. package/dist/esm/permissionless/api/oracles/stress/score.js +95 -0
  96. package/dist/esm/permissionless/api/oracles/stress/types.js +1 -0
  97. package/dist/esm/permissionless/api/schemas.js +2 -4
  98. package/dist/esm/permissionless/api/transactions/InstanceOwnerTransactions.js +14 -3
  99. package/dist/esm/permissionless/api/transactions/lp-price-feeds.js +10 -4
  100. package/dist/esm/permissionless/bindings/bytecode-repository.js +8 -0
  101. package/dist/esm/permissionless/bindings/governance/governor.js +1 -1
  102. package/dist/esm/permissionless/bindings/index.js +5 -4
  103. package/dist/esm/permissionless/bindings/kill-switch-proxy.js +184 -0
  104. package/dist/esm/permissionless/bindings/market-configurator-factory.js +37 -0
  105. package/dist/esm/permissionless/bindings/market-configurator.js +143 -1
  106. package/dist/esm/permissionless/index.js +13 -6
  107. package/dist/esm/permissionless/utils/index.js +3 -3
  108. package/dist/esm/permissionless/utils/literals.js +2 -1
  109. package/dist/esm/permissionless/utils/price-update/get-prices.js +63 -1
  110. package/dist/esm/permissionless/utils/price-update/index.js +2 -2
  111. package/dist/esm/testnets/TestnetsAPI.js +178 -0
  112. package/dist/esm/testnets/errors/TestnetNotFoundError.js +14 -0
  113. package/dist/esm/testnets/errors/TestnetRequestFailedError.js +23 -0
  114. package/dist/esm/testnets/errors/TestnetStatusError.js +18 -0
  115. package/dist/esm/testnets/errors/TestnetValidationError.js +23 -0
  116. package/dist/esm/testnets/errors/TestnetWaitTimeoutError.js +29 -0
  117. package/dist/esm/testnets/errors/TestnetsError.js +33 -0
  118. package/dist/esm/testnets/errors/index.js +7 -0
  119. package/dist/esm/testnets/index.js +11 -0
  120. package/dist/esm/testnets/package.json +1 -0
  121. package/dist/esm/testnets/schemas.js +228 -0
  122. package/dist/esm/testnets/types.js +1 -0
  123. package/dist/types/abi/310/iKillSwitchProxy.d.ts +114 -0
  124. package/dist/types/onchain/index.d.ts +10 -1
  125. package/dist/types/onchain/market/adapters/abi/adapters/iTreehouseFastlaneAdapter.d.ts +101 -0
  126. package/dist/types/onchain/market/adapters/abi/adapters/iTreehouseRedemptionGatewayAdapter.d.ts +237 -0
  127. package/dist/types/onchain/market/adapters/abi/adapters/iTreehouseRouterAdapter.d.ts +146 -0
  128. package/dist/types/onchain/market/adapters/abi/adapters/index.d.ts +4 -1
  129. package/dist/types/onchain/market/adapters/abi/index.d.ts +8 -1
  130. package/dist/types/onchain/market/adapters/abi/treehouse/iTreehouseFastlane.d.ts +33 -0
  131. package/dist/types/onchain/market/adapters/abi/treehouse/iTreehouseRedemptionGateway.d.ts +207 -0
  132. package/dist/types/onchain/market/adapters/abi/treehouse/iTreehouseRouter.d.ts +27 -0
  133. package/dist/types/onchain/market/adapters/abi/treehouse/index.d.ts +4 -0
  134. package/dist/types/onchain/market/adapters/contracts/TreehouseFastlaneAdapterContract.d.ts +156 -0
  135. package/dist/types/onchain/market/adapters/contracts/TreehouseRedemptionGatewayAdapterContract.d.ts +481 -0
  136. package/dist/types/onchain/market/adapters/contracts/TreehouseRouterAdapterContract.d.ts +193 -0
  137. package/dist/types/onchain/market/adapters/contracts/index.d.ts +4 -1
  138. package/dist/types/onchain/market/adapters/index.d.ts +10 -1
  139. package/dist/types/onchain/market/index.d.ts +10 -1
  140. package/dist/types/permissionless/api/index.d.ts +10 -2
  141. package/dist/types/permissionless/api/oracles/PermissionlessOracles.d.ts +237 -47
  142. package/dist/types/permissionless/api/oracles/enrich.d.ts +59 -0
  143. package/dist/types/permissionless/api/oracles/index.d.ts +12 -2
  144. package/dist/types/permissionless/api/oracles/onchain-feed.d.ts +15 -0
  145. package/dist/types/permissionless/api/oracles/schemas.d.ts +147 -41
  146. package/dist/types/permissionless/api/oracles/score/formula.d.ts +36 -0
  147. package/dist/types/permissionless/api/oracles/score/index.d.ts +4 -0
  148. package/dist/types/permissionless/api/oracles/score/run.d.ts +42 -0
  149. package/dist/types/permissionless/api/oracles/score/types.d.ts +118 -0
  150. package/dist/types/permissionless/api/oracles/stress/classify.d.ts +57 -0
  151. package/dist/types/permissionless/api/oracles/stress/index.d.ts +6 -0
  152. package/dist/types/permissionless/api/oracles/stress/override.d.ts +59 -0
  153. package/dist/types/permissionless/api/oracles/stress/run.d.ts +100 -0
  154. package/dist/types/permissionless/api/oracles/stress/score.d.ts +57 -0
  155. package/dist/types/permissionless/api/oracles/stress/types.d.ts +272 -0
  156. package/dist/types/permissionless/api/oracles/types.d.ts +320 -125
  157. package/dist/types/permissionless/api/schemas.d.ts +0 -2
  158. package/dist/types/permissionless/api/transactions/lp-price-feeds.d.ts +9 -1
  159. package/dist/types/permissionless/bindings/bytecode-repository.d.ts +10 -1
  160. package/dist/types/permissionless/bindings/index.d.ts +4 -3
  161. package/dist/types/permissionless/bindings/kill-switch-proxy.d.ts +205 -0
  162. package/dist/types/permissionless/bindings/market-configurator-factory.d.ts +30 -0
  163. package/dist/types/permissionless/bindings/market-configurator.d.ts +30 -1
  164. package/dist/types/permissionless/bindings/types.d.ts +27 -0
  165. package/dist/types/permissionless/index.d.ts +15 -6
  166. package/dist/types/permissionless/utils/index.d.ts +3 -3
  167. package/dist/types/permissionless/utils/literals.d.ts +1 -0
  168. package/dist/types/permissionless/utils/price-update/get-prices.d.ts +33 -0
  169. package/dist/types/permissionless/utils/price-update/index.d.ts +2 -2
  170. package/dist/types/testnets/TestnetsAPI.d.ts +108 -0
  171. package/dist/types/testnets/errors/TestnetNotFoundError.d.ts +12 -0
  172. package/dist/types/testnets/errors/TestnetRequestFailedError.d.ts +11 -0
  173. package/dist/types/testnets/errors/TestnetStatusError.d.ts +15 -0
  174. package/dist/types/testnets/errors/TestnetValidationError.d.ts +16 -0
  175. package/dist/types/testnets/errors/TestnetWaitTimeoutError.d.ts +21 -0
  176. package/dist/types/testnets/errors/TestnetsError.d.ts +47 -0
  177. package/dist/types/testnets/errors/index.d.ts +7 -0
  178. package/dist/types/testnets/index.d.ts +11 -0
  179. package/dist/types/testnets/schemas.d.ts +554 -0
  180. package/dist/types/testnets/types.d.ts +717 -0
  181. package/package.json +6 -1
@@ -33,6 +33,14 @@ var BytecodeRepositoryContract = class BytecodeRepositoryContract extends requir
33
33
  async getLatestVersion(type_) {
34
34
  return await this.contract.read.getLatestVersion([(0, viem.stringToHex)(type_, { size: 32 })]);
35
35
  }
36
+ /**
37
+ * Returns the latest allowed patch version of the contract type within given minor version
38
+ * @throws if no bytecode of this contract type and minor version is allowed
39
+ */
40
+ async getLatestPatchVersion(type_, minorVersion) {
41
+ const version = await this.contract.read.getLatestPatchVersion([(0, viem.stringToHex)(type_, { size: 32 }), BigInt(minorVersion)]);
42
+ return Number(version);
43
+ }
36
44
  async getAllowedBytecodeHash(type_, version) {
37
45
  return await this.contract.read.getAllowedBytecodeHash([(0, viem.stringToHex)(type_, { size: 32 }), BigInt(version)]);
38
46
  }
@@ -6,8 +6,8 @@ require("../../../onchain/index.js");
6
6
  const require_permissionless_bindings_bytecode_repository = require("../bytecode-repository.js");
7
7
  require("../../deployment/addresses.js");
8
8
  const require_permissionless_bindings_treasury_splitter = require("../treasury-splitter.js");
9
- const require_abi_governance_governor = require("../../../abi/governance/governor.js");
10
9
  const require_permissionless_bindings_market_configurator = require("../market-configurator.js");
10
+ const require_abi_governance_governor = require("../../../abi/governance/governor.js");
11
11
  const require_permissionless_bindings_governance_batches_chain = require("./batches-chain.js");
12
12
  let viem = require("viem");
13
13
  let viem_utils = require("viem/utils");
@@ -2,6 +2,7 @@ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_permissionless_bindings_bytecode_repository = require("./bytecode-repository.js");
3
3
  const require_permissionless_bindings_pricefeeds_index = require("./pricefeeds/index.js");
4
4
  const require_permissionless_bindings_price_feed_store = require("./price-feed-store.js");
5
+ const require_permissionless_bindings_address_provider = require("./address-provider.js");
5
6
  const require_permissionless_bindings_compressors_token_compressor = require("./compressors/token-compressor.js");
6
7
  const require_permissionless_bindings_compressors_withdrawal_compressor = require("./compressors/withdrawal-compressor.js");
7
8
  require("./compressors/index.js");
@@ -9,11 +10,11 @@ const require_permissionless_bindings_router_routing_manager = require("./router
9
10
  require("./router/index.js");
10
11
  const require_permissionless_bindings_treasury_splitter = require("./treasury-splitter.js");
11
12
  const require_permissionless_bindings_instance_manager = require("./instance-manager.js");
12
- const require_permissionless_bindings_address_provider = require("./address-provider.js");
13
- const require_permissionless_bindings_market_configurator_factory = require("./market-configurator-factory.js");
14
- const require_permissionless_bindings_cross_chain_multisig = require("./cross-chain-multisig.js");
15
13
  const require_permissionless_bindings_types = require("./types.js");
16
14
  const require_permissionless_bindings_market_configurator = require("./market-configurator.js");
15
+ const require_permissionless_bindings_kill_switch_proxy = require("./kill-switch-proxy.js");
16
+ const require_permissionless_bindings_market_configurator_factory = require("./market-configurator-factory.js");
17
+ const require_permissionless_bindings_cross_chain_multisig = require("./cross-chain-multisig.js");
17
18
  const require_permissionless_bindings_governance_governor = require("./governance/governor.js");
18
19
  const require_permissionless_bindings_governance_timelock = require("./governance/timelock.js");
19
20
  require("./governance/index.js");
@@ -23,6 +24,9 @@ exports.BytecodeRepositoryContract = require_permissionless_bindings_bytecode_re
23
24
  exports.CrossChainMultisigContract = require_permissionless_bindings_cross_chain_multisig.CrossChainMultisigContract;
24
25
  exports.GovernorContract = require_permissionless_bindings_governance_governor.GovernorContract;
25
26
  exports.InstanceManagerContract = require_permissionless_bindings_instance_manager.InstanceManagerContract;
27
+ exports.KILL_SWITCH_PROXY_MINOR_VERSION = require_permissionless_bindings_kill_switch_proxy.KILL_SWITCH_PROXY_MINOR_VERSION;
28
+ exports.KillSwitchProxyContract = require_permissionless_bindings_kill_switch_proxy.KillSwitchProxyContract;
29
+ exports.KillSwitchProxyNotAllowedError = require_permissionless_bindings_kill_switch_proxy.KillSwitchProxyNotAllowedError;
26
30
  exports.MarketConfiguratorContract = require_permissionless_bindings_market_configurator.MarketConfiguratorContract;
27
31
  exports.MarketConfiguratorFactoryContract = require_permissionless_bindings_market_configurator_factory.MarketConfiguratorFactoryContract;
28
32
  exports.PriceFeedStoreContract = require_permissionless_bindings_price_feed_store.PriceFeedStoreContract;
@@ -31,4 +35,5 @@ exports.TimeLockContract = require_permissionless_bindings_governance_timelock.T
31
35
  exports.TokenCompressorContract = require_permissionless_bindings_compressors_token_compressor.TokenCompressorContract;
32
36
  exports.TreasurySplitterContract = require_permissionless_bindings_treasury_splitter.TreasurySplitterContract;
33
37
  exports.WithdrawalCompressorContract = require_permissionless_bindings_compressors_withdrawal_compressor.WithdrawalCompressorContract;
38
+ exports.killSwitchProxySalt = require_permissionless_bindings_kill_switch_proxy.killSwitchProxySalt;
34
39
  exports.priceFeedSetupParams = require_permissionless_bindings_pricefeeds_index.priceFeedSetupParams;
@@ -0,0 +1,188 @@
1
+ Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
+ const require_onchain_utils_json = require("../../onchain/utils/json.js");
3
+ const require_onchain_base_BaseContract = require("../../onchain/base/BaseContract.js");
4
+ require("../../onchain/index.js");
5
+ const require_permissionless_utils_literals = require("../utils/literals.js");
6
+ const require_abi_310_iKillSwitchProxy = require("../../abi/310/iKillSwitchProxy.js");
7
+ const require_permissionless_bindings_market_configurator = require("./market-configurator.js");
8
+ let viem = require("viem");
9
+ //#region src/permissionless/bindings/kill-switch-proxy.ts
10
+ const abi = require_abi_310_iKillSwitchProxy.iKillSwitchProxyAbi;
11
+ /**
12
+ * Minor version of kill switch proxy, the latest allowed patch of it is deployed
13
+ */
14
+ const KILL_SWITCH_PROXY_MINOR_VERSION = 310;
15
+ /**
16
+ * Salt of kill switch proxy deployed together with market configurator,
17
+ * makes each curator's market configurator get its own proxy
18
+ */
19
+ function killSwitchProxySalt(curatorName) {
20
+ return (0, viem.keccak256)((0, viem.toHex)(curatorName));
21
+ }
22
+ /**
23
+ * Thrown when bytecode repository has no allowed kill switch proxy bytecode,
24
+ * so its address can't be computed and it can't be deployed
25
+ */
26
+ var KillSwitchProxyNotAllowedError = class extends viem.BaseError {
27
+ name = "KillSwitchProxyNotAllowedError";
28
+ bytecodeRepository;
29
+ constructor(bytecodeRepository) {
30
+ super(`${require_permissionless_utils_literals.KILL_SWITCH_PROXY} v310 is not allowed in bytecode repository ${bytecodeRepository}.`, { metaMessages: ["Its bytecode must be uploaded, audited and allowed before it can be deployed."] });
31
+ this.bytecodeRepository = bytecodeRepository;
32
+ }
33
+ };
34
+ /**
35
+ * Kill switch proxy forwards calls of its `caller` via `proxyCall` until `owner` kills it.
36
+ * It is used as market configurator's emergency admin, so that emergency powers
37
+ * can be revoked instantly without going through the timelock.
38
+ */
39
+ var KillSwitchProxyContract = class KillSwitchProxyContract extends require_onchain_base_BaseContract.BaseContract {
40
+ constructor(addr, client) {
41
+ super({ client }, {
42
+ abi,
43
+ addr,
44
+ name: "KillSwitchProxy"
45
+ });
46
+ }
47
+ /**
48
+ * Encodes `constructor(address _owner, address _caller)` params
49
+ * @throws if any address is zero or owner equals caller (constructor reverts in that case)
50
+ */
51
+ static encodeConstructorParams(args) {
52
+ const { owner, caller } = args;
53
+ if ((0, viem.isAddressEqual)(owner, viem.zeroAddress) || (0, viem.isAddressEqual)(caller, viem.zeroAddress)) throw new Error(`${require_permissionless_utils_literals.KILL_SWITCH_PROXY} owner and caller must be non-zero`);
54
+ if ((0, viem.isAddressEqual)(owner, caller)) throw new Error(`${require_permissionless_utils_literals.KILL_SWITCH_PROXY} owner must differ from caller ${caller}, provide another kill switch owner`);
55
+ const [constructorAbi] = abi;
56
+ return (0, viem.encodeAbiParameters)(constructorAbi.inputs, [owner, caller]);
57
+ }
58
+ /**
59
+ * Returns whether some patch of kill switch proxy v3.10 is allowed in bytecode repository
60
+ */
61
+ static async isAvailable(bcr) {
62
+ try {
63
+ await KillSwitchProxyContract.#getVersion(bcr);
64
+ return true;
65
+ } catch (e) {
66
+ if (e instanceof KillSwitchProxyNotAllowedError) return false;
67
+ throw e;
68
+ }
69
+ }
70
+ /**
71
+ * Computes address of kill switch proxy and prepares its deployment via bytecode repository
72
+ * @param bcr - bytecode repository
73
+ * @param args.deployer - address that will send deployment transaction, it is mixed into the salt
74
+ * @param args.owner - address that can kill the proxy
75
+ * @param args.caller - address that can call through the proxy
76
+ * @param args.salt - deployment salt
77
+ * @throws {KillSwitchProxyNotAllowedError} if kill switch proxy is not allowed in bytecode repository
78
+ */
79
+ static async prepareDeploy(bcr, args) {
80
+ const { deployer, owner, caller, salt } = args;
81
+ const encodedParams = KillSwitchProxyContract.encodeConstructorParams({
82
+ owner,
83
+ caller
84
+ });
85
+ const version = await KillSwitchProxyContract.#getVersion(bcr);
86
+ const [isAlreadyDeployed, address] = await bcr.isAlreadyDeployedAddress({
87
+ contractType: require_permissionless_utils_literals.KILL_SWITCH_PROXY,
88
+ version,
89
+ encodedParams,
90
+ salt,
91
+ owner: deployer
92
+ });
93
+ return {
94
+ address,
95
+ version,
96
+ encodedParams,
97
+ salt,
98
+ isAlreadyDeployed,
99
+ isKilled: isAlreadyDeployed ? await new KillSwitchProxyContract(address, bcr.client).isKilled() : false,
100
+ tx: bcr.deployTx({
101
+ contractType: require_permissionless_utils_literals.KILL_SWITCH_PROXY,
102
+ version: BigInt(version),
103
+ encodedParams,
104
+ salt
105
+ })
106
+ };
107
+ }
108
+ static async #getVersion(bcr) {
109
+ try {
110
+ return await bcr.getLatestPatchVersion(require_permissionless_utils_literals.KILL_SWITCH_PROXY, 310);
111
+ } catch (e) {
112
+ const revert = e instanceof viem.BaseError ? e.walk((err) => err instanceof viem.ContractFunctionRevertedError) : null;
113
+ if (revert instanceof viem.ContractFunctionRevertedError && revert.data?.errorName === "VersionNotFoundException") throw new KillSwitchProxyNotAllowedError(bcr.address);
114
+ throw e;
115
+ }
116
+ }
117
+ async isKilled() {
118
+ return await this.contract.read.isKilled();
119
+ }
120
+ async state() {
121
+ const [caller, owner, isKilled] = await this.client.multicall({
122
+ allowFailure: false,
123
+ contracts: [
124
+ {
125
+ address: this.address,
126
+ abi,
127
+ functionName: "caller"
128
+ },
129
+ {
130
+ address: this.address,
131
+ abi,
132
+ functionName: "owner"
133
+ },
134
+ {
135
+ address: this.address,
136
+ abi,
137
+ functionName: "isKilled"
138
+ }
139
+ ],
140
+ batchSize: 0
141
+ });
142
+ return {
143
+ caller,
144
+ owner,
145
+ isKilled
146
+ };
147
+ }
148
+ /**
149
+ * Wraps transaction into `proxyCall`, must be sent by proxy's caller
150
+ */
151
+ proxyCallTx(tx) {
152
+ return this.createRawTx({
153
+ functionName: "proxyCall",
154
+ args: [tx.to, tx.callData],
155
+ description: tx.description ? `KillSwitchProxy.proxyCall(${tx.description})` : void 0
156
+ });
157
+ }
158
+ /**
159
+ * Permanently disables `proxyCall`, must be sent by proxy's owner
160
+ */
161
+ killTx() {
162
+ return this.createRawTx({ functionName: "kill" });
163
+ }
164
+ parseFunctionParams(params) {
165
+ const { functionName, args } = params;
166
+ switch (functionName) {
167
+ case "proxyCall": {
168
+ const [target, data] = args;
169
+ const decoded = new require_permissionless_bindings_market_configurator.MarketConfiguratorContract(target, this.client).parseFunctionData(data);
170
+ if (decoded.functionName.startsWith("Unknown function")) return {
171
+ target,
172
+ data
173
+ };
174
+ return {
175
+ target,
176
+ functionName: decoded.functionName,
177
+ data: require_onchain_utils_json.json_stringify(decoded.args)
178
+ };
179
+ }
180
+ default: return super.parseFunctionParams(params);
181
+ }
182
+ }
183
+ };
184
+ //#endregion
185
+ exports.KILL_SWITCH_PROXY_MINOR_VERSION = KILL_SWITCH_PROXY_MINOR_VERSION;
186
+ exports.KillSwitchProxyContract = KillSwitchProxyContract;
187
+ exports.KillSwitchProxyNotAllowedError = KillSwitchProxyNotAllowedError;
188
+ exports.killSwitchProxySalt = killSwitchProxySalt;
@@ -1,8 +1,13 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_onchain_base_BaseContract = require("../../onchain/base/BaseContract.js");
3
3
  require("../../onchain/index.js");
4
+ const require_permissionless_utils_literals = require("../utils/literals.js");
5
+ const require_permissionless_bindings_bytecode_repository = require("./bytecode-repository.js");
6
+ require("../deployment/addresses.js");
7
+ const require_abi_310_iMarketConfiguratorFactory = require("../../abi/310/iMarketConfiguratorFactory.js");
8
+ const require_permissionless_bindings_kill_switch_proxy = require("./kill-switch-proxy.js");
4
9
  //#region src/permissionless/bindings/market-configurator-factory.ts
5
- const abi = require("../../abi/310/iMarketConfiguratorFactory.js").iMarketConfiguratorFactoryAbi;
10
+ const abi = require_abi_310_iMarketConfiguratorFactory.iMarketConfiguratorFactoryAbi;
6
11
  var MarketConfiguratorFactoryContract = class extends require_onchain_base_BaseContract.BaseContract {
7
12
  constructor(addr, client) {
8
13
  super({ client }, {
@@ -22,6 +27,39 @@ var MarketConfiguratorFactoryContract = class extends require_onchain_base_BaseC
22
27
  ]
23
28
  });
24
29
  }
30
+ /**
31
+ * Builds transactions that deploy market configurator with kill switch proxy as its emergency admin:
32
+ * 1. kill switch proxy deployment via bytecode repository (skipped if already deployed)
33
+ * 2. market configurator creation with proxy as emergency admin
34
+ *
35
+ * Transactions must be sent in this order by `admin`, e.g. as one Safe batch.
36
+ * When `deployGovernor` is true, proxy also becomes governor's veto admin.
37
+ *
38
+ * @param args.admin - address that sends transactions, becomes market configurator admin
39
+ * @param args.emergencyAdmin - address that executes emergency actions through the proxy
40
+ * @param args.killSwitchOwner - address that can kill the proxy, defaults to `admin`
41
+ * @throws {KillSwitchProxyNotAllowedError} if kill switch proxy is not allowed in bytecode repository,
42
+ * use {@link createMarketConfiguratorTx} to deploy market configurator without it
43
+ */
44
+ async createMarketConfiguratorWithKillSwitchTxs(args) {
45
+ const { admin, emergencyAdmin, killSwitchOwner, ...rest } = args;
46
+ const bcr = new require_permissionless_bindings_bytecode_repository.BytecodeRepositoryContract("0x1cE2B1BE96a082b1b1539F80d5D8f82Ec06a0f9A", this.client);
47
+ const proxy = await require_permissionless_bindings_kill_switch_proxy.KillSwitchProxyContract.prepareDeploy(bcr, {
48
+ deployer: admin,
49
+ owner: killSwitchOwner ?? admin,
50
+ caller: emergencyAdmin,
51
+ salt: require_permissionless_bindings_kill_switch_proxy.killSwitchProxySalt(args.curatorName)
52
+ });
53
+ if (proxy.isKilled) throw new Error(`${require_permissionless_utils_literals.KILL_SWITCH_PROXY} ${proxy.address} is already deployed and killed`);
54
+ return {
55
+ killSwitchProxy: proxy.address,
56
+ isKillSwitchProxyDeployed: proxy.isAlreadyDeployed,
57
+ txs: [...proxy.isAlreadyDeployed ? [] : [proxy.tx], this.createMarketConfiguratorTx({
58
+ ...rest,
59
+ emergencyAdmin: proxy.address
60
+ })]
61
+ };
62
+ }
25
63
  async getMarketConfigurators() {
26
64
  return [...await this.contract.read.getMarketConfigurators()];
27
65
  }
@@ -1,9 +1,12 @@
1
1
  Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
2
2
  const require_abi_310_generated = require("../../abi/310/generated.js");
3
3
  const require_onchain_utils_json = require("../../onchain/utils/json.js");
4
+ const require_onchain_utils_createRawTx = require("../../onchain/utils/createRawTx.js");
4
5
  const require_onchain_base_BaseContract = require("../../onchain/base/BaseContract.js");
5
6
  require("../../onchain/index.js");
7
+ const require_permissionless_utils_literals = require("../utils/literals.js");
6
8
  const require_permissionless_bindings_address_provider = require("./address-provider.js");
9
+ const require_abi_310_iKillSwitchProxy = require("../../abi/310/iKillSwitchProxy.js");
7
10
  const require_abi_310_configure_creditSuiteParams = require("../../abi/310/configure/creditSuiteParams.js");
8
11
  const require_permissionless_plugins_irm_constructor_params_abi = require("../plugins/irm/constructor-params-abi.js");
9
12
  const require_permissionless_plugins_loss_policies_constructor_params_abi = require("../plugins/loss-policies/constructor-params-abi.js");
@@ -396,6 +399,83 @@ var MarketConfiguratorContract = class extends require_onchain_base_BaseContract
396
399
  return;
397
400
  }
398
401
  }
402
+ /**
403
+ * Returns emergency admin of the market configurator.
404
+ * If it is a `KILL_SWITCH_PROXY`, emergency transactions must be sent by proxy's caller via `proxyCall`,
405
+ * otherwise directly by emergency admin itself
406
+ * @param emergencyAdmin - emergency admin address, read from the market configurator if not provided
407
+ */
408
+ async getEmergencyAdmin(emergencyAdmin) {
409
+ const address = emergencyAdmin ?? await this.contract.read.emergencyAdmin();
410
+ const [contractType, caller, owner, isKilled] = await this.client.multicall({
411
+ allowFailure: true,
412
+ contracts: [
413
+ {
414
+ address,
415
+ abi: require_abi_310_iKillSwitchProxy.iKillSwitchProxyAbi,
416
+ functionName: "contractType"
417
+ },
418
+ {
419
+ address,
420
+ abi: require_abi_310_iKillSwitchProxy.iKillSwitchProxyAbi,
421
+ functionName: "caller"
422
+ },
423
+ {
424
+ address,
425
+ abi: require_abi_310_iKillSwitchProxy.iKillSwitchProxyAbi,
426
+ functionName: "owner"
427
+ },
428
+ {
429
+ address,
430
+ abi: require_abi_310_iKillSwitchProxy.iKillSwitchProxyAbi,
431
+ functionName: "isKilled"
432
+ }
433
+ ],
434
+ batchSize: 0
435
+ });
436
+ let isKillSwitch = false;
437
+ if (contractType.status === "success") try {
438
+ isKillSwitch = (0, viem.hexToString)(contractType.result, { size: 32 }) === require_permissionless_utils_literals.KILL_SWITCH_PROXY;
439
+ } catch {}
440
+ if (!isKillSwitch) return {
441
+ type: "direct",
442
+ address,
443
+ executor: address
444
+ };
445
+ if (caller.status !== "success" || owner.status !== "success" || isKilled.status !== "success") throw new Error(`failed to read state of ${require_permissionless_utils_literals.KILL_SWITCH_PROXY} emergency admin ${address}`);
446
+ return {
447
+ type: "killSwitch",
448
+ address,
449
+ caller: caller.result,
450
+ owner: owner.result,
451
+ isKilled: isKilled.result,
452
+ executor: caller.result
453
+ };
454
+ }
455
+ /**
456
+ * Routes emergency transaction to the market configurator through its emergency admin:
457
+ * returns transaction as is for direct emergency admin, or wraps it into `proxyCall` of kill switch proxy
458
+ * @param tx - emergency transaction to the market configurator, e.g. built by `emergencyConfigurePool`
459
+ * @param emergencyAdmin - result of {@link getEmergencyAdmin}
460
+ * @throws if transaction is not addressed to this market configurator or kill switch proxy is killed
461
+ */
462
+ wrapEmergencyTx(tx, emergencyAdmin) {
463
+ if (!(0, viem.isAddressEqual)(tx.to, this.address)) throw new Error(`emergency tx target ${tx.to} is not market configurator ${this.address}`);
464
+ if (emergencyAdmin.type === "direct") return tx;
465
+ if (emergencyAdmin.isKilled) throw new Error(`${require_permissionless_utils_literals.KILL_SWITCH_PROXY} ${emergencyAdmin.address} of market configurator ${this.address} is killed`);
466
+ return require_onchain_utils_createRawTx.createRawTx(emergencyAdmin.address, {
467
+ abi: require_abi_310_iKillSwitchProxy.iKillSwitchProxyAbi,
468
+ functionName: "proxyCall",
469
+ args: [this.address, tx.callData]
470
+ }, tx.description ? `KillSwitchProxy.proxyCall(${tx.description})` : void 0);
471
+ }
472
+ /**
473
+ * Reads emergency admin and routes emergency transaction through it, see {@link wrapEmergencyTx}
474
+ * @param tx - emergency transaction to the market configurator, e.g. built by `emergencyConfigurePool`
475
+ */
476
+ async emergencyTx(tx) {
477
+ return this.wrapEmergencyTx(tx, await this.getEmergencyAdmin());
478
+ }
399
479
  grantRole(role, address) {
400
480
  return this.createRawTx({
401
481
  functionName: "grantRole",
@@ -609,9 +689,53 @@ var MarketConfiguratorContract = class extends require_onchain_base_BaseContract
609
689
  role: (0, viem.hexToString)(role, { size: 32 })
610
690
  };
611
691
  }
692
+ case "emergencyConfigurePool":
693
+ case "emergencyConfigurePriceOracle":
694
+ case "emergencyConfigureLossPolicy":
695
+ case "emergencyConfigureRateKeeper":
696
+ case "emergencyConfigureInterestRateModel": {
697
+ const [pool, calldata] = args;
698
+ const decoded = this.#decodeEmergencyConfig(functionName, calldata);
699
+ return decoded ? {
700
+ pool,
701
+ data: require_onchain_utils_json.json_stringify(decoded)
702
+ } : {
703
+ pool,
704
+ calldata
705
+ };
706
+ }
707
+ case "emergencyConfigureCreditSuite": {
708
+ const [creditManager, calldata] = args;
709
+ const decoded = this.#decodeEmergencyConfig(functionName, calldata);
710
+ return decoded ? {
711
+ creditManager,
712
+ data: require_onchain_utils_json.json_stringify(decoded)
713
+ } : {
714
+ creditManager,
715
+ calldata
716
+ };
717
+ }
612
718
  default: return super.parseFunctionParams(params);
613
719
  }
614
720
  }
721
+ /**
722
+ * Emergency actions share selectors with regular configuration actions only partially
723
+ * (e.g., `pause`, `forbidToken`, `setPriceFeed`), so decoding is best-effort
724
+ */
725
+ #decodeEmergencyConfig(functionName, calldata) {
726
+ const factory = {
727
+ emergencyConfigurePool: this.poolFactory,
728
+ emergencyConfigureCreditSuite: this.creditFactory,
729
+ emergencyConfigurePriceOracle: this.priceOracleFactory,
730
+ emergencyConfigureLossPolicy: this.lossPolicyFactory,
731
+ emergencyConfigureRateKeeper: this.rateKeeperFactory
732
+ }[functionName];
733
+ try {
734
+ return factory?.decodeConfig(calldata) ?? null;
735
+ } catch {
736
+ return null;
737
+ }
738
+ }
615
739
  emergencyConfigurePool(pool, calldata) {
616
740
  return this.createRawTx({
617
741
  functionName: "emergencyConfigurePool",
@@ -636,6 +760,24 @@ var MarketConfiguratorContract = class extends require_onchain_base_BaseContract
636
760
  args: [pool, calldata]
637
761
  });
638
762
  }
763
+ /**
764
+ * Note: current interest rate model factory forbids all emergency configuration calls
765
+ */
766
+ emergencyConfigureInterestRateModel(pool, calldata) {
767
+ return this.createRawTx({
768
+ functionName: "emergencyConfigureInterestRateModel",
769
+ args: [pool, calldata]
770
+ });
771
+ }
772
+ /**
773
+ * Note: current rate keeper factory forbids all emergency configuration calls
774
+ */
775
+ emergencyConfigureRateKeeper(pool, calldata) {
776
+ return this.createRawTx({
777
+ functionName: "emergencyConfigureRateKeeper",
778
+ args: [pool, calldata]
779
+ });
780
+ }
639
781
  };
640
782
  //#endregion
641
783
  exports.MarketConfiguratorContract = MarketConfiguratorContract;
@@ -11,7 +11,14 @@ const require_permissionless_bindings_price_feed_store = require("./bindings/pri
11
11
  const require_permissionless_deployment_addresses = require("./deployment/addresses.js");
12
12
  const require_permissionless_utils_abi_encoder = require("./utils/abi-encoder.js");
13
13
  const require_permissionless_api_deploy_PermissionlessDeploy = require("./api/deploy/PermissionlessDeploy.js");
14
+ const require_permissionless_bindings_address_provider = require("./bindings/address-provider.js");
14
15
  const require_permissionless_utils_price_update_get_prices = require("./utils/price-update/get-prices.js");
16
+ const require_permissionless_api_oracles_stress_classify = require("./api/oracles/stress/classify.js");
17
+ const require_permissionless_api_oracles_stress_override = require("./api/oracles/stress/override.js");
18
+ const require_permissionless_api_oracles_stress_score = require("./api/oracles/stress/score.js");
19
+ const require_permissionless_api_oracles_stress_run = require("./api/oracles/stress/run.js");
20
+ const require_permissionless_api_oracles_score_formula = require("./api/oracles/score/formula.js");
21
+ const require_permissionless_api_oracles_score_run = require("./api/oracles/score/run.js");
15
22
  const require_permissionless_api_oracles_PermissionlessOracles = require("./api/oracles/PermissionlessOracles.js");
16
23
  const require_permissionless_bindings_compressors_token_compressor = require("./bindings/compressors/token-compressor.js");
17
24
  const require_permissionless_bindings_compressors_withdrawal_compressor = require("./bindings/compressors/withdrawal-compressor.js");
@@ -23,14 +30,14 @@ const require_permissionless_utils_price_update_get_updatable_feeds = require(".
23
30
  const require_permissionless_api_transactions_InstanceOwnerTransactions = require("./api/transactions/InstanceOwnerTransactions.js");
24
31
  const require_permissionless_api_GearboxPermissionless = require("./api/GearboxPermissionless.js");
25
32
  require("./api/index.js");
26
- const require_permissionless_bindings_address_provider = require("./bindings/address-provider.js");
27
- const require_permissionless_bindings_market_configurator_factory = require("./bindings/market-configurator-factory.js");
28
- const require_permissionless_bindings_cross_chain_multisig = require("./bindings/cross-chain-multisig.js");
29
33
  const require_permissionless_utils_create2 = require("./utils/create2.js");
30
34
  const require_permissionless_utils_format = require("./utils/format.js");
31
35
  const require_permissionless_core_raw_tx = require("./core/raw-tx.js");
32
36
  const require_permissionless_bindings_types = require("./bindings/types.js");
33
37
  const require_permissionless_bindings_market_configurator = require("./bindings/market-configurator.js");
38
+ const require_permissionless_bindings_kill_switch_proxy = require("./bindings/kill-switch-proxy.js");
39
+ const require_permissionless_bindings_market_configurator_factory = require("./bindings/market-configurator-factory.js");
40
+ const require_permissionless_bindings_cross_chain_multisig = require("./bindings/cross-chain-multisig.js");
34
41
  const require_permissionless_bindings_governance_governor = require("./bindings/governance/governor.js");
35
42
  const require_permissionless_bindings_governance_timelock = require("./bindings/governance/timelock.js");
36
43
  require("./bindings/index.js");
@@ -53,6 +60,7 @@ exports.CROSS_CHAIN_MULTISIG = require_permissionless_utils_literals.CROSS_CHAIN
53
60
  exports.ChainsNamespace = require_permissionless_api_chains_ChainsNamespace.ChainsNamespace;
54
61
  exports.CrossChainMultisigContract = require_permissionless_bindings_cross_chain_multisig.CrossChainMultisigContract;
55
62
  exports.DEFAULT_DEPLOY_SALT = require_permissionless_api_deploy_PermissionlessDeploy.DEFAULT_DEPLOY_SALT;
63
+ exports.DEFAULT_SCENARIOS = require_permissionless_api_oracles_stress_run.DEFAULT_SCENARIOS;
56
64
  exports.GET_PRICES_CHUNK_SIZE = require_permissionless_api_oracles_PermissionlessOracles.GET_PRICES_CHUNK_SIZE;
57
65
  exports.GET_PRICES_GAS_LIMIT_BY_CHAIN_ID = require_permissionless_api_oracles_PermissionlessOracles.GET_PRICES_GAS_LIMIT_BY_CHAIN_ID;
58
66
  exports.GearboxPermissionless = require_permissionless_api_GearboxPermissionless.GearboxPermissionless;
@@ -60,6 +68,10 @@ exports.GovernorContract = require_permissionless_bindings_governance_governor.G
60
68
  exports.INSTANCE_MANAGER = require_permissionless_utils_literals.INSTANCE_MANAGER;
61
69
  exports.InstanceManagerContract = require_permissionless_bindings_instance_manager.InstanceManagerContract;
62
70
  exports.InstanceOwnerTransactions = require_permissionless_api_transactions_InstanceOwnerTransactions.InstanceOwnerTransactions;
71
+ exports.KILL_SWITCH_PROXY = require_permissionless_utils_literals.KILL_SWITCH_PROXY;
72
+ exports.KILL_SWITCH_PROXY_MINOR_VERSION = require_permissionless_bindings_kill_switch_proxy.KILL_SWITCH_PROXY_MINOR_VERSION;
73
+ exports.KillSwitchProxyContract = require_permissionless_bindings_kill_switch_proxy.KillSwitchProxyContract;
74
+ exports.KillSwitchProxyNotAllowedError = require_permissionless_bindings_kill_switch_proxy.KillSwitchProxyNotAllowedError;
63
75
  exports.MAINNET_CCM_CONSTRUCTOR_PARAMS = require_permissionless_deployment_mainnet.MAINNET_CCM_CONSTRUCTOR_PARAMS;
64
76
  exports.MAINNET_DEPLOYMENT_BLOCK = require_permissionless_deployment_mainnet.MAINNET_DEPLOYMENT_BLOCK;
65
77
  exports.MAINNET_DEPLOYMENT_CCM_SALT = require_permissionless_deployment_mainnet.MAINNET_DEPLOYMENT_CCM_SALT;
@@ -78,16 +90,21 @@ exports.PriceFeedNotInStoreError = require_permissionless_api_errors.PriceFeedNo
78
90
  exports.PriceFeedSaltMissingError = require_permissionless_api_errors.PriceFeedSaltMissingError;
79
91
  exports.PriceFeedStalenessUnknownError = require_permissionless_api_errors.PriceFeedStalenessUnknownError;
80
92
  exports.PriceFeedStoreContract = require_permissionless_bindings_price_feed_store.PriceFeedStoreContract;
93
+ exports.RATE_FEED_TYPE = require_permissionless_api_oracles_stress_run.RATE_FEED_TYPE;
81
94
  exports.RoutingManagerContract = require_permissionless_bindings_router_routing_manager.RoutingManagerContract;
95
+ exports.SCORE_MULTIPLIER = require_permissionless_api_oracles_score_formula.SCORE_MULTIPLIER;
82
96
  exports.TOKEN_COMPRESSOR = require_permissionless_utils_literals.TOKEN_COMPRESSOR;
83
97
  exports.TimeLockContract = require_permissionless_bindings_governance_timelock.TimeLockContract;
84
98
  exports.TokenCompressorContract = require_permissionless_bindings_compressors_token_compressor.TokenCompressorContract;
85
99
  exports.TreasurySplitterContract = require_permissionless_bindings_treasury_splitter.TreasurySplitterContract;
100
+ exports.UNBOUNDED_DOWN = require_permissionless_api_oracles_stress_override.UNBOUNDED_DOWN;
101
+ exports.UNBOUNDED_UP = require_permissionless_api_oracles_stress_override.UNBOUNDED_UP;
86
102
  exports.WithdrawalCompressorContract = require_permissionless_bindings_compressors_withdrawal_compressor.WithdrawalCompressorContract;
87
103
  exports.calculateChecksum = require_permissionless_utils_governance_batch.calculateChecksum;
88
104
  exports.checkCreate2Deployment = require_permissionless_utils_create2.checkCreate2Deployment;
89
105
  exports.checkCreate2DeploymentAddress = require_permissionless_utils_create2.checkCreate2DeploymentAddress;
90
106
  exports.chunkedLogsTransport = require_permissionless_chains_chunked_log_transport.chunkedLogsTransport;
107
+ exports.classifySources = require_permissionless_api_oracles_stress_classify.classifySources;
91
108
  exports.convertPercent = require_permissionless_utils_format.convertPercent;
92
109
  exports.convertQueueBatchToExecuteTx = require_permissionless_utils_governance_timelock_txs.convertQueueBatchToExecuteTx;
93
110
  exports.convertRawTxToSafeMultisigTx = require_permissionless_utils_governance_batch.convertRawTxToSafeMultisigTx;
@@ -97,19 +114,41 @@ exports.deepJsonParse = require_permissionless_utils_format.deepJsonParse;
97
114
  exports.deployUsingPublicCreate2 = require_permissionless_utils_create2.deployUsingPublicCreate2;
98
115
  exports.deriveEffectiveStalenessPeriod = require_permissionless_api_deploy_effective_staleness.deriveEffectiveStalenessPeriod;
99
116
  exports.encodeFunctionParams = require_permissionless_utils_abi_encoder.encodeFunctionParams;
117
+ exports.factorOf = require_permissionless_api_oracles_score_formula.factorOf;
118
+ exports.finalPrice = require_permissionless_api_oracles_score_formula.finalPrice;
100
119
  exports.formatBytecodeSize = require_permissionless_utils_format.formatBytecodeSize;
101
120
  exports.formatBytecodeVersion = require_permissionless_utils_format.formatBytecodeVersion;
102
121
  exports.getBlockNumberByTimestamp = require_permissionless_utils_block_utils.getBlockNumberByTimestamp;
103
122
  exports.getCreate2AddressPublicFactory = require_permissionless_utils_create2.getCreate2AddressPublicFactory;
104
123
  exports.getCreate2DeploymentAddress = require_permissionless_utils_create2.getCreate2DeploymentAddress;
124
+ exports.getFeedDecimals = require_permissionless_utils_price_update_get_prices.getFeedDecimals;
125
+ exports.getLatestPrices = require_permissionless_utils_price_update_get_prices.getLatestPrices;
105
126
  exports.getPriceUpdateTx = require_permissionless_utils_price_update_get_price_update_tx.getPriceUpdateTx;
106
127
  exports.getPrices = require_permissionless_utils_price_update_get_prices.getPrices;
107
128
  exports.getSafeBatch = require_permissionless_utils_governance_batch.getSafeBatch;
108
129
  exports.getSafeBatches = require_permissionless_utils_governance_batch.getSafeBatches;
109
130
  exports.getUpdatablePriceFeeds = require_permissionless_utils_price_update_get_updatable_feeds.getUpdatablePriceFeeds;
131
+ exports.groupOverride = require_permissionless_api_oracles_stress_override.groupOverride;
110
132
  exports.handleSalt = require_permissionless_utils_create2.handleSalt;
133
+ exports.killSwitchProxySalt = require_permissionless_bindings_kill_switch_proxy.killSwitchProxySalt;
111
134
  exports.normalizeSignature = require_permissionless_utils_signature.normalizeSignature;
135
+ exports.perturb = require_permissionless_api_oracles_stress_override.perturb;
112
136
  exports.priceFeedSalt = require_permissionless_api_deploy_PermissionlessDeploy.priceFeedSalt;
113
137
  exports.priceFeedSetupParams = require_permissionless_bindings_pricefeeds_index.priceFeedSetupParams;
138
+ exports.rateStub = require_permissionless_api_oracles_stress_override.rateStub;
139
+ exports.readFeedTrees = require_permissionless_api_oracles_stress_run.readFeedTrees;
140
+ exports.readForest = require_permissionless_api_oracles_stress_run.readForest;
141
+ exports.readRateTargets = require_permissionless_api_oracles_stress_run.readRateTargets;
142
+ exports.readUnder = require_permissionless_api_oracles_stress_run.readUnder;
143
+ exports.roundDataStub = require_permissionless_api_oracles_stress_override.roundDataStub;
144
+ exports.runAssetScores = require_permissionless_api_oracles_score_run.runAssetScores;
145
+ exports.runFeedPairScore = require_permissionless_api_oracles_score_run.runFeedPairScore;
146
+ exports.runStressTest = require_permissionless_api_oracles_stress_run.runStressTest;
147
+ exports.scoreGroup = require_permissionless_api_oracles_stress_score.scoreGroup;
148
+ exports.scoreOfFactor = require_permissionless_api_oracles_score_formula.scoreOfFactor;
114
149
  exports.shortenHash = require_permissionless_utils_format.shortenHash;
115
150
  exports.significantTrunc = require_permissionless_utils_format.significantTrunc;
151
+ exports.slotHarm = require_permissionless_api_oracles_stress_score.slotHarm;
152
+ exports.sourcesByFeed = require_permissionless_api_oracles_stress_classify.sourcesByFeed;
153
+ exports.verdictOf = require_permissionless_api_oracles_stress_score.verdictOf;
154
+ exports.worstOf = require_permissionless_api_oracles_score_formula.worstOf;
@@ -16,6 +16,7 @@ exports.BYTECODE_REPOSITORY = require_permissionless_utils_literals.BYTECODE_REP
16
16
  exports.CROSS_CHAIN_GOVERNANCE = require_permissionless_utils_literals.CROSS_CHAIN_GOVERNANCE;
17
17
  exports.CROSS_CHAIN_MULTISIG = require_permissionless_utils_literals.CROSS_CHAIN_MULTISIG;
18
18
  exports.INSTANCE_MANAGER = require_permissionless_utils_literals.INSTANCE_MANAGER;
19
+ exports.KILL_SWITCH_PROXY = require_permissionless_utils_literals.KILL_SWITCH_PROXY;
19
20
  exports.MARKET_CONFIGURATOR_FACTORY = require_permissionless_utils_literals.MARKET_CONFIGURATOR_FACTORY;
20
21
  exports.PRICE_FEED_STORE = require_permissionless_utils_literals.PRICE_FEED_STORE;
21
22
  exports.PUBLIC_CREATE2_FACTORY = require_permissionless_utils_create2.PUBLIC_CREATE2_FACTORY;
@@ -35,6 +36,8 @@ exports.formatBytecodeVersion = require_permissionless_utils_format.formatByteco
35
36
  exports.getBlockNumberByTimestamp = require_permissionless_utils_block_utils.getBlockNumberByTimestamp;
36
37
  exports.getCreate2AddressPublicFactory = require_permissionless_utils_create2.getCreate2AddressPublicFactory;
37
38
  exports.getCreate2DeploymentAddress = require_permissionless_utils_create2.getCreate2DeploymentAddress;
39
+ exports.getFeedDecimals = require_permissionless_utils_price_update_get_prices.getFeedDecimals;
40
+ exports.getLatestPrices = require_permissionless_utils_price_update_get_prices.getLatestPrices;
38
41
  exports.getPriceUpdateTx = require_permissionless_utils_price_update_get_price_update_tx.getPriceUpdateTx;
39
42
  exports.getPrices = require_permissionless_utils_price_update_get_prices.getPrices;
40
43
  exports.getSafeBatch = require_permissionless_utils_governance_batch.getSafeBatch;
@@ -7,11 +7,13 @@ const TOKEN_COMPRESSOR = "GLOBAL::TOKEN_COMPRESSOR";
7
7
  const CROSS_CHAIN_MULTISIG = "CROSS_CHAIN_MULTISIG";
8
8
  const PRICE_FEED_STORE = "PRICE_FEED_STORE";
9
9
  const MARKET_CONFIGURATOR_FACTORY = "MARKET_CONFIGURATOR_FACTORY";
10
+ const KILL_SWITCH_PROXY = "KILL_SWITCH_PROXY";
10
11
  //#endregion
11
12
  exports.BYTECODE_REPOSITORY = BYTECODE_REPOSITORY;
12
13
  exports.CROSS_CHAIN_GOVERNANCE = CROSS_CHAIN_GOVERNANCE;
13
14
  exports.CROSS_CHAIN_MULTISIG = CROSS_CHAIN_MULTISIG;
14
15
  exports.INSTANCE_MANAGER = INSTANCE_MANAGER;
16
+ exports.KILL_SWITCH_PROXY = KILL_SWITCH_PROXY;
15
17
  exports.MARKET_CONFIGURATOR_FACTORY = MARKET_CONFIGURATOR_FACTORY;
16
18
  exports.PRICE_FEED_STORE = PRICE_FEED_STORE;
17
19
  exports.TOKEN_COMPRESSOR = TOKEN_COMPRESSOR;