@gearbox-protocol/sdk 18.2.0-next.10 → 18.2.0-next.11
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/dist/cjs/dev/AccountOpener.js +1 -1
- package/dist/cjs/dev/withdrawalUtils.js +1 -1
- package/dist/cjs/history/trace/extractTransfers.js +1 -1
- package/dist/cjs/onchain/accounts/CreditAccountsServiceV310.js +2 -2
- package/dist/cjs/onchain/accounts/liquidations/LiquidationsService.js +1 -1
- package/dist/cjs/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.js +1 -2
- package/dist/cjs/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.js +1 -2
- package/dist/cjs/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.js +1 -2
- package/dist/cjs/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.js +1 -1
- package/dist/cjs/onchain/base/TokensMeta.js +3 -3
- package/dist/cjs/onchain/core/createAddressProvider.js +1 -1
- package/dist/cjs/onchain/market/adapters/contracts/AccountMigratorAdapterContract.js +1 -1
- package/dist/cjs/onchain/market/adapters/contracts/ERC4626AdapterContract.js +1 -1
- package/dist/cjs/onchain/market/credit/CreditFacadeV310BaseContract.js +1 -1
- package/dist/cjs/onchain/market/pool/PoolV310Contract.js +1 -1
- package/dist/cjs/onchain/market/rwa/createDegenNFT.js +1 -1
- package/dist/cjs/onchain/market/zapper/IETHZapperContract.js +1 -2
- package/dist/cjs/onchain/market/zapper/ZapperContract.js +1 -1
- package/dist/cjs/onchain/preview/preview/previewPoolPositionOperation.js +2 -2
- package/dist/cjs/onchain/utils/viem/simulateWithPriceUpdates.js +1 -1
- package/dist/cjs/permissionless/api/index.js +26 -0
- package/dist/cjs/permissionless/api/oracles/PermissionlessOracles.js +191 -0
- package/dist/cjs/permissionless/api/oracles/index.js +28 -0
- package/dist/cjs/permissionless/api/oracles/schemas.js +17 -0
- package/dist/cjs/permissionless/api/oracles/score/formula.js +99 -0
- package/dist/cjs/permissionless/api/oracles/score/index.js +8 -0
- package/dist/cjs/permissionless/api/oracles/score/run.js +88 -0
- package/dist/cjs/permissionless/api/oracles/score/types.js +1 -0
- package/dist/cjs/permissionless/api/oracles/stress/classify.js +258 -0
- package/dist/cjs/permissionless/api/oracles/stress/index.js +22 -0
- package/dist/cjs/permissionless/api/oracles/stress/override.js +125 -0
- package/dist/cjs/permissionless/api/oracles/stress/run.js +432 -0
- package/dist/cjs/permissionless/api/oracles/stress/score.js +98 -0
- package/dist/cjs/permissionless/api/oracles/stress/types.js +1 -0
- package/dist/cjs/permissionless/index.js +27 -0
- package/dist/cjs/permissionless/utils/index.js +1 -0
- package/dist/cjs/permissionless/utils/price-update/get-prices.js +39 -0
- package/dist/cjs/permissionless/utils/price-update/index.js +1 -0
- package/dist/esm/permissionless/api/index.js +7 -1
- package/dist/esm/permissionless/api/oracles/PermissionlessOracles.js +193 -2
- package/dist/esm/permissionless/api/oracles/index.js +10 -1
- package/dist/esm/permissionless/api/oracles/schemas.js +16 -1
- package/dist/esm/permissionless/api/oracles/score/formula.js +96 -0
- package/dist/esm/permissionless/api/oracles/score/index.js +4 -0
- package/dist/esm/permissionless/api/oracles/score/run.js +87 -0
- package/dist/esm/permissionless/api/oracles/score/types.js +1 -0
- package/dist/esm/permissionless/api/oracles/stress/classify.js +256 -0
- package/dist/esm/permissionless/api/oracles/stress/index.js +6 -0
- package/dist/esm/permissionless/api/oracles/stress/override.js +119 -0
- package/dist/esm/permissionless/api/oracles/stress/run.js +427 -0
- package/dist/esm/permissionless/api/oracles/stress/score.js +95 -0
- package/dist/esm/permissionless/api/oracles/stress/types.js +1 -0
- package/dist/esm/permissionless/index.js +8 -2
- package/dist/esm/permissionless/utils/index.js +2 -2
- package/dist/esm/permissionless/utils/price-update/get-prices.js +39 -1
- package/dist/esm/permissionless/utils/price-update/index.js +2 -2
- package/dist/types/permissionless/api/index.d.ts +10 -2
- package/dist/types/permissionless/api/oracles/PermissionlessOracles.d.ts +115 -1
- package/dist/types/permissionless/api/oracles/index.d.ts +12 -2
- package/dist/types/permissionless/api/oracles/schemas.d.ts +47 -0
- package/dist/types/permissionless/api/oracles/score/formula.d.ts +46 -0
- package/dist/types/permissionless/api/oracles/score/index.d.ts +4 -0
- package/dist/types/permissionless/api/oracles/score/run.d.ts +21 -0
- package/dist/types/permissionless/api/oracles/score/types.d.ts +85 -0
- package/dist/types/permissionless/api/oracles/stress/classify.d.ts +57 -0
- package/dist/types/permissionless/api/oracles/stress/index.d.ts +6 -0
- package/dist/types/permissionless/api/oracles/stress/override.d.ts +59 -0
- package/dist/types/permissionless/api/oracles/stress/run.d.ts +73 -0
- package/dist/types/permissionless/api/oracles/stress/score.d.ts +57 -0
- package/dist/types/permissionless/api/oracles/stress/types.d.ts +272 -0
- package/dist/types/permissionless/api/oracles/types.d.ts +58 -0
- package/dist/types/permissionless/index.d.ts +11 -3
- package/dist/types/permissionless/utils/index.d.ts +2 -2
- package/dist/types/permissionless/utils/price-update/get-prices.d.ts +16 -0
- package/dist/types/permissionless/utils/price-update/index.d.ts +2 -2
- package/package.json +1 -1
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_iERC20 = require("../abi/iERC20.js");
|
|
3
2
|
const require_abi_310_generated = require("../abi/310/generated.js");
|
|
3
|
+
const require_abi_iERC20 = require("../abi/iERC20.js");
|
|
4
4
|
const require_onchain_utils_AddressMap = require("../onchain/utils/AddressMap.js");
|
|
5
5
|
const require_onchain_utils_AddressSet = require("../onchain/utils/AddressSet.js");
|
|
6
6
|
const require_onchain_utils_AssetsMap = require("../onchain/utils/AssetsMap.js");
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_IWithdrawalCompressorV313 = require("../abi/IWithdrawalCompressorV313.js");
|
|
3
2
|
const require_onchain_chain_chains = require("../onchain/chain/chains.js");
|
|
4
3
|
const require_onchain_accounts_withdrawal_compressor_addresses = require("../onchain/accounts/withdrawal-compressor/addresses.js");
|
|
4
|
+
const require_abi_IWithdrawalCompressorV313 = require("../abi/IWithdrawalCompressorV313.js");
|
|
5
5
|
require("../onchain/index.js");
|
|
6
6
|
const require_dev_withdrawalAbi = require("./withdrawalAbi.js");
|
|
7
7
|
let viem = require("viem");
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_iERC20 = require("../../abi/iERC20.js");
|
|
3
2
|
const require_abi_310_generated = require("../../abi/310/generated.js");
|
|
3
|
+
const require_abi_iERC20 = require("../../abi/iERC20.js");
|
|
4
4
|
const require_onchain_utils_AddressMap = require("../../onchain/utils/AddressMap.js");
|
|
5
5
|
require("../../onchain/index.js");
|
|
6
6
|
const require_history_trace_errors = require("./errors.js");
|
|
@@ -1,6 +1,4 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_iBaseRewardPool = require("../../abi/iBaseRewardPool.js");
|
|
3
|
-
const require_abi_ierc4626Adapter = require("../../abi/ierc4626Adapter.js");
|
|
4
2
|
const require_onchain_constants_address_provider = require("../constants/address-provider.js");
|
|
5
3
|
const require_onchain_constants_addresses = require("../constants/addresses.js");
|
|
6
4
|
const require_onchain_constants_math = require("../constants/math.js");
|
|
@@ -11,6 +9,8 @@ require("../base/index.js");
|
|
|
11
9
|
const require_onchain_accounts_bots_AccountBotsService = require("./bots/AccountBotsService.js");
|
|
12
10
|
require("./bots/index.js");
|
|
13
11
|
const require_abi_compressors_rewardsCompressor = require("../../abi/compressors/rewardsCompressor.js");
|
|
12
|
+
const require_abi_iBaseRewardPool = require("../../abi/iBaseRewardPool.js");
|
|
13
|
+
const require_abi_ierc4626Adapter = require("../../abi/ierc4626Adapter.js");
|
|
14
14
|
const require_onchain_market_credit_expectedBalanceDeltas = require("../market/credit/expectedBalanceDeltas.js");
|
|
15
15
|
require("../market/index.js");
|
|
16
16
|
const require_onchain_accounts_credit_account_compressor_CreditAccountCompressor = require("./credit-account-compressor/CreditAccountCompressor.js");
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_ILiquidationCompressorV313 = require("../../../abi/ILiquidationCompressorV313.js");
|
|
3
2
|
const require_onchain_utils_AddressSet = require("../../utils/AddressSet.js");
|
|
4
3
|
const require_onchain_utils_bytes32ToString = require("../../utils/bytes32ToString.js");
|
|
5
4
|
const require_onchain_constants_addresses = require("../../constants/addresses.js");
|
|
@@ -21,6 +20,7 @@ const require_onchain_market_rwa_securitize_SecuritizeLiquidatorContract = requi
|
|
|
21
20
|
require("../../market/rwa/securitize/index.js");
|
|
22
21
|
require("../../market/index.js");
|
|
23
22
|
const require_onchain_accounts_liquidations_constants = require("./constants.js");
|
|
23
|
+
const require_abi_ILiquidationCompressorV313 = require("../../../abi/ILiquidationCompressorV313.js");
|
|
24
24
|
const require_onchain_accounts_liquidations_partialLiquidation = require("./partialLiquidation.js");
|
|
25
25
|
const require_onchain_accounts_liquidations_skipLiquidatableAccount = require("./skipLiquidatableAccount.js");
|
|
26
26
|
let viem = require("viem");
|
|
@@ -1,12 +1,11 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_iRedemptionLoggerV310 = require("../../../abi/iRedemptionLoggerV310.js");
|
|
3
2
|
const require_onchain_base_BaseContract = require("../../base/BaseContract.js");
|
|
4
3
|
require("../../base/index.js");
|
|
5
4
|
const require_model_result = require("../../../model/result.js");
|
|
6
5
|
require("../../../model/index.js");
|
|
7
6
|
const require_onchain_accounts_withdrawal_compressor_intent_codec = require("./intent-codec.js");
|
|
8
7
|
//#region src/onchain/accounts/withdrawal-compressor/RedemptionLoggerV310Contract.ts
|
|
9
|
-
const abi =
|
|
8
|
+
const abi = require("../../../abi/iRedemptionLoggerV310.js").iRedemptionLoggerV310Abi;
|
|
10
9
|
/**
|
|
11
10
|
* Wrapper around the v310 `RedemptionLogger` helper contract that stores
|
|
12
11
|
* redemption data logged by delayed-withdrawal gateways for off-chain
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_IWithdrawalCompressorV310 = require("../../../abi/IWithdrawalCompressorV310.js");
|
|
3
2
|
const require_onchain_accounts_withdrawal_compressor_AbstractWithdrawalCompressorContract = require("./AbstractWithdrawalCompressorContract.js");
|
|
4
3
|
//#region src/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV310Contract.ts
|
|
5
|
-
const abi =
|
|
4
|
+
const abi = require("../../../abi/IWithdrawalCompressorV310.js").iWithdrawalCompressorV310Abi;
|
|
6
5
|
/**
|
|
7
6
|
* V3.10 implementation of the {@link IWithdrawalCompressorContract} interface.
|
|
8
7
|
**/
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_IWithdrawalCompressorV311 = require("../../../abi/IWithdrawalCompressorV311.js");
|
|
3
2
|
const require_onchain_accounts_withdrawal_compressor_AbstractWithdrawalCompressorContract = require("./AbstractWithdrawalCompressorContract.js");
|
|
4
3
|
//#region src/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV311Contract.ts
|
|
5
|
-
const abi =
|
|
4
|
+
const abi = require("../../../abi/IWithdrawalCompressorV311.js").iWithdrawalCompressorV311Abi;
|
|
6
5
|
/**
|
|
7
6
|
* V3.11 implementation of the {@link IWithdrawalCompressorContract} interface.
|
|
8
7
|
**/
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_IWithdrawalCompressorV313 = require("../../../abi/IWithdrawalCompressorV313.js");
|
|
3
2
|
const require_onchain_accounts_withdrawal_compressor_intent_codec = require("./intent-codec.js");
|
|
4
3
|
const require_onchain_accounts_withdrawal_compressor_AbstractWithdrawalCompressorContract = require("./AbstractWithdrawalCompressorContract.js");
|
|
4
|
+
const require_abi_IWithdrawalCompressorV313 = require("../../../abi/IWithdrawalCompressorV313.js");
|
|
5
5
|
const require_onchain_accounts_withdrawal_compressor_types = require("./types.js");
|
|
6
6
|
//#region src/onchain/accounts/withdrawal-compressor/WithdrawalCompressorV313Contract.ts
|
|
7
7
|
const abi = require_abi_IWithdrawalCompressorV313.iWithdrawalCompressorV313Abi;
|
|
@@ -1,13 +1,13 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_iExpirable = require("../../abi/iExpirable.js");
|
|
3
|
-
const require_abi_iStateSerializer = require("../../abi/iStateSerializer.js");
|
|
4
|
-
const require_abi_iVersion = require("../../abi/iVersion.js");
|
|
5
2
|
const require_onchain_utils_AddressMap = require("../utils/AddressMap.js");
|
|
6
3
|
const require_onchain_utils_AddressSet = require("../utils/AddressSet.js");
|
|
7
4
|
const require_onchain_utils_bytes32ToString = require("../utils/bytes32ToString.js");
|
|
8
5
|
const require_onchain_chain_chains = require("../chain/chains.js");
|
|
9
6
|
const require_onchain_utils_formatter = require("../utils/formatter.js");
|
|
10
7
|
require("../utils/index.js");
|
|
8
|
+
const require_abi_iExpirable = require("../../abi/iExpirable.js");
|
|
9
|
+
const require_abi_iStateSerializer = require("../../abi/iStateSerializer.js");
|
|
10
|
+
const require_abi_iVersion = require("../../abi/iVersion.js");
|
|
11
11
|
const require_onchain_core_errors = require("../core/errors.js");
|
|
12
12
|
const require_onchain_utils_viem_executeMulticallBatches = require("../utils/viem/executeMulticallBatches.js");
|
|
13
13
|
let viem = require("viem");
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_iVersion = require("../../abi/iVersion.js");
|
|
3
2
|
require("../constants/address-provider.js");
|
|
4
3
|
const require_onchain_constants_versions = require("../constants/versions.js");
|
|
5
4
|
require("../constants/index.js");
|
|
6
5
|
const require_onchain_utils_hex = require("../utils/hex.js");
|
|
6
|
+
const require_abi_iVersion = require("../../abi/iVersion.js");
|
|
7
7
|
const require_onchain_core_AddressProviderV310Contract = require("./AddressProviderV310Contract.js");
|
|
8
8
|
//#region src/onchain/core/createAddressProvider.ts
|
|
9
9
|
const OVERRIDE_ADDRESSES = {};
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_AccountMigrator = require("../../../../abi/AccountMigrator.js");
|
|
3
2
|
const require_onchain_market_adapters_contracts_AbstractAdapter = require("./AbstractAdapter.js");
|
|
3
|
+
const require_abi_AccountMigrator = require("../../../../abi/AccountMigrator.js");
|
|
4
4
|
//#region src/onchain/market/adapters/contracts/AccountMigratorAdapterContract.ts
|
|
5
5
|
const abi = require_abi_AccountMigrator.accountMigratorAbi;
|
|
6
6
|
const protocolAbi = require_abi_AccountMigrator.accountMigratorAbi;
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_ierc4626Adapter = require("../../../../abi/ierc4626Adapter.js");
|
|
3
2
|
const require_onchain_base_errors = require("../../../base/errors.js");
|
|
4
3
|
require("../../../base/index.js");
|
|
4
|
+
const require_abi_ierc4626Adapter = require("../../../../abi/ierc4626Adapter.js");
|
|
5
5
|
const require_onchain_market_adapters_abi_targetContractAbi = require("../abi/targetContractAbi.js");
|
|
6
6
|
const require_onchain_market_adapters_transferHelpers = require("../transferHelpers.js");
|
|
7
7
|
const require_onchain_market_adapters_contracts_AbstractAdapter = require("./AbstractAdapter.js");
|
|
@@ -1,8 +1,8 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_iPausable = require("../../../abi/iPausable.js");
|
|
3
2
|
const require_abi_310_generated = require("../../../abi/310/generated.js");
|
|
4
3
|
const require_onchain_base_BaseContract = require("../../base/BaseContract.js");
|
|
5
4
|
require("../../base/index.js");
|
|
5
|
+
const require_abi_iPausable = require("../../../abi/iPausable.js");
|
|
6
6
|
//#region src/onchain/market/credit/CreditFacadeV310BaseContract.ts
|
|
7
7
|
const abi = [
|
|
8
8
|
...require_abi_310_generated.iCreditFacadeV310Abi,
|
|
@@ -1,5 +1,4 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_iPausable = require("../../../abi/iPausable.js");
|
|
3
2
|
const require_abi_310_generated = require("../../../abi/310/generated.js");
|
|
4
3
|
const require_onchain_utils_AddressMap = require("../../utils/AddressMap.js");
|
|
5
4
|
const require_onchain_constants_math = require("../../constants/math.js");
|
|
@@ -9,6 +8,7 @@ require("../../utils/index.js");
|
|
|
9
8
|
const require_onchain_core_errors = require("../../core/errors.js");
|
|
10
9
|
const require_onchain_base_BaseContract = require("../../base/BaseContract.js");
|
|
11
10
|
require("../../base/index.js");
|
|
11
|
+
const require_abi_iPausable = require("../../../abi/iPausable.js");
|
|
12
12
|
//#region src/onchain/market/pool/PoolV310Contract.ts
|
|
13
13
|
const abi = [...require_abi_310_generated.iPoolV310Abi, ...require_abi_iPausable.iPausableAbi];
|
|
14
14
|
var PoolV310Contract = class extends require_onchain_base_BaseContract.BaseContract {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_iVersion = require("../../../abi/iVersion.js");
|
|
3
2
|
const require_onchain_utils_bytes32ToString = require("../../utils/bytes32ToString.js");
|
|
4
3
|
require("../../utils/index.js");
|
|
4
|
+
const require_abi_iVersion = require("../../../abi/iVersion.js");
|
|
5
5
|
const require_abi_rwa_iMidasDegenNFT = require("../../../abi/rwa/iMidasDegenNFT.js");
|
|
6
6
|
const require_onchain_market_rwa_midas_constants = require("./midas/constants.js");
|
|
7
7
|
const require_onchain_market_rwa_midas_MidasDegenNFT = require("./midas/MidasDegenNFT.js");
|
|
@@ -1,8 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_iETHZapper = require("../../../abi/iETHZapper.js");
|
|
3
2
|
const require_onchain_market_zapper_ZapperContract = require("./ZapperContract.js");
|
|
4
3
|
//#region src/onchain/market/zapper/IETHZapperContract.ts
|
|
5
|
-
const abi =
|
|
4
|
+
const abi = require("../../../abi/iETHZapper.js").iethZapperAbi;
|
|
6
5
|
var IETHZapperContract = class extends require_onchain_market_zapper_ZapperContract.ZapperContract {
|
|
7
6
|
constructor(sdk, data) {
|
|
8
7
|
super(sdk, data, abi, "ETHZapper");
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_iZapper = require("../../../abi/iZapper.js");
|
|
3
2
|
const require_onchain_base_BaseContract = require("../../base/BaseContract.js");
|
|
4
3
|
require("../../base/index.js");
|
|
5
4
|
const require_model_result = require("../../../model/result.js");
|
|
6
5
|
require("../../../model/index.js");
|
|
6
|
+
const require_abi_iZapper = require("../../../abi/iZapper.js");
|
|
7
7
|
//#region src/onchain/market/zapper/ZapperContract.ts
|
|
8
8
|
/**
|
|
9
9
|
* Base contract for every Gearbox zapper. Specialized zappers (e.g.
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
-
const require_abi_iERC20 = require("../../../abi/iERC20.js");
|
|
3
|
-
const require_abi_iZapper = require("../../../abi/iZapper.js");
|
|
4
2
|
const require_abi_310_generated = require("../../../abi/310/generated.js");
|
|
3
|
+
const require_abi_iERC20 = require("../../../abi/iERC20.js");
|
|
5
4
|
const require_model_result = require("../../../model/result.js");
|
|
6
5
|
require("../../../model/index.js");
|
|
6
|
+
const require_abi_iZapper = require("../../../abi/iZapper.js");
|
|
7
7
|
//#region src/onchain/preview/preview/previewPoolPositionOperation.ts
|
|
8
8
|
function previewRead(operation) {
|
|
9
9
|
switch (operation.operation) {
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
2
|
const require_abi_errors = require("../../../abi/errors.js");
|
|
3
|
-
const require_abi_iUpdatablePriceFeed = require("../../../abi/iUpdatablePriceFeed.js");
|
|
4
3
|
const require_onchain_utils_viem_cast = require("./cast.js");
|
|
4
|
+
const require_abi_iUpdatablePriceFeed = require("../../../abi/iUpdatablePriceFeed.js");
|
|
5
5
|
const require_onchain_utils_viem_simulateMulticall = require("./simulateMulticall.js");
|
|
6
6
|
let viem = require("viem");
|
|
7
7
|
let viem_utils = require("viem/utils");
|
|
@@ -7,17 +7,26 @@ require("./chains/index.js");
|
|
|
7
7
|
const require_permissionless_api_deploy_effective_staleness = require("./deploy/effective-staleness.js");
|
|
8
8
|
const require_permissionless_api_deploy_PermissionlessDeploy = require("./deploy/PermissionlessDeploy.js");
|
|
9
9
|
require("./deploy/index.js");
|
|
10
|
+
const require_permissionless_api_oracles_stress_classify = require("./oracles/stress/classify.js");
|
|
11
|
+
const require_permissionless_api_oracles_stress_override = require("./oracles/stress/override.js");
|
|
12
|
+
const require_permissionless_api_oracles_stress_score = require("./oracles/stress/score.js");
|
|
13
|
+
const require_permissionless_api_oracles_stress_run = require("./oracles/stress/run.js");
|
|
14
|
+
const require_permissionless_api_oracles_score_formula = require("./oracles/score/formula.js");
|
|
15
|
+
const require_permissionless_api_oracles_score_run = require("./oracles/score/run.js");
|
|
10
16
|
const require_permissionless_api_oracles_PermissionlessOracles = require("./oracles/PermissionlessOracles.js");
|
|
11
17
|
const require_permissionless_api_transactions_InstanceOwnerTransactions = require("./transactions/InstanceOwnerTransactions.js");
|
|
12
18
|
const require_permissionless_api_GearboxPermissionless = require("./GearboxPermissionless.js");
|
|
13
19
|
require("./oracles/index.js");
|
|
14
20
|
require("./transactions/index.js");
|
|
15
21
|
require("./types.js");
|
|
22
|
+
exports.BOUND_WEIGHT = require_permissionless_api_oracles_score_formula.BOUND_WEIGHT;
|
|
16
23
|
exports.ChainsNamespace = require_permissionless_api_chains_ChainsNamespace.ChainsNamespace;
|
|
17
24
|
exports.DEFAULT_DEPLOY_SALT = require_permissionless_api_deploy_PermissionlessDeploy.DEFAULT_DEPLOY_SALT;
|
|
25
|
+
exports.DEFAULT_SCENARIOS = require_permissionless_api_oracles_stress_run.DEFAULT_SCENARIOS;
|
|
18
26
|
exports.GET_PRICES_CHUNK_SIZE = require_permissionless_api_oracles_PermissionlessOracles.GET_PRICES_CHUNK_SIZE;
|
|
19
27
|
exports.GET_PRICES_GAS_LIMIT_BY_CHAIN_ID = require_permissionless_api_oracles_PermissionlessOracles.GET_PRICES_GAS_LIMIT_BY_CHAIN_ID;
|
|
20
28
|
exports.GearboxPermissionless = require_permissionless_api_GearboxPermissionless.GearboxPermissionless;
|
|
29
|
+
exports.INDEPENDENCE_WEIGHT = require_permissionless_api_oracles_score_formula.INDEPENDENCE_WEIGHT;
|
|
21
30
|
exports.InstanceOwnerTransactions = require_permissionless_api_transactions_InstanceOwnerTransactions.InstanceOwnerTransactions;
|
|
22
31
|
exports.PermissionlessAnalytics = require_permissionless_api_analytics_PermissionlessAnalytics.PermissionlessAnalytics;
|
|
23
32
|
exports.PermissionlessChainUnreachableError = require_permissionless_api_errors.PermissionlessChainUnreachableError;
|
|
@@ -27,5 +36,22 @@ exports.PermissionlessOracles = require_permissionless_api_oracles_Permissionles
|
|
|
27
36
|
exports.PriceFeedNotInStoreError = require_permissionless_api_errors.PriceFeedNotInStoreError;
|
|
28
37
|
exports.PriceFeedSaltMissingError = require_permissionless_api_errors.PriceFeedSaltMissingError;
|
|
29
38
|
exports.PriceFeedStalenessUnknownError = require_permissionless_api_errors.PriceFeedStalenessUnknownError;
|
|
39
|
+
exports.RATE_FEED_TYPE = require_permissionless_api_oracles_stress_run.RATE_FEED_TYPE;
|
|
40
|
+
exports.UNBOUNDED_DOWN = require_permissionless_api_oracles_stress_override.UNBOUNDED_DOWN;
|
|
41
|
+
exports.UNBOUNDED_UP = require_permissionless_api_oracles_stress_override.UNBOUNDED_UP;
|
|
42
|
+
exports.classifySources = require_permissionless_api_oracles_stress_classify.classifySources;
|
|
30
43
|
exports.deriveEffectiveStalenessPeriod = require_permissionless_api_deploy_effective_staleness.deriveEffectiveStalenessPeriod;
|
|
44
|
+
exports.groupOverride = require_permissionless_api_oracles_stress_override.groupOverride;
|
|
45
|
+
exports.perturb = require_permissionless_api_oracles_stress_override.perturb;
|
|
31
46
|
exports.priceFeedSalt = require_permissionless_api_deploy_PermissionlessDeploy.priceFeedSalt;
|
|
47
|
+
exports.rateStub = require_permissionless_api_oracles_stress_override.rateStub;
|
|
48
|
+
exports.readForest = require_permissionless_api_oracles_stress_run.readForest;
|
|
49
|
+
exports.readRateTargets = require_permissionless_api_oracles_stress_run.readRateTargets;
|
|
50
|
+
exports.roundDataStub = require_permissionless_api_oracles_stress_override.roundDataStub;
|
|
51
|
+
exports.runAssetScores = require_permissionless_api_oracles_score_run.runAssetScores;
|
|
52
|
+
exports.runStressTest = require_permissionless_api_oracles_stress_run.runStressTest;
|
|
53
|
+
exports.scoreGroup = require_permissionless_api_oracles_stress_score.scoreGroup;
|
|
54
|
+
exports.scoreMarket = require_permissionless_api_oracles_score_formula.scoreMarket;
|
|
55
|
+
exports.slotHarm = require_permissionless_api_oracles_stress_score.slotHarm;
|
|
56
|
+
exports.sourcesByFeed = require_permissionless_api_oracles_stress_classify.sourcesByFeed;
|
|
57
|
+
exports.verdictOf = require_permissionless_api_oracles_stress_score.verdictOf;
|
|
@@ -10,6 +10,8 @@ const require_permissionless_bindings_address_provider = require("../../bindings
|
|
|
10
10
|
const require_permissionless_utils_price_update_get_prices = require("../../utils/price-update/get-prices.js");
|
|
11
11
|
const require_permissionless_api_oracles_enrich = require("./enrich.js");
|
|
12
12
|
const require_permissionless_api_oracles_schemas = require("./schemas.js");
|
|
13
|
+
const require_permissionless_api_oracles_stress_run = require("./stress/run.js");
|
|
14
|
+
const require_permissionless_api_oracles_score_run = require("./score/run.js");
|
|
13
15
|
let viem = require("viem");
|
|
14
16
|
//#region src/permissionless/api/oracles/PermissionlessOracles.ts
|
|
15
17
|
const GET_PRICES_GAS_LIMIT_BY_CHAIN_ID = { 143: 100000000n };
|
|
@@ -94,6 +96,31 @@ var PermissionlessOracles = class extends require_offchain_AbstractOffchainNames
|
|
|
94
96
|
});
|
|
95
97
|
}
|
|
96
98
|
/**
|
|
99
|
+
* Every market slot in force, with the feed holding it and what the market
|
|
100
|
+
* has riding on it.
|
|
101
|
+
*
|
|
102
|
+
* The chain's whole slot table, which {@link feed} and {@link asset} answer
|
|
103
|
+
* one subject's slice of. What reads it this way is analysis over every
|
|
104
|
+
* market at once — which feed holds which slot, and what breaks if it
|
|
105
|
+
* lies — and asking a feed at a time would be a few hundred requests for
|
|
106
|
+
* the same rows.
|
|
107
|
+
*
|
|
108
|
+
* Served as indexed, with nothing folded in: the quotas are in each
|
|
109
|
+
* market's own underlying, as everywhere else, and pricing them is
|
|
110
|
+
* {@link getPrices} over the `underlyingPriceFeed` column.
|
|
111
|
+
*
|
|
112
|
+
* ```ts
|
|
113
|
+
* const slots = await permissionless.oracles.slots({ chainId: 1 });
|
|
114
|
+
* ```
|
|
115
|
+
**/
|
|
116
|
+
async slots({ chainId } = {}) {
|
|
117
|
+
return this.getData({
|
|
118
|
+
path: "/pfs/slots",
|
|
119
|
+
query: { chainId: chainId?.toString() },
|
|
120
|
+
schema: require_permissionless_api_oracles_schemas.marketSlotsSchema
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
/**
|
|
97
124
|
* One feed of the store: what it is, which assets it may price, and which
|
|
98
125
|
* market slots it currently fills.
|
|
99
126
|
*
|
|
@@ -290,6 +317,111 @@ var PermissionlessOracles = class extends require_offchain_AbstractOffchainNames
|
|
|
290
317
|
}).sort(require_permissionless_api_oracles_enrich.byCentrality);
|
|
291
318
|
}
|
|
292
319
|
/**
|
|
320
|
+
* What each source of price information can do to the chain's markets if it
|
|
321
|
+
* lies.
|
|
322
|
+
*
|
|
323
|
+
* The feeds under a chain's oracles are partitioned by where their numbers
|
|
324
|
+
* actually come from — Chainlink, Redstone, Pyth, Lido, Curve, each vault's
|
|
325
|
+
* own issuer — on the grounds that a source fails as a whole: whoever
|
|
326
|
+
* trusts one Chainlink aggregator trusts the operator behind all of them.
|
|
327
|
+
* Each group is then made to report a multiple of what it reports now, and
|
|
328
|
+
* every feed the markets read is read again inside that same call.
|
|
329
|
+
*
|
|
330
|
+
* No fork and no harness. The lie is a state override on an `eth_call`, so
|
|
331
|
+
* the composite feeds above it, their bounds and the oracle's own checks all
|
|
332
|
+
* run as deployed, against real state, at the current block — what comes
|
|
333
|
+
* back is what the market would have read.
|
|
334
|
+
*
|
|
335
|
+
* Each slot is scored by how its collateral moved *against its market's own
|
|
336
|
+
* underlying*, because that is what an account is valued by: a group that
|
|
337
|
+
* moves both legs has moved nothing. Beyond the two unbounded ends, each
|
|
338
|
+
* group is bisected for the multiple at which something first breaks, which
|
|
339
|
+
* is the figure that separates a source held in check by a bound from one
|
|
340
|
+
* nothing is checking.
|
|
341
|
+
*
|
|
342
|
+
* ```ts
|
|
343
|
+
* const report = await permissionless.oracles.stressTest({ chainId: 1 });
|
|
344
|
+
* for (const group of report.groups) {
|
|
345
|
+
* console.log(group.verdict);
|
|
346
|
+
* }
|
|
347
|
+
* ```
|
|
348
|
+
*
|
|
349
|
+
* Report {@link StressReport.unidentifiedUsd} alongside anything taken from
|
|
350
|
+
* this: it is the quota priced through a source the partition could only
|
|
351
|
+
* name after its own description, and nothing says what that fails with.
|
|
352
|
+
*
|
|
353
|
+
* Reads the chain directly, so the client has to have attached — see
|
|
354
|
+
* {@link GearboxPermissionless.attach}. Costs one request for the slots and
|
|
355
|
+
* then, per group, one `eth_call` per scenario plus the bisection's; a whole
|
|
356
|
+
* chain comes to a minute or so, and `thresholds: false` cuts it to seconds.
|
|
357
|
+
*
|
|
358
|
+
* @throws When the client has not attached, when the chain has no client
|
|
359
|
+
* configured, or when no PriceFeedCompressor is deployed on it — none of the
|
|
360
|
+
* three leaves anything to simulate.
|
|
361
|
+
**/
|
|
362
|
+
/**
|
|
363
|
+
* Every asset's score out of 10 for how its markets guard its price.
|
|
364
|
+
*
|
|
365
|
+
* A market scores 10 when its reserve feed is a second feed on other
|
|
366
|
+
* sources than the main one, and one of the two is bounded — a
|
|
367
|
+
* `BoundedPriceFeed` or a Gearbox LP feed. It loses 6 points as the two
|
|
368
|
+
* feeds' sources overlap — all of them if there is no reserve, it is a
|
|
369
|
+
* `ZeroPriceFeed`, or it is the main feed again — and 5 if neither is
|
|
370
|
+
* bounded. An asset scores its worst running market that takes it as
|
|
371
|
+
* collateral.
|
|
372
|
+
*
|
|
373
|
+
* Read off the chain, one multicall of feed trees per chain, so the score
|
|
374
|
+
* is of the trees as they stand rather than as last indexed. A chain with
|
|
375
|
+
* no client configured is left out with a warning rather than failing the
|
|
376
|
+
* rest.
|
|
377
|
+
*
|
|
378
|
+
* ```ts
|
|
379
|
+
* const scores = await permissionless.oracles.assetScores({ chainId: 1 });
|
|
380
|
+
* ```
|
|
381
|
+
*
|
|
382
|
+
* @throws {PermissionlessNotAttachedError} before
|
|
383
|
+
* {@link GearboxPermissionless.attach} has resolved.
|
|
384
|
+
**/
|
|
385
|
+
async assetScores({ chainId } = {}) {
|
|
386
|
+
const slots = await this.slots({ chainId });
|
|
387
|
+
const byChain = /* @__PURE__ */ new Map();
|
|
388
|
+
for (const slot of slots) byChain.set(slot.chainId, [...byChain.get(slot.chainId) ?? [], slot]);
|
|
389
|
+
return (await Promise.all([...byChain].map(async ([id, chainSlots]) => {
|
|
390
|
+
let client;
|
|
391
|
+
try {
|
|
392
|
+
client = this.#chains.client(id);
|
|
393
|
+
} catch (e) {
|
|
394
|
+
this.logger?.warn(`chain ${id} has no client, leaving its assets unscored: ${describe(e)}`);
|
|
395
|
+
return [];
|
|
396
|
+
}
|
|
397
|
+
try {
|
|
398
|
+
const compressor = await new require_permissionless_bindings_address_provider.AddressProviderContract("0xF7f0a609BfAb9a0A98786951ef10e5FE26cC1E38", client).getLatestVersionAddress(require_onchain_constants_address_provider.AP_PRICE_FEED_COMPRESSOR);
|
|
399
|
+
return await require_permissionless_api_oracles_score_run.runAssetScores({
|
|
400
|
+
client,
|
|
401
|
+
chainId: id,
|
|
402
|
+
slots: chainSlots,
|
|
403
|
+
compressor,
|
|
404
|
+
logger: this.logger ?? void 0
|
|
405
|
+
});
|
|
406
|
+
} catch (e) {
|
|
407
|
+
this.logger?.warn(`chain ${id} would not report its feed trees, leaving its assets unscored: ${describe(e)}`);
|
|
408
|
+
return [];
|
|
409
|
+
}
|
|
410
|
+
}))).flat();
|
|
411
|
+
}
|
|
412
|
+
async stressTest({ chainId, ...options }) {
|
|
413
|
+
const client = this.#chains.client(chainId);
|
|
414
|
+
const compressor = await new require_permissionless_bindings_address_provider.AddressProviderContract("0xF7f0a609BfAb9a0A98786951ef10e5FE26cC1E38", client).getLatestVersionAddress(require_onchain_constants_address_provider.AP_PRICE_FEED_COMPRESSOR);
|
|
415
|
+
return require_permissionless_api_oracles_stress_run.runStressTest({
|
|
416
|
+
client,
|
|
417
|
+
chainId,
|
|
418
|
+
compressor,
|
|
419
|
+
slots: await this.slots({ chainId }),
|
|
420
|
+
logger: this.logger ?? void 0,
|
|
421
|
+
...options
|
|
422
|
+
});
|
|
423
|
+
}
|
|
424
|
+
/**
|
|
293
425
|
* The feeds one feed reads from, recursively.
|
|
294
426
|
*
|
|
295
427
|
* Answers for any feed the chain has indexed, store member or not: a
|
|
@@ -354,6 +486,65 @@ var PermissionlessOracles = class extends require_offchain_AbstractOffchainNames
|
|
|
354
486
|
price: prices.get(chainId)?.[address.toLowerCase()] ?? null
|
|
355
487
|
}));
|
|
356
488
|
}
|
|
489
|
+
/**
|
|
490
|
+
* The scale each of the named feeds answers in.
|
|
491
|
+
*
|
|
492
|
+
* The companion to {@link getPrices} for the callers whose feeds are not
|
|
493
|
+
* all an oracle's: everything an oracle holds reports 8 decimals, but the
|
|
494
|
+
* feeds under a composite are whatever was deployed, and a rate leg at 18
|
|
495
|
+
* read as 8 is wrong by ten orders of magnitude rather than visibly wrong.
|
|
496
|
+
*
|
|
497
|
+
* Separate from the price because the two keep different company: this is
|
|
498
|
+
* fixed for the life of the contract and worth caching for the session,
|
|
499
|
+
* while a price is re-read whenever the reader asks. One multicall per
|
|
500
|
+
* chain either way.
|
|
501
|
+
*
|
|
502
|
+
* `null` is a feed that would not answer, or one on a chain with no client
|
|
503
|
+
* configured.
|
|
504
|
+
*
|
|
505
|
+
* ```ts
|
|
506
|
+
* const [{ decimals }] = await permissionless.oracles.getDecimals([
|
|
507
|
+
* { chainId: 1, address: feed },
|
|
508
|
+
* ]);
|
|
509
|
+
* ```
|
|
510
|
+
*
|
|
511
|
+
* @returns One entry per feed asked for, in the order asked.
|
|
512
|
+
**/
|
|
513
|
+
async getDecimals(feeds) {
|
|
514
|
+
const byChain = /* @__PURE__ */ new Map();
|
|
515
|
+
for (const { chainId, address } of feeds) {
|
|
516
|
+
const addresses = byChain.get(chainId) ?? /* @__PURE__ */ new Set();
|
|
517
|
+
addresses.add(address.toLowerCase());
|
|
518
|
+
byChain.set(chainId, addresses);
|
|
519
|
+
}
|
|
520
|
+
const chainIds = [...byChain.keys()];
|
|
521
|
+
const results = await Promise.all(chainIds.map((chainId) => this.#decimalsOf(chainId, [...byChain.get(chainId) ?? []])));
|
|
522
|
+
const decimals = new Map(chainIds.map((id, i) => [id, results[i] ?? {}]));
|
|
523
|
+
return feeds.map(({ chainId, address }) => ({
|
|
524
|
+
chainId,
|
|
525
|
+
address,
|
|
526
|
+
decimals: decimals.get(chainId)?.[address.toLowerCase()] ?? null
|
|
527
|
+
}));
|
|
528
|
+
}
|
|
529
|
+
/** One chain's half of {@link getDecimals}. */
|
|
530
|
+
async #decimalsOf(chainId, priceFeeds) {
|
|
531
|
+
let client;
|
|
532
|
+
try {
|
|
533
|
+
client = this.#chains.client(chainId);
|
|
534
|
+
} catch (e) {
|
|
535
|
+
this.logger?.warn(`chain ${chainId} has no client, reporting its ${priceFeeds.length} feed(s) without a scale: ${describe(e)}`);
|
|
536
|
+
return {};
|
|
537
|
+
}
|
|
538
|
+
try {
|
|
539
|
+
return await require_permissionless_utils_price_update_get_prices.getFeedDecimals({
|
|
540
|
+
client,
|
|
541
|
+
priceFeeds
|
|
542
|
+
});
|
|
543
|
+
} catch (e) {
|
|
544
|
+
this.logger?.warn(`chain ${chainId} would not answer decimals for its ${priceFeeds.length} feed(s): ${describe(e)}`);
|
|
545
|
+
return {};
|
|
546
|
+
}
|
|
547
|
+
}
|
|
357
548
|
/** One chain's half of {@link getPrices}: the cheap pass, then the rest. */
|
|
358
549
|
async #pricesOf(chainId, priceFeeds) {
|
|
359
550
|
let client;
|
|
@@ -1,6 +1,34 @@
|
|
|
1
1
|
Object.defineProperty(exports, Symbol.toStringTag, { value: "Module" });
|
|
2
|
+
const require_permissionless_api_oracles_stress_classify = require("./stress/classify.js");
|
|
3
|
+
const require_permissionless_api_oracles_stress_override = require("./stress/override.js");
|
|
4
|
+
const require_permissionless_api_oracles_stress_score = require("./stress/score.js");
|
|
5
|
+
const require_permissionless_api_oracles_stress_run = require("./stress/run.js");
|
|
6
|
+
const require_permissionless_api_oracles_score_formula = require("./score/formula.js");
|
|
7
|
+
const require_permissionless_api_oracles_score_run = require("./score/run.js");
|
|
2
8
|
const require_permissionless_api_oracles_PermissionlessOracles = require("./PermissionlessOracles.js");
|
|
9
|
+
require("./score/index.js");
|
|
10
|
+
require("./stress/index.js");
|
|
3
11
|
require("./types.js");
|
|
12
|
+
exports.BOUND_WEIGHT = require_permissionless_api_oracles_score_formula.BOUND_WEIGHT;
|
|
13
|
+
exports.DEFAULT_SCENARIOS = require_permissionless_api_oracles_stress_run.DEFAULT_SCENARIOS;
|
|
4
14
|
exports.GET_PRICES_CHUNK_SIZE = require_permissionless_api_oracles_PermissionlessOracles.GET_PRICES_CHUNK_SIZE;
|
|
5
15
|
exports.GET_PRICES_GAS_LIMIT_BY_CHAIN_ID = require_permissionless_api_oracles_PermissionlessOracles.GET_PRICES_GAS_LIMIT_BY_CHAIN_ID;
|
|
16
|
+
exports.INDEPENDENCE_WEIGHT = require_permissionless_api_oracles_score_formula.INDEPENDENCE_WEIGHT;
|
|
6
17
|
exports.PermissionlessOracles = require_permissionless_api_oracles_PermissionlessOracles.PermissionlessOracles;
|
|
18
|
+
exports.RATE_FEED_TYPE = require_permissionless_api_oracles_stress_run.RATE_FEED_TYPE;
|
|
19
|
+
exports.UNBOUNDED_DOWN = require_permissionless_api_oracles_stress_override.UNBOUNDED_DOWN;
|
|
20
|
+
exports.UNBOUNDED_UP = require_permissionless_api_oracles_stress_override.UNBOUNDED_UP;
|
|
21
|
+
exports.classifySources = require_permissionless_api_oracles_stress_classify.classifySources;
|
|
22
|
+
exports.groupOverride = require_permissionless_api_oracles_stress_override.groupOverride;
|
|
23
|
+
exports.perturb = require_permissionless_api_oracles_stress_override.perturb;
|
|
24
|
+
exports.rateStub = require_permissionless_api_oracles_stress_override.rateStub;
|
|
25
|
+
exports.readForest = require_permissionless_api_oracles_stress_run.readForest;
|
|
26
|
+
exports.readRateTargets = require_permissionless_api_oracles_stress_run.readRateTargets;
|
|
27
|
+
exports.roundDataStub = require_permissionless_api_oracles_stress_override.roundDataStub;
|
|
28
|
+
exports.runAssetScores = require_permissionless_api_oracles_score_run.runAssetScores;
|
|
29
|
+
exports.runStressTest = require_permissionless_api_oracles_stress_run.runStressTest;
|
|
30
|
+
exports.scoreGroup = require_permissionless_api_oracles_stress_score.scoreGroup;
|
|
31
|
+
exports.scoreMarket = require_permissionless_api_oracles_score_formula.scoreMarket;
|
|
32
|
+
exports.slotHarm = require_permissionless_api_oracles_stress_score.slotHarm;
|
|
33
|
+
exports.sourcesByFeed = require_permissionless_api_oracles_stress_classify.sourcesByFeed;
|
|
34
|
+
exports.verdictOf = require_permissionless_api_oracles_stress_score.verdictOf;
|
|
@@ -76,6 +76,21 @@ const priceFeedMarketSchema = marketSchema.extend({
|
|
|
76
76
|
reserve: zod_v4.z.boolean(),
|
|
77
77
|
priceOracle: require_permissionless_api_schemas.addressSchema
|
|
78
78
|
});
|
|
79
|
+
/**
|
|
80
|
+
* {@link PermissionlessMarketSlot} — the same slot read from the chain's end,
|
|
81
|
+
* so the feed is a column rather than what was asked for.
|
|
82
|
+
**/
|
|
83
|
+
const marketSlotSchema = priceFeedMarketSchema.extend({
|
|
84
|
+
chainId: zod_v4.z.number(),
|
|
85
|
+
underlyingToken: require_permissionless_api_schemas.addressSchema,
|
|
86
|
+
isShutdown: zod_v4.z.boolean(),
|
|
87
|
+
priceFeed: require_permissionless_api_schemas.addressSchema,
|
|
88
|
+
priceFeedName: zod_v4.z.string().nullable(),
|
|
89
|
+
priceFeedInStore: zod_v4.z.boolean(),
|
|
90
|
+
underlyingPriceFeed: require_permissionless_api_schemas.addressSchema.nullable()
|
|
91
|
+
});
|
|
92
|
+
/** Every slot in scope, across whichever chains the read covered. */
|
|
93
|
+
const marketSlotsSchema = zod_v4.z.array(marketSlotSchema);
|
|
79
94
|
/** {@link PermissionlessIndexedPriceFeedDetails} */
|
|
80
95
|
const priceFeedDetailsSchema = zod_v4.z.looseObject({
|
|
81
96
|
chainId: zod_v4.z.number(),
|
|
@@ -129,6 +144,8 @@ exports.assetQuotaSchema = assetQuotaSchema;
|
|
|
129
144
|
exports.assetSchema = assetSchema;
|
|
130
145
|
exports.assetSummariesSchema = assetSummariesSchema;
|
|
131
146
|
exports.assetSummarySchema = assetSummarySchema;
|
|
147
|
+
exports.marketSlotSchema = marketSlotSchema;
|
|
148
|
+
exports.marketSlotsSchema = marketSlotsSchema;
|
|
132
149
|
exports.priceFeedAssetSchema = priceFeedAssetSchema;
|
|
133
150
|
exports.priceFeedDetailsSchema = priceFeedDetailsSchema;
|
|
134
151
|
exports.priceFeedMarketSchema = priceFeedMarketSchema;
|