@hyperlane-xyz/sdk 3.11.0-beta-0 → 3.20.0-beta1
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/app/MultiProtocolApp.test.js +9 -11
- package/dist/app/MultiProtocolApp.test.js.map +1 -1
- package/dist/consts/crud.d.ts +2 -0
- package/dist/consts/crud.d.ts.map +1 -0
- package/dist/consts/crud.js +2 -0
- package/dist/consts/crud.js.map +1 -0
- package/dist/consts/igp.d.ts +3 -1
- package/dist/consts/igp.d.ts.map +1 -1
- package/dist/consts/igp.js +3 -1
- package/dist/consts/igp.js.map +1 -1
- package/dist/consts/multisigIsm.d.ts.map +1 -1
- package/dist/consts/multisigIsm.js +23 -0
- package/dist/consts/multisigIsm.js.map +1 -1
- package/dist/consts/multisigIsmVerifyCosts.d.ts +210 -0
- package/dist/consts/multisigIsmVerifyCosts.d.ts.map +1 -0
- package/dist/consts/multisigIsmVerifyCosts.js +211 -0
- package/dist/consts/multisigIsmVerifyCosts.js.map +1 -0
- package/dist/consts/testChains.d.ts +17 -0
- package/dist/consts/testChains.d.ts.map +1 -0
- package/dist/consts/testChains.js +105 -0
- package/dist/consts/testChains.js.map +1 -0
- package/dist/core/CoreDeployer.hardhat-test.js +49 -8
- package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
- package/dist/core/HyperlaneCore.d.ts +6 -2
- package/dist/core/HyperlaneCore.d.ts.map +1 -1
- package/dist/core/HyperlaneCore.js +51 -11
- package/dist/core/HyperlaneCore.js.map +1 -1
- package/dist/core/HyperlaneCore.test.js +2 -6
- package/dist/core/HyperlaneCore.test.js.map +1 -1
- package/dist/core/MultiProtocolCore.d.ts +0 -2
- package/dist/core/MultiProtocolCore.d.ts.map +1 -1
- package/dist/core/MultiProtocolCore.js +0 -8
- package/dist/core/MultiProtocolCore.js.map +1 -1
- package/dist/core/MultiProtocolCore.test.js +15 -77
- package/dist/core/MultiProtocolCore.test.js.map +1 -1
- package/dist/core/TestCoreApp.d.ts.map +1 -1
- package/dist/core/TestCoreApp.js +2 -1
- package/dist/core/TestCoreApp.js.map +1 -1
- package/dist/core/TestCoreDeployer.js +2 -2
- package/dist/core/TestCoreDeployer.js.map +1 -1
- package/dist/core/adapters/CosmWasmCoreAdapter.test.js +10 -2
- package/dist/core/adapters/CosmWasmCoreAdapter.test.js.map +1 -1
- package/dist/core/read.d.ts +28 -0
- package/dist/core/read.d.ts.map +1 -0
- package/dist/core/read.js +44 -0
- package/dist/core/read.js.map +1 -0
- package/dist/core/testHyperlaneDeploy.hardhat-test.js +3 -3
- package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +1 -1
- package/dist/crud/AbstractCrudModule.d.ts +21 -0
- package/dist/crud/AbstractCrudModule.d.ts.map +1 -0
- package/dist/crud/AbstractCrudModule.js +10 -0
- package/dist/crud/AbstractCrudModule.js.map +1 -0
- package/dist/crud/EvmHookModule.d.ts +18 -0
- package/dist/crud/EvmHookModule.d.ts.map +1 -0
- package/dist/crud/EvmHookModule.js +28 -0
- package/dist/crud/EvmHookModule.js.map +1 -0
- package/dist/crud/EvmIsmModule.d.ts +18 -0
- package/dist/crud/EvmIsmModule.d.ts.map +1 -0
- package/dist/crud/EvmIsmModule.js +28 -0
- package/dist/crud/EvmIsmModule.js.map +1 -0
- package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
- package/dist/deploy/HyperlaneDeployer.js +4 -4
- package/dist/deploy/HyperlaneDeployer.js.map +1 -1
- package/dist/deploy/schemas.d.ts +70 -0
- package/dist/deploy/schemas.d.ts.map +1 -0
- package/dist/deploy/schemas.js +7 -0
- package/dist/deploy/schemas.js.map +1 -0
- package/dist/deploy/types.d.ts +12 -3
- package/dist/deploy/types.d.ts.map +1 -1
- package/dist/deploy/types.js +1 -0
- package/dist/deploy/types.js.map +1 -1
- package/dist/gas/HyperlaneIgp.d.ts +0 -2
- package/dist/gas/HyperlaneIgp.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgp.js +0 -9
- package/dist/gas/HyperlaneIgp.js.map +1 -1
- package/dist/gas/HyperlaneIgpChecker.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpChecker.js +3 -6
- package/dist/gas/HyperlaneIgpChecker.js.map +1 -1
- package/dist/gas/HyperlaneIgpDeployer.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpDeployer.js +12 -7
- package/dist/gas/HyperlaneIgpDeployer.js.map +1 -1
- package/dist/gas/oracle/configure-gas-oracles.hardhat-test.js +3 -2
- package/dist/gas/oracle/configure-gas-oracles.hardhat-test.js.map +1 -1
- package/dist/gas/oracle/types.d.ts.map +1 -1
- package/dist/gas/oracle/types.js +4 -3
- package/dist/gas/oracle/types.js.map +1 -1
- package/dist/gas/token-prices.d.ts +2 -2
- package/dist/gas/token-prices.d.ts.map +1 -1
- package/dist/gas/token-prices.js +4 -7
- package/dist/gas/token-prices.js.map +1 -1
- package/dist/gas/token-prices.test.js +6 -6
- package/dist/gas/token-prices.test.js.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.js +1 -2
- package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
- package/dist/hook/read.d.ts +35 -0
- package/dist/hook/read.d.ts.map +1 -0
- package/dist/hook/read.js +191 -0
- package/dist/hook/read.js.map +1 -0
- package/dist/hook/read.test.d.ts +2 -0
- package/dist/hook/read.test.d.ts.map +1 -0
- package/dist/hook/read.test.js +147 -0
- package/dist/hook/read.test.js.map +1 -0
- package/dist/hook/types.d.ts +14 -3
- package/dist/hook/types.d.ts.map +1 -1
- package/dist/hook/types.js +14 -0
- package/dist/hook/types.js.map +1 -1
- package/dist/index.d.ts +19 -9
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +15 -6
- package/dist/index.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts +0 -2
- package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +37 -9
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.js +16 -27
- package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
- package/dist/ism/read.d.ts +29 -0
- package/dist/ism/read.d.ts.map +1 -0
- package/dist/ism/read.js +152 -0
- package/dist/ism/read.js.map +1 -0
- package/dist/ism/read.test.d.ts +2 -0
- package/dist/ism/read.test.d.ts.map +1 -0
- package/dist/ism/read.test.js +124 -0
- package/dist/ism/read.test.js.map +1 -0
- package/dist/ism/schemas.d.ts +177 -0
- package/dist/ism/schemas.d.ts.map +1 -0
- package/dist/ism/schemas.js +59 -0
- package/dist/ism/schemas.js.map +1 -0
- package/dist/ism/schemas.test.d.ts +2 -0
- package/dist/ism/schemas.test.d.ts.map +1 -0
- package/dist/ism/schemas.test.js +18 -0
- package/dist/ism/schemas.test.js.map +1 -0
- package/dist/ism/types.d.ts +11 -4
- package/dist/ism/types.d.ts.map +1 -1
- package/dist/ism/types.js +4 -3
- package/dist/ism/types.js.map +1 -1
- package/dist/ism/utils.d.ts.map +1 -1
- package/dist/ism/utils.js +10 -4
- package/dist/ism/utils.js.map +1 -1
- package/dist/metadata/ChainMetadataManager.d.ts +12 -2
- package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
- package/dist/metadata/ChainMetadataManager.js +27 -13
- package/dist/metadata/ChainMetadataManager.js.map +1 -1
- package/dist/metadata/agentConfig.d.ts +464 -246
- package/dist/metadata/agentConfig.d.ts.map +1 -1
- package/dist/metadata/agentConfig.js +4 -8
- package/dist/metadata/agentConfig.js.map +1 -1
- package/dist/metadata/agentConfig.test.js +9 -9
- package/dist/metadata/agentConfig.test.js.map +1 -1
- package/dist/metadata/blockExplorer.d.ts.map +1 -1
- package/dist/metadata/blockExplorer.js +3 -7
- package/dist/metadata/blockExplorer.js.map +1 -1
- package/dist/metadata/blockExplorer.test.d.ts +2 -0
- package/dist/metadata/blockExplorer.test.d.ts.map +1 -0
- package/dist/metadata/blockExplorer.test.js +41 -0
- package/dist/metadata/blockExplorer.test.js.map +1 -0
- package/dist/metadata/chainMetadata.test.js +0 -10
- package/dist/metadata/chainMetadata.test.js.map +1 -1
- package/dist/metadata/chainMetadataTypes.d.ts +335 -1
- package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
- package/dist/metadata/chainMetadataTypes.js +33 -9
- package/dist/metadata/chainMetadataTypes.js.map +1 -1
- package/dist/middleware/account/InterchainAccount.d.ts +0 -2
- package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccount.js +2 -12
- package/dist/middleware/account/InterchainAccount.js.map +1 -1
- package/dist/middleware/account/accounts.hardhat-test.js +3 -3
- package/dist/middleware/account/accounts.hardhat-test.js.map +1 -1
- package/dist/middleware/account/schemas.d.ts +21 -0
- package/dist/middleware/account/schemas.d.ts.map +1 -0
- package/dist/middleware/account/schemas.js +11 -0
- package/dist/middleware/account/schemas.js.map +1 -0
- package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js +5 -6
- package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js.map +1 -1
- package/dist/middleware/query/InterchainQuery.d.ts +0 -2
- package/dist/middleware/query/InterchainQuery.d.ts.map +1 -1
- package/dist/middleware/query/InterchainQuery.js +0 -9
- package/dist/middleware/query/InterchainQuery.js.map +1 -1
- package/dist/middleware/query/queries.hardhat-test.js +5 -6
- package/dist/middleware/query/queries.hardhat-test.js.map +1 -1
- package/dist/providers/MultiProtocolProvider.d.ts +6 -2
- package/dist/providers/MultiProtocolProvider.d.ts.map +1 -1
- package/dist/providers/MultiProtocolProvider.js +15 -2
- package/dist/providers/MultiProtocolProvider.js.map +1 -1
- package/dist/providers/MultiProtocolProvider.test.js +8 -9
- package/dist/providers/MultiProtocolProvider.test.js.map +1 -1
- package/dist/providers/MultiProvider.d.ts +1 -1
- package/dist/providers/MultiProvider.d.ts.map +1 -1
- package/dist/providers/MultiProvider.js +7 -8
- package/dist/providers/MultiProvider.js.map +1 -1
- package/dist/providers/ProviderType.d.ts +26 -2
- package/dist/providers/ProviderType.d.ts.map +1 -1
- package/dist/providers/ProviderType.js +0 -3
- package/dist/providers/ProviderType.js.map +1 -1
- package/dist/providers/SmartProvider/SmartProvider.js +1 -1
- package/dist/providers/SmartProvider/SmartProvider.js.map +1 -1
- package/dist/providers/providerBuilders.d.ts.map +1 -1
- package/dist/providers/providerBuilders.js +0 -2
- package/dist/providers/providerBuilders.js.map +1 -1
- package/dist/router/HyperlaneRouterChecker.js +2 -1
- package/dist/router/HyperlaneRouterChecker.js.map +1 -1
- package/dist/router/MultiProtocolRouterApps.test.js +4 -4
- package/dist/router/MultiProtocolRouterApps.test.js.map +1 -1
- package/dist/router/RouterApps.d.ts +1 -1
- package/dist/router/RouterApps.d.ts.map +1 -1
- package/dist/router/RouterApps.js +11 -5
- package/dist/router/RouterApps.js.map +1 -1
- package/dist/router/schemas.d.ts +71 -0
- package/dist/router/schemas.d.ts.map +1 -0
- package/dist/router/schemas.js +16 -0
- package/dist/router/schemas.js.map +1 -0
- package/dist/router/types.d.ts +5 -12
- package/dist/router/types.d.ts.map +1 -1
- package/dist/router/types.js.map +1 -1
- package/dist/test/MockCoinGecko.d.ts +12 -0
- package/dist/test/MockCoinGecko.d.ts.map +1 -0
- package/dist/test/MockCoinGecko.js +38 -0
- package/dist/test/MockCoinGecko.js.map +1 -0
- package/dist/test/multiProviderStubs.d.ts +9 -0
- package/dist/test/multiProviderStubs.d.ts.map +1 -0
- package/dist/test/multiProviderStubs.js +27 -0
- package/dist/test/multiProviderStubs.js.map +1 -0
- package/dist/test/testUtils.d.ts +0 -10
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +0 -40
- package/dist/test/testUtils.js.map +1 -1
- package/dist/token/Token.test.js +30 -37
- package/dist/token/Token.test.js.map +1 -1
- package/dist/token/TokenAmount.test.js +4 -5
- package/dist/token/TokenAmount.test.js.map +1 -1
- package/dist/token/TokenStandard.d.ts +2 -3
- package/dist/token/TokenStandard.d.ts.map +1 -1
- package/dist/token/TokenStandard.js +3 -8
- package/dist/token/TokenStandard.js.map +1 -1
- package/dist/token/adapters/CosmWasmTokenAdapter.test.d.ts.map +1 -1
- package/dist/token/adapters/CosmWasmTokenAdapter.test.js +10 -13
- package/dist/token/adapters/CosmWasmTokenAdapter.test.js.map +1 -1
- package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/EvmTokenAdapter.js +4 -2
- package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
- package/dist/token/app.d.ts +11 -0
- package/dist/token/app.d.ts.map +1 -0
- package/dist/token/app.js +22 -0
- package/dist/token/app.js.map +1 -0
- package/dist/token/checker.d.ts +10 -0
- package/dist/token/checker.d.ts.map +1 -0
- package/dist/token/checker.js +73 -0
- package/dist/token/checker.js.map +1 -0
- package/dist/token/config.d.ts +9 -4
- package/dist/token/config.d.ts.map +1 -1
- package/dist/token/config.js.map +1 -1
- package/dist/token/contracts.d.ts +9 -0
- package/dist/token/contracts.d.ts.map +1 -1
- package/dist/token/contracts.js +4 -1
- package/dist/token/contracts.js.map +1 -1
- package/dist/token/deploy.d.ts.map +1 -1
- package/dist/token/deploy.hardhat-test.js +48 -2
- package/dist/token/deploy.hardhat-test.js.map +1 -1
- package/dist/token/deploy.js +7 -3
- package/dist/token/deploy.js.map +1 -1
- package/dist/token/read.d.ts +42 -0
- package/dist/token/read.d.ts.map +1 -0
- package/dist/token/read.js +88 -0
- package/dist/token/read.js.map +1 -0
- package/dist/token/schemas.d.ts +375 -0
- package/dist/token/schemas.d.ts.map +1 -0
- package/dist/token/schemas.js +48 -0
- package/dist/token/schemas.js.map +1 -0
- package/dist/token/schemas.test.d.ts +2 -0
- package/dist/token/schemas.test.d.ts.map +1 -0
- package/dist/token/schemas.test.js +85 -0
- package/dist/token/schemas.test.js.map +1 -0
- package/dist/token/types.d.ts +5 -0
- package/dist/token/types.d.ts.map +1 -0
- package/dist/token/types.js +2 -0
- package/dist/token/types.js.map +1 -0
- package/dist/types.d.ts +0 -1
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/MultiGeneric.d.ts +1 -1
- package/dist/utils/MultiGeneric.d.ts.map +1 -1
- package/dist/utils/MultiGeneric.js +2 -3
- package/dist/utils/MultiGeneric.js.map +1 -1
- package/dist/utils/cosmos.d.ts +1180 -0
- package/dist/utils/cosmos.d.ts.map +1 -0
- package/dist/utils/cosmos.js +375 -0
- package/dist/utils/cosmos.js.map +1 -0
- package/dist/utils/fork.d.ts +38 -0
- package/dist/utils/fork.d.ts.map +1 -0
- package/dist/utils/fork.js +89 -0
- package/dist/utils/fork.js.map +1 -0
- package/dist/utils/ism.js +1 -1
- package/dist/utils/ism.js.map +1 -1
- package/dist/utils/wagmi.d.ts +0 -2
- package/dist/utils/wagmi.d.ts.map +1 -1
- package/dist/utils/wagmi.js +2 -5
- package/dist/utils/wagmi.js.map +1 -1
- package/dist/warp/WarpCore.d.ts.map +1 -1
- package/dist/warp/WarpCore.js +9 -5
- package/dist/warp/WarpCore.js.map +1 -1
- package/dist/warp/WarpCore.test.js +34 -35
- package/dist/warp/WarpCore.test.js.map +1 -1
- package/package.json +4 -5
- package/dist/consts/chainMetadata.d.ts +0 -85
- package/dist/consts/chainMetadata.d.ts.map +0 -1
- package/dist/consts/chainMetadata.js +0 -929
- package/dist/consts/chainMetadata.js.map +0 -1
- package/dist/consts/chains.d.ts +0 -54
- package/dist/consts/chains.d.ts.map +0 -1
- package/dist/consts/chains.js +0 -93
- package/dist/consts/chains.js.map +0 -1
- package/dist/consts/environments/index.d.ts +0 -503
- package/dist/consts/environments/index.d.ts.map +0 -1
- package/dist/consts/environments/index.js +0 -7
- package/dist/consts/environments/index.js.map +0 -1
- package/dist/consts/environments/mainnet.json +0 -342
- package/dist/consts/environments/testnet.json +0 -132
- package/dist/consts/multisigIsmVerifyCosts.json +0 -209
- package/dist/metadata/health.d.ts +0 -9
- package/dist/metadata/health.d.ts.map +0 -1
- package/dist/metadata/health.js +0 -112
- package/dist/metadata/health.js.map +0 -1
- package/dist/providers/SmartProvider/SmartProvider.test.d.ts +0 -2
- package/dist/providers/SmartProvider/SmartProvider.test.d.ts.map +0 -1
- package/dist/providers/SmartProvider/SmartProvider.test.js +0 -161
- package/dist/providers/SmartProvider/SmartProvider.test.js.map +0 -1
- package/dist/test/metadata-check.d.ts +0 -2
- package/dist/test/metadata-check.d.ts.map +0 -1
- package/dist/test/metadata-check.js +0 -81
- package/dist/test/metadata-check.js.map +0 -1
package/dist/ism/read.js
ADDED
|
@@ -0,0 +1,152 @@
|
|
|
1
|
+
import { ethers } from 'ethers';
|
|
2
|
+
import { DefaultFallbackRoutingIsm__factory, IInterchainSecurityModule__factory, IMultisigIsm__factory, OPStackIsm__factory, PausableIsm__factory, StaticAggregationIsm__factory, TestIsm__factory, TrustedRelayerIsm__factory, } from '@hyperlane-xyz/core';
|
|
3
|
+
import { assert, concurrentMap, rootLogger, } from '@hyperlane-xyz/utils';
|
|
4
|
+
import { DEFAULT_CONTRACT_READ_CONCURRENCY } from '../consts/crud.js';
|
|
5
|
+
import { IsmType, ModuleType, } from './types.js';
|
|
6
|
+
export class EvmIsmReader {
|
|
7
|
+
multiProvider;
|
|
8
|
+
chain;
|
|
9
|
+
concurrency;
|
|
10
|
+
provider;
|
|
11
|
+
logger = rootLogger.child({ module: 'EvmIsmReader' });
|
|
12
|
+
constructor(multiProvider, chain, concurrency = multiProvider.tryGetRpcConcurrency(chain) ?? DEFAULT_CONTRACT_READ_CONCURRENCY) {
|
|
13
|
+
this.multiProvider = multiProvider;
|
|
14
|
+
this.chain = chain;
|
|
15
|
+
this.concurrency = concurrency;
|
|
16
|
+
this.provider = multiProvider.getProvider(chain);
|
|
17
|
+
}
|
|
18
|
+
async deriveIsmConfig(address) {
|
|
19
|
+
const ism = IInterchainSecurityModule__factory.connect(address, this.provider);
|
|
20
|
+
const moduleType = await ism.moduleType();
|
|
21
|
+
switch (moduleType) {
|
|
22
|
+
case ModuleType.UNUSED:
|
|
23
|
+
throw new Error('UNUSED does not have a corresponding IsmType');
|
|
24
|
+
case ModuleType.ROUTING:
|
|
25
|
+
// IsmType is either ROUTING or FALLBACK_ROUTING, but that's determined inside deriveRoutingConfig
|
|
26
|
+
return this.deriveRoutingConfig(address);
|
|
27
|
+
case ModuleType.AGGREGATION:
|
|
28
|
+
return this.deriveAggregationConfig(address);
|
|
29
|
+
case ModuleType.LEGACY_MULTISIG:
|
|
30
|
+
throw new Error('LEGACY_MULTISIG is deprecated and not supported');
|
|
31
|
+
case ModuleType.MERKLE_ROOT_MULTISIG:
|
|
32
|
+
case ModuleType.MESSAGE_ID_MULTISIG:
|
|
33
|
+
return this.deriveMultisigConfig(address);
|
|
34
|
+
case ModuleType.NULL:
|
|
35
|
+
return this.deriveNullConfig(address);
|
|
36
|
+
case ModuleType.CCIP_READ:
|
|
37
|
+
throw new Error('CCIP_READ does not have a corresponding IsmType');
|
|
38
|
+
default:
|
|
39
|
+
throw new Error('Unknown ModuleType');
|
|
40
|
+
}
|
|
41
|
+
}
|
|
42
|
+
async deriveRoutingConfig(address) {
|
|
43
|
+
const ism = DefaultFallbackRoutingIsm__factory.connect(address, this.provider);
|
|
44
|
+
const owner = await ism.owner();
|
|
45
|
+
assert((await ism.moduleType()) === ModuleType.ROUTING);
|
|
46
|
+
const domains = {};
|
|
47
|
+
const domainIds = await ism.domains();
|
|
48
|
+
await concurrentMap(this.concurrency, domainIds, async (domainId) => {
|
|
49
|
+
const chainName = this.multiProvider.getChainName(domainId.toNumber());
|
|
50
|
+
const module = await ism.module(domainId);
|
|
51
|
+
domains[chainName] = await this.deriveIsmConfig(module);
|
|
52
|
+
});
|
|
53
|
+
// Fallback routing ISM extends from MailboxClient, default routign
|
|
54
|
+
let ismType = IsmType.FALLBACK_ROUTING;
|
|
55
|
+
try {
|
|
56
|
+
await ism.mailbox();
|
|
57
|
+
}
|
|
58
|
+
catch (error) {
|
|
59
|
+
ismType = IsmType.ROUTING;
|
|
60
|
+
this.logger.debug('Error accessing mailbox property, implying this is not a fallback routing ISM.', address);
|
|
61
|
+
}
|
|
62
|
+
return {
|
|
63
|
+
owner,
|
|
64
|
+
address,
|
|
65
|
+
type: ismType,
|
|
66
|
+
domains,
|
|
67
|
+
};
|
|
68
|
+
}
|
|
69
|
+
async deriveAggregationConfig(address) {
|
|
70
|
+
const ism = StaticAggregationIsm__factory.connect(address, this.provider);
|
|
71
|
+
assert((await ism.moduleType()) === ModuleType.AGGREGATION);
|
|
72
|
+
const [modules, threshold] = await ism.modulesAndThreshold(ethers.constants.AddressZero);
|
|
73
|
+
const ismConfigs = await concurrentMap(this.concurrency, modules, async (module) => this.deriveIsmConfig(module));
|
|
74
|
+
return {
|
|
75
|
+
address,
|
|
76
|
+
type: IsmType.AGGREGATION,
|
|
77
|
+
modules: ismConfigs,
|
|
78
|
+
threshold,
|
|
79
|
+
};
|
|
80
|
+
}
|
|
81
|
+
async deriveMultisigConfig(address) {
|
|
82
|
+
const ism = IMultisigIsm__factory.connect(address, this.provider);
|
|
83
|
+
const moduleType = await ism.moduleType();
|
|
84
|
+
assert(moduleType === ModuleType.MERKLE_ROOT_MULTISIG ||
|
|
85
|
+
moduleType === ModuleType.MESSAGE_ID_MULTISIG);
|
|
86
|
+
const ismType = moduleType === ModuleType.MERKLE_ROOT_MULTISIG
|
|
87
|
+
? IsmType.MERKLE_ROOT_MULTISIG
|
|
88
|
+
: IsmType.MESSAGE_ID_MULTISIG;
|
|
89
|
+
const [validators, threshold] = await ism.validatorsAndThreshold(ethers.constants.AddressZero);
|
|
90
|
+
return {
|
|
91
|
+
address,
|
|
92
|
+
type: ismType,
|
|
93
|
+
validators,
|
|
94
|
+
threshold,
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
async deriveNullConfig(address) {
|
|
98
|
+
// if it has trustedRelayer() property --> TrustedRelayer ISM
|
|
99
|
+
const trustedRelayerIsm = TrustedRelayerIsm__factory.connect(address, this.provider);
|
|
100
|
+
try {
|
|
101
|
+
const relayer = await trustedRelayerIsm.trustedRelayer();
|
|
102
|
+
assert((await trustedRelayerIsm.moduleType()) === ModuleType.NULL);
|
|
103
|
+
return {
|
|
104
|
+
address,
|
|
105
|
+
relayer,
|
|
106
|
+
type: IsmType.TRUSTED_RELAYER,
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
catch (error) {
|
|
110
|
+
this.logger.debug('Error accessing "trustedRelayer" property, implying this is not a Trusted Relayer ISM.', address);
|
|
111
|
+
}
|
|
112
|
+
// if it has paused() property --> PAUSABLE
|
|
113
|
+
const pausableIsm = PausableIsm__factory.connect(address, this.provider);
|
|
114
|
+
try {
|
|
115
|
+
const paused = await pausableIsm.paused();
|
|
116
|
+
const owner = await pausableIsm.owner();
|
|
117
|
+
assert((await pausableIsm.moduleType()) === ModuleType.NULL);
|
|
118
|
+
return {
|
|
119
|
+
address,
|
|
120
|
+
owner,
|
|
121
|
+
type: IsmType.PAUSABLE,
|
|
122
|
+
paused,
|
|
123
|
+
};
|
|
124
|
+
}
|
|
125
|
+
catch (error) {
|
|
126
|
+
this.logger.debug('Error accessing "paused" property, implying this is not a Pausable ISM.', address);
|
|
127
|
+
}
|
|
128
|
+
// if it has VERIFIED_MASK_INDEX, it's AbstractMessageIdAuthorizedIsm which means OPStackIsm
|
|
129
|
+
const opStackIsm = OPStackIsm__factory.connect(address, this.provider);
|
|
130
|
+
try {
|
|
131
|
+
assert((await opStackIsm.moduleType()) === ModuleType.NULL);
|
|
132
|
+
await opStackIsm.VERIFIED_MASK_INDEX();
|
|
133
|
+
return {
|
|
134
|
+
address,
|
|
135
|
+
type: IsmType.OP_STACK,
|
|
136
|
+
origin: address,
|
|
137
|
+
nativeBridge: '', // no way to extract native bridge from the ism
|
|
138
|
+
};
|
|
139
|
+
}
|
|
140
|
+
catch (error) {
|
|
141
|
+
this.logger.debug('Error accessing "VERIFIED_MASK_INDEX" property, implying this is not an OP Stack ISM.', address);
|
|
142
|
+
}
|
|
143
|
+
// no specific properties, must be Test ISM
|
|
144
|
+
const testIsm = TestIsm__factory.connect(address, this.provider);
|
|
145
|
+
assert((await testIsm.moduleType()) === ModuleType.NULL);
|
|
146
|
+
return {
|
|
147
|
+
address,
|
|
148
|
+
type: IsmType.TEST_ISM,
|
|
149
|
+
};
|
|
150
|
+
}
|
|
151
|
+
}
|
|
152
|
+
//# sourceMappingURL=read.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.js","sourceRoot":"","sources":["../../src/ism/read.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.test.d.ts","sourceRoot":"","sources":["../../src/ism/read.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,124 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { ethers } from 'ethers';
|
|
3
|
+
import sinon from 'sinon';
|
|
4
|
+
import { IInterchainSecurityModule__factory, IMultisigIsm__factory, OPStackIsm__factory, PausableIsm__factory, TestIsm__factory, TrustedRelayerIsm__factory, } from '@hyperlane-xyz/core';
|
|
5
|
+
import { TestChainName } from '../consts/testChains.js';
|
|
6
|
+
import { MultiProvider } from '../providers/MultiProvider.js';
|
|
7
|
+
import { EvmIsmReader } from './read.js';
|
|
8
|
+
import { IsmType, ModuleType, } from './types.js';
|
|
9
|
+
describe('EvmIsmReader', () => {
|
|
10
|
+
let evmIsmReader;
|
|
11
|
+
let multiProvider;
|
|
12
|
+
let sandbox;
|
|
13
|
+
const generateRandomAddress = () => ethers.Wallet.createRandom().address;
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
sandbox = sinon.createSandbox();
|
|
16
|
+
multiProvider = MultiProvider.createTestMultiProvider();
|
|
17
|
+
evmIsmReader = new EvmIsmReader(multiProvider, TestChainName.test1);
|
|
18
|
+
});
|
|
19
|
+
afterEach(() => {
|
|
20
|
+
sandbox.restore();
|
|
21
|
+
});
|
|
22
|
+
it('should derive multisig config correctly', async () => {
|
|
23
|
+
const mockAddress = generateRandomAddress();
|
|
24
|
+
const mockValidators = [generateRandomAddress(), generateRandomAddress()];
|
|
25
|
+
const mockThreshold = 2;
|
|
26
|
+
// Mocking the connect method + returned what we need from contract object
|
|
27
|
+
const mockContract = {
|
|
28
|
+
moduleType: sandbox.stub().resolves(ModuleType.MESSAGE_ID_MULTISIG),
|
|
29
|
+
validatorsAndThreshold: sandbox
|
|
30
|
+
.stub()
|
|
31
|
+
.resolves([mockValidators, mockThreshold]),
|
|
32
|
+
};
|
|
33
|
+
sandbox
|
|
34
|
+
.stub(IMultisigIsm__factory, 'connect')
|
|
35
|
+
.returns(mockContract);
|
|
36
|
+
sandbox
|
|
37
|
+
.stub(IInterchainSecurityModule__factory, 'connect')
|
|
38
|
+
.returns(mockContract);
|
|
39
|
+
const expectedConfig = {
|
|
40
|
+
address: mockAddress,
|
|
41
|
+
type: IsmType.MESSAGE_ID_MULTISIG,
|
|
42
|
+
validators: mockValidators,
|
|
43
|
+
threshold: mockThreshold,
|
|
44
|
+
};
|
|
45
|
+
// top-level method infers ism type
|
|
46
|
+
const ismConfig = await evmIsmReader.deriveIsmConfig(mockAddress);
|
|
47
|
+
expect(ismConfig).to.deep.equal(expectedConfig);
|
|
48
|
+
// should get same result if we call the specific method for the ism type
|
|
49
|
+
const config = await evmIsmReader.deriveMultisigConfig(mockAddress);
|
|
50
|
+
expect(config).to.deep.equal(ismConfig);
|
|
51
|
+
});
|
|
52
|
+
it('should derive pausable config correctly', async () => {
|
|
53
|
+
const mockAddress = generateRandomAddress();
|
|
54
|
+
const mockOwner = generateRandomAddress();
|
|
55
|
+
const mockPaused = true;
|
|
56
|
+
// Mocking the connect method + returned what we need from contract object
|
|
57
|
+
const mockContract = {
|
|
58
|
+
moduleType: sandbox.stub().resolves(ModuleType.NULL),
|
|
59
|
+
owner: sandbox.stub().resolves(mockOwner),
|
|
60
|
+
paused: sandbox.stub().resolves(mockPaused),
|
|
61
|
+
};
|
|
62
|
+
sandbox
|
|
63
|
+
.stub(PausableIsm__factory, 'connect')
|
|
64
|
+
.returns(mockContract);
|
|
65
|
+
sandbox
|
|
66
|
+
.stub(TrustedRelayerIsm__factory, 'connect')
|
|
67
|
+
.returns(mockContract);
|
|
68
|
+
sandbox
|
|
69
|
+
.stub(IInterchainSecurityModule__factory, 'connect')
|
|
70
|
+
.returns(mockContract);
|
|
71
|
+
const expectedConfig = {
|
|
72
|
+
address: mockAddress,
|
|
73
|
+
owner: mockOwner,
|
|
74
|
+
type: IsmType.PAUSABLE,
|
|
75
|
+
paused: mockPaused,
|
|
76
|
+
};
|
|
77
|
+
// top-level method infers ism type
|
|
78
|
+
const ismConfig = await evmIsmReader.deriveIsmConfig(mockAddress);
|
|
79
|
+
expect(ismConfig).to.deep.equal(expectedConfig);
|
|
80
|
+
// should get same result if we call the specific method for the ism type
|
|
81
|
+
const config = await evmIsmReader.deriveNullConfig(mockAddress);
|
|
82
|
+
expect(config).to.deep.equal(ismConfig);
|
|
83
|
+
});
|
|
84
|
+
it('should derive test ISM config correctly', async () => {
|
|
85
|
+
const mockAddress = generateRandomAddress();
|
|
86
|
+
// Mocking the connect method + returned what we need from contract object
|
|
87
|
+
const mockContract = {
|
|
88
|
+
moduleType: sandbox.stub().resolves(ModuleType.NULL),
|
|
89
|
+
};
|
|
90
|
+
sandbox
|
|
91
|
+
.stub(TestIsm__factory, 'connect')
|
|
92
|
+
.returns(mockContract);
|
|
93
|
+
sandbox
|
|
94
|
+
.stub(OPStackIsm__factory, 'connect')
|
|
95
|
+
.returns(mockContract);
|
|
96
|
+
sandbox
|
|
97
|
+
.stub(PausableIsm__factory, 'connect')
|
|
98
|
+
.returns(mockContract);
|
|
99
|
+
sandbox
|
|
100
|
+
.stub(TrustedRelayerIsm__factory, 'connect')
|
|
101
|
+
.returns(mockContract);
|
|
102
|
+
sandbox
|
|
103
|
+
.stub(IInterchainSecurityModule__factory, 'connect')
|
|
104
|
+
.returns(mockContract);
|
|
105
|
+
const expectedConfig = {
|
|
106
|
+
address: mockAddress,
|
|
107
|
+
type: IsmType.TEST_ISM,
|
|
108
|
+
};
|
|
109
|
+
// top-level method infers ism type
|
|
110
|
+
const ismConfig = await evmIsmReader.deriveIsmConfig(mockAddress);
|
|
111
|
+
expect(ismConfig).to.deep.equal(expectedConfig);
|
|
112
|
+
// should get same result if we call the specific method for the ism type
|
|
113
|
+
const config = await evmIsmReader.deriveNullConfig(mockAddress);
|
|
114
|
+
expect(config).to.deep.equal(ismConfig);
|
|
115
|
+
});
|
|
116
|
+
/*
|
|
117
|
+
Testing for more nested ism types can be done manually by reading from existing contracts onchain.
|
|
118
|
+
Examples of nested ism types include:
|
|
119
|
+
- Aggregation
|
|
120
|
+
- Routing
|
|
121
|
+
- Fallback Domain Routing
|
|
122
|
+
*/
|
|
123
|
+
});
|
|
124
|
+
//# sourceMappingURL=read.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"read.test.js","sourceRoot":"","sources":["../../src/ism/read.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,177 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { AggregationIsmConfig, IsmConfig, IsmType } from './types.js';
|
|
3
|
+
export declare const TestIsmConfigSchema: z.ZodObject<{
|
|
4
|
+
type: z.ZodLiteral<IsmType.TEST_ISM>;
|
|
5
|
+
}, "strip", z.ZodTypeAny, {
|
|
6
|
+
type: IsmType.TEST_ISM;
|
|
7
|
+
}, {
|
|
8
|
+
type: IsmType.TEST_ISM;
|
|
9
|
+
}>;
|
|
10
|
+
export declare const MultisigConfigSchema: z.ZodObject<{
|
|
11
|
+
validators: z.ZodArray<z.ZodString, "many">;
|
|
12
|
+
threshold: z.ZodNumber;
|
|
13
|
+
}, "strip", z.ZodTypeAny, {
|
|
14
|
+
validators: string[];
|
|
15
|
+
threshold: number;
|
|
16
|
+
}, {
|
|
17
|
+
validators: string[];
|
|
18
|
+
threshold: number;
|
|
19
|
+
}>;
|
|
20
|
+
export declare const TrustedRelayerIsmConfigSchema: z.ZodObject<{
|
|
21
|
+
type: z.ZodLiteral<IsmType.TRUSTED_RELAYER>;
|
|
22
|
+
relayer: z.ZodString;
|
|
23
|
+
}, "strip", z.ZodTypeAny, {
|
|
24
|
+
type: IsmType.TRUSTED_RELAYER;
|
|
25
|
+
relayer: string;
|
|
26
|
+
}, {
|
|
27
|
+
type: IsmType.TRUSTED_RELAYER;
|
|
28
|
+
relayer: string;
|
|
29
|
+
}>;
|
|
30
|
+
export declare const OpStackIsmConfigSchema: z.ZodObject<{
|
|
31
|
+
type: z.ZodLiteral<IsmType.OP_STACK>;
|
|
32
|
+
origin: z.ZodString;
|
|
33
|
+
nativeBridge: z.ZodString;
|
|
34
|
+
}, "strip", z.ZodTypeAny, {
|
|
35
|
+
type: IsmType.OP_STACK;
|
|
36
|
+
origin: string;
|
|
37
|
+
nativeBridge: string;
|
|
38
|
+
}, {
|
|
39
|
+
type: IsmType.OP_STACK;
|
|
40
|
+
origin: string;
|
|
41
|
+
nativeBridge: string;
|
|
42
|
+
}>;
|
|
43
|
+
export declare const PausableIsmConfigSchema: z.ZodIntersection<z.ZodObject<{
|
|
44
|
+
owner: z.ZodUnion<[z.ZodString, z.ZodObject<{
|
|
45
|
+
origin: z.ZodString;
|
|
46
|
+
owner: z.ZodString;
|
|
47
|
+
localRouter: z.ZodOptional<z.ZodString>;
|
|
48
|
+
routerOverride: z.ZodOptional<z.ZodString>;
|
|
49
|
+
ismOverride: z.ZodOptional<z.ZodString>;
|
|
50
|
+
}, "strip", z.ZodTypeAny, {
|
|
51
|
+
owner: string;
|
|
52
|
+
origin: string;
|
|
53
|
+
localRouter?: string | undefined;
|
|
54
|
+
routerOverride?: string | undefined;
|
|
55
|
+
ismOverride?: string | undefined;
|
|
56
|
+
}, {
|
|
57
|
+
owner: string;
|
|
58
|
+
origin: string;
|
|
59
|
+
localRouter?: string | undefined;
|
|
60
|
+
routerOverride?: string | undefined;
|
|
61
|
+
ismOverride?: string | undefined;
|
|
62
|
+
}>]>;
|
|
63
|
+
}, "strip", z.ZodTypeAny, {
|
|
64
|
+
owner: (string | {
|
|
65
|
+
owner: string;
|
|
66
|
+
origin: string;
|
|
67
|
+
localRouter?: string | undefined;
|
|
68
|
+
routerOverride?: string | undefined;
|
|
69
|
+
ismOverride?: string | undefined;
|
|
70
|
+
}) & (string | {
|
|
71
|
+
owner: string;
|
|
72
|
+
origin: string;
|
|
73
|
+
localRouter?: string | undefined;
|
|
74
|
+
routerOverride?: string | undefined;
|
|
75
|
+
ismOverride?: string | undefined;
|
|
76
|
+
} | undefined);
|
|
77
|
+
}, {
|
|
78
|
+
owner: (string | {
|
|
79
|
+
owner: string;
|
|
80
|
+
origin: string;
|
|
81
|
+
localRouter?: string | undefined;
|
|
82
|
+
routerOverride?: string | undefined;
|
|
83
|
+
ismOverride?: string | undefined;
|
|
84
|
+
}) & (string | {
|
|
85
|
+
owner: string;
|
|
86
|
+
origin: string;
|
|
87
|
+
localRouter?: string | undefined;
|
|
88
|
+
routerOverride?: string | undefined;
|
|
89
|
+
ismOverride?: string | undefined;
|
|
90
|
+
} | undefined);
|
|
91
|
+
}>, z.ZodObject<{
|
|
92
|
+
type: z.ZodLiteral<IsmType.PAUSABLE>;
|
|
93
|
+
paused: z.ZodOptional<z.ZodBoolean>;
|
|
94
|
+
}, "strip", z.ZodTypeAny, {
|
|
95
|
+
type: IsmType.PAUSABLE;
|
|
96
|
+
paused?: boolean | undefined;
|
|
97
|
+
}, {
|
|
98
|
+
type: IsmType.PAUSABLE;
|
|
99
|
+
paused?: boolean | undefined;
|
|
100
|
+
}>>;
|
|
101
|
+
export declare const MultisigIsmConfigSchema: z.ZodIntersection<z.ZodObject<{
|
|
102
|
+
validators: z.ZodArray<z.ZodString, "many">;
|
|
103
|
+
threshold: z.ZodNumber;
|
|
104
|
+
}, "strip", z.ZodTypeAny, {
|
|
105
|
+
validators: string[];
|
|
106
|
+
threshold: number;
|
|
107
|
+
}, {
|
|
108
|
+
validators: string[];
|
|
109
|
+
threshold: number;
|
|
110
|
+
}>, z.ZodObject<{
|
|
111
|
+
type: z.ZodUnion<[z.ZodLiteral<IsmType.MERKLE_ROOT_MULTISIG>, z.ZodLiteral<IsmType.MESSAGE_ID_MULTISIG>]>;
|
|
112
|
+
}, "strip", z.ZodTypeAny, {
|
|
113
|
+
type: IsmType.MERKLE_ROOT_MULTISIG | IsmType.MESSAGE_ID_MULTISIG;
|
|
114
|
+
}, {
|
|
115
|
+
type: IsmType.MERKLE_ROOT_MULTISIG | IsmType.MESSAGE_ID_MULTISIG;
|
|
116
|
+
}>>;
|
|
117
|
+
export declare const RoutingIsmConfigSchema: z.ZodIntersection<z.ZodObject<{
|
|
118
|
+
owner: z.ZodUnion<[z.ZodString, z.ZodObject<{
|
|
119
|
+
origin: z.ZodString;
|
|
120
|
+
owner: z.ZodString;
|
|
121
|
+
localRouter: z.ZodOptional<z.ZodString>;
|
|
122
|
+
routerOverride: z.ZodOptional<z.ZodString>;
|
|
123
|
+
ismOverride: z.ZodOptional<z.ZodString>;
|
|
124
|
+
}, "strip", z.ZodTypeAny, {
|
|
125
|
+
owner: string;
|
|
126
|
+
origin: string;
|
|
127
|
+
localRouter?: string | undefined;
|
|
128
|
+
routerOverride?: string | undefined;
|
|
129
|
+
ismOverride?: string | undefined;
|
|
130
|
+
}, {
|
|
131
|
+
owner: string;
|
|
132
|
+
origin: string;
|
|
133
|
+
localRouter?: string | undefined;
|
|
134
|
+
routerOverride?: string | undefined;
|
|
135
|
+
ismOverride?: string | undefined;
|
|
136
|
+
}>]>;
|
|
137
|
+
}, "strip", z.ZodTypeAny, {
|
|
138
|
+
owner: (string | {
|
|
139
|
+
owner: string;
|
|
140
|
+
origin: string;
|
|
141
|
+
localRouter?: string | undefined;
|
|
142
|
+
routerOverride?: string | undefined;
|
|
143
|
+
ismOverride?: string | undefined;
|
|
144
|
+
}) & (string | {
|
|
145
|
+
owner: string;
|
|
146
|
+
origin: string;
|
|
147
|
+
localRouter?: string | undefined;
|
|
148
|
+
routerOverride?: string | undefined;
|
|
149
|
+
ismOverride?: string | undefined;
|
|
150
|
+
} | undefined);
|
|
151
|
+
}, {
|
|
152
|
+
owner: (string | {
|
|
153
|
+
owner: string;
|
|
154
|
+
origin: string;
|
|
155
|
+
localRouter?: string | undefined;
|
|
156
|
+
routerOverride?: string | undefined;
|
|
157
|
+
ismOverride?: string | undefined;
|
|
158
|
+
}) & (string | {
|
|
159
|
+
owner: string;
|
|
160
|
+
origin: string;
|
|
161
|
+
localRouter?: string | undefined;
|
|
162
|
+
routerOverride?: string | undefined;
|
|
163
|
+
ismOverride?: string | undefined;
|
|
164
|
+
} | undefined);
|
|
165
|
+
}>, z.ZodObject<{
|
|
166
|
+
type: z.ZodUnion<[z.ZodLiteral<IsmType.ROUTING>, z.ZodLiteral<IsmType.FALLBACK_ROUTING>]>;
|
|
167
|
+
domains: z.ZodRecord<z.ZodString, z.ZodNativeEnum<typeof IsmType>>;
|
|
168
|
+
}, "strip", z.ZodTypeAny, {
|
|
169
|
+
type: IsmType.ROUTING | IsmType.FALLBACK_ROUTING;
|
|
170
|
+
domains: Record<string, IsmType>;
|
|
171
|
+
}, {
|
|
172
|
+
type: IsmType.ROUTING | IsmType.FALLBACK_ROUTING;
|
|
173
|
+
domains: Record<string, IsmType>;
|
|
174
|
+
}>>;
|
|
175
|
+
export declare const AggregationIsmConfigSchema: z.ZodSchema<AggregationIsmConfig>;
|
|
176
|
+
export declare const IsmConfigSchema: z.ZodSchema<IsmConfig>;
|
|
177
|
+
//# sourceMappingURL=schemas.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.d.ts","sourceRoot":"","sources":["../../src/ism/schemas.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAKxB,OAAO,EAAE,oBAAoB,EAAE,SAAS,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAEtE,eAAO,MAAM,mBAAmB;;;;;;EAE9B,CAAC;AAEH,eAAO,MAAM,oBAAoB;;;;;;;;;EAG/B,CAAC;AAEH,eAAO,MAAM,6BAA6B;;;;;;;;;EAGxC,CAAC;AAEH,eAAO,MAAM,sBAAsB;;;;;;;;;;;;EAIjC,CAAC;AAEH,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAKnC,CAAC;AAEF,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;GAOnC,CAAC;AAEF,eAAO,MAAM,sBAAsB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAQlC,CAAC;AAEF,eAAO,MAAM,0BAA0B,EAAE,CAAC,CAAC,SAAS,CAAC,oBAAoB,CAatE,CAAC;AAEJ,eAAO,MAAM,eAAe,EAAE,CAAC,CAAC,SAAS,CAAC,SAAS,CAWlD,CAAC"}
|
|
@@ -0,0 +1,59 @@
|
|
|
1
|
+
import { z } from 'zod';
|
|
2
|
+
import { OwnableConfigSchema } from '../deploy/schemas.js';
|
|
3
|
+
import { ZHash } from '../index.js';
|
|
4
|
+
import { IsmType } from './types.js';
|
|
5
|
+
export const TestIsmConfigSchema = z.object({
|
|
6
|
+
type: z.literal(IsmType.TEST_ISM),
|
|
7
|
+
});
|
|
8
|
+
export const MultisigConfigSchema = z.object({
|
|
9
|
+
validators: z.array(ZHash),
|
|
10
|
+
threshold: z.number(),
|
|
11
|
+
});
|
|
12
|
+
export const TrustedRelayerIsmConfigSchema = z.object({
|
|
13
|
+
type: z.literal(IsmType.TRUSTED_RELAYER),
|
|
14
|
+
relayer: z.string(),
|
|
15
|
+
});
|
|
16
|
+
export const OpStackIsmConfigSchema = z.object({
|
|
17
|
+
type: z.literal(IsmType.OP_STACK),
|
|
18
|
+
origin: z.string(),
|
|
19
|
+
nativeBridge: z.string(),
|
|
20
|
+
});
|
|
21
|
+
export const PausableIsmConfigSchema = OwnableConfigSchema.and(z.object({
|
|
22
|
+
type: z.literal(IsmType.PAUSABLE),
|
|
23
|
+
paused: z.boolean().optional(),
|
|
24
|
+
}));
|
|
25
|
+
export const MultisigIsmConfigSchema = MultisigConfigSchema.and(z.object({
|
|
26
|
+
type: z.union([
|
|
27
|
+
z.literal(IsmType.MERKLE_ROOT_MULTISIG),
|
|
28
|
+
z.literal(IsmType.MESSAGE_ID_MULTISIG),
|
|
29
|
+
]),
|
|
30
|
+
}));
|
|
31
|
+
export const RoutingIsmConfigSchema = OwnableConfigSchema.and(z.object({
|
|
32
|
+
type: z.union([
|
|
33
|
+
z.literal(IsmType.ROUTING),
|
|
34
|
+
z.literal(IsmType.FALLBACK_ROUTING),
|
|
35
|
+
]),
|
|
36
|
+
domains: z.record(z.string(), z.nativeEnum(IsmType)),
|
|
37
|
+
}));
|
|
38
|
+
export const AggregationIsmConfigSchema = z.lazy(() => z
|
|
39
|
+
.object({
|
|
40
|
+
type: z.literal(IsmType.AGGREGATION),
|
|
41
|
+
modules: z.array(IsmConfigSchema),
|
|
42
|
+
threshold: z.number(),
|
|
43
|
+
})
|
|
44
|
+
.refine((data) => {
|
|
45
|
+
if (data.threshold > data.modules.length)
|
|
46
|
+
return false;
|
|
47
|
+
return true;
|
|
48
|
+
}));
|
|
49
|
+
export const IsmConfigSchema = z.lazy(() => z.union([
|
|
50
|
+
z.string(),
|
|
51
|
+
TestIsmConfigSchema,
|
|
52
|
+
OpStackIsmConfigSchema,
|
|
53
|
+
PausableIsmConfigSchema,
|
|
54
|
+
TrustedRelayerIsmConfigSchema,
|
|
55
|
+
MultisigIsmConfigSchema,
|
|
56
|
+
RoutingIsmConfigSchema,
|
|
57
|
+
AggregationIsmConfigSchema,
|
|
58
|
+
]));
|
|
59
|
+
//# sourceMappingURL=schemas.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.js","sourceRoot":"","sources":["../../src/ism/schemas.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.test.d.ts","sourceRoot":"","sources":["../../src/ism/schemas.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { ethers } from 'ethers';
|
|
3
|
+
import { AggregationIsmConfigSchema } from '@hyperlane-xyz/sdk';
|
|
4
|
+
import { IsmType } from './types.js';
|
|
5
|
+
const SOME_ADDRESS = ethers.Wallet.createRandom().address;
|
|
6
|
+
describe('AggregationIsmConfigSchema refine', () => {
|
|
7
|
+
it('should require threshold to be below modules length', () => {
|
|
8
|
+
const IsmConfig = {
|
|
9
|
+
type: IsmType.AGGREGATION,
|
|
10
|
+
modules: [SOME_ADDRESS],
|
|
11
|
+
threshold: 100,
|
|
12
|
+
};
|
|
13
|
+
expect(AggregationIsmConfigSchema.safeParse(IsmConfig).success).to.be.false;
|
|
14
|
+
IsmConfig.threshold = 0;
|
|
15
|
+
expect(AggregationIsmConfigSchema.safeParse(IsmConfig).success).to.be.true;
|
|
16
|
+
});
|
|
17
|
+
});
|
|
18
|
+
//# sourceMappingURL=schemas.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"schemas.test.js","sourceRoot":"","sources":["../../src/ism/schemas.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAC9B,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAEhE,OAAO,EAAE,OAAO,EAAE,MAAM,YAAY,CAAC;AAErC,MAAM,YAAY,GAAG,MAAM,CAAC,MAAM,CAAC,YAAY,EAAE,CAAC,OAAO,CAAC;AAC1D,QAAQ,CAAC,mCAAmC,EAAE,GAAG,EAAE;IACjD,EAAE,CAAC,qDAAqD,EAAE,GAAG,EAAE;QAC7D,MAAM,SAAS,GAAG;YAChB,IAAI,EAAE,OAAO,CAAC,WAAW;YACzB,OAAO,EAAE,CAAC,YAAY,CAAC;YACvB,SAAS,EAAE,GAAG;SACf,CAAC;QACF,MAAM,CAAC,0BAA0B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,KAAK,CAAC;QAE5E,SAAS,CAAC,SAAS,GAAG,CAAC,CAAC;QACxB,MAAM,CAAC,0BAA0B,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,OAAO,CAAC,CAAC,EAAE,CAAC,EAAE,CAAC,IAAI,CAAC;IAC7E,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
package/dist/ism/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import { IAggregationIsm, IMultisigIsm, IRoutingIsm, OPStackIsm, PausableIsm, TestIsm } from '@hyperlane-xyz/core';
|
|
1
|
+
import { IAggregationIsm, IMultisigIsm, IRoutingIsm, OPStackIsm, PausableIsm, TestIsm, TrustedRelayerIsm } from '@hyperlane-xyz/core';
|
|
2
2
|
import type { Address, Domain, ValueOf } from '@hyperlane-xyz/utils';
|
|
3
3
|
import { OwnableConfig } from '../deploy/types.js';
|
|
4
4
|
import { ChainMap } from '../types.js';
|
|
@@ -9,7 +9,8 @@ export declare enum ModuleType {
|
|
|
9
9
|
LEGACY_MULTISIG = 3,// DEPRECATED
|
|
10
10
|
MERKLE_ROOT_MULTISIG = 4,
|
|
11
11
|
MESSAGE_ID_MULTISIG = 5,
|
|
12
|
-
NULL = 6
|
|
12
|
+
NULL = 6,
|
|
13
|
+
CCIP_READ = 7
|
|
13
14
|
}
|
|
14
15
|
export declare enum IsmType {
|
|
15
16
|
OP_STACK = "opStackIsm",
|
|
@@ -19,7 +20,8 @@ export declare enum IsmType {
|
|
|
19
20
|
MERKLE_ROOT_MULTISIG = "merkleRootMultisigIsm",
|
|
20
21
|
MESSAGE_ID_MULTISIG = "messageIdMultisigIsm",
|
|
21
22
|
TEST_ISM = "testIsm",
|
|
22
|
-
PAUSABLE = "pausableIsm"
|
|
23
|
+
PAUSABLE = "pausableIsm",
|
|
24
|
+
TRUSTED_RELAYER = "trustedRelayerIsm"
|
|
23
25
|
}
|
|
24
26
|
export declare function ismTypeToModuleType(ismType: IsmType): ModuleType;
|
|
25
27
|
export type MultisigConfig = {
|
|
@@ -50,7 +52,11 @@ export type OpStackIsmConfig = {
|
|
|
50
52
|
origin: Address;
|
|
51
53
|
nativeBridge: Address;
|
|
52
54
|
};
|
|
53
|
-
export type
|
|
55
|
+
export type TrustedRelayerIsmConfig = {
|
|
56
|
+
type: IsmType.TRUSTED_RELAYER;
|
|
57
|
+
relayer: Address;
|
|
58
|
+
};
|
|
59
|
+
export type IsmConfig = Address | RoutingIsmConfig | MultisigIsmConfig | AggregationIsmConfig | OpStackIsmConfig | TestIsmConfig | PausableIsmConfig | TrustedRelayerIsmConfig;
|
|
54
60
|
export type DeployedIsmType = {
|
|
55
61
|
[IsmType.ROUTING]: IRoutingIsm;
|
|
56
62
|
[IsmType.FALLBACK_ROUTING]: IRoutingIsm;
|
|
@@ -60,6 +66,7 @@ export type DeployedIsmType = {
|
|
|
60
66
|
[IsmType.OP_STACK]: OPStackIsm;
|
|
61
67
|
[IsmType.TEST_ISM]: TestIsm;
|
|
62
68
|
[IsmType.PAUSABLE]: PausableIsm;
|
|
69
|
+
[IsmType.TRUSTED_RELAYER]: TrustedRelayerIsm;
|
|
63
70
|
};
|
|
64
71
|
export type DeployedIsm = ValueOf<DeployedIsmType>;
|
|
65
72
|
export type RoutingIsmDelta = {
|
package/dist/ism/types.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ism/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,eAAe,EACf,YAAY,EACZ,WAAW,EACX,UAAU,EACV,WAAW,EACX,OAAO,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/ism/types.ts"],"names":[],"mappings":"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"}
|