@hyperlane-xyz/cli 1.5.3 → 1.5.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (87) hide show
  1. package/dist/cli.d.ts +1 -1
  2. package/dist/cli.d.ts.map +1 -1
  3. package/dist/cli.js +4 -2
  4. package/dist/cli.js.map +1 -1
  5. package/dist/logger.d.ts.map +1 -0
  6. package/dist/{src/logger.js → logger.js} +19 -1
  7. package/dist/logger.js.map +1 -0
  8. package/dist/src/commands/chains.js +1 -1
  9. package/dist/src/commands/chains.js.map +1 -1
  10. package/dist/src/commands/config.js +1 -1
  11. package/dist/src/commands/config.js.map +1 -1
  12. package/dist/src/commands/deploy.d.ts.map +1 -1
  13. package/dist/src/commands/deploy.js +36 -4
  14. package/dist/src/commands/deploy.js.map +1 -1
  15. package/dist/src/commands/options.d.ts +1 -0
  16. package/dist/src/commands/options.d.ts.map +1 -1
  17. package/dist/src/commands/options.js +8 -2
  18. package/dist/src/commands/options.js.map +1 -1
  19. package/dist/src/commands/send.d.ts.map +1 -1
  20. package/dist/src/commands/send.js +19 -1
  21. package/dist/src/commands/send.js.map +1 -1
  22. package/dist/src/commands/status.d.ts +3 -0
  23. package/dist/src/commands/status.d.ts.map +1 -0
  24. package/dist/src/commands/status.js +34 -0
  25. package/dist/src/commands/status.js.map +1 -0
  26. package/dist/src/config/chain.js +1 -1
  27. package/dist/src/config/chain.js.map +1 -1
  28. package/dist/src/config/multisig.d.ts.map +1 -1
  29. package/dist/src/config/multisig.js +4 -1
  30. package/dist/src/config/multisig.js.map +1 -1
  31. package/dist/src/config/warp.js +1 -1
  32. package/dist/src/config/warp.js.map +1 -1
  33. package/dist/src/consts.d.ts.map +1 -1
  34. package/dist/src/consts.js +1 -0
  35. package/dist/src/consts.js.map +1 -1
  36. package/dist/src/context.d.ts +5 -1
  37. package/dist/src/context.d.ts.map +1 -1
  38. package/dist/src/context.js +6 -1
  39. package/dist/src/context.js.map +1 -1
  40. package/dist/src/deploy/TestRecipientDeployer.d.ts.map +1 -1
  41. package/dist/src/deploy/TestRecipientDeployer.js +2 -1
  42. package/dist/src/deploy/TestRecipientDeployer.js.map +1 -1
  43. package/dist/src/deploy/core.d.ts +6 -1
  44. package/dist/src/deploy/core.d.ts.map +1 -1
  45. package/dist/src/deploy/core.js +98 -91
  46. package/dist/src/deploy/core.js.map +1 -1
  47. package/dist/src/deploy/utils.d.ts +2 -2
  48. package/dist/src/deploy/utils.d.ts.map +1 -1
  49. package/dist/src/deploy/utils.js +7 -7
  50. package/dist/src/deploy/utils.js.map +1 -1
  51. package/dist/src/deploy/warp.d.ts +4 -3
  52. package/dist/src/deploy/warp.d.ts.map +1 -1
  53. package/dist/src/deploy/warp.js +22 -15
  54. package/dist/src/deploy/warp.js.map +1 -1
  55. package/dist/src/send/message.d.ts +2 -1
  56. package/dist/src/send/message.d.ts.map +1 -1
  57. package/dist/src/send/message.js +24 -13
  58. package/dist/src/send/message.js.map +1 -1
  59. package/dist/src/send/transfer.d.ts +4 -1
  60. package/dist/src/send/transfer.d.ts.map +1 -1
  61. package/dist/src/send/transfer.js +35 -25
  62. package/dist/src/send/transfer.js.map +1 -1
  63. package/dist/src/status/message.d.ts +8 -0
  64. package/dist/src/status/message.d.ts.map +1 -0
  65. package/dist/src/status/message.js +22 -0
  66. package/dist/src/status/message.js.map +1 -0
  67. package/dist/src/utils/chains.d.ts +2 -3
  68. package/dist/src/utils/chains.d.ts.map +1 -1
  69. package/dist/src/utils/chains.js +8 -9
  70. package/dist/src/utils/chains.js.map +1 -1
  71. package/dist/src/utils/files.d.ts +1 -0
  72. package/dist/src/utils/files.d.ts.map +1 -1
  73. package/dist/src/utils/files.js +26 -1
  74. package/dist/src/utils/files.js.map +1 -1
  75. package/dist/src/utils/keys.d.ts.map +1 -1
  76. package/dist/src/utils/keys.js +3 -2
  77. package/dist/src/utils/keys.js.map +1 -1
  78. package/dist/src/utils/time.js +1 -1
  79. package/dist/src/utils/time.js.map +1 -1
  80. package/examples/anvil-chains.yaml +10 -9
  81. package/examples/contract-artifacts.yaml +1 -1
  82. package/examples/multisig-ism.yaml +2 -2
  83. package/examples/warp-tokens.yaml +3 -1
  84. package/package.json +3 -3
  85. package/dist/src/logger.d.ts.map +0 -1
  86. package/dist/src/logger.js.map +0 -1
  87. /package/dist/{src/logger.d.ts → logger.d.ts} +0 -0
@@ -5,6 +5,7 @@ import { eqAddress } from '@hyperlane-xyz/utils';
5
5
  export const testRecipientFactories = {
6
6
  testRecipient: new TestRecipient__factory(),
7
7
  };
8
+ // TODO move this and related configs to the SDK
8
9
  export class TestRecipientDeployer extends HyperlaneDeployer {
9
10
  constructor(multiProvider) {
10
11
  super(multiProvider, testRecipientFactories, {
@@ -18,7 +19,7 @@ export class TestRecipientDeployer extends HyperlaneDeployer {
18
19
  const ism = await testRecipient.interchainSecurityModule();
19
20
  this.logger(`Found ISM for on ${chain}: ${ism}`);
20
21
  if (!eqAddress(ism, config.interchainSecurityModule)) {
21
- this.logger(`Current ISM does not match config. Updating.`);
22
+ this.logger(`Current ISM does not match config. Updating to ${config.interchainSecurityModule}`);
22
23
  const tx = testRecipient.setInterchainSecurityModule(config.interchainSecurityModule);
23
24
  await this.multiProvider.handleTx(chain, tx);
24
25
  }
@@ -1 +1 @@
1
- {"version":3,"file":"TestRecipientDeployer.js","sourceRoot":"","sources":["../../../src/deploy/TestRecipientDeployer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAiB,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAEL,iBAAiB,GAElB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAW,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAc1D,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa,EAAE,IAAI,sBAAsB,EAAE;CAC5C,CAAC;AAEF,MAAM,OAAO,qBAAsB,SAAQ,iBAG1C;IACC,YAAY,aAA4B;QACtC,KAAK,CAAC,aAAa,EAAE,sBAAsB,EAAE;YAC3C,MAAM,EAAE,KAAK,CAAC,iCAAiC,CAAC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,KAAgB,EAChB,MAA2B;QAE3B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;QAC5E,IAAI;YACF,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;YACrC,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,wBAAwB,EAAE,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,oBAAoB,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,EAAE;gBACpD,IAAI,CAAC,MAAM,CAAC,8CAA8C,CAAC,CAAC;gBAC5D,MAAM,EAAE,GAAG,aAAa,CAAC,2BAA2B,CAClD,MAAM,CAAC,wBAAwB,CAChC,CAAC;gBACF,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;aAC9C;SACF;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,kCAAkC,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;SAClD;QACD,OAAO;YACL,aAAa;SACd,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"TestRecipientDeployer.js","sourceRoot":"","sources":["../../../src/deploy/TestRecipientDeployer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAiB,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAEL,iBAAiB,GAElB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAW,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAc1D,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa,EAAE,IAAI,sBAAsB,EAAE;CAC5C,CAAC;AAEF,gDAAgD;AAChD,MAAM,OAAO,qBAAsB,SAAQ,iBAG1C;IACC,YAAY,aAA4B;QACtC,KAAK,CAAC,aAAa,EAAE,sBAAsB,EAAE;YAC3C,MAAM,EAAE,KAAK,CAAC,iCAAiC,CAAC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,KAAgB,EAChB,MAA2B;QAE3B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;QAC5E,IAAI;YACF,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;YACrC,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,wBAAwB,EAAE,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,oBAAoB,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,EAAE;gBACpD,IAAI,CAAC,MAAM,CACT,kDAAkD,MAAM,CAAC,wBAAwB,EAAE,CACpF,CAAC;gBACF,MAAM,EAAE,GAAG,aAAa,CAAC,2BAA2B,CAClD,MAAM,CAAC,wBAAwB,CAChC,CAAC;gBACF,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;aAC9C;SACF;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,kCAAkC,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;SAClD;QACD,OAAO;YACL,aAAa;SACd,CAAC;IACJ,CAAC;CACF"}
@@ -1,6 +1,11 @@
1
- export declare function runCoreDeploy({ key, chainConfigPath, outPath, }: {
1
+ export declare function runCoreDeploy({ key, chainConfigPath, ismConfigPath, artifactsPath, outPath, origin, remotes, skipConfirmation, }: {
2
2
  key: string;
3
3
  chainConfigPath: string;
4
+ ismConfigPath: string;
5
+ artifactsPath?: string;
4
6
  outPath: string;
7
+ origin?: string;
8
+ remotes?: string[];
9
+ skipConfirmation: boolean;
5
10
  }): Promise<void>;
6
11
  //# sourceMappingURL=core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"AAgDA,wBAAsB,aAAa,CAAC,EAClC,GAAG,EACH,eAAe,EACf,OAAO,GACR,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB,iBA2BA"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"AAoDA,wBAAsB,aAAa,CAAC,EAClC,GAAG,EACH,eAAe,EACf,aAAa,EACb,aAAa,EACb,OAAO,EACP,MAAM,EACN,OAAO,EACP,gBAAgB,GACjB,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,aAAa,EAAE,MAAM,CAAC;IACtB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,EAAE,CAAC;IACnB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,iBAgCA"}
@@ -1,29 +1,33 @@
1
- import { confirm, input } from '@inquirer/prompts';
1
+ import { confirm } from '@inquirer/prompts';
2
2
  import { ethers } from 'ethers';
3
3
  import { GasOracleContractType, HyperlaneCoreDeployer, HyperlaneIgpDeployer, HyperlaneIsmFactory, HyperlaneIsmFactoryDeployer, ModuleType, agentStartBlocks, buildAgentConfig, defaultMultisigIsmConfigs, multisigIsmVerificationCost, serializeContractsMap, } from '@hyperlane-xyz/sdk';
4
4
  import { objFilter, objMerge } from '@hyperlane-xyz/utils';
5
+ import { log, logBlue, logGray, logGreen, logRed } from '../../logger.js';
5
6
  import { readDeploymentArtifacts } from '../config/artifacts.js';
6
7
  import { readMultisigConfig } from '../config/multisig.js';
7
8
  import { MINIMUM_CORE_DEPLOY_BALANCE } from '../consts.js';
8
- import { getDeployerContext, getMergedContractAddresses, sdkContractAddressesMap, } from '../context.js';
9
- import { log, logBlue, logGray, logGreen } from '../logger.js';
10
- import { runLocalAndRemotesSelectionStep } from '../utils/chains.js';
11
- import { prepNewArtifactsFiles, writeJson } from '../utils/files.js';
9
+ import { getContextWithSigner, getMergedContractAddresses, sdkContractAddressesMap, } from '../context.js';
10
+ import { runOriginAndRemotesSelectionStep } from '../utils/chains.js';
11
+ import { prepNewArtifactsFiles, runFileSelectionStep, writeJson, } from '../utils/files.js';
12
12
  import { TestRecipientDeployer, } from './TestRecipientDeployer.js';
13
13
  import { runPreflightChecks } from './utils.js';
14
- export async function runCoreDeploy({ key, chainConfigPath, outPath, }) {
15
- const { customChains, multiProvider, signer } = getDeployerContext(key, chainConfigPath);
16
- const { local, remotes, selectedChains } = await runLocalAndRemotesSelectionStep(customChains);
17
- const artifacts = await runArtifactStep(selectedChains);
18
- const multisigConfig = await runIsmStep(selectedChains);
14
+ export async function runCoreDeploy({ key, chainConfigPath, ismConfigPath, artifactsPath, outPath, origin, remotes, skipConfirmation, }) {
15
+ const { customChains, multiProvider, signer } = getContextWithSigner(key, chainConfigPath);
16
+ if (!origin || !remotes?.length) {
17
+ ({ origin, remotes } = await runOriginAndRemotesSelectionStep(customChains));
18
+ }
19
+ const selectedChains = [origin, ...remotes];
20
+ const artifacts = await runArtifactStep(selectedChains, artifactsPath);
21
+ const multisigConfig = await runIsmStep(selectedChains, ismConfigPath);
19
22
  const deploymentParams = {
20
- local,
23
+ origin,
21
24
  remotes,
22
25
  signer,
23
26
  multiProvider,
24
27
  artifacts,
25
28
  multisigConfig,
26
29
  outPath,
30
+ skipConfirmation,
27
31
  };
28
32
  await runDeployPlanStep(deploymentParams);
29
33
  await runPreflightChecks({
@@ -32,124 +36,124 @@ export async function runCoreDeploy({ key, chainConfigPath, outPath, }) {
32
36
  });
33
37
  await executeDeploy(deploymentParams);
34
38
  }
35
- async function runArtifactStep(selectedChains) {
36
- logBlue('\n', 'Deployments can be totally new or can use some existing contract addresses.');
37
- const isResume = await confirm({
38
- message: 'Do you want use some existing contract addresses?',
39
- });
40
- if (!isResume)
41
- return undefined;
42
- const artifactsPath = await input({
43
- message: 'Enter filepath with existing contract artifacts (addresses)',
44
- });
39
+ async function runArtifactStep(selectedChains, artifactsPath) {
40
+ if (!artifactsPath) {
41
+ logBlue('\n', 'Deployments can be totally new or can use some existing contract addresses.');
42
+ const isResume = await confirm({
43
+ message: 'Do you want use some existing contract addresses?',
44
+ });
45
+ if (!isResume)
46
+ return undefined;
47
+ artifactsPath = await runFileSelectionStep('./artifacts', 'contract artifacts', 'core-deployment');
48
+ }
45
49
  const artifacts = readDeploymentArtifacts(artifactsPath);
46
50
  const artifactChains = Object.keys(artifacts).filter((c) => selectedChains.includes(c));
47
51
  log(`Found existing artifacts for chains: ${artifactChains.join(', ')}`);
48
52
  return artifacts;
49
53
  }
50
- async function runIsmStep(selectedChains) {
51
- logBlue('\n', 'Hyperlane instances requires an Interchain Security Module (ISM).');
52
- const isMultisig = await confirm({
53
- message: 'Do you want use a Multisig ISM?',
54
- });
55
- if (!isMultisig)
56
- throw new Error('Sorry, only multisig ISMs are currently supported in the CLI');
54
+ async function runIsmStep(selectedChains, ismConfigPath) {
57
55
  const defaultConfigChains = Object.keys(defaultMultisigIsmConfigs);
58
56
  const configRequired = !!selectedChains.find((c) => !defaultConfigChains.includes(c));
59
57
  if (!configRequired)
60
58
  return;
61
- logGray('Example config: https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/cli/typescript/cli/examples/multisig-ism.yaml');
62
- const multisigConfigPath = await input({
63
- message: 'Enter filepath for the multisig config',
64
- });
65
- const configs = readMultisigConfig(multisigConfigPath);
59
+ if (!ismConfigPath) {
60
+ logBlue('\n', 'Hyperlane instances requires an Interchain Security Module (ISM).');
61
+ logGray('Note, only Multisig ISM configs are currently supported in the CLI', 'Example config: https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/cli/typescript/cli/examples/multisig-ism.yaml');
62
+ ismConfigPath = await runFileSelectionStep('./configs', 'ISM config', 'ism');
63
+ }
64
+ const configs = readMultisigConfig(ismConfigPath);
66
65
  const multisigConfigChains = Object.keys(configs).filter((c) => selectedChains.includes(c));
67
66
  log(`Found configs for chains: ${multisigConfigChains.join(', ')}`);
68
67
  return configs;
69
68
  }
70
- async function runDeployPlanStep({ local, remotes, signer, artifacts, }) {
69
+ async function runDeployPlanStep({ origin, remotes, signer, artifacts, skipConfirmation, }) {
71
70
  const address = await signer.getAddress();
72
- logBlue('\n', 'Deployment plan:');
73
- logGray('===============:');
71
+ logBlue('\nDeployment plan');
72
+ logGray('===============');
74
73
  log(`Transaction signer and owner of new contracts will be ${address}`);
75
- log(`Deploying to ${local} and connecting it to ${remotes.join(', ')}`);
74
+ log(`Deploying to ${origin} and connecting it to ${remotes.join(', ')}`);
76
75
  const numContracts = Object.keys(Object.values(sdkContractAddressesMap)[0]).length;
77
76
  log(`There are ${numContracts} contracts for each chain`);
78
77
  if (artifacts)
79
78
  log('But contracts with an address in the artifacts file will be skipped');
80
- for (const chain of [local, ...remotes]) {
79
+ for (const chain of [origin, ...remotes]) {
81
80
  const chainArtifacts = artifacts?.[chain] || {};
82
81
  const numRequired = numContracts - Object.keys(chainArtifacts).length;
83
82
  log(`${chain} will require ${numRequired} of ${numContracts}`);
84
83
  }
85
- log('The interchain security module will be a Multisig.');
84
+ log('The default interchain security module will be a Multisig.');
85
+ if (skipConfirmation)
86
+ return;
86
87
  const isConfirmed = await confirm({
87
88
  message: 'Is this deployment plan correct?',
88
89
  });
89
90
  if (!isConfirmed)
90
91
  throw new Error('Deployment cancelled');
91
92
  }
92
- async function executeDeploy({ local, remotes, signer, multiProvider, outPath, artifacts = {}, multisigConfig = {}, }) {
93
+ async function executeDeploy({ origin, remotes, signer, multiProvider, outPath, artifacts = {}, multisigConfig = {}, }) {
93
94
  logBlue('All systems ready, captain! Beginning deployment...');
94
95
  const [contractsFilePath, agentFilePath] = prepNewArtifactsFiles(outPath, [
95
96
  { filename: 'core-deployment', description: 'Contract addresses' },
96
97
  { filename: 'agent-config', description: 'Agent configs' },
97
98
  ]);
98
99
  const owner = await signer.getAddress();
99
- const selectedChains = [local, ...remotes];
100
+ const selectedChains = [origin, ...remotes];
100
101
  const mergedContractAddrs = getMergedContractAddresses(artifacts);
101
102
  // 1. Deploy ISM factories to all deployable chains that don't have them.
102
103
  log('Deploying ISM factory contracts');
103
- const ismDeployer = new HyperlaneIsmFactoryDeployer(multiProvider);
104
- ismDeployer.cacheAddressesMap(mergedContractAddrs);
105
- const ismFactoryContracts = await ismDeployer.deploy(selectedChains);
104
+ const ismFactoryDeployer = new HyperlaneIsmFactoryDeployer(multiProvider);
105
+ ismFactoryDeployer.cacheAddressesMap(mergedContractAddrs);
106
+ const ismFactoryContracts = await ismFactoryDeployer.deploy(selectedChains);
106
107
  artifacts = writeMergedAddresses(contractsFilePath, artifacts, ismFactoryContracts);
107
- logGreen(`ISM factory contracts deployed`);
108
+ logGreen('ISM factory contracts deployed');
108
109
  // 2. Deploy IGPs to all deployable chains.
109
- log(`Deploying IGP contracts`);
110
- const igpConfig = buildIgpConfigMap(owner, selectedChains, selectedChains, multisigConfig);
110
+ log('Deploying IGP contracts');
111
+ const igpConfig = buildIgpConfigMap(owner, selectedChains, multisigConfig);
111
112
  const igpDeployer = new HyperlaneIgpDeployer(multiProvider);
112
113
  igpDeployer.cacheAddressesMap(artifacts);
113
114
  const igpContracts = await igpDeployer.deploy(igpConfig);
114
115
  artifacts = writeMergedAddresses(contractsFilePath, artifacts, igpContracts);
115
- logGreen(`IGP contracts deployed`);
116
+ logGreen('IGP contracts deployed');
116
117
  // Build an IsmFactory that covers all chains so that we can
117
- // use it later to deploy ISMs to remote chains.
118
+ // use it to deploy ISMs to remote chains.
118
119
  const ismFactory = HyperlaneIsmFactory.fromAddressesMap(mergedContractAddrs, multiProvider);
119
- // 3. Deploy core contracts to local chain
120
- log(`Deploying core contracts to ${local}`);
121
- const coreDeployer = new HyperlaneCoreDeployer(multiProvider, ismFactory);
122
- coreDeployer.cacheAddressesMap(artifacts);
123
- const coreConfig = buildCoreConfigMap(owner, local, remotes, multisigConfig);
124
- const coreContracts = await coreDeployer.deploy(coreConfig);
125
- artifacts = writeMergedAddresses(contractsFilePath, artifacts, coreContracts);
126
- logGreen(`Core contracts deployed`);
127
- // 4. Deploy ISM contracts to remote deployable chains
128
- log(`Deploying ISMs`);
129
- const ismConfigs = buildIsmConfigMap(owner, remotes, selectedChains, multisigConfig);
120
+ // 3. Deploy ISM contracts to remote deployable chains
121
+ log('Deploying ISMs');
130
122
  const ismContracts = {};
131
- for (const [ismChain, ismConfig] of Object.entries(ismConfigs)) {
132
- if (artifacts[ismChain].multisigIsm) {
133
- log(`ISM contract recovered, skipping ISM deployment to ${ismChain}`);
123
+ const defaultIsms = {};
124
+ for (const ismOrigin of selectedChains) {
125
+ if (artifacts[ismOrigin].multisigIsm) {
126
+ log(`ISM contract recovered, skipping ISM deployment to ${ismOrigin}`);
127
+ defaultIsms[ismOrigin] = artifacts[ismOrigin].multisigIsm;
134
128
  continue;
135
129
  }
136
- log(`Deploying ISM to ${ismChain}`);
137
- ismContracts[ismChain] = {
138
- multisigIsm: await ismFactory.deploy(ismChain, ismConfig),
130
+ log(`Deploying ISM to ${ismOrigin}`);
131
+ const ismConfig = buildIsmConfig(owner, selectedChains.filter((r) => r !== ismOrigin), multisigConfig);
132
+ ismContracts[ismOrigin] = {
133
+ multisigIsm: await ismFactory.deploy(ismOrigin, ismConfig),
139
134
  };
135
+ defaultIsms[ismOrigin] = ismContracts[ismOrigin].multisigIsm.address;
140
136
  }
141
137
  artifacts = writeMergedAddresses(contractsFilePath, artifacts, ismContracts);
142
- logGreen(`ISM contracts deployed `);
138
+ logGreen('ISM contracts deployed');
139
+ // 4. Deploy core contracts to origin chain
140
+ log(`Deploying core contracts to ${origin}`);
141
+ const coreDeployer = new HyperlaneCoreDeployer(multiProvider, ismFactory);
142
+ coreDeployer.cacheAddressesMap(artifacts);
143
+ const coreConfig = buildCoreConfigMap(owner, origin, defaultIsms);
144
+ const coreContracts = await coreDeployer.deploy(coreConfig);
145
+ artifacts = writeMergedAddresses(contractsFilePath, artifacts, coreContracts);
146
+ logGreen('Core contracts deployed');
143
147
  // 5. Deploy TestRecipients to all deployable chains
144
- log(`Deploying test recipient contracts`);
148
+ log('Deploying test recipient contracts');
145
149
  const testRecipientConfig = buildTestRecipientConfigMap(selectedChains, artifacts);
146
150
  const testRecipientDeployer = new TestRecipientDeployer(multiProvider);
147
151
  testRecipientDeployer.cacheAddressesMap(artifacts);
148
152
  const testRecipients = await testRecipientDeployer.deploy(testRecipientConfig);
149
153
  artifacts = writeMergedAddresses(contractsFilePath, artifacts, testRecipients);
150
- logGreen(`Test recipient contracts deployed`);
154
+ logGreen('Test recipient contracts deployed');
151
155
  log('Writing agent configs');
152
- await writeAgentConfig(agentFilePath, artifacts, local, remotes, multiProvider);
156
+ await writeAgentConfig(agentFilePath, artifacts, origin, remotes, multiProvider);
153
157
  logGreen('Agent configs written');
154
158
  logBlue('Deployment is complete!');
155
159
  logBlue(`Contract address artifacts are in ${contractsFilePath}`);
@@ -163,40 +167,41 @@ function buildIsmConfig(owner, remotes, multisigIsmConfigs) {
163
167
  domains: Object.fromEntries(remotes.map((remote) => [remote, mergedMultisigIsmConfig[remote]])),
164
168
  };
165
169
  }
166
- function buildIsmConfigMap(owner, chains, remotes, multisigIsmConfigs) {
167
- return Object.fromEntries(chains.map((chain) => {
168
- const ismConfig = buildIsmConfig(owner, remotes.filter((r) => r !== chain), multisigIsmConfigs);
169
- return [chain, ismConfig];
170
- }));
171
- }
172
- function buildCoreConfigMap(owner, local, remotes, multisigIsmConfigs) {
170
+ function buildCoreConfigMap(owner, origin, defaultIsms) {
173
171
  const configMap = {};
174
- configMap[local] = {
172
+ configMap[origin] = {
175
173
  owner,
176
- defaultIsm: buildIsmConfig(owner, remotes, multisigIsmConfigs),
174
+ defaultIsm: defaultIsms[origin],
177
175
  };
178
176
  return configMap;
179
177
  }
180
178
  function buildTestRecipientConfigMap(chains, addressesMap) {
181
- return Object.fromEntries(chains.map((chain) => {
182
- const interchainSecurityModule = addressesMap[chain].interchainSecurityModule ??
179
+ return chains.reduce((config, chain) => {
180
+ const interchainSecurityModule =
181
+ // TODO revisit assumption that multisigIsm is always the ISM
182
+ addressesMap[chain].multisigIsm ??
183
+ addressesMap[chain].interchainSecurityModule ??
183
184
  ethers.constants.AddressZero;
184
- return [chain, { interchainSecurityModule }];
185
- }));
185
+ if (interchainSecurityModule === ethers.constants.AddressZero) {
186
+ logRed('Error: No ISM for TestRecipient, deploying with zero address');
187
+ }
188
+ config[chain] = { interchainSecurityModule };
189
+ return config;
190
+ }, {});
186
191
  }
187
- function buildIgpConfigMap(owner, deployChains, selectedChains, multisigIsmConfigs) {
192
+ function buildIgpConfigMap(owner, selectedChains, multisigIsmConfigs) {
188
193
  const mergedMultisigIsmConfig = objMerge(defaultMultisigIsmConfigs, multisigIsmConfigs);
189
194
  const configMap = {};
190
- for (const local of deployChains) {
195
+ for (const origin of selectedChains) {
191
196
  const overhead = {};
192
197
  const gasOracleType = {};
193
198
  for (const remote of selectedChains) {
194
- if (local === remote)
199
+ if (origin === remote)
195
200
  continue;
196
201
  overhead[remote] = multisigIsmVerificationCost(mergedMultisigIsmConfig[remote].threshold, mergedMultisigIsmConfig[remote].validators.length);
197
202
  gasOracleType[remote] = GasOracleContractType.StorageGasOracle;
198
203
  }
199
- configMap[local] = {
204
+ configMap[origin] = {
200
205
  owner,
201
206
  beneficiary: owner,
202
207
  gasOracleType,
@@ -212,16 +217,18 @@ function writeMergedAddresses(filePath, aAddresses, bContracts) {
212
217
  writeJson(filePath, mergedAddresses);
213
218
  return mergedAddresses;
214
219
  }
215
- async function writeAgentConfig(filePath, artifacts, local, remotes, multiProvider) {
216
- const selectedChains = [local, ...remotes];
220
+ async function writeAgentConfig(filePath, artifacts, origin, remotes, multiProvider) {
221
+ const selectedChains = [origin, ...remotes];
217
222
  const startBlocks = { ...agentStartBlocks };
218
- startBlocks[local] = await multiProvider.getProvider(local).getBlockNumber();
223
+ startBlocks[origin] = await multiProvider
224
+ .getProvider(origin)
225
+ .getBlockNumber();
219
226
  const mergedAddressesMap = objMerge(sdkContractAddressesMap, artifacts);
220
227
  const filteredAddressesMap = objFilter(mergedAddressesMap, (chain, v) => selectedChains.includes(chain) &&
221
228
  !!v.mailbox &&
222
229
  !!v.interchainGasPaymaster &&
223
230
  !!v.validatorAnnounce);
224
- const agentConfig = buildAgentConfig(selectedChains, multiProvider, filteredAddressesMap, startBlocks);
231
+ const agentConfig = buildAgentConfig(Object.keys(filteredAddressesMap), multiProvider, filteredAddressesMap, startBlocks);
225
232
  writeJson(filePath, agentConfig);
226
233
  }
227
234
  //# sourceMappingURL=core.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { ethers } from 'ethers';
2
2
  import { ChainName, MultiProvider } from '@hyperlane-xyz/sdk';
3
- export declare function runPreflightChecks({ local, remotes, signer, multiProvider, minBalanceWei, }: {
4
- local: ChainName;
3
+ export declare function runPreflightChecks({ origin, remotes, signer, multiProvider, minBalanceWei, }: {
4
+ origin: ChainName;
5
5
  remotes: ChainName[];
6
6
  signer: ethers.Signer;
7
7
  multiProvider: MultiProvider;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/deploy/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAO9D,wBAAsB,kBAAkB,CAAC,EACvC,KAAK,EACL,OAAO,EACP,MAAM,EACN,aAAa,EACb,aAAa,GACd,EAAE;IACD,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB,iBAwBA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/deploy/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAO9D,wBAAsB,kBAAkB,CAAC,EACvC,MAAM,EACN,OAAO,EACP,MAAM,EACN,aAAa,EACb,aAAa,GACd,EAAE;IACD,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB,iBAwBA"}
@@ -1,14 +1,14 @@
1
1
  import { ProtocolType } from '@hyperlane-xyz/utils';
2
- import { log, logGreen } from '../logger.js';
2
+ import { log, logGreen } from '../../logger.js';
3
3
  import { assertNativeBalances } from '../utils/balances.js';
4
4
  import { assertSigner } from '../utils/keys.js';
5
- export async function runPreflightChecks({ local, remotes, signer, multiProvider, minBalanceWei, }) {
5
+ export async function runPreflightChecks({ origin, remotes, signer, multiProvider, minBalanceWei, }) {
6
6
  log('Running pre-flight checks...');
7
- if (!local || !remotes?.length)
7
+ if (!origin || !remotes?.length)
8
8
  throw new Error('Invalid chain selection');
9
- if (remotes.includes(local))
10
- throw new Error('Local and remotes must be distinct');
11
- for (const chain of [local, ...remotes]) {
9
+ if (remotes.includes(origin))
10
+ throw new Error('Origin and remotes must be distinct');
11
+ for (const chain of [origin, ...remotes]) {
12
12
  const metadata = multiProvider.tryGetChainMetadata(chain);
13
13
  if (!metadata)
14
14
  throw new Error(`No chain config found for ${chain}`);
@@ -18,7 +18,7 @@ export async function runPreflightChecks({ local, remotes, signer, multiProvider
18
18
  logGreen('Chains are valid ✅');
19
19
  assertSigner(signer);
20
20
  logGreen('Signer is valid ✅');
21
- await assertNativeBalances(multiProvider, signer, [local, ...remotes], minBalanceWei);
21
+ await assertNativeBalances(multiProvider, signer, [origin, ...remotes], minBalanceWei);
22
22
  logGreen('Balances are sufficient ✅');
23
23
  }
24
24
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/deploy/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AAC7C,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACvC,KAAK,EACL,OAAO,EACP,MAAM,EACN,aAAa,EACb,aAAa,GAOd;IACC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAEpC,IAAI,CAAC,KAAK,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC3E,IAAI,OAAO,CAAC,QAAQ,CAAC,KAAK,CAAC;QACzB,MAAM,IAAI,KAAK,CAAC,oCAAoC,CAAC,CAAC;IACxD,KAAK,MAAM,KAAK,IAAI,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,EAAE;QACvC,MAAM,QAAQ,GAAG,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;QACrE,IAAI,QAAQ,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ;YAC7C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;KACjE;IACD,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAE/B,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAE9B,MAAM,oBAAoB,CACxB,aAAa,EACb,MAAM,EACN,CAAC,KAAK,EAAE,GAAG,OAAO,CAAC,EACnB,aAAa,CACd,CAAC;IACF,QAAQ,CAAC,2BAA2B,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/deploy/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,oBAAoB,EAAE,MAAM,sBAAsB,CAAC;AAC5D,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACvC,MAAM,EACN,OAAO,EACP,MAAM,EACN,aAAa,EACb,aAAa,GAOd;IACC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAEpC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,KAAK,MAAM,KAAK,IAAI,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,EAAE;QACxC,MAAM,QAAQ,GAAG,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;QACrE,IAAI,QAAQ,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ;YAC7C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;KACjE;IACD,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAE/B,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAE9B,MAAM,oBAAoB,CACxB,aAAa,EACb,MAAM,EACN,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC,EACpB,aAAa,CACd,CAAC;IACF,QAAQ,CAAC,2BAA2B,CAAC,CAAC;AACxC,CAAC"}
@@ -1,8 +1,9 @@
1
- export declare function runWarpDeploy({ key, chainConfigPath, warpConfigPath, coreArtifactsPath, outPath, }: {
1
+ export declare function runWarpDeploy({ key, chainConfigPath, warpConfigPath, coreArtifactsPath, outPath, skipConfirmation, }: {
2
2
  key: string;
3
3
  chainConfigPath: string;
4
- warpConfigPath: string;
5
- coreArtifactsPath: string;
4
+ warpConfigPath?: string;
5
+ coreArtifactsPath?: string;
6
6
  outPath: string;
7
+ skipConfirmation: boolean;
7
8
  }): Promise<void>;
8
9
  //# sourceMappingURL=warp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"warp.d.ts","sourceRoot":"","sources":["../../../src/deploy/warp.ts"],"names":[],"mappings":"AAiCA,wBAAsB,aAAa,CAAC,EAClC,GAAG,EACH,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,OAAO,GACR,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,EAAE,MAAM,CAAC;IACvB,iBAAiB,EAAE,MAAM,CAAC;IAC1B,OAAO,EAAE,MAAM,CAAC;CACjB,iBA4BA"}
1
+ {"version":3,"file":"warp.d.ts","sourceRoot":"","sources":["../../../src/deploy/warp.ts"],"names":[],"mappings":"AAwCA,wBAAsB,aAAa,CAAC,EAClC,GAAG,EACH,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,OAAO,EACP,gBAAgB,GACjB,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,iBAqCA"}
@@ -3,15 +3,18 @@ import { ethers } from 'ethers';
3
3
  import { ERC20__factory, ERC721__factory, HypERC20Deployer, HypERC721Deployer, TokenType, } from '@hyperlane-xyz/hyperlane-token';
4
4
  import { chainMetadata as defaultChainMetadata, } from '@hyperlane-xyz/sdk';
5
5
  import { objMap } from '@hyperlane-xyz/utils';
6
+ import { log, logBlue, logGray, logGreen } from '../../logger.js';
6
7
  import { readDeploymentArtifacts } from '../config/artifacts.js';
7
8
  import { readWarpRouteConfig } from '../config/warp.js';
8
9
  import { MINIMUM_WARP_DEPLOY_BALANCE } from '../consts.js';
9
- import { getDeployerContext, getMergedContractAddresses } from '../context.js';
10
- import { log, logBlue, logGray, logGreen } from '../logger.js';
11
- import { prepNewArtifactsFiles, writeJson } from '../utils/files.js';
10
+ import { getContextWithSigner, getMergedContractAddresses, } from '../context.js';
11
+ import { prepNewArtifactsFiles, runFileSelectionStep, writeJson, } from '../utils/files.js';
12
12
  import { runPreflightChecks } from './utils.js';
13
- export async function runWarpDeploy({ key, chainConfigPath, warpConfigPath, coreArtifactsPath, outPath, }) {
14
- const { multiProvider, signer } = getDeployerContext(key, chainConfigPath);
13
+ export async function runWarpDeploy({ key, chainConfigPath, warpConfigPath, coreArtifactsPath, outPath, skipConfirmation, }) {
14
+ const { multiProvider, signer } = getContextWithSigner(key, chainConfigPath);
15
+ if (!warpConfigPath) {
16
+ warpConfigPath = await runFileSelectionStep('./configs', 'Warp config', 'warp');
17
+ }
15
18
  const warpRouteConfig = readWarpRouteConfig(warpConfigPath);
16
19
  const artifacts = coreArtifactsPath
17
20
  ? readDeploymentArtifacts(coreArtifactsPath)
@@ -27,6 +30,7 @@ export async function runWarpDeploy({ key, chainConfigPath, warpConfigPath, core
27
30
  signer,
28
31
  multiProvider,
29
32
  outPath,
33
+ skipConfirmation,
30
34
  };
31
35
  await runDeployPlanStep(deploymentParams);
32
36
  await runPreflightChecks({
@@ -108,21 +112,23 @@ async function runBuildConfigStep({ warpRouteConfig, multiProvider, signer, arti
108
112
  return {
109
113
  configMap,
110
114
  metadata: baseMetadata,
111
- local: baseChainName,
115
+ origin: baseChainName,
112
116
  remotes: synthetics.map(({ chainName }) => chainName),
113
117
  isNft: !!isNft,
114
118
  };
115
119
  }
116
- async function runDeployPlanStep({ configMap, isNft, local, remotes, signer, }) {
120
+ async function runDeployPlanStep({ configMap, isNft, origin, remotes, signer, skipConfirmation, }) {
117
121
  const address = await signer.getAddress();
118
- const baseToken = configMap[local];
122
+ const baseToken = configMap[origin];
119
123
  const baseName = getTokenName(baseToken);
120
- logBlue('\n', 'Deployment plan:');
121
- logGray('===============:');
124
+ logBlue('\nDeployment plan');
125
+ logGray('===============');
122
126
  log(`Transaction signer and owner of new contracts will be ${address}`);
123
- log(`Deploying a warp route with a base of ${baseName} token on ${local}`);
127
+ log(`Deploying a warp route with a base of ${baseName} token on ${origin}`);
124
128
  log(`Connecting it to new synthetic tokens on ${remotes.join(', ')}`);
125
129
  log(`Using token standard ${isNft ? 'ERC721' : 'ERC20'}`);
130
+ if (skipConfirmation)
131
+ return;
126
132
  const isConfirmed = await confirm({
127
133
  message: 'Is this deployment plan correct?',
128
134
  });
@@ -148,6 +154,7 @@ async function executeDeploy(params) {
148
154
  logBlue(`Contract address artifacts are in ${contractsFilePath}`);
149
155
  logBlue(`Warp UI token config is in ${tokenConfigPath}`);
150
156
  }
157
+ // TODO move into token classes in the SDK
151
158
  async function fetchBaseTokenMetadata(base, multiProvider) {
152
159
  const { type, name, symbol, chainName, address, decimals, isNft } = base;
153
160
  // Skip fetching metadata if it's already provided in the config
@@ -195,14 +202,14 @@ function writeTokenDeploymentArtifacts(filePath, contracts, { configMap }) {
195
202
  });
196
203
  writeJson(filePath, artifacts);
197
204
  }
198
- function writeWarpUiTokenConfig(filePath, contracts, { configMap, isNft, metadata, local, multiProvider }) {
199
- const baseConfig = configMap[local];
200
- const hypTokenAddr = contracts[local]?.router?.address || configMap[local]?.foreignDeployment;
205
+ function writeWarpUiTokenConfig(filePath, contracts, { configMap, isNft, metadata, origin, multiProvider }) {
206
+ const baseConfig = configMap[origin];
207
+ const hypTokenAddr = contracts[origin]?.router?.address || configMap[origin]?.foreignDeployment;
201
208
  if (!hypTokenAddr) {
202
209
  throw Error('No base Hyperlane token address deployed and no foreign deployment specified');
203
210
  }
204
211
  const commonFields = {
205
- chainId: multiProvider.getChainId(local),
212
+ chainId: multiProvider.getChainId(origin),
206
213
  name: metadata.name,
207
214
  symbol: metadata.symbol,
208
215
  decimals: metadata.decimals,