@hyperlane-xyz/cli 7.3.0 → 8.0.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.
- package/dist/cli.js +7 -14
- package/dist/cli.js.map +1 -1
- package/dist/src/avs/check.d.ts.map +1 -1
- package/dist/src/avs/check.js +5 -7
- package/dist/src/avs/check.js.map +1 -1
- package/dist/src/avs/stakeRegistry.js +1 -1
- package/dist/src/avs/stakeRegistry.js.map +1 -1
- package/dist/src/commands/config.d.ts.map +1 -1
- package/dist/src/commands/config.js +14 -0
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/core.d.ts.map +1 -1
- package/dist/src/commands/core.js +2 -3
- package/dist/src/commands/core.js.map +1 -1
- package/dist/src/commands/options.d.ts +1 -0
- package/dist/src/commands/options.d.ts.map +1 -1
- package/dist/src/commands/options.js +3 -2
- package/dist/src/commands/options.js.map +1 -1
- package/dist/src/commands/send.d.ts +7 -1
- package/dist/src/commands/send.d.ts.map +1 -1
- package/dist/src/commands/send.js +16 -6
- package/dist/src/commands/send.js.map +1 -1
- package/dist/src/commands/signCommands.d.ts +13 -0
- package/dist/src/commands/signCommands.d.ts.map +1 -1
- package/dist/src/commands/signCommands.js +27 -2
- package/dist/src/commands/signCommands.js.map +1 -1
- package/dist/src/commands/status.d.ts.map +1 -1
- package/dist/src/commands/status.js +1 -2
- package/dist/src/commands/status.js.map +1 -1
- package/dist/src/commands/strategy.d.ts +13 -0
- package/dist/src/commands/strategy.d.ts.map +1 -0
- package/dist/src/commands/strategy.js +49 -0
- package/dist/src/commands/strategy.js.map +1 -0
- package/dist/src/commands/warp.d.ts.map +1 -1
- package/dist/src/commands/warp.js +24 -6
- package/dist/src/commands/warp.js.map +1 -1
- package/dist/src/config/chain.d.ts.map +1 -1
- package/dist/src/config/chain.js +19 -1
- package/dist/src/config/chain.js.map +1 -1
- package/dist/src/config/core.js +2 -2
- package/dist/src/config/core.js.map +1 -1
- package/dist/src/config/hooks.js +4 -4
- package/dist/src/config/hooks.js.map +1 -1
- package/dist/src/config/ism.js +3 -3
- package/dist/src/config/ism.js.map +1 -1
- package/dist/src/config/strategy.d.ts +11 -0
- package/dist/src/config/strategy.d.ts.map +1 -0
- package/dist/src/config/strategy.js +106 -0
- package/dist/src/config/strategy.js.map +1 -0
- package/dist/src/config/warp.d.ts.map +1 -1
- package/dist/src/config/warp.js +2 -2
- package/dist/src/config/warp.js.map +1 -1
- package/dist/src/context/context.d.ts +2 -1
- package/dist/src/context/context.d.ts.map +1 -1
- package/dist/src/context/context.js +40 -5
- package/dist/src/context/context.js.map +1 -1
- package/dist/src/context/strategies/chain/ChainResolverFactory.d.ts +14 -0
- package/dist/src/context/strategies/chain/ChainResolverFactory.d.ts.map +1 -0
- package/dist/src/context/strategies/chain/ChainResolverFactory.js +34 -0
- package/dist/src/context/strategies/chain/ChainResolverFactory.js.map +1 -0
- package/dist/src/context/strategies/chain/MultiChainResolver.d.ts +36 -0
- package/dist/src/context/strategies/chain/MultiChainResolver.d.ts.map +1 -0
- package/dist/src/context/strategies/chain/MultiChainResolver.js +167 -0
- package/dist/src/context/strategies/chain/MultiChainResolver.js.map +1 -0
- package/dist/src/context/strategies/chain/SingleChainResolver.d.ts +15 -0
- package/dist/src/context/strategies/chain/SingleChainResolver.d.ts.map +1 -0
- package/dist/src/context/strategies/chain/SingleChainResolver.js +17 -0
- package/dist/src/context/strategies/chain/SingleChainResolver.js.map +1 -0
- package/dist/src/context/strategies/chain/types.d.ts +10 -0
- package/dist/src/context/strategies/chain/types.d.ts.map +1 -0
- package/dist/src/context/strategies/chain/types.js +2 -0
- package/dist/src/context/strategies/chain/types.js.map +1 -0
- package/dist/src/context/strategies/signer/BaseMultiProtocolSigner.d.ts +19 -0
- package/dist/src/context/strategies/signer/BaseMultiProtocolSigner.d.ts.map +1 -0
- package/dist/src/context/strategies/signer/BaseMultiProtocolSigner.js +7 -0
- package/dist/src/context/strategies/signer/BaseMultiProtocolSigner.js.map +1 -0
- package/dist/src/context/strategies/signer/MultiProtocolSignerFactory.d.ts +6 -0
- package/dist/src/context/strategies/signer/MultiProtocolSignerFactory.d.ts.map +1 -0
- package/dist/src/context/strategies/signer/MultiProtocolSignerFactory.js +47 -0
- package/dist/src/context/strategies/signer/MultiProtocolSignerFactory.js.map +1 -0
- package/dist/src/context/strategies/signer/MultiProtocolSignerManager.d.ts +51 -0
- package/dist/src/context/strategies/signer/MultiProtocolSignerManager.d.ts.map +1 -0
- package/dist/src/context/strategies/signer/MultiProtocolSignerManager.js +107 -0
- package/dist/src/context/strategies/signer/MultiProtocolSignerManager.js.map +1 -0
- package/dist/src/context/types.d.ts +5 -2
- package/dist/src/context/types.d.ts.map +1 -1
- package/dist/src/deploy/agent.d.ts.map +1 -1
- package/dist/src/deploy/agent.js +2 -1
- package/dist/src/deploy/agent.js.map +1 -1
- package/dist/src/deploy/core.js +3 -2
- package/dist/src/deploy/core.js.map +1 -1
- package/dist/src/deploy/utils.d.ts +2 -2
- package/dist/src/deploy/utils.d.ts.map +1 -1
- package/dist/src/deploy/utils.js +11 -8
- package/dist/src/deploy/utils.js.map +1 -1
- package/dist/src/deploy/warp.d.ts.map +1 -1
- package/dist/src/deploy/warp.js +79 -38
- package/dist/src/deploy/warp.js.map +1 -1
- package/dist/src/read/warp.d.ts.map +1 -1
- package/dist/src/read/warp.js +6 -5
- package/dist/src/read/warp.js.map +1 -1
- package/dist/src/send/message.js +3 -3
- package/dist/src/send/message.js.map +1 -1
- package/dist/src/send/transfer.d.ts +2 -3
- package/dist/src/send/transfer.d.ts.map +1 -1
- package/dist/src/send/transfer.js +30 -30
- package/dist/src/send/transfer.js.map +1 -1
- package/dist/src/status/message.d.ts +1 -2
- package/dist/src/status/message.d.ts.map +1 -1
- package/dist/src/status/message.js +26 -38
- package/dist/src/status/message.js.map +1 -1
- package/dist/src/tests/commands/core.d.ts +14 -0
- package/dist/src/tests/commands/core.d.ts.map +1 -1
- package/dist/src/tests/commands/core.js +70 -0
- package/dist/src/tests/commands/core.js.map +1 -1
- package/dist/src/tests/commands/helpers.d.ts +34 -7
- package/dist/src/tests/commands/helpers.d.ts.map +1 -1
- package/dist/src/tests/commands/helpers.js +74 -2
- package/dist/src/tests/commands/helpers.js.map +1 -1
- package/dist/src/tests/commands/warp.d.ts +5 -0
- package/dist/src/tests/commands/warp.d.ts.map +1 -1
- package/dist/src/tests/commands/warp.js +13 -0
- package/dist/src/tests/commands/warp.js.map +1 -1
- package/dist/src/tests/core/core-apply.e2e-test.d.ts.map +1 -0
- package/dist/src/tests/{core-apply.e2e-test.js → core/core-apply.e2e-test.js} +3 -3
- package/dist/src/tests/core/core-apply.e2e-test.js.map +1 -0
- package/dist/src/tests/core/core-check.e2e-test.d.ts +2 -0
- package/dist/src/tests/core/core-check.e2e-test.d.ts.map +1 -0
- package/dist/src/tests/core/core-check.e2e-test.js +49 -0
- package/dist/src/tests/core/core-check.e2e-test.js.map +1 -0
- package/dist/src/tests/core/core-deploy.e2e-test.d.ts.map +1 -0
- package/dist/src/tests/core/core-deploy.e2e-test.js +165 -0
- package/dist/src/tests/core/core-deploy.e2e-test.js.map +1 -0
- package/dist/src/tests/core/core-init.e2e-test.d.ts +2 -0
- package/dist/src/tests/core/core-init.e2e-test.d.ts.map +1 -0
- package/dist/src/tests/core/core-init.e2e-test.js +124 -0
- package/dist/src/tests/core/core-init.e2e-test.js.map +1 -0
- package/dist/src/tests/core/core-read.e2e-test.d.ts.map +1 -0
- package/dist/src/tests/{core-read.e2e-test.js → core/core-read.e2e-test.js} +3 -3
- package/dist/src/tests/core/core-read.e2e-test.js.map +1 -0
- package/dist/src/tests/warp-apply.e2e-test.js.map +1 -1
- package/dist/src/tests/warp-deploy.e2e-test.js +60 -1
- package/dist/src/tests/warp-deploy.e2e-test.js.map +1 -1
- package/dist/src/tests/warp-init.e2e-test.d.ts +2 -0
- package/dist/src/tests/warp-init.e2e-test.d.ts.map +1 -0
- package/dist/src/tests/warp-init.e2e-test.js +114 -0
- package/dist/src/tests/warp-init.e2e-test.js.map +1 -0
- package/dist/src/utils/balances.d.ts +1 -2
- package/dist/src/utils/balances.d.ts.map +1 -1
- package/dist/src/utils/balances.js +6 -7
- package/dist/src/utils/balances.js.map +1 -1
- package/dist/src/utils/chains.d.ts +6 -0
- package/dist/src/utils/chains.d.ts.map +1 -1
- package/dist/src/utils/chains.js +41 -4
- package/dist/src/utils/chains.js.map +1 -1
- package/dist/src/utils/files.d.ts.map +1 -1
- package/dist/src/utils/files.js +5 -2
- package/dist/src/utils/files.js.map +1 -1
- package/dist/src/utils/output.d.ts +12 -0
- package/dist/src/utils/output.d.ts.map +1 -1
- package/dist/src/utils/output.js +44 -0
- package/dist/src/utils/output.js.map +1 -1
- package/dist/src/validator/utils.d.ts +1 -1
- package/dist/src/validator/utils.d.ts.map +1 -1
- package/dist/src/validator/utils.js +8 -8
- package/dist/src/validator/utils.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/package.json +7 -5
- package/dist/src/tests/core-apply.e2e-test.d.ts.map +0 -1
- package/dist/src/tests/core-apply.e2e-test.js.map +0 -1
- package/dist/src/tests/core-deploy.e2e-test.d.ts.map +0 -1
- package/dist/src/tests/core-deploy.e2e-test.js +0 -55
- package/dist/src/tests/core-deploy.e2e-test.js.map +0 -1
- package/dist/src/tests/core-read.e2e-test.d.ts.map +0 -1
- package/dist/src/tests/core-read.e2e-test.js.map +0 -1
- /package/dist/src/tests/{core-apply.e2e-test.d.ts → core/core-apply.e2e-test.d.ts} +0 -0
- /package/dist/src/tests/{core-deploy.e2e-test.d.ts → core/core-deploy.e2e-test.d.ts} +0 -0
- /package/dist/src/tests/{core-read.e2e-test.d.ts → core/core-read.e2e-test.d.ts} +0 -0
|
@@ -2,11 +2,12 @@ import { IRegistry } from '@hyperlane-xyz/registry';
|
|
|
2
2
|
import { ChainMap, ChainMetadata, ChainName } from '@hyperlane-xyz/sdk';
|
|
3
3
|
import { CommandContext, ContextSettings } from './types.js';
|
|
4
4
|
export declare function contextMiddleware(argv: Record<string, any>): Promise<void>;
|
|
5
|
+
export declare function signerMiddleware(argv: Record<string, any>): Promise<Record<string, any>>;
|
|
5
6
|
/**
|
|
6
7
|
* Retrieves context for the user-selected command
|
|
7
8
|
* @returns context for the current command
|
|
8
9
|
*/
|
|
9
|
-
export declare function getContext({ registryUri, registryOverrideUri, key, requiresKey, skipConfirmation, disableProxy, }: ContextSettings): Promise<CommandContext>;
|
|
10
|
+
export declare function getContext({ registryUri, registryOverrideUri, key, requiresKey, skipConfirmation, disableProxy, strategyPath, }: ContextSettings): Promise<CommandContext>;
|
|
10
11
|
/**
|
|
11
12
|
* Retrieves dry-run context for the user-selected command
|
|
12
13
|
* @returns dry-run context for the current command
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,SAAS,EAEV,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,QAAQ,EACR,aAAa,EACb,SAAS,EAEV,MAAM,oBAAoB,CAAC;
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,SAAS,EAEV,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EACL,QAAQ,EACR,aAAa,EACb,SAAS,EAEV,MAAM,oBAAoB,CAAC;AAc5B,OAAO,EACL,cAAc,EACd,eAAe,EAEhB,MAAM,YAAY,CAAC;AAEpB,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,iBAqBhE;AAED,wBAAsB,gBAAgB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,gCAoC/D;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,EAC/B,WAAW,EACX,mBAAmB,EACnB,GAAG,EACH,WAAW,EACX,gBAAgB,EAChB,YAAoB,EACpB,YAAY,GACb,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAuB3C;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,EACE,WAAW,EACX,mBAAmB,EACnB,GAAG,EACH,WAAW,EACX,gBAAgB,EAChB,YAAoB,GACrB,EAAE,eAAe,EAClB,KAAK,CAAC,EAAE,SAAS,GAChB,OAAO,CAAC,cAAc,CAAC,CAkCzB;AA0DD;;;;;;;GAOG;AACH,wBAAsB,qBAAqB,CACzC,MAAM,EAAE,SAAS,EAAE,EACnB,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,EACtC,QAAQ,EAAE,SAAS,GAClB,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAoC3B"}
|
|
@@ -4,12 +4,15 @@ import { FileSystemRegistry } from '@hyperlane-xyz/registry/fs';
|
|
|
4
4
|
import { MultiProvider, } from '@hyperlane-xyz/sdk';
|
|
5
5
|
import { isHttpsUrl, isNullish, rootLogger } from '@hyperlane-xyz/utils';
|
|
6
6
|
import { isSignCommand } from '../commands/signCommands.js';
|
|
7
|
+
import { readChainSubmissionStrategyConfig } from '../config/strategy.js';
|
|
7
8
|
import { PROXY_DEPLOYED_URL } from '../consts.js';
|
|
8
9
|
import { forkNetworkToMultiProvider, verifyAnvil } from '../deploy/dry-run.js';
|
|
9
10
|
import { logBlue } from '../logger.js';
|
|
10
11
|
import { runSingleChainSelectionStep } from '../utils/chains.js';
|
|
11
12
|
import { detectAndConfirmOrPrompt } from '../utils/input.js';
|
|
12
13
|
import { getImpersonatedSigner, getSigner } from '../utils/keys.js';
|
|
14
|
+
import { ChainResolverFactory } from './strategies/chain/ChainResolverFactory.js';
|
|
15
|
+
import { MultiProtocolSignerManager } from './strategies/signer/MultiProtocolSignerManager.js';
|
|
13
16
|
export async function contextMiddleware(argv) {
|
|
14
17
|
const isDryRun = !isNullish(argv.dryRun);
|
|
15
18
|
const requiresKey = isSignCommand(argv);
|
|
@@ -21,6 +24,7 @@ export async function contextMiddleware(argv) {
|
|
|
21
24
|
requiresKey,
|
|
22
25
|
disableProxy: argv.disableProxy,
|
|
23
26
|
skipConfirmation: argv.yes,
|
|
27
|
+
strategyPath: argv.strategy,
|
|
24
28
|
};
|
|
25
29
|
if (!isDryRun && settings.fromAddress)
|
|
26
30
|
throw new Error("'--from-address' or '-f' should only be used for dry-runs");
|
|
@@ -29,24 +33,55 @@ export async function contextMiddleware(argv) {
|
|
|
29
33
|
: await getContext(settings);
|
|
30
34
|
argv.context = context;
|
|
31
35
|
}
|
|
36
|
+
export async function signerMiddleware(argv) {
|
|
37
|
+
const { key, requiresKey, multiProvider, strategyPath } = argv.context;
|
|
38
|
+
if (!requiresKey)
|
|
39
|
+
return argv;
|
|
40
|
+
const strategyConfig = strategyPath
|
|
41
|
+
? await readChainSubmissionStrategyConfig(strategyPath)
|
|
42
|
+
: {};
|
|
43
|
+
/**
|
|
44
|
+
* Intercepts Hyperlane command to determine chains.
|
|
45
|
+
*/
|
|
46
|
+
const chainStrategy = ChainResolverFactory.getStrategy(argv);
|
|
47
|
+
/**
|
|
48
|
+
* Resolves chains based on the chain strategy.
|
|
49
|
+
*/
|
|
50
|
+
const chains = await chainStrategy.resolveChains(argv);
|
|
51
|
+
/**
|
|
52
|
+
* Extracts signer config
|
|
53
|
+
*/
|
|
54
|
+
const multiProtocolSigner = new MultiProtocolSignerManager(strategyConfig, chains, multiProvider, { key });
|
|
55
|
+
/**
|
|
56
|
+
* @notice Attaches signers to MultiProvider and assigns it to argv.multiProvider
|
|
57
|
+
*/
|
|
58
|
+
argv.multiProvider = await multiProtocolSigner.getMultiProvider();
|
|
59
|
+
argv.multiProtocolSigner = multiProtocolSigner;
|
|
60
|
+
return argv;
|
|
61
|
+
}
|
|
32
62
|
/**
|
|
33
63
|
* Retrieves context for the user-selected command
|
|
34
64
|
* @returns context for the current command
|
|
35
65
|
*/
|
|
36
|
-
export async function getContext({ registryUri, registryOverrideUri, key, requiresKey, skipConfirmation, disableProxy = false, }) {
|
|
66
|
+
export async function getContext({ registryUri, registryOverrideUri, key, requiresKey, skipConfirmation, disableProxy = false, strategyPath, }) {
|
|
37
67
|
const registry = getRegistry(registryUri, registryOverrideUri, !disableProxy);
|
|
38
|
-
|
|
39
|
-
|
|
68
|
+
//Just for backward compatibility
|
|
69
|
+
let signerAddress = undefined;
|
|
70
|
+
if (key) {
|
|
71
|
+
let signer;
|
|
40
72
|
({ key, signer } = await getSigner({ key, skipConfirmation }));
|
|
73
|
+
signerAddress = await signer.getAddress();
|
|
41
74
|
}
|
|
42
|
-
const multiProvider = await getMultiProvider(registry
|
|
75
|
+
const multiProvider = await getMultiProvider(registry);
|
|
43
76
|
return {
|
|
44
77
|
registry,
|
|
78
|
+
requiresKey,
|
|
45
79
|
chainMetadata: multiProvider.metadata,
|
|
46
80
|
multiProvider,
|
|
47
81
|
key,
|
|
48
|
-
signer,
|
|
49
82
|
skipConfirmation: !!skipConfirmation,
|
|
83
|
+
signerAddress,
|
|
84
|
+
strategyPath,
|
|
50
85
|
};
|
|
51
86
|
}
|
|
52
87
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAG5C,OAAO,EACL,uBAAuB,EACvB,cAAc,EAEd,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAIL,aAAa,GACd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,kBAAkB,EAAE,MAAM,cAAc,CAAC;AAClD,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,wBAAwB,EAAE,MAAM,mBAAmB,CAAC;AAC7D,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ChainResolver } from './types.js';
|
|
2
|
+
/**
|
|
3
|
+
* @class ChainResolverFactory
|
|
4
|
+
* @description Intercepts commands to determine the appropriate chain resolver strategy based on command type.
|
|
5
|
+
*/
|
|
6
|
+
export declare class ChainResolverFactory {
|
|
7
|
+
private static strategyMap;
|
|
8
|
+
/**
|
|
9
|
+
* @param argv - Command line arguments.
|
|
10
|
+
* @returns ChainResolver - The appropriate chain resolver strategy based on the command type.
|
|
11
|
+
*/
|
|
12
|
+
static getStrategy(argv: Record<string, any>): ChainResolver;
|
|
13
|
+
}
|
|
14
|
+
//# sourceMappingURL=ChainResolverFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChainResolverFactory.d.ts","sourceRoot":"","sources":["../../../../../src/context/strategies/chain/ChainResolverFactory.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;;GAGG;AACH,qBAAa,oBAAoB;IAC/B,OAAO,CAAC,MAAM,CAAC,WAAW,CAevB;IAEH;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,aAAa;CAM7D"}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { CommandType } from '../../../commands/signCommands.js';
|
|
2
|
+
import { MultiChainResolver } from './MultiChainResolver.js';
|
|
3
|
+
/**
|
|
4
|
+
* @class ChainResolverFactory
|
|
5
|
+
* @description Intercepts commands to determine the appropriate chain resolver strategy based on command type.
|
|
6
|
+
*/
|
|
7
|
+
export class ChainResolverFactory {
|
|
8
|
+
static strategyMap = new Map([
|
|
9
|
+
[CommandType.WARP_DEPLOY, () => MultiChainResolver.forWarpRouteConfig()],
|
|
10
|
+
// Using the forRelayer resolver because warp send allows the user to self relay the tx
|
|
11
|
+
[CommandType.WARP_SEND, () => MultiChainResolver.forRelayer()],
|
|
12
|
+
[CommandType.WARP_APPLY, () => MultiChainResolver.forWarpRouteConfig()],
|
|
13
|
+
[CommandType.WARP_READ, () => MultiChainResolver.forWarpCoreConfig()],
|
|
14
|
+
[CommandType.WARP_CHECK, () => MultiChainResolver.forWarpCoreConfig()],
|
|
15
|
+
// Using the forRelayer resolver because send allows the user to self relay the tx
|
|
16
|
+
[CommandType.SEND_MESSAGE, () => MultiChainResolver.forRelayer()],
|
|
17
|
+
[CommandType.AGENT_KURTOSIS, () => MultiChainResolver.forAgentKurtosis()],
|
|
18
|
+
// Using the forRelayer resolver because status allows the user to self relay the tx
|
|
19
|
+
[CommandType.STATUS, () => MultiChainResolver.forRelayer()],
|
|
20
|
+
[CommandType.SUBMIT, () => MultiChainResolver.forStrategyConfig()],
|
|
21
|
+
[CommandType.RELAYER, () => MultiChainResolver.forRelayer()],
|
|
22
|
+
[CommandType.CORE_APPLY, () => MultiChainResolver.forCoreApply()],
|
|
23
|
+
]);
|
|
24
|
+
/**
|
|
25
|
+
* @param argv - Command line arguments.
|
|
26
|
+
* @returns ChainResolver - The appropriate chain resolver strategy based on the command type.
|
|
27
|
+
*/
|
|
28
|
+
static getStrategy(argv) {
|
|
29
|
+
const commandKey = `${argv._[0]}:${argv._[1] || ''}`.trim();
|
|
30
|
+
const createStrategy = this.strategyMap.get(commandKey) || (() => MultiChainResolver.default());
|
|
31
|
+
return createStrategy();
|
|
32
|
+
}
|
|
33
|
+
}
|
|
34
|
+
//# sourceMappingURL=ChainResolverFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ChainResolverFactory.js","sourceRoot":"","sources":["../../../../../src/context/strategies/chain/ChainResolverFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,WAAW,EAAE,MAAM,mCAAmC,CAAC;AAEhE,OAAO,EAAE,kBAAkB,EAAE,MAAM,yBAAyB,CAAC;AAG7D;;;GAGG;AACH,MAAM,OAAO,oBAAoB;IACvB,MAAM,CAAC,WAAW,GAA0C,IAAI,GAAG,CAAC;QAC1E,CAAC,WAAW,CAAC,WAAW,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,CAAC;QACxE,uFAAuF;QACvF,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;QAC9D,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,kBAAkB,EAAE,CAAC;QACvE,CAAC,WAAW,CAAC,SAAS,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QACrE,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QACtE,kFAAkF;QAClF,CAAC,WAAW,CAAC,YAAY,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;QACjE,CAAC,WAAW,CAAC,cAAc,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,gBAAgB,EAAE,CAAC;QACzE,oFAAoF;QACpF,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;QAC3D,CAAC,WAAW,CAAC,MAAM,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,iBAAiB,EAAE,CAAC;QAClE,CAAC,WAAW,CAAC,OAAO,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,UAAU,EAAE,CAAC;QAC5D,CAAC,WAAW,CAAC,UAAU,EAAE,GAAG,EAAE,CAAC,kBAAkB,CAAC,YAAY,EAAE,CAAC;KAClE,CAAC,CAAC;IAEH;;;OAGG;IACH,MAAM,CAAC,WAAW,CAAC,IAAyB;QAC1C,MAAM,UAAU,GAAG,GAAG,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,EAAiB,CAAC;QAC3E,MAAM,cAAc,GAClB,IAAI,CAAC,WAAW,CAAC,GAAG,CAAC,UAAU,CAAC,IAAI,CAAC,GAAG,EAAE,CAAC,kBAAkB,CAAC,OAAO,EAAE,CAAC,CAAC;QAC3E,OAAO,cAAc,EAAE,CAAC;IAC1B,CAAC"}
|
|
@@ -0,0 +1,36 @@
|
|
|
1
|
+
import { ChainMap, ChainName } from '@hyperlane-xyz/sdk';
|
|
2
|
+
import { ChainResolver } from './types.js';
|
|
3
|
+
declare enum ChainSelectionMode {
|
|
4
|
+
AGENT_KURTOSIS = 0,
|
|
5
|
+
WARP_CONFIG = 1,
|
|
6
|
+
WARP_READ = 2,
|
|
7
|
+
STRATEGY = 3,
|
|
8
|
+
CORE_APPLY = 4,
|
|
9
|
+
DEFAULT = 5
|
|
10
|
+
}
|
|
11
|
+
/**
|
|
12
|
+
* @title MultiChainResolver
|
|
13
|
+
* @notice Resolves chains based on the specified selection mode.
|
|
14
|
+
*/
|
|
15
|
+
export declare class MultiChainResolver implements ChainResolver {
|
|
16
|
+
private mode;
|
|
17
|
+
constructor(mode: ChainSelectionMode);
|
|
18
|
+
resolveChains(argv: ChainMap<any>): Promise<ChainName[]>;
|
|
19
|
+
private resolveWarpRouteConfigChains;
|
|
20
|
+
private resolveWarpCoreConfigChains;
|
|
21
|
+
private resolveAgentChains;
|
|
22
|
+
private resolveStrategyChains;
|
|
23
|
+
private resolveRelayerChains;
|
|
24
|
+
private getWarpRouteConfigChains;
|
|
25
|
+
private resolveCoreApplyChains;
|
|
26
|
+
private getEvmChains;
|
|
27
|
+
static forAgentKurtosis(): MultiChainResolver;
|
|
28
|
+
static forRelayer(): MultiChainResolver;
|
|
29
|
+
static forStrategyConfig(): MultiChainResolver;
|
|
30
|
+
static forWarpRouteConfig(): MultiChainResolver;
|
|
31
|
+
static forWarpCoreConfig(): MultiChainResolver;
|
|
32
|
+
static forCoreApply(): MultiChainResolver;
|
|
33
|
+
static default(): MultiChainResolver;
|
|
34
|
+
}
|
|
35
|
+
export {};
|
|
36
|
+
//# sourceMappingURL=MultiChainResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiChainResolver.d.ts","sourceRoot":"","sources":["../../../../../src/context/strategies/chain/MultiChainResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,QAAQ,EACR,SAAS,EAKV,MAAM,oBAAoB,CAAC;AAmB5B,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C,aAAK,kBAAkB;IACrB,cAAc,IAAA;IACd,WAAW,IAAA;IACX,SAAS,IAAA;IACT,QAAQ,IAAA;IACR,UAAU,IAAA;IACV,OAAO,IAAA;CACR;AAID;;;GAGG;AACH,qBAAa,kBAAmB,YAAW,aAAa;IAC1C,OAAO,CAAC,IAAI;gBAAJ,IAAI,EAAE,kBAAkB;IAEtC,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;YAkBhD,4BAA4B;YAW5B,2BAA2B;YAqB3B,kBAAkB;YAuBlB,qBAAqB;YAOrB,oBAAoB;YA4BpB,wBAAwB;YA8BxB,sBAAsB;IAmCpC,OAAO,CAAC,YAAY;IAQpB,MAAM,CAAC,gBAAgB,IAAI,kBAAkB;IAI7C,MAAM,CAAC,UAAU,IAAI,kBAAkB;IAIvC,MAAM,CAAC,iBAAiB,IAAI,kBAAkB;IAI9C,MAAM,CAAC,kBAAkB,IAAI,kBAAkB;IAI/C,MAAM,CAAC,iBAAiB,IAAI,kBAAkB;IAI9C,MAAM,CAAC,YAAY,IAAI,kBAAkB;IAIzC,MAAM,CAAC,OAAO,IAAI,kBAAkB;CAGrC"}
|
|
@@ -0,0 +1,167 @@
|
|
|
1
|
+
import { DeployedCoreAddressesSchema, EvmCoreModule, } from '@hyperlane-xyz/sdk';
|
|
2
|
+
import { ProtocolType, assert } from '@hyperlane-xyz/utils';
|
|
3
|
+
import { DEFAULT_WARP_ROUTE_DEPLOYMENT_CONFIG_PATH } from '../../../commands/options.js';
|
|
4
|
+
import { readCoreDeployConfigs } from '../../../config/core.js';
|
|
5
|
+
import { readChainSubmissionStrategyConfig } from '../../../config/strategy.js';
|
|
6
|
+
import { log } from '../../../logger.js';
|
|
7
|
+
import { extractChainsFromObj, runMultiChainSelectionStep, runSingleChainSelectionStep, } from '../../../utils/chains.js';
|
|
8
|
+
import { isFile, readYamlOrJson, runFileSelectionStep, } from '../../../utils/files.js';
|
|
9
|
+
import { getWarpCoreConfigOrExit } from '../../../utils/warp.js';
|
|
10
|
+
var ChainSelectionMode;
|
|
11
|
+
(function (ChainSelectionMode) {
|
|
12
|
+
ChainSelectionMode[ChainSelectionMode["AGENT_KURTOSIS"] = 0] = "AGENT_KURTOSIS";
|
|
13
|
+
ChainSelectionMode[ChainSelectionMode["WARP_CONFIG"] = 1] = "WARP_CONFIG";
|
|
14
|
+
ChainSelectionMode[ChainSelectionMode["WARP_READ"] = 2] = "WARP_READ";
|
|
15
|
+
ChainSelectionMode[ChainSelectionMode["STRATEGY"] = 3] = "STRATEGY";
|
|
16
|
+
ChainSelectionMode[ChainSelectionMode["CORE_APPLY"] = 4] = "CORE_APPLY";
|
|
17
|
+
ChainSelectionMode[ChainSelectionMode["DEFAULT"] = 5] = "DEFAULT";
|
|
18
|
+
})(ChainSelectionMode || (ChainSelectionMode = {}));
|
|
19
|
+
// This class could be broken down into multiple strategies
|
|
20
|
+
/**
|
|
21
|
+
* @title MultiChainResolver
|
|
22
|
+
* @notice Resolves chains based on the specified selection mode.
|
|
23
|
+
*/
|
|
24
|
+
export class MultiChainResolver {
|
|
25
|
+
mode;
|
|
26
|
+
constructor(mode) {
|
|
27
|
+
this.mode = mode;
|
|
28
|
+
}
|
|
29
|
+
async resolveChains(argv) {
|
|
30
|
+
switch (this.mode) {
|
|
31
|
+
case ChainSelectionMode.WARP_CONFIG:
|
|
32
|
+
return this.resolveWarpRouteConfigChains(argv);
|
|
33
|
+
case ChainSelectionMode.WARP_READ:
|
|
34
|
+
return this.resolveWarpCoreConfigChains(argv);
|
|
35
|
+
case ChainSelectionMode.AGENT_KURTOSIS:
|
|
36
|
+
return this.resolveAgentChains(argv);
|
|
37
|
+
case ChainSelectionMode.STRATEGY:
|
|
38
|
+
return this.resolveStrategyChains(argv);
|
|
39
|
+
case ChainSelectionMode.CORE_APPLY:
|
|
40
|
+
return this.resolveCoreApplyChains(argv);
|
|
41
|
+
case ChainSelectionMode.DEFAULT:
|
|
42
|
+
default:
|
|
43
|
+
return this.resolveRelayerChains(argv);
|
|
44
|
+
}
|
|
45
|
+
}
|
|
46
|
+
async resolveWarpRouteConfigChains(argv) {
|
|
47
|
+
argv.config ||= DEFAULT_WARP_ROUTE_DEPLOYMENT_CONFIG_PATH;
|
|
48
|
+
argv.context.chains = await this.getWarpRouteConfigChains(argv.config.trim(), argv.skipConfirmation);
|
|
49
|
+
return argv.context.chains;
|
|
50
|
+
}
|
|
51
|
+
async resolveWarpCoreConfigChains(argv) {
|
|
52
|
+
if (argv.symbol || argv.warp) {
|
|
53
|
+
const warpCoreConfig = await getWarpCoreConfigOrExit({
|
|
54
|
+
context: argv.context,
|
|
55
|
+
warp: argv.warp,
|
|
56
|
+
symbol: argv.symbol,
|
|
57
|
+
});
|
|
58
|
+
argv.context.warpCoreConfig = warpCoreConfig;
|
|
59
|
+
const chains = extractChainsFromObj(warpCoreConfig);
|
|
60
|
+
return chains;
|
|
61
|
+
}
|
|
62
|
+
else if (argv.chain) {
|
|
63
|
+
return [argv.chain];
|
|
64
|
+
}
|
|
65
|
+
else {
|
|
66
|
+
throw new Error(`Please specify either a symbol, chain and address or warp file`);
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
async resolveAgentChains(argv) {
|
|
70
|
+
const { chainMetadata } = argv.context;
|
|
71
|
+
argv.origin =
|
|
72
|
+
argv.origin ??
|
|
73
|
+
(await runSingleChainSelectionStep(chainMetadata, 'Select the origin chain'));
|
|
74
|
+
if (!argv.targets) {
|
|
75
|
+
const selectedRelayChains = await runMultiChainSelectionStep({
|
|
76
|
+
chainMetadata: chainMetadata,
|
|
77
|
+
message: 'Select chains to relay between',
|
|
78
|
+
requireNumber: 2,
|
|
79
|
+
});
|
|
80
|
+
argv.targets = selectedRelayChains.join(',');
|
|
81
|
+
}
|
|
82
|
+
return [argv.origin, ...argv.targets];
|
|
83
|
+
}
|
|
84
|
+
async resolveStrategyChains(argv) {
|
|
85
|
+
const strategy = await readChainSubmissionStrategyConfig(argv.strategy);
|
|
86
|
+
return extractChainsFromObj(strategy);
|
|
87
|
+
}
|
|
88
|
+
async resolveRelayerChains(argv) {
|
|
89
|
+
const { multiProvider } = argv.context;
|
|
90
|
+
const chains = [];
|
|
91
|
+
if (argv.origin) {
|
|
92
|
+
chains.push(argv.origin);
|
|
93
|
+
}
|
|
94
|
+
if (argv.destination) {
|
|
95
|
+
chains.push(argv.destination);
|
|
96
|
+
}
|
|
97
|
+
if (!argv.chains) {
|
|
98
|
+
return Array.from(new Set([...chains, ...this.getEvmChains(multiProvider)]));
|
|
99
|
+
}
|
|
100
|
+
return Array.from(new Set([
|
|
101
|
+
...chains,
|
|
102
|
+
...argv.chains.split(',').map((item) => item.trim()),
|
|
103
|
+
]));
|
|
104
|
+
}
|
|
105
|
+
async getWarpRouteConfigChains(configPath, skipConfirmation) {
|
|
106
|
+
if (!configPath || !isFile(configPath)) {
|
|
107
|
+
assert(!skipConfirmation, 'Warp route deployment config is required');
|
|
108
|
+
configPath = await runFileSelectionStep('./configs', 'Warp route deployment config', 'warp');
|
|
109
|
+
}
|
|
110
|
+
else {
|
|
111
|
+
log(`Using warp route deployment config at ${configPath}`);
|
|
112
|
+
}
|
|
113
|
+
// Alternative to readWarpRouteDeployConfig that doesn't use context for signer and zod validation
|
|
114
|
+
const warpRouteConfig = (await readYamlOrJson(configPath));
|
|
115
|
+
const chains = Object.keys(warpRouteConfig);
|
|
116
|
+
assert(chains.length !== 0, 'No chains found in warp route deployment config');
|
|
117
|
+
return chains;
|
|
118
|
+
}
|
|
119
|
+
async resolveCoreApplyChains(argv) {
|
|
120
|
+
try {
|
|
121
|
+
const config = readCoreDeployConfigs(argv.config);
|
|
122
|
+
if (!config?.interchainAccountRouter) {
|
|
123
|
+
return [argv.chain];
|
|
124
|
+
}
|
|
125
|
+
const addresses = await argv.context.registry.getChainAddresses(argv.chain);
|
|
126
|
+
const coreAddresses = DeployedCoreAddressesSchema.parse(addresses);
|
|
127
|
+
const evmCoreModule = new EvmCoreModule(argv.context.multiProvider, {
|
|
128
|
+
chain: argv.chain,
|
|
129
|
+
config,
|
|
130
|
+
addresses: coreAddresses,
|
|
131
|
+
});
|
|
132
|
+
const transactions = await evmCoreModule.update(config);
|
|
133
|
+
return Array.from(new Set(transactions.map((tx) => tx.chainId))).map((chainId) => argv.context.multiProvider.getChainName(chainId));
|
|
134
|
+
}
|
|
135
|
+
catch (error) {
|
|
136
|
+
throw new Error(`Failed to resolve core apply chains`, {
|
|
137
|
+
cause: error,
|
|
138
|
+
});
|
|
139
|
+
}
|
|
140
|
+
}
|
|
141
|
+
getEvmChains(multiProvider) {
|
|
142
|
+
const chains = multiProvider.getKnownChainNames();
|
|
143
|
+
return chains.filter((chain) => multiProvider.getProtocol(chain) === ProtocolType.Ethereum);
|
|
144
|
+
}
|
|
145
|
+
static forAgentKurtosis() {
|
|
146
|
+
return new MultiChainResolver(ChainSelectionMode.AGENT_KURTOSIS);
|
|
147
|
+
}
|
|
148
|
+
static forRelayer() {
|
|
149
|
+
return new MultiChainResolver(ChainSelectionMode.DEFAULT);
|
|
150
|
+
}
|
|
151
|
+
static forStrategyConfig() {
|
|
152
|
+
return new MultiChainResolver(ChainSelectionMode.STRATEGY);
|
|
153
|
+
}
|
|
154
|
+
static forWarpRouteConfig() {
|
|
155
|
+
return new MultiChainResolver(ChainSelectionMode.WARP_CONFIG);
|
|
156
|
+
}
|
|
157
|
+
static forWarpCoreConfig() {
|
|
158
|
+
return new MultiChainResolver(ChainSelectionMode.WARP_READ);
|
|
159
|
+
}
|
|
160
|
+
static forCoreApply() {
|
|
161
|
+
return new MultiChainResolver(ChainSelectionMode.CORE_APPLY);
|
|
162
|
+
}
|
|
163
|
+
static default() {
|
|
164
|
+
return new MultiChainResolver(ChainSelectionMode.DEFAULT);
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
//# sourceMappingURL=MultiChainResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiChainResolver.js","sourceRoot":"","sources":["../../../../../src/context/strategies/chain/MultiChainResolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,15 @@
|
|
|
1
|
+
import { ChainMap, ChainName } from '@hyperlane-xyz/sdk';
|
|
2
|
+
import { ChainResolver } from './types.js';
|
|
3
|
+
/**
|
|
4
|
+
* @title SingleChainResolver
|
|
5
|
+
* @notice Strategy implementation for managing single-chain operations
|
|
6
|
+
* @dev Primarily used for operations like 'core:apply' and 'warp:read'
|
|
7
|
+
*/
|
|
8
|
+
export declare class SingleChainResolver implements ChainResolver {
|
|
9
|
+
/**
|
|
10
|
+
* @notice Determines the chain to be used for signing operations
|
|
11
|
+
* @dev Either uses the chain specified in argv or prompts for interactive selection
|
|
12
|
+
*/
|
|
13
|
+
resolveChains(argv: ChainMap<any>): Promise<ChainName[]>;
|
|
14
|
+
}
|
|
15
|
+
//# sourceMappingURL=SingleChainResolver.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SingleChainResolver.d.ts","sourceRoot":"","sources":["../../../../../src/context/strategies/chain/SingleChainResolver.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAIzD,OAAO,EAAE,aAAa,EAAE,MAAM,YAAY,CAAC;AAE3C;;;;GAIG;AACH,qBAAa,mBAAoB,YAAW,aAAa;IACvD;;;OAGG;IACG,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;CAQ/D"}
|
|
@@ -0,0 +1,17 @@
|
|
|
1
|
+
import { runSingleChainSelectionStep } from '../../../utils/chains.js';
|
|
2
|
+
/**
|
|
3
|
+
* @title SingleChainResolver
|
|
4
|
+
* @notice Strategy implementation for managing single-chain operations
|
|
5
|
+
* @dev Primarily used for operations like 'core:apply' and 'warp:read'
|
|
6
|
+
*/
|
|
7
|
+
export class SingleChainResolver {
|
|
8
|
+
/**
|
|
9
|
+
* @notice Determines the chain to be used for signing operations
|
|
10
|
+
* @dev Either uses the chain specified in argv or prompts for interactive selection
|
|
11
|
+
*/
|
|
12
|
+
async resolveChains(argv) {
|
|
13
|
+
argv.chain ||= await runSingleChainSelectionStep(argv.context.chainMetadata, 'Select chain to connect:');
|
|
14
|
+
return [argv.chain]; // Explicitly return as single-item array
|
|
15
|
+
}
|
|
16
|
+
}
|
|
17
|
+
//# sourceMappingURL=SingleChainResolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"SingleChainResolver.js","sourceRoot":"","sources":["../../../../../src/context/strategies/chain/SingleChainResolver.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,2BAA2B,EAAE,MAAM,0BAA0B,CAAC;AAIvE;;;;GAIG;AACH,MAAM,OAAO,mBAAmB;IAC9B;;;OAGG;IACH,KAAK,CAAC,aAAa,CAAC,IAAmB;QACrC,IAAI,CAAC,KAAK,KAAK,MAAM,2BAA2B,CAC9C,IAAI,CAAC,OAAO,CAAC,aAAa,EAC1B,0BAA0B,CAC3B,CAAC;QAEF,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,yCAAyC;IAChE,CAAC;CACF"}
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
import { ChainMap, ChainName } from '@hyperlane-xyz/sdk';
|
|
2
|
+
export interface ChainResolver {
|
|
3
|
+
/**
|
|
4
|
+
* Determines the chains to be used for signing
|
|
5
|
+
* @param argv Command arguments
|
|
6
|
+
* @returns Array of chain names
|
|
7
|
+
*/
|
|
8
|
+
resolveChains(argv: ChainMap<any>): Promise<ChainName[]>;
|
|
9
|
+
}
|
|
10
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../../../src/context/strategies/chain/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAEzD,MAAM,WAAW,aAAa;IAC5B;;;;OAIG;IACH,aAAa,CAAC,IAAI,EAAE,QAAQ,CAAC,GAAG,CAAC,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC,CAAC;CAC1D"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../../../src/context/strategies/chain/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,19 @@
|
|
|
1
|
+
import { Signer } from 'ethers';
|
|
2
|
+
import { ChainName, ChainSubmissionStrategy } from '@hyperlane-xyz/sdk';
|
|
3
|
+
import { Address } from '@hyperlane-xyz/utils';
|
|
4
|
+
export interface SignerConfig {
|
|
5
|
+
privateKey: string;
|
|
6
|
+
address?: Address;
|
|
7
|
+
extraParams?: Record<string, any>;
|
|
8
|
+
}
|
|
9
|
+
export interface IMultiProtocolSigner {
|
|
10
|
+
getSignerConfig(chain: ChainName): Promise<SignerConfig> | SignerConfig;
|
|
11
|
+
getSigner(config: SignerConfig): Signer;
|
|
12
|
+
}
|
|
13
|
+
export declare abstract class BaseMultiProtocolSigner implements IMultiProtocolSigner {
|
|
14
|
+
protected config: ChainSubmissionStrategy;
|
|
15
|
+
constructor(config: ChainSubmissionStrategy);
|
|
16
|
+
abstract getSignerConfig(chain: ChainName): Promise<SignerConfig>;
|
|
17
|
+
abstract getSigner(config: SignerConfig): Signer;
|
|
18
|
+
}
|
|
19
|
+
//# sourceMappingURL=BaseMultiProtocolSigner.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseMultiProtocolSigner.d.ts","sourceRoot":"","sources":["../../../../../src/context/strategies/signer/BaseMultiProtocolSigner.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,uBAAuB,EAAE,MAAM,oBAAoB,CAAC;AACxE,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,MAAM,WAAW,YAAY;IAC3B,UAAU,EAAE,MAAM,CAAC;IACnB,OAAO,CAAC,EAAE,OAAO,CAAC;IAClB,WAAW,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,CAAC;CACnC;AAED,MAAM,WAAW,oBAAoB;IACnC,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC,GAAG,YAAY,CAAC;IACxE,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM,CAAC;CACzC;AAED,8BAAsB,uBAAwB,YAAW,oBAAoB;IAC/D,SAAS,CAAC,MAAM,EAAE,uBAAuB;gBAA/B,MAAM,EAAE,uBAAuB;IAErD,QAAQ,CAAC,eAAe,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,YAAY,CAAC;IACjE,QAAQ,CAAC,SAAS,CAAC,MAAM,EAAE,YAAY,GAAG,MAAM;CACjD"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"BaseMultiProtocolSigner.js","sourceRoot":"","sources":["../../../../../src/context/strategies/signer/BaseMultiProtocolSigner.ts"],"names":[],"mappings":"AAgBA,MAAM,OAAgB,uBAAuB;IACrB;IAAtB,YAAsB,MAA+B;QAA/B,WAAM,GAAN,MAAM,CAAyB;IAAG,CAAC;CAI1D"}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ChainName, ChainSubmissionStrategy, MultiProvider } from '@hyperlane-xyz/sdk';
|
|
2
|
+
import { IMultiProtocolSigner } from './BaseMultiProtocolSigner.js';
|
|
3
|
+
export declare class MultiProtocolSignerFactory {
|
|
4
|
+
static getSignerStrategy(chain: ChainName, strategyConfig: ChainSubmissionStrategy, multiProvider: MultiProvider): IMultiProtocolSigner;
|
|
5
|
+
}
|
|
6
|
+
//# sourceMappingURL=MultiProtocolSignerFactory.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiProtocolSignerFactory.d.ts","sourceRoot":"","sources":["../../../../../src/context/strategies/signer/MultiProtocolSignerFactory.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,SAAS,EACT,uBAAuB,EAEvB,aAAa,EAEd,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAEL,oBAAoB,EAErB,MAAM,8BAA8B,CAAC;AAEtC,qBAAa,0BAA0B;IACrC,MAAM,CAAC,iBAAiB,CACtB,KAAK,EAAE,SAAS,EAChB,cAAc,EAAE,uBAAuB,EACvC,aAAa,EAAE,aAAa,GAC3B,oBAAoB;CAYxB"}
|
|
@@ -0,0 +1,47 @@
|
|
|
1
|
+
import { password } from '@inquirer/prompts';
|
|
2
|
+
import { Wallet } from 'ethers';
|
|
3
|
+
import { Wallet as ZKSyncWallet } from 'zksync-ethers';
|
|
4
|
+
import { ChainTechnicalStack, } from '@hyperlane-xyz/sdk';
|
|
5
|
+
import { ProtocolType } from '@hyperlane-xyz/utils';
|
|
6
|
+
import { BaseMultiProtocolSigner, } from './BaseMultiProtocolSigner.js';
|
|
7
|
+
export class MultiProtocolSignerFactory {
|
|
8
|
+
static getSignerStrategy(chain, strategyConfig, multiProvider) {
|
|
9
|
+
const { protocol, technicalStack } = multiProvider.getChainMetadata(chain);
|
|
10
|
+
switch (protocol) {
|
|
11
|
+
case ProtocolType.Ethereum:
|
|
12
|
+
if (technicalStack === ChainTechnicalStack.ZkSync)
|
|
13
|
+
return new ZKSyncSignerStrategy(strategyConfig);
|
|
14
|
+
return new EthereumSignerStrategy(strategyConfig);
|
|
15
|
+
default:
|
|
16
|
+
throw new Error(`Unsupported protocol: ${protocol}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
}
|
|
20
|
+
class EthereumSignerStrategy extends BaseMultiProtocolSigner {
|
|
21
|
+
async getSignerConfig(chain) {
|
|
22
|
+
const submitter = this.config[chain]?.submitter;
|
|
23
|
+
const privateKey = submitter?.privateKey ??
|
|
24
|
+
(await password({
|
|
25
|
+
message: `Please enter the private key for chain ${chain}`,
|
|
26
|
+
}));
|
|
27
|
+
return { privateKey };
|
|
28
|
+
}
|
|
29
|
+
getSigner(config) {
|
|
30
|
+
return new Wallet(config.privateKey);
|
|
31
|
+
}
|
|
32
|
+
}
|
|
33
|
+
// 99% overlap with EthereumSignerStrategy for the sake of keeping MultiProtocolSignerFactory clean
|
|
34
|
+
class ZKSyncSignerStrategy extends BaseMultiProtocolSigner {
|
|
35
|
+
async getSignerConfig(chain) {
|
|
36
|
+
const submitter = this.config[chain]?.submitter;
|
|
37
|
+
const privateKey = submitter?.privateKey ??
|
|
38
|
+
(await password({
|
|
39
|
+
message: `Please enter the private key for chain ${chain}`,
|
|
40
|
+
}));
|
|
41
|
+
return { privateKey };
|
|
42
|
+
}
|
|
43
|
+
getSigner(config) {
|
|
44
|
+
return new ZKSyncWallet(config.privateKey);
|
|
45
|
+
}
|
|
46
|
+
}
|
|
47
|
+
//# sourceMappingURL=MultiProtocolSignerFactory.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiProtocolSignerFactory.js","sourceRoot":"","sources":["../../../../../src/context/strategies/signer/MultiProtocolSignerFactory.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,mBAAmB,CAAC;AAC7C,OAAO,EAAU,MAAM,EAAE,MAAM,QAAQ,CAAC;AACxC,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,eAAe,CAAC;AAEvD,OAAO,EAGL,mBAAmB,GAGpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EACL,uBAAuB,GAGxB,MAAM,8BAA8B,CAAC;AAEtC,MAAM,OAAO,0BAA0B;IACrC,MAAM,CAAC,iBAAiB,CACtB,KAAgB,EAChB,cAAuC,EACvC,aAA4B;QAE5B,MAAM,EAAE,QAAQ,EAAE,cAAc,EAAE,GAAG,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC;QAE3E,QAAQ,QAAQ,EAAE,CAAC;YACjB,KAAK,YAAY,CAAC,QAAQ;gBACxB,IAAI,cAAc,KAAK,mBAAmB,CAAC,MAAM;oBAC/C,OAAO,IAAI,oBAAoB,CAAC,cAAc,CAAC,CAAC;gBAClD,OAAO,IAAI,sBAAsB,CAAC,cAAc,CAAC,CAAC;YACpD;gBACE,MAAM,IAAI,KAAK,CAAC,yBAAyB,QAAQ,EAAE,CAAC,CAAC;QACzD,CAAC;IACH,CAAC;CACF;AAED,MAAM,sBAAuB,SAAQ,uBAAuB;IAC1D,KAAK,CAAC,eAAe,CAAC,KAAgB;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAGrC,CAAC;QAEF,MAAM,UAAU,GACd,SAAS,EAAE,UAAU;YACrB,CAAC,MAAM,QAAQ,CAAC;gBACd,OAAO,EAAE,0CAA0C,KAAK,EAAE;aAC3D,CAAC,CAAC,CAAC;QAEN,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;IAED,SAAS,CAAC,MAAoB;QAC5B,OAAO,IAAI,MAAM,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IACvC,CAAC;CACF;AAED,mGAAmG;AACnG,MAAM,oBAAqB,SAAQ,uBAAuB;IACxD,KAAK,CAAC,eAAe,CAAC,KAAgB;QACpC,MAAM,SAAS,GAAG,IAAI,CAAC,MAAM,CAAC,KAAK,CAAC,EAAE,SAErC,CAAC;QAEF,MAAM,UAAU,GACd,SAAS,EAAE,UAAU;YACrB,CAAC,MAAM,QAAQ,CAAC;gBACd,OAAO,EAAE,0CAA0C,KAAK,EAAE;aAC3D,CAAC,CAAC,CAAC;QAEN,OAAO,EAAE,UAAU,EAAE,CAAC;IACxB,CAAC;IAED,SAAS,CAAC,MAAoB;QAC5B,OAAO,IAAI,YAAY,CAAC,MAAM,CAAC,UAAU,CAAC,CAAC;IAC7C,CAAC;CACF"}
|