@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
|
@@ -0,0 +1,51 @@
|
|
|
1
|
+
import { Signer } from 'ethers';
|
|
2
|
+
import { Logger } from 'pino';
|
|
3
|
+
import { ChainName, ChainSubmissionStrategy, MultiProvider } from '@hyperlane-xyz/sdk';
|
|
4
|
+
import { IMultiProtocolSigner } from './BaseMultiProtocolSigner.js';
|
|
5
|
+
export interface MultiProtocolSignerOptions {
|
|
6
|
+
logger?: Logger;
|
|
7
|
+
key?: string;
|
|
8
|
+
}
|
|
9
|
+
/**
|
|
10
|
+
* @title MultiProtocolSignerManager
|
|
11
|
+
* @dev Context manager for signers across multiple protocols
|
|
12
|
+
*/
|
|
13
|
+
export declare class MultiProtocolSignerManager {
|
|
14
|
+
protected readonly submissionStrategy: ChainSubmissionStrategy;
|
|
15
|
+
protected readonly chains: ChainName[];
|
|
16
|
+
protected readonly multiProvider: MultiProvider;
|
|
17
|
+
protected readonly options: MultiProtocolSignerOptions;
|
|
18
|
+
protected readonly signerStrategies: Map<ChainName, IMultiProtocolSigner>;
|
|
19
|
+
protected readonly signers: Map<ChainName, Signer>;
|
|
20
|
+
readonly logger: Logger;
|
|
21
|
+
constructor(submissionStrategy: ChainSubmissionStrategy, chains: ChainName[], multiProvider: MultiProvider, options?: MultiProtocolSignerOptions);
|
|
22
|
+
/**
|
|
23
|
+
* @notice Sets up chain-specific signer strategies
|
|
24
|
+
*/
|
|
25
|
+
protected initializeStrategies(): void;
|
|
26
|
+
/**
|
|
27
|
+
* @dev Configures signers for EVM chains in MultiProvider
|
|
28
|
+
*/
|
|
29
|
+
getMultiProvider(): Promise<MultiProvider>;
|
|
30
|
+
/**
|
|
31
|
+
* @notice Creates signer for specific chain
|
|
32
|
+
*/
|
|
33
|
+
initSigner(chain: ChainName): Promise<Signer>;
|
|
34
|
+
/**
|
|
35
|
+
* @notice Creates signers for all chains
|
|
36
|
+
*/
|
|
37
|
+
initAllSigners(): Promise<typeof this.signers>;
|
|
38
|
+
/**
|
|
39
|
+
* @notice Resolves all chain configurations
|
|
40
|
+
*/
|
|
41
|
+
private resolveAllConfigs;
|
|
42
|
+
/**
|
|
43
|
+
* @notice Resolves single chain configuration
|
|
44
|
+
*/
|
|
45
|
+
private resolveConfig;
|
|
46
|
+
/**
|
|
47
|
+
* @notice Gets private key from strategy
|
|
48
|
+
*/
|
|
49
|
+
private extractPrivateKey;
|
|
50
|
+
}
|
|
51
|
+
//# sourceMappingURL=MultiProtocolSignerManager.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiProtocolSignerManager.d.ts","sourceRoot":"","sources":["../../../../../src/context/strategies/signer/MultiProtocolSignerManager.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAChC,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EACL,SAAS,EACT,uBAAuB,EACvB,aAAa,EACd,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,oBAAoB,EAAE,MAAM,8BAA8B,CAAC;AAGpE,MAAM,WAAW,0BAA0B;IACzC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd;AAED;;;GAGG;AACH,qBAAa,0BAA0B;IAMnC,SAAS,CAAC,QAAQ,CAAC,kBAAkB,EAAE,uBAAuB;IAC9D,SAAS,CAAC,QAAQ,CAAC,MAAM,EAAE,SAAS,EAAE;IACtC,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa;IAC/C,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,0BAA0B;IARxD,SAAS,CAAC,QAAQ,CAAC,gBAAgB,EAAE,GAAG,CAAC,SAAS,EAAE,oBAAoB,CAAC,CAAC;IAC1E,SAAS,CAAC,QAAQ,CAAC,OAAO,EAAE,GAAG,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;IACnD,SAAgB,MAAM,EAAE,MAAM,CAAC;gBAGV,kBAAkB,EAAE,uBAAuB,EAC3C,MAAM,EAAE,SAAS,EAAE,EACnB,aAAa,EAAE,aAAa,EAC5B,OAAO,GAAE,0BAA+B;IAY7D;;OAEG;IACH,SAAS,CAAC,oBAAoB,IAAI,IAAI;IAWtC;;OAEG;IACG,gBAAgB,IAAI,OAAO,CAAC,aAAa,CAAC;IAShD;;OAEG;IACG,UAAU,CAAC,KAAK,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IASnD;;OAEG;IACG,cAAc,IAAI,OAAO,CAAC,OAAO,IAAI,CAAC,OAAO,CAAC;IAapD;;OAEG;YACW,iBAAiB;IAM/B;;OAEG;YACW,aAAa;IAuB3B;;OAEG;YACW,iBAAiB;CAehC"}
|
|
@@ -0,0 +1,107 @@
|
|
|
1
|
+
import { assert, rootLogger } from '@hyperlane-xyz/utils';
|
|
2
|
+
import { ENV } from '../../../utils/env.js';
|
|
3
|
+
import { MultiProtocolSignerFactory } from './MultiProtocolSignerFactory.js';
|
|
4
|
+
/**
|
|
5
|
+
* @title MultiProtocolSignerManager
|
|
6
|
+
* @dev Context manager for signers across multiple protocols
|
|
7
|
+
*/
|
|
8
|
+
export class MultiProtocolSignerManager {
|
|
9
|
+
submissionStrategy;
|
|
10
|
+
chains;
|
|
11
|
+
multiProvider;
|
|
12
|
+
options;
|
|
13
|
+
signerStrategies;
|
|
14
|
+
signers;
|
|
15
|
+
logger;
|
|
16
|
+
constructor(submissionStrategy, chains, multiProvider, options = {}) {
|
|
17
|
+
this.submissionStrategy = submissionStrategy;
|
|
18
|
+
this.chains = chains;
|
|
19
|
+
this.multiProvider = multiProvider;
|
|
20
|
+
this.options = options;
|
|
21
|
+
this.logger =
|
|
22
|
+
options?.logger ||
|
|
23
|
+
rootLogger.child({
|
|
24
|
+
module: 'MultiProtocolSignerManager',
|
|
25
|
+
});
|
|
26
|
+
this.signerStrategies = new Map();
|
|
27
|
+
this.signers = new Map();
|
|
28
|
+
this.initializeStrategies();
|
|
29
|
+
}
|
|
30
|
+
/**
|
|
31
|
+
* @notice Sets up chain-specific signer strategies
|
|
32
|
+
*/
|
|
33
|
+
initializeStrategies() {
|
|
34
|
+
for (const chain of this.chains) {
|
|
35
|
+
const strategy = MultiProtocolSignerFactory.getSignerStrategy(chain, this.submissionStrategy, this.multiProvider);
|
|
36
|
+
this.signerStrategies.set(chain, strategy);
|
|
37
|
+
}
|
|
38
|
+
}
|
|
39
|
+
/**
|
|
40
|
+
* @dev Configures signers for EVM chains in MultiProvider
|
|
41
|
+
*/
|
|
42
|
+
async getMultiProvider() {
|
|
43
|
+
for (const chain of this.chains) {
|
|
44
|
+
const signer = await this.initSigner(chain);
|
|
45
|
+
this.multiProvider.setSigner(chain, signer);
|
|
46
|
+
}
|
|
47
|
+
return this.multiProvider;
|
|
48
|
+
}
|
|
49
|
+
/**
|
|
50
|
+
* @notice Creates signer for specific chain
|
|
51
|
+
*/
|
|
52
|
+
async initSigner(chain) {
|
|
53
|
+
const { privateKey } = await this.resolveConfig(chain);
|
|
54
|
+
const signerStrategy = this.signerStrategies.get(chain);
|
|
55
|
+
assert(signerStrategy, `No signer strategy found for chain ${chain}`);
|
|
56
|
+
return signerStrategy.getSigner({ privateKey });
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* @notice Creates signers for all chains
|
|
60
|
+
*/
|
|
61
|
+
async initAllSigners() {
|
|
62
|
+
const signerConfigs = await this.resolveAllConfigs();
|
|
63
|
+
for (const { chain, privateKey } of signerConfigs) {
|
|
64
|
+
const signerStrategy = this.signerStrategies.get(chain);
|
|
65
|
+
if (signerStrategy) {
|
|
66
|
+
this.signers.set(chain, signerStrategy.getSigner({ privateKey }));
|
|
67
|
+
}
|
|
68
|
+
}
|
|
69
|
+
return this.signers;
|
|
70
|
+
}
|
|
71
|
+
/**
|
|
72
|
+
* @notice Resolves all chain configurations
|
|
73
|
+
*/
|
|
74
|
+
async resolveAllConfigs() {
|
|
75
|
+
return Promise.all(this.chains.map((chain) => this.resolveConfig(chain)));
|
|
76
|
+
}
|
|
77
|
+
/**
|
|
78
|
+
* @notice Resolves single chain configuration
|
|
79
|
+
*/
|
|
80
|
+
async resolveConfig(chain) {
|
|
81
|
+
const signerStrategy = this.signerStrategies.get(chain);
|
|
82
|
+
assert(signerStrategy, `No signer strategy found for chain ${chain}`);
|
|
83
|
+
let privateKey;
|
|
84
|
+
if (this.options.key) {
|
|
85
|
+
this.logger.debug(`Using private key passed via CLI --key flag for chain ${chain}`);
|
|
86
|
+
privateKey = this.options.key;
|
|
87
|
+
}
|
|
88
|
+
else if (ENV.HYP_KEY) {
|
|
89
|
+
this.logger.debug(`Using private key from .env for chain ${chain}`);
|
|
90
|
+
privateKey = ENV.HYP_KEY;
|
|
91
|
+
}
|
|
92
|
+
else {
|
|
93
|
+
privateKey = await this.extractPrivateKey(chain, signerStrategy);
|
|
94
|
+
}
|
|
95
|
+
return { chain, privateKey };
|
|
96
|
+
}
|
|
97
|
+
/**
|
|
98
|
+
* @notice Gets private key from strategy
|
|
99
|
+
*/
|
|
100
|
+
async extractPrivateKey(chain, signerStrategy) {
|
|
101
|
+
const strategyConfig = await signerStrategy.getSignerConfig(chain);
|
|
102
|
+
assert(strategyConfig.privateKey, `No private key found for chain ${chain}`);
|
|
103
|
+
this.logger.debug(`Extracting private key from strategy config/user prompt for chain ${chain}`);
|
|
104
|
+
return strategyConfig.privateKey;
|
|
105
|
+
}
|
|
106
|
+
}
|
|
107
|
+
//# sourceMappingURL=MultiProtocolSignerManager.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"MultiProtocolSignerManager.js","sourceRoot":"","sources":["../../../../../src/context/strategies/signer/MultiProtocolSignerManager.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
import type { ethers } from 'ethers';
|
|
2
2
|
import type { CommandModule } from 'yargs';
|
|
3
3
|
import type { IRegistry } from '@hyperlane-xyz/registry';
|
|
4
|
-
import type { ChainMap, ChainMetadata, MultiProvider } from '@hyperlane-xyz/sdk';
|
|
4
|
+
import type { ChainMap, ChainMetadata, MultiProvider, WarpCoreConfig } from '@hyperlane-xyz/sdk';
|
|
5
5
|
export interface ContextSettings {
|
|
6
6
|
registryUri: string;
|
|
7
7
|
registryOverrideUri: string;
|
|
@@ -10,6 +10,7 @@ export interface ContextSettings {
|
|
|
10
10
|
requiresKey?: boolean;
|
|
11
11
|
disableProxy?: boolean;
|
|
12
12
|
skipConfirmation?: boolean;
|
|
13
|
+
strategyPath?: string;
|
|
13
14
|
}
|
|
14
15
|
export interface CommandContext {
|
|
15
16
|
registry: IRegistry;
|
|
@@ -17,7 +18,9 @@ export interface CommandContext {
|
|
|
17
18
|
multiProvider: MultiProvider;
|
|
18
19
|
skipConfirmation: boolean;
|
|
19
20
|
key?: string;
|
|
20
|
-
|
|
21
|
+
signerAddress?: string;
|
|
22
|
+
warpCoreConfig?: WarpCoreConfig;
|
|
23
|
+
strategyPath?: string;
|
|
21
24
|
}
|
|
22
25
|
export interface WriteCommandContext extends CommandContext {
|
|
23
26
|
key: string;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/context/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,aAAa,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/context/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,aAAa,EACb,cAAc,EACf,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,YAAY,CAAC,EAAE,OAAO,CAAC;IACvB,gBAAgB,CAAC,EAAE,OAAO,CAAC;IAC3B,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IACvC,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IAEb,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,cAAc,CAAC;IAChC,YAAY,CAAC,EAAE,MAAM,CAAC;CACvB;AAED,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,wBAAwB,CAAC,IAAI,IAAI,aAAa,CACxD,EAAE,EACF,IAAI,GAAG;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,CACnC,CAAC;AAEF,MAAM,MAAM,6BAA6B,CAAC,IAAI,IAAI,aAAa,CAC7D,EAAE,EACF,IAAI,GAAG;IAAE,OAAO,EAAE,mBAAmB,CAAA;CAAE,CACxC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/deploy/agent.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQrD,wBAAsB,sBAAsB,CAAC,EAC3C,OAAO,EACP,WAAW,EACX,WAAW,EACX,sBAAsB,GACvB,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/deploy/agent.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQrD,wBAAsB,sBAAsB,CAAC,EAC3C,OAAO,EACP,WAAW,EACX,WAAW,EACX,sBAAsB,GACvB,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,iBA0DA"}
|
package/dist/src/deploy/agent.js
CHANGED
|
@@ -4,8 +4,9 @@ import { logBlue, logGreen } from '../logger.js';
|
|
|
4
4
|
import { runMultiChainSelectionStep, runSingleChainSelectionStep, } from '../utils/chains.js';
|
|
5
5
|
import { readJson, runFileSelectionStep } from '../utils/files.js';
|
|
6
6
|
export async function runKurtosisAgentDeploy({ context, originChain, relayChains, agentConfigurationPath, }) {
|
|
7
|
+
// Future works: decide what to do with this, since its handled in MultiChainResolver - AGENT_KURTOSIS mode
|
|
7
8
|
if (!originChain) {
|
|
8
|
-
originChain = await runSingleChainSelectionStep(context.chainMetadata, 'Select the origin chain');
|
|
9
|
+
originChain = await runSingleChainSelectionStep(context.chainMetadata, 'Select the origin chain:');
|
|
9
10
|
}
|
|
10
11
|
if (!relayChains) {
|
|
11
12
|
const selectedRelayChains = await runMultiChainSelectionStep({
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/deploy/agent.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,OAAO,EACP,WAAW,EACX,WAAW,EACX,sBAAsB,GAMvB;IACC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,MAAM,2BAA2B,CAC7C,OAAO,CAAC,aAAa,EACrB,
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/deploy/agent.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,OAAO,EACP,WAAW,EACX,WAAW,EACX,sBAAsB,GAMvB;IACC,2GAA2G;IAC3G,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,MAAM,2BAA2B,CAC7C,OAAO,CAAC,aAAa,EACrB,0BAA0B,CAC3B,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,mBAAmB,GAAG,MAAM,0BAA0B,CAAC;YAC3D,aAAa,EAAE,OAAO,CAAC,aAAa;YACpC,OAAO,EAAE,gCAAgC;YACzC,aAAa,EAAE,CAAC;SACjB,CAAC,CAAC;QACH,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,OAAO,CACL,IAAI,EACJ,mFAAmF,CACpF,CAAC;QACF,sBAAsB,GAAG,MAAM,oBAAoB,CACjD,WAAW,EACX,mBAAmB,EACnB,cAAc,CACf,CAAC;IACJ,CAAC;IACD,MAAM,iBAAiB,GAAG,QAAQ,CAAM,sBAAsB,CAAC,CAAC;IAEhE,MAAM,oBAAoB,GAAG;QAC3B,IAAI,EAAE,IAAI;QACV,iBAAiB,EAAE,WAAW;QAC9B,YAAY,EAAE,WAAW;QACzB,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;KACrD,CAAC;IAEF,MAAM,qBAAqB,GAAG;QAC5B,eAAe,EAAE,IAAI;QACrB,IAAI,EAAE,oBAAoB;KAC3B,CAAC;IAEF,MAAM,0BAA0B,GAAG,QAAQ,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;IACzE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;IAEzE,MAAM,iBAAiB,GAAG,YAAY,CACpC,uDAAuD,EACvD,gBAAgB,EAChB,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE,CACrC,CAAC;IAEF,QAAQ,CACN,IAAI,EACJ,0EAA0E,EAC1E,IAAI,EACJ,GAAG,iBAAiB,EAAE,CACvB,CAAC;IACF,OAAO;AACT,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,YAAoB,EAAE,EAAE,CACnD,qHAAqH,YAAY,EAAE,CAAC"}
|
package/dist/src/deploy/core.js
CHANGED
|
@@ -13,7 +13,7 @@ import { completeDeploy, prepareDeploy, runDeployPlanStep, runPreflightChecksFor
|
|
|
13
13
|
export async function runCoreDeploy(params) {
|
|
14
14
|
const { context, config } = params;
|
|
15
15
|
let chain = params.chain;
|
|
16
|
-
const {
|
|
16
|
+
const { isDryRun, chainMetadata, dryRunChain, registry, skipConfirmation, multiProvider, } = context;
|
|
17
17
|
// Select a dry-run chain if it's not supplied
|
|
18
18
|
if (dryRunChain) {
|
|
19
19
|
chain = dryRunChain;
|
|
@@ -26,8 +26,9 @@ export async function runCoreDeploy(params) {
|
|
|
26
26
|
let apiKeys = {};
|
|
27
27
|
if (!skipConfirmation)
|
|
28
28
|
apiKeys = await requestAndSaveApiKeys([chain], chainMetadata, registry);
|
|
29
|
+
const signer = multiProvider.getSigner(chain);
|
|
29
30
|
const deploymentParams = {
|
|
30
|
-
context,
|
|
31
|
+
context: { ...context, signer },
|
|
31
32
|
chain,
|
|
32
33
|
config,
|
|
33
34
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,IAAI,aAAa,EAAE,MAAM,MAAM,CAAC;AAElD,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAGL,gBAAgB,EAGhB,aAAa,EACb,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AACvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,uBAAuB,CAAC;AAE9D,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC/D,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,gBAAgB,EAAE,MAAM,mBAAmB,CAAC;AAErD,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,YAAY,CAAC;AAYpB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,MAAoB;IACtD,MAAM,EAAE,OAAO,EAAE,MAAM,EAAE,GAAG,MAAM,CAAC;IACnC,IAAI,KAAK,GAAG,MAAM,CAAC,KAAK,CAAC;IAEzB,MAAM,EACJ,
|
|
1
|
+
{"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,6 +14,6 @@ export declare function runDeployPlanStep({ context, chain, }: {
|
|
|
14
14
|
}): Promise<void>;
|
|
15
15
|
export declare function isISMConfig(config: ChainMap<MultisigConfig> | ChainMap<IsmConfig>): boolean;
|
|
16
16
|
export declare function isZODISMConfig(filepath: string): boolean;
|
|
17
|
-
export declare function prepareDeploy(context: WriteCommandContext, userAddress: Address, chains: ChainName[]): Promise<Record<string, BigNumber>>;
|
|
18
|
-
export declare function completeDeploy(context: WriteCommandContext, command: string, initialBalances: Record<string, BigNumber>, userAddress: Address, chains: ChainName[]): Promise<void>;
|
|
17
|
+
export declare function prepareDeploy(context: WriteCommandContext, userAddress: Address | null, chains: ChainName[]): Promise<Record<string, BigNumber>>;
|
|
18
|
+
export declare function completeDeploy(context: WriteCommandContext, command: string, initialBalances: Record<string, BigNumber>, userAddress: Address | null, chains: ChainName[]): Promise<void>;
|
|
19
19
|
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/deploy/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAU,MAAM,QAAQ,CAAC;AAE3C,OAAO,EACL,QAAQ,EAER,SAAS,EACT,SAAS,EACT,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAgB,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAkB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAe1E,wBAAsB,2BAA2B,CAAC,EAChD,OAAO,EACP,MAAM,EACN,MAAM,EACN,gBAAgB,GACjB,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IAGf,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC;CAChC,iBAsBA;AAED,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,KAAK,GACN,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,KAAK,EAAE,SAAS,CAAC;CAClB,
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/deploy/utils.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,SAAS,EAAU,MAAM,QAAQ,CAAC;AAE3C,OAAO,EACL,QAAQ,EAER,SAAS,EACT,SAAS,EACT,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAgB,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAkB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAe1E,wBAAsB,2BAA2B,CAAC,EAChD,OAAO,EACP,MAAM,EACN,MAAM,EACN,gBAAgB,GACjB,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IAGf,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC;CAChC,iBAsBA;AAED,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,KAAK,GACN,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,KAAK,EAAE,SAAS,CAAC;CAClB,iBA2BA;AAoBD,wBAAgB,WAAW,CACzB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,GACrD,OAAO,CAET;AAGD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,mBAAmB,EAC5B,WAAW,EAAE,OAAO,GAAG,IAAI,EAC3B,MAAM,EAAE,SAAS,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAepC;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAC1C,WAAW,EAAE,OAAO,GAAG,IAAI,EAC3B,MAAM,EAAE,SAAS,EAAE,iBAuBpB"}
|
package/dist/src/deploy/utils.js
CHANGED
|
@@ -10,7 +10,7 @@ import { assertSigner } from '../utils/keys.js';
|
|
|
10
10
|
import { completeDryRun } from './dry-run.js';
|
|
11
11
|
export async function runPreflightChecksForChains({ context, chains, minGas, chainsToGasCheck, }) {
|
|
12
12
|
log('Running pre-flight checks for chains...');
|
|
13
|
-
const {
|
|
13
|
+
const { multiProvider, skipConfirmation } = context;
|
|
14
14
|
if (!chains?.length)
|
|
15
15
|
throw new Error('Empty chain selection');
|
|
16
16
|
for (const chain of chains) {
|
|
@@ -19,15 +19,16 @@ export async function runPreflightChecksForChains({ context, chains, minGas, cha
|
|
|
19
19
|
throw new Error(`No chain config found for ${chain}`);
|
|
20
20
|
if (metadata.protocol !== ProtocolType.Ethereum)
|
|
21
21
|
throw new Error('Only Ethereum chains are supported for now');
|
|
22
|
+
const signer = multiProvider.getSigner(chain);
|
|
23
|
+
assertSigner(signer);
|
|
24
|
+
logGreen(`✅ ${chain} signer is valid`);
|
|
22
25
|
}
|
|
23
26
|
logGreen('✅ Chains are valid');
|
|
24
|
-
|
|
25
|
-
logGreen('✅ Signer is valid');
|
|
26
|
-
await nativeBalancesAreSufficient(multiProvider, signer, chainsToGasCheck ?? chains, minGas);
|
|
27
|
+
await nativeBalancesAreSufficient(multiProvider, chainsToGasCheck ?? chains, minGas, skipConfirmation);
|
|
27
28
|
}
|
|
28
29
|
export async function runDeployPlanStep({ context, chain, }) {
|
|
29
|
-
const {
|
|
30
|
-
const address = await
|
|
30
|
+
const { chainMetadata: chainMetadataMap, multiProvider, skipConfirmation, } = context;
|
|
31
|
+
const address = await multiProvider.getSigner(chain).getAddress();
|
|
31
32
|
logBlue('\nDeployment plan');
|
|
32
33
|
logGray('===============');
|
|
33
34
|
log(`Transaction signer and owner of new contracts: ${address}`);
|
|
@@ -71,7 +72,8 @@ export async function prepareDeploy(context, userAddress, chains) {
|
|
|
71
72
|
const provider = isDryRun
|
|
72
73
|
? getLocalProvider(ENV.ANVIL_IP_ADDR, ENV.ANVIL_PORT)
|
|
73
74
|
: multiProvider.getProvider(chain);
|
|
74
|
-
const
|
|
75
|
+
const address = userAddress ?? (await multiProvider.getSigner(chain).getAddress());
|
|
76
|
+
const currentBalance = await provider.getBalance(address);
|
|
75
77
|
initialBalances[chain] = currentBalance;
|
|
76
78
|
}));
|
|
77
79
|
return initialBalances;
|
|
@@ -84,7 +86,8 @@ export async function completeDeploy(context, command, initialBalances, userAddr
|
|
|
84
86
|
const provider = isDryRun
|
|
85
87
|
? getLocalProvider(ENV.ANVIL_IP_ADDR, ENV.ANVIL_PORT)
|
|
86
88
|
: multiProvider.getProvider(chain);
|
|
87
|
-
const
|
|
89
|
+
const address = userAddress ?? (await multiProvider.getSigner(chain).getAddress());
|
|
90
|
+
const currentBalance = await provider.getBalance(address);
|
|
88
91
|
const balanceDelta = initialBalances[chain].sub(currentBalance);
|
|
89
92
|
if (isDryRun && balanceDelta.lt(0))
|
|
90
93
|
break;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/deploy/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAa,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE3C,OAAO,EAML,gBAAgB,GACjB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAW,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAE7D,OAAO,EAAE,cAAc,EAAE,MAAM,kBAAkB,CAAC;AAElD,OAAO,EACL,GAAG,EACH,OAAO,EACP,OAAO,EACP,QAAQ,EACR,OAAO,EACP,QAAQ,GACT,MAAM,cAAc,CAAC;AACtB,OAAO,EAAE,2BAA2B,EAAE,MAAM,sBAAsB,CAAC;AACnE,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AACtC,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,OAAO,EAAE,cAAc,EAAE,MAAM,cAAc,CAAC;AAE9C,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,EAChD,OAAO,EACP,MAAM,EACN,MAAM,EACN,gBAAgB,GAQjB;IACC,GAAG,CAAC,yCAAyC,CAAC,CAAC;IAC/C,MAAM,EAAE,
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/deploy/utils.ts"],"names":[],"mappings":"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"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warp.d.ts","sourceRoot":"","sources":["../../../src/deploy/warp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"warp.d.ts","sourceRoot":"","sources":["../../../src/deploy/warp.ts"],"names":[],"mappings":"AAOA,OAAO,EAKL,uBAAuB,EAgCvB,cAAc,EAEd,qBAAqB,EAQtB,MAAM,oBAAoB,CAAC;AAe5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAiB1D,UAAU,YAAY;IACpB,OAAO,EAAE,mBAAmB,CAAC;IAC7B,gBAAgB,EAAE,qBAAqB,CAAC;CACzC;AAED,UAAU,eAAgB,SAAQ,YAAY;IAC5C,cAAc,EAAE,cAAc,CAAC;IAC/B,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,EAAE,MAAM,CAAC;CACrB;AAED,wBAAsB,kBAAkB,CAAC,EACvC,OAAO,EACP,6BAA6B,GAC9B,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,6BAA6B,CAAC,EAAE,MAAM,CAAC;CACxC,iBA4DA;AAsVD,wBAAsB,iBAAiB,CACrC,MAAM,EAAE,eAAe,GACtB,OAAO,CAAC,IAAI,CAAC,CAuCf;AAuHD;;;;GAIG;AACH,wBAAgB,2BAA2B,CACzC,0BAA0B,EAAE,MAAM,GACjC,uBAAuB,CAKzB"}
|
package/dist/src/deploy/warp.js
CHANGED
|
@@ -1,8 +1,9 @@
|
|
|
1
1
|
import { confirm } from '@inquirer/prompts';
|
|
2
2
|
import { groupBy } from 'lodash-es';
|
|
3
3
|
import { stringify as yamlStringify } from 'yaml';
|
|
4
|
+
import { ProxyAdmin__factory } from '@hyperlane-xyz/core';
|
|
4
5
|
import { buildArtifact as coreBuildArtifact } from '@hyperlane-xyz/core/buildArtifact.js';
|
|
5
|
-
import { ChainSubmissionStrategySchema, ContractVerifier, EvmERC20WarpModule, EvmERC20WarpRouteReader, EvmIsmModule, ExplorerLicenseType, HypERC20Deployer, HypERC721Deployer, HyperlaneProxyFactoryDeployer, IsmType, TOKEN_TYPE_TO_STANDARD, TxSubmitterType, WarpCoreConfigSchema, WarpRouteDeployConfigSchema, attachContractsMap, connectContractsMap, getTokenConnectionId, hypERC20factories,
|
|
6
|
+
import { ChainSubmissionStrategySchema, ContractVerifier, EvmERC20WarpModule, EvmERC20WarpRouteReader, EvmHookModule, EvmIsmModule, ExplorerLicenseType, HypERC20Deployer, HypERC721Deployer, HyperlaneProxyFactoryDeployer, IsmType, TOKEN_TYPE_TO_STANDARD, TxSubmitterType, WarpCoreConfigSchema, WarpRouteDeployConfigSchema, attachContractsMap, connectContractsMap, getTokenConnectionId, hypERC20factories, isCollateralTokenConfig, isTokenMetadata, } from '@hyperlane-xyz/sdk';
|
|
6
7
|
import { ProtocolType, assert, objFilter, objKeys, objMap, promiseObjAll, retryAsync, } from '@hyperlane-xyz/utils';
|
|
7
8
|
import { readWarpRouteDeployConfig } from '../config/warp.js';
|
|
8
9
|
import { MINIMUM_WARP_DEPLOY_GAS } from '../consts.js';
|
|
@@ -12,7 +13,7 @@ import { getSubmitterBuilder } from '../submit/submit.js';
|
|
|
12
13
|
import { indentYamlOrJson, isFile, readYamlOrJson, runFileSelectionStep, writeYamlOrJson, } from '../utils/files.js';
|
|
13
14
|
import { completeDeploy, prepareDeploy, runPreflightChecksForChains, } from './utils.js';
|
|
14
15
|
export async function runWarpRouteDeploy({ context, warpRouteDeploymentConfigPath, }) {
|
|
15
|
-
const {
|
|
16
|
+
const { skipConfirmation, chainMetadata, registry } = context;
|
|
16
17
|
if (!warpRouteDeploymentConfigPath ||
|
|
17
18
|
!isFile(warpRouteDeploymentConfigPath)) {
|
|
18
19
|
if (skipConfirmation)
|
|
@@ -39,12 +40,11 @@ export async function runWarpRouteDeploy({ context, warpRouteDeploymentConfigPat
|
|
|
39
40
|
chains: ethereumChains,
|
|
40
41
|
minGas: MINIMUM_WARP_DEPLOY_GAS,
|
|
41
42
|
});
|
|
42
|
-
const
|
|
43
|
-
const initialBalances = await prepareDeploy(context, userAddress, ethereumChains);
|
|
43
|
+
const initialBalances = await prepareDeploy(context, null, ethereumChains);
|
|
44
44
|
const deployedContracts = await executeDeploy(deploymentParams, apiKeys);
|
|
45
45
|
const warpCoreConfig = await getWarpCoreConfig(deploymentParams, deployedContracts);
|
|
46
46
|
await writeDeploymentArtifacts(warpCoreConfig, context);
|
|
47
|
-
await completeDeploy(context, 'warp', initialBalances,
|
|
47
|
+
await completeDeploy(context, 'warp', initialBalances, null, ethereumChains);
|
|
48
48
|
}
|
|
49
49
|
async function runDeployPlanStep({ context, warpDeployConfig }) {
|
|
50
50
|
const { skipConfirmation } = context;
|
|
@@ -59,7 +59,7 @@ async function runDeployPlanStep({ context, warpDeployConfig }) {
|
|
|
59
59
|
}
|
|
60
60
|
async function executeDeploy(params, apiKeys) {
|
|
61
61
|
logBlue('🚀 All systems ready, captain! Beginning deployment...');
|
|
62
|
-
const { warpDeployConfig, context: {
|
|
62
|
+
const { warpDeployConfig, context: { multiProvider, isDryRun, dryRunChain }, } = params;
|
|
63
63
|
const deployer = warpDeployConfig.isNft
|
|
64
64
|
? new HypERC721Deployer(multiProvider)
|
|
65
65
|
: new HypERC20Deployer(multiProvider); // TODO: replace with EvmERC20WarpModule
|
|
@@ -69,8 +69,8 @@ async function executeDeploy(params, apiKeys) {
|
|
|
69
69
|
const contractVerifier = new ContractVerifier(multiProvider, apiKeys, coreBuildArtifact, ExplorerLicenseType.MIT);
|
|
70
70
|
const ismFactoryDeployer = new HyperlaneProxyFactoryDeployer(multiProvider, contractVerifier);
|
|
71
71
|
// For each chain in WarpRouteConfig, deploy each Ism Factory, if it's not in the registry
|
|
72
|
-
// Then return a modified config with the ism address as a string
|
|
73
|
-
const modifiedConfig = await
|
|
72
|
+
// Then return a modified config with the ism and/or hook address as a string
|
|
73
|
+
const modifiedConfig = await resolveWarpIsmAndHook(config, params.context, ismFactoryDeployer, contractVerifier);
|
|
74
74
|
const deployedContracts = await deployer.deploy(modifiedConfig);
|
|
75
75
|
logGreen('✅ Warp contract deployments complete');
|
|
76
76
|
return deployedContracts;
|
|
@@ -82,33 +82,29 @@ async function writeDeploymentArtifacts(warpCoreConfig, context) {
|
|
|
82
82
|
}
|
|
83
83
|
log(indentYamlOrJson(yamlStringify(warpCoreConfig, null, 2), 4));
|
|
84
84
|
}
|
|
85
|
-
async function
|
|
85
|
+
async function resolveWarpIsmAndHook(warpConfig, context, ismFactoryDeployer, contractVerifier) {
|
|
86
86
|
return promiseObjAll(objMap(warpConfig, async (chain, config) => {
|
|
87
|
-
|
|
88
|
-
typeof config.interchainSecurityModule === 'string') {
|
|
89
|
-
logGray(`Config Ism is ${!config.interchainSecurityModule
|
|
90
|
-
? 'empty'
|
|
91
|
-
: config.interchainSecurityModule}, skipping deployment.`);
|
|
92
|
-
return config;
|
|
93
|
-
}
|
|
94
|
-
logBlue(`Loading registry factory addresses for ${chain}...`);
|
|
95
|
-
let chainAddresses = await registry.getChainAddresses(chain);
|
|
87
|
+
const chainAddresses = await context.registry.getChainAddresses(chain);
|
|
96
88
|
if (!chainAddresses) {
|
|
97
|
-
|
|
98
|
-
chainAddresses = serializeContracts(await ismFactoryDeployer.deployContracts(chain));
|
|
89
|
+
throw `Registry factory addresses not found for ${chain}.`;
|
|
99
90
|
}
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
91
|
+
config.interchainSecurityModule = await createWarpIsm({
|
|
92
|
+
chain,
|
|
93
|
+
chainAddresses,
|
|
94
|
+
context,
|
|
95
|
+
contractVerifier,
|
|
96
|
+
ismFactoryDeployer,
|
|
97
|
+
warpConfig: config,
|
|
98
|
+
}); // TODO write test
|
|
99
|
+
config.hook = await createWarpHook({
|
|
100
|
+
chain,
|
|
101
|
+
chainAddresses,
|
|
102
|
+
context,
|
|
103
|
+
contractVerifier,
|
|
104
|
+
ismFactoryDeployer,
|
|
105
|
+
warpConfig: config,
|
|
106
|
+
});
|
|
107
|
+
return config;
|
|
112
108
|
}));
|
|
113
109
|
}
|
|
114
110
|
/**
|
|
@@ -116,12 +112,21 @@ async function deployAndResolveWarpIsm(warpConfig, multiProvider, registry, ismF
|
|
|
116
112
|
*
|
|
117
113
|
* @returns The deployed ism address
|
|
118
114
|
*/
|
|
119
|
-
async function createWarpIsm(chain,
|
|
120
|
-
const {
|
|
115
|
+
async function createWarpIsm({ chain, chainAddresses, context, contractVerifier, warpConfig, }) {
|
|
116
|
+
const { interchainSecurityModule } = warpConfig;
|
|
117
|
+
if (!interchainSecurityModule ||
|
|
118
|
+
typeof interchainSecurityModule === 'string') {
|
|
119
|
+
logGray(`Config Ism is ${!interchainSecurityModule ? 'empty' : interchainSecurityModule}, skipping deployment.`);
|
|
120
|
+
return interchainSecurityModule;
|
|
121
|
+
}
|
|
122
|
+
logBlue(`Loading registry factory addresses for ${chain}...`);
|
|
123
|
+
logGray(`Creating ${interchainSecurityModule.type} ISM for token on ${chain} chain...`);
|
|
124
|
+
logGreen(`Finished creating ${interchainSecurityModule.type} ISM for token on ${chain} chain.`);
|
|
125
|
+
const { mailbox, domainRoutingIsmFactory, staticAggregationHookFactory, staticAggregationIsmFactory, staticMerkleRootMultisigIsmFactory, staticMessageIdMultisigIsmFactory, staticMerkleRootWeightedMultisigIsmFactory, staticMessageIdWeightedMultisigIsmFactory, } = chainAddresses;
|
|
121
126
|
const evmIsmModule = await EvmIsmModule.create({
|
|
122
127
|
chain,
|
|
123
|
-
|
|
124
|
-
|
|
128
|
+
mailbox,
|
|
129
|
+
multiProvider: context.multiProvider,
|
|
125
130
|
proxyFactoryFactories: {
|
|
126
131
|
domainRoutingIsmFactory,
|
|
127
132
|
staticAggregationHookFactory,
|
|
@@ -131,12 +136,48 @@ async function createWarpIsm(chain, warpConfig, multiProvider, factoryAddresses,
|
|
|
131
136
|
staticMerkleRootWeightedMultisigIsmFactory,
|
|
132
137
|
staticMessageIdWeightedMultisigIsmFactory,
|
|
133
138
|
},
|
|
134
|
-
config:
|
|
139
|
+
config: interchainSecurityModule,
|
|
135
140
|
contractVerifier,
|
|
136
141
|
});
|
|
137
142
|
const { deployedIsm } = evmIsmModule.serialize();
|
|
138
143
|
return deployedIsm;
|
|
139
144
|
}
|
|
145
|
+
async function createWarpHook({ chain, chainAddresses, context, contractVerifier, warpConfig, }) {
|
|
146
|
+
const { hook } = warpConfig;
|
|
147
|
+
if (!hook || typeof hook === 'string') {
|
|
148
|
+
logGray(`Config Hook is ${!hook ? 'empty' : hook}, skipping deployment.`);
|
|
149
|
+
return hook;
|
|
150
|
+
}
|
|
151
|
+
logBlue(`Loading registry factory addresses for ${chain}...`);
|
|
152
|
+
logGray(`Creating ${hook.type} Hook for token on ${chain} chain...`);
|
|
153
|
+
const { mailbox, domainRoutingIsmFactory, staticAggregationHookFactory, staticAggregationIsmFactory, staticMerkleRootMultisigIsmFactory, staticMessageIdMultisigIsmFactory, staticMerkleRootWeightedMultisigIsmFactory, staticMessageIdWeightedMultisigIsmFactory, } = chainAddresses;
|
|
154
|
+
const proxyFactoryFactories = {
|
|
155
|
+
domainRoutingIsmFactory,
|
|
156
|
+
staticAggregationHookFactory,
|
|
157
|
+
staticAggregationIsmFactory,
|
|
158
|
+
staticMerkleRootMultisigIsmFactory,
|
|
159
|
+
staticMessageIdMultisigIsmFactory,
|
|
160
|
+
staticMerkleRootWeightedMultisigIsmFactory,
|
|
161
|
+
staticMessageIdWeightedMultisigIsmFactory,
|
|
162
|
+
};
|
|
163
|
+
// If config.proxyadmin.address exists, then use that. otherwise deploy a new proxyAdmin
|
|
164
|
+
const proxyAdminAddress = warpConfig.proxyAdmin?.address ??
|
|
165
|
+
(await context.multiProvider.handleDeploy(chain, new ProxyAdmin__factory(), [])).address;
|
|
166
|
+
const evmHookModule = await EvmHookModule.create({
|
|
167
|
+
chain,
|
|
168
|
+
multiProvider: context.multiProvider,
|
|
169
|
+
coreAddresses: {
|
|
170
|
+
mailbox,
|
|
171
|
+
proxyAdmin: proxyAdminAddress,
|
|
172
|
+
},
|
|
173
|
+
config: hook,
|
|
174
|
+
contractVerifier,
|
|
175
|
+
proxyFactoryFactories,
|
|
176
|
+
});
|
|
177
|
+
logGreen(`Finished creating ${hook.type} Hook for token on ${chain} chain.`);
|
|
178
|
+
const { deployedHook } = evmHookModule.serialize();
|
|
179
|
+
return deployedHook;
|
|
180
|
+
}
|
|
140
181
|
async function getWarpCoreConfig({ warpDeployConfig, context }, contracts) {
|
|
141
182
|
const warpCoreConfig = { tokens: [] };
|
|
142
183
|
// TODO: replace with warp read
|
|
@@ -154,7 +195,7 @@ async function getWarpCoreConfig({ warpDeployConfig, context }, contracts) {
|
|
|
154
195
|
function generateTokenConfigs(warpCoreConfig, warpDeployConfig, contracts, symbol, name, decimals) {
|
|
155
196
|
for (const [chainName, contract] of Object.entries(contracts)) {
|
|
156
197
|
const config = warpDeployConfig[chainName];
|
|
157
|
-
const collateralAddressOrDenom =
|
|
198
|
+
const collateralAddressOrDenom = isCollateralTokenConfig(config)
|
|
158
199
|
? config.token // gets set in the above deriveTokenMetadata()
|
|
159
200
|
: undefined;
|
|
160
201
|
warpCoreConfig.tokens.push({
|