@hyperlane-xyz/cli 1.5.4-beta0 → 3.1.1

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 (85) hide show
  1. package/dist/cli.js +2 -0
  2. package/dist/cli.js.map +1 -1
  3. package/dist/logger.d.ts +1 -0
  4. package/dist/logger.d.ts.map +1 -1
  5. package/dist/logger.js +8 -1
  6. package/dist/logger.js.map +1 -1
  7. package/dist/src/commands/chains.js +11 -5
  8. package/dist/src/commands/chains.js.map +1 -1
  9. package/dist/src/commands/config.d.ts.map +1 -1
  10. package/dist/src/commands/config.js +18 -0
  11. package/dist/src/commands/config.js.map +1 -1
  12. package/dist/src/commands/deploy.js +17 -15
  13. package/dist/src/commands/deploy.js.map +1 -1
  14. package/dist/src/commands/options.d.ts.map +1 -1
  15. package/dist/src/commands/options.js +7 -3
  16. package/dist/src/commands/options.js.map +1 -1
  17. package/dist/src/commands/send.d.ts.map +1 -1
  18. package/dist/src/commands/send.js +18 -0
  19. package/dist/src/commands/send.js.map +1 -1
  20. package/dist/src/commands/status.d.ts +3 -0
  21. package/dist/src/commands/status.d.ts.map +1 -0
  22. package/dist/src/commands/status.js +34 -0
  23. package/dist/src/commands/status.js.map +1 -0
  24. package/dist/src/config/artifacts.d.ts.map +1 -1
  25. package/dist/src/config/artifacts.js +4 -3
  26. package/dist/src/config/artifacts.js.map +1 -1
  27. package/dist/src/config/hooks.d.ts +289 -0
  28. package/dist/src/config/hooks.d.ts.map +1 -0
  29. package/dist/src/config/hooks.js +173 -0
  30. package/dist/src/config/hooks.js.map +1 -0
  31. package/dist/src/config/multisig.d.ts +10 -10
  32. package/dist/src/config/multisig.d.ts.map +1 -1
  33. package/dist/src/config/multisig.js +10 -14
  34. package/dist/src/config/multisig.js.map +1 -1
  35. package/dist/src/config/warp.d.ts +1 -1
  36. package/dist/src/config/warp.d.ts.map +1 -1
  37. package/dist/src/config/warp.js +1 -1
  38. package/dist/src/config/warp.js.map +1 -1
  39. package/dist/src/consts.d.ts.map +1 -1
  40. package/dist/src/consts.js +1 -0
  41. package/dist/src/consts.js.map +1 -1
  42. package/dist/src/context.d.ts +268 -242
  43. package/dist/src/context.d.ts.map +1 -1
  44. package/dist/src/context.js +6 -1
  45. package/dist/src/context.js.map +1 -1
  46. package/dist/src/deploy/TestRecipientDeployer.d.ts.map +1 -1
  47. package/dist/src/deploy/TestRecipientDeployer.js +2 -1
  48. package/dist/src/deploy/TestRecipientDeployer.js.map +1 -1
  49. package/dist/src/deploy/core.d.ts +5 -4
  50. package/dist/src/deploy/core.d.ts.map +1 -1
  51. package/dist/src/deploy/core.js +128 -91
  52. package/dist/src/deploy/core.js.map +1 -1
  53. package/dist/src/deploy/types.d.ts +1 -1
  54. package/dist/src/deploy/types.d.ts.map +1 -1
  55. package/dist/src/deploy/utils.d.ts +6 -0
  56. package/dist/src/deploy/utils.d.ts.map +1 -1
  57. package/dist/src/deploy/utils.js +13 -2
  58. package/dist/src/deploy/utils.js.map +1 -1
  59. package/dist/src/deploy/warp.d.ts +4 -3
  60. package/dist/src/deploy/warp.d.ts.map +1 -1
  61. package/dist/src/deploy/warp.js +26 -16
  62. package/dist/src/deploy/warp.js.map +1 -1
  63. package/dist/src/send/message.d.ts +2 -1
  64. package/dist/src/send/message.d.ts.map +1 -1
  65. package/dist/src/send/message.js +27 -22
  66. package/dist/src/send/message.js.map +1 -1
  67. package/dist/src/send/transfer.d.ts +4 -2
  68. package/dist/src/send/transfer.d.ts.map +1 -1
  69. package/dist/src/send/transfer.js +35 -25
  70. package/dist/src/send/transfer.js.map +1 -1
  71. package/dist/src/status/message.d.ts +8 -0
  72. package/dist/src/status/message.d.ts.map +1 -0
  73. package/dist/src/status/message.js +22 -0
  74. package/dist/src/status/message.js.map +1 -0
  75. package/dist/src/utils/balances.js +1 -1
  76. package/dist/src/utils/balances.js.map +1 -1
  77. package/dist/src/utils/chains.d.ts +0 -4
  78. package/dist/src/utils/chains.d.ts.map +1 -1
  79. package/dist/src/utils/chains.js +8 -13
  80. package/dist/src/utils/chains.js.map +1 -1
  81. package/examples/anvil-chains.yaml +10 -9
  82. package/examples/hook-config.yaml +18 -0
  83. package/examples/multisig-ism.yaml +2 -2
  84. package/examples/warp-tokens.yaml +3 -1
  85. package/package.json +4 -6
@@ -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,11 +1,12 @@
1
- export declare function runCoreDeploy({ key, chainConfigPath, ismConfigPath, artifactsPath, outPath, origin, remotes, skipConfirmation, }: {
1
+ import { ChainName } from '@hyperlane-xyz/sdk';
2
+ export declare function runCoreDeploy({ key, chainConfigPath, chains, ismConfigPath, hookConfigPath, artifactsPath, outPath, skipConfirmation, }: {
2
3
  key: string;
3
4
  chainConfigPath: string;
4
- ismConfigPath: string;
5
+ chains?: ChainName[];
6
+ ismConfigPath?: string;
7
+ hookConfigPath?: string;
5
8
  artifactsPath?: string;
6
9
  outPath: string;
7
- origin?: string;
8
- remotes?: string[];
9
10
  skipConfirmation: boolean;
10
11
  }): Promise<void>;
11
12
  //# sourceMappingURL=core.d.ts.map
@@ -1 +1 @@
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
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,SAAS,EAsBV,MAAM,oBAAoB,CAAC;AA0B5B,wBAAsB,aAAa,CAAC,EAClC,GAAG,EACH,eAAe,EACf,MAAM,EACN,aAAa,EACb,cAAc,EACd,aAAa,EACb,OAAO,EACP,gBAAgB,GACjB,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,iBAgCA"}
@@ -1,27 +1,27 @@
1
1
  import { confirm } from '@inquirer/prompts';
2
2
  import { ethers } from 'ethers';
3
- import { GasOracleContractType, HyperlaneCoreDeployer, HyperlaneIgpDeployer, HyperlaneIsmFactory, HyperlaneIsmFactoryDeployer, ModuleType, agentStartBlocks, buildAgentConfig, defaultMultisigIsmConfigs, multisigIsmVerificationCost, serializeContractsMap, } from '@hyperlane-xyz/sdk';
3
+ import { GasOracleContractType, HookType, HyperlaneCoreDeployer, HyperlaneIsmFactory, HyperlaneProxyFactoryDeployer, IsmType, agentStartBlocks, buildAgentConfig, defaultMultisigIsmConfigs, multisigIsmVerificationCost, serializeContractsMap, } from '@hyperlane-xyz/sdk';
4
4
  import { objFilter, objMerge } from '@hyperlane-xyz/utils';
5
- import { log, logBlue, logGray, logGreen } from '../../logger.js';
5
+ import { log, logBlue, logGray, logGreen, logRed } from '../../logger.js';
6
6
  import { readDeploymentArtifacts } from '../config/artifacts.js';
7
+ import { presetHookConfigs, readHookConfig } from '../config/hooks.js';
7
8
  import { readMultisigConfig } from '../config/multisig.js';
8
9
  import { MINIMUM_CORE_DEPLOY_BALANCE } from '../consts.js';
9
- import { getDeployerContext, getMergedContractAddresses, sdkContractAddressesMap, } from '../context.js';
10
- import { runOriginAndRemotesSelectionStep } from '../utils/chains.js';
10
+ import { getContextWithSigner, getMergedContractAddresses, sdkContractAddressesMap, } from '../context.js';
11
+ import { runMultiChainSelectionStep } from '../utils/chains.js';
11
12
  import { prepNewArtifactsFiles, runFileSelectionStep, writeJson, } from '../utils/files.js';
12
13
  import { TestRecipientDeployer, } from './TestRecipientDeployer.js';
13
- import { runPreflightChecks } from './utils.js';
14
- export async function runCoreDeploy({ key, chainConfigPath, ismConfigPath, artifactsPath, outPath, origin, remotes, skipConfirmation, }) {
15
- const { customChains, multiProvider, signer } = getDeployerContext(key, chainConfigPath);
16
- if (!origin || !remotes?.length) {
17
- ({ origin, remotes } = await runOriginAndRemotesSelectionStep(customChains));
14
+ import { runPreflightChecksForChains } from './utils.js';
15
+ export async function runCoreDeploy({ key, chainConfigPath, chains, ismConfigPath, hookConfigPath, artifactsPath, outPath, skipConfirmation, }) {
16
+ const { customChains, multiProvider, signer } = getContextWithSigner(key, chainConfigPath);
17
+ if (!chains?.length) {
18
+ chains = await runMultiChainSelectionStep(customChains, 'Select chains to which core contacts will be deployed');
18
19
  }
19
- const selectedChains = [origin, ...remotes];
20
- const artifacts = await runArtifactStep(selectedChains, artifactsPath);
21
- const multisigConfig = await runIsmStep(selectedChains, ismConfigPath);
20
+ const artifacts = await runArtifactStep(chains, artifactsPath);
21
+ const multisigConfig = await runIsmStep(chains, ismConfigPath);
22
+ await runHookStep(chains, hookConfigPath);
22
23
  const deploymentParams = {
23
- origin,
24
- remotes,
24
+ chains,
25
25
  signer,
26
26
  multiProvider,
27
27
  artifacts,
@@ -30,7 +30,7 @@ export async function runCoreDeploy({ key, chainConfigPath, ismConfigPath, artif
30
30
  skipConfirmation,
31
31
  };
32
32
  await runDeployPlanStep(deploymentParams);
33
- await runPreflightChecks({
33
+ await runPreflightChecksForChains({
34
34
  ...deploymentParams,
35
35
  minBalanceWei: MINIMUM_CORE_DEPLOY_BALANCE,
36
36
  });
@@ -52,10 +52,11 @@ async function runArtifactStep(selectedChains, artifactsPath) {
52
52
  return artifacts;
53
53
  }
54
54
  async function runIsmStep(selectedChains, ismConfigPath) {
55
- const defaultConfigChains = Object.keys(defaultMultisigIsmConfigs);
56
- const configRequired = !!selectedChains.find((c) => !defaultConfigChains.includes(c));
57
- if (!configRequired)
58
- return;
55
+ // const defaultConfigChains = Object.keys(defaultMultisigIsmConfigs);
56
+ // const configRequired = !!selectedChains.find(
57
+ // (c) => !defaultConfigChains.includes(c),
58
+ // );
59
+ // if (!configRequired) return;
59
60
  if (!ismConfigPath) {
60
61
  logBlue('\n', 'Hyperlane instances requires an Interchain Security Module (ISM).');
61
62
  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');
@@ -66,17 +67,29 @@ async function runIsmStep(selectedChains, ismConfigPath) {
66
67
  log(`Found configs for chains: ${multisigConfigChains.join(', ')}`);
67
68
  return configs;
68
69
  }
69
- async function runDeployPlanStep({ origin, remotes, signer, artifacts, skipConfirmation, }) {
70
+ async function runHookStep(selectedChains, hookConfigPath) {
71
+ const presetConfigChains = Object.keys(presetHookConfigs);
72
+ console.log('presetConfigChains', JSON.stringify(presetConfigChains, null, 4));
73
+ if (!hookConfigPath) {
74
+ logBlue('\n', 'Hyperlane instances can take an Interchain Security Module (ISM).');
75
+ hookConfigPath = await runFileSelectionStep('./configs/', 'Hook config', 'hook');
76
+ }
77
+ const configs = readHookConfig(hookConfigPath);
78
+ if (!configs)
79
+ return;
80
+ log(`Found hook configs for chains: ${Object.keys(configs).join(', ')}`);
81
+ }
82
+ async function runDeployPlanStep({ chains, signer, artifacts, skipConfirmation, }) {
70
83
  const address = await signer.getAddress();
71
- logBlue('\nDeployment plan:');
72
- logGray('===============:');
84
+ logBlue('\nDeployment plan');
85
+ logGray('===============');
73
86
  log(`Transaction signer and owner of new contracts will be ${address}`);
74
- log(`Deploying to ${origin} and connecting it to ${remotes.join(', ')}`);
87
+ log(`Deploying to ${chains.join(', ')}`);
75
88
  const numContracts = Object.keys(Object.values(sdkContractAddressesMap)[0]).length;
76
89
  log(`There are ${numContracts} contracts for each chain`);
77
90
  if (artifacts)
78
91
  log('But contracts with an address in the artifacts file will be skipped');
79
- for (const chain of [origin, ...remotes]) {
92
+ for (const chain of chains) {
80
93
  const chainArtifacts = artifacts?.[chain] || {};
81
94
  const numRequired = numContracts - Object.keys(chainArtifacts).length;
82
95
  log(`${chain} will require ${numRequired} of ${numContracts}`);
@@ -90,67 +103,67 @@ async function runDeployPlanStep({ origin, remotes, signer, artifacts, skipConfi
90
103
  if (!isConfirmed)
91
104
  throw new Error('Deployment cancelled');
92
105
  }
93
- async function executeDeploy({ origin, remotes, signer, multiProvider, outPath, artifacts = {}, multisigConfig = {}, }) {
106
+ async function executeDeploy({ chains, signer, multiProvider, outPath, artifacts = {}, multisigConfig = {}, }) {
94
107
  logBlue('All systems ready, captain! Beginning deployment...');
95
108
  const [contractsFilePath, agentFilePath] = prepNewArtifactsFiles(outPath, [
96
109
  { filename: 'core-deployment', description: 'Contract addresses' },
97
110
  { filename: 'agent-config', description: 'Agent configs' },
98
111
  ]);
99
112
  const owner = await signer.getAddress();
100
- const selectedChains = [origin, ...remotes];
101
113
  const mergedContractAddrs = getMergedContractAddresses(artifacts);
102
114
  // 1. Deploy ISM factories to all deployable chains that don't have them.
103
115
  log('Deploying ISM factory contracts');
104
- const ismDeployer = new HyperlaneIsmFactoryDeployer(multiProvider);
105
- ismDeployer.cacheAddressesMap(mergedContractAddrs);
106
- const ismFactoryContracts = await ismDeployer.deploy(selectedChains);
116
+ const ismFactoryDeployer = new HyperlaneProxyFactoryDeployer(multiProvider);
117
+ ismFactoryDeployer.cacheAddressesMap(mergedContractAddrs);
118
+ const ismFactoryConfig = chains.reduce((chainMap, curr) => {
119
+ chainMap[curr] = {};
120
+ return chainMap;
121
+ }, {});
122
+ const ismFactoryContracts = await ismFactoryDeployer.deploy(ismFactoryConfig);
107
123
  artifacts = writeMergedAddresses(contractsFilePath, artifacts, ismFactoryContracts);
108
- logGreen(`ISM factory contracts deployed`);
109
- // 2. Deploy IGPs to all deployable chains.
110
- log(`Deploying IGP contracts`);
111
- const igpConfig = buildIgpConfigMap(owner, selectedChains, selectedChains, multisigConfig);
112
- const igpDeployer = new HyperlaneIgpDeployer(multiProvider);
113
- igpDeployer.cacheAddressesMap(artifacts);
114
- const igpContracts = await igpDeployer.deploy(igpConfig);
115
- artifacts = writeMergedAddresses(contractsFilePath, artifacts, igpContracts);
116
- logGreen(`IGP contracts deployed`);
124
+ logGreen('ISM factory contracts deployed');
117
125
  // Build an IsmFactory that covers all chains so that we can
118
- // use it later to deploy ISMs to remote chains.
126
+ // use it to deploy ISMs to remote chains.
119
127
  const ismFactory = HyperlaneIsmFactory.fromAddressesMap(mergedContractAddrs, multiProvider);
120
- // 3. Deploy core contracts to origin chain
121
- log(`Deploying core contracts to ${origin}`);
122
- const coreDeployer = new HyperlaneCoreDeployer(multiProvider, ismFactory);
123
- coreDeployer.cacheAddressesMap(artifacts);
124
- const coreConfig = buildCoreConfigMap(owner, origin, remotes, multisigConfig);
125
- const coreContracts = await coreDeployer.deploy(coreConfig);
126
- artifacts = writeMergedAddresses(contractsFilePath, artifacts, coreContracts);
127
- logGreen(`Core contracts deployed`);
128
- // 4. Deploy ISM contracts to remote deployable chains
129
- log(`Deploying ISMs`);
130
- const ismConfigs = buildIsmConfigMap(owner, selectedChains, remotes, multisigConfig);
128
+ // 3. Deploy ISM contracts to remote deployable chains
129
+ log('Deploying ISMs');
131
130
  const ismContracts = {};
132
- for (const [ismChain, ismConfig] of Object.entries(ismConfigs)) {
133
- if (artifacts[ismChain].multisigIsm) {
134
- log(`ISM contract recovered, skipping ISM deployment to ${ismChain}`);
131
+ const defaultIsms = {};
132
+ for (const ismOrigin of chains) {
133
+ if (artifacts[ismOrigin].multisigIsm) {
134
+ log(`ISM contract recovered, skipping ISM deployment to ${ismOrigin}`);
135
+ defaultIsms[ismOrigin] = artifacts[ismOrigin].multisigIsm;
135
136
  continue;
136
137
  }
137
- log(`Deploying ISM to ${ismChain}`);
138
- ismContracts[ismChain] = {
139
- multisigIsm: await ismFactory.deploy(ismChain, ismConfig),
138
+ log(`Deploying ISM to ${ismOrigin}`);
139
+ const ismConfig = buildIsmConfig(owner, chains.filter((r) => r !== ismOrigin), multisigConfig);
140
+ ismContracts[ismOrigin] = {
141
+ multisigIsm: await ismFactory.deploy(ismOrigin, ismConfig),
140
142
  };
143
+ defaultIsms[ismOrigin] = ismContracts[ismOrigin].multisigIsm.address;
141
144
  }
142
145
  artifacts = writeMergedAddresses(contractsFilePath, artifacts, ismContracts);
143
- logGreen(`ISM contracts deployed `);
146
+ logGreen('ISM contracts deployed');
147
+ // 4. Deploy core contracts to chains
148
+ log(`Deploying core contracts to ${chains.join(', ')}`);
149
+ const coreDeployer = new HyperlaneCoreDeployer(multiProvider, ismFactory);
150
+ console.log('Caching addresses map', artifacts);
151
+ // coreDeployer.cacheAddressesMap(artifacts);
152
+ const coreConfigs = buildCoreConfigMap(owner, chains, defaultIsms, multisigConfig);
153
+ console.log('===coreconfigs', coreConfigs); //TODO remove
154
+ const coreContracts = await coreDeployer.deploy(coreConfigs);
155
+ artifacts = writeMergedAddresses(contractsFilePath, artifacts, coreContracts);
156
+ logGreen('Core contracts deployed');
144
157
  // 5. Deploy TestRecipients to all deployable chains
145
- log(`Deploying test recipient contracts`);
146
- const testRecipientConfig = buildTestRecipientConfigMap(selectedChains, artifacts);
158
+ log('Deploying test recipient contracts');
159
+ const testRecipientConfig = buildTestRecipientConfigMap(chains, artifacts);
147
160
  const testRecipientDeployer = new TestRecipientDeployer(multiProvider);
148
161
  testRecipientDeployer.cacheAddressesMap(artifacts);
149
162
  const testRecipients = await testRecipientDeployer.deploy(testRecipientConfig);
150
163
  artifacts = writeMergedAddresses(contractsFilePath, artifacts, testRecipients);
151
- logGreen(`Test recipient contracts deployed`);
164
+ logGreen('Test recipient contracts deployed');
152
165
  log('Writing agent configs');
153
- await writeAgentConfig(agentFilePath, artifacts, origin, remotes, multiProvider);
166
+ await writeAgentConfig(agentFilePath, artifacts, chains, multiProvider);
154
167
  logGreen('Agent configs written');
155
168
  logBlue('Deployment is complete!');
156
169
  logBlue(`Contract address artifacts are in ${contractsFilePath}`);
@@ -160,47 +173,66 @@ function buildIsmConfig(owner, remotes, multisigIsmConfigs) {
160
173
  const mergedMultisigIsmConfig = objMerge(defaultMultisigIsmConfigs, multisigIsmConfigs);
161
174
  return {
162
175
  owner,
163
- type: ModuleType.ROUTING,
176
+ type: IsmType.ROUTING,
164
177
  domains: Object.fromEntries(remotes.map((remote) => [remote, mergedMultisigIsmConfig[remote]])),
165
178
  };
166
179
  }
167
- function buildIsmConfigMap(owner, chains, remotes, multisigIsmConfigs) {
168
- return Object.fromEntries(chains.map((chain) => {
169
- const ismConfig = buildIsmConfig(owner, remotes.filter((r) => r !== chain), multisigIsmConfigs);
170
- return [chain, ismConfig];
171
- }));
172
- }
173
- function buildCoreConfigMap(owner, origin, remotes, multisigIsmConfigs) {
174
- const configMap = {};
175
- configMap[origin] = {
176
- owner,
177
- defaultIsm: buildIsmConfig(owner, remotes, multisigIsmConfigs),
178
- };
179
- return configMap;
180
+ function buildCoreConfigMap(owner, chains, defaultIsms, multisigConfig) {
181
+ return chains.reduce((config, chain) => {
182
+ const igpConfig = buildIgpConfigMap(owner, chains, multisigConfig);
183
+ config[chain] = {
184
+ owner,
185
+ defaultIsm: defaultIsms[chain],
186
+ defaultHook: {
187
+ type: HookType.AGGREGATION,
188
+ hooks: [
189
+ {
190
+ type: HookType.MERKLE_TREE,
191
+ },
192
+ {
193
+ type: HookType.INTERCHAIN_GAS_PAYMASTER,
194
+ ...igpConfig[chain],
195
+ },
196
+ ],
197
+ },
198
+ requiredHook: {
199
+ type: HookType.PROTOCOL_FEE,
200
+ maxProtocolFee: ethers.utils.parseUnits('1', 'gwei'),
201
+ protocolFee: ethers.utils.parseUnits('0', 'wei'),
202
+ beneficiary: owner,
203
+ owner,
204
+ },
205
+ };
206
+ return config;
207
+ }, {});
180
208
  }
181
209
  function buildTestRecipientConfigMap(chains, addressesMap) {
182
- return Object.fromEntries(chains.map((chain) => {
210
+ return chains.reduce((config, chain) => {
183
211
  const interchainSecurityModule =
184
212
  // TODO revisit assumption that multisigIsm is always the ISM
185
213
  addressesMap[chain].multisigIsm ??
186
214
  addressesMap[chain].interchainSecurityModule ??
187
215
  ethers.constants.AddressZero;
188
- return [chain, { interchainSecurityModule }];
189
- }));
216
+ if (interchainSecurityModule === ethers.constants.AddressZero) {
217
+ logRed('Error: No ISM for TestRecipient, deploying with zero address');
218
+ }
219
+ config[chain] = { interchainSecurityModule };
220
+ return config;
221
+ }, {});
190
222
  }
191
- function buildIgpConfigMap(owner, deployChains, selectedChains, multisigIsmConfigs) {
223
+ function buildIgpConfigMap(owner, chains, multisigIsmConfigs) {
192
224
  const mergedMultisigIsmConfig = objMerge(defaultMultisigIsmConfigs, multisigIsmConfigs);
193
225
  const configMap = {};
194
- for (const origin of deployChains) {
226
+ for (const chain of chains) {
195
227
  const overhead = {};
196
228
  const gasOracleType = {};
197
- for (const remote of selectedChains) {
198
- if (origin === remote)
229
+ for (const remote of chains) {
230
+ if (chain === remote)
199
231
  continue;
200
- overhead[remote] = multisigIsmVerificationCost(mergedMultisigIsmConfig[remote].threshold, mergedMultisigIsmConfig[remote].validators.length);
232
+ overhead[remote] = multisigIsmVerificationCost(mergedMultisigIsmConfig[chain].threshold, mergedMultisigIsmConfig[chain].validators.length);
201
233
  gasOracleType[remote] = GasOracleContractType.StorageGasOracle;
202
234
  }
203
- configMap[origin] = {
235
+ configMap[chain] = {
204
236
  owner,
205
237
  beneficiary: owner,
206
238
  gasOracleType,
@@ -216,18 +248,23 @@ function writeMergedAddresses(filePath, aAddresses, bContracts) {
216
248
  writeJson(filePath, mergedAddresses);
217
249
  return mergedAddresses;
218
250
  }
219
- async function writeAgentConfig(filePath, artifacts, origin, remotes, multiProvider) {
220
- const selectedChains = [origin, ...remotes];
251
+ async function writeAgentConfig(filePath, artifacts, chains, multiProvider) {
252
+ // TODO: share with rust/config/*
221
253
  const startBlocks = { ...agentStartBlocks };
222
- startBlocks[origin] = await multiProvider
223
- .getProvider(origin)
224
- .getBlockNumber();
254
+ for (const chain of chains) {
255
+ if (startBlocks[chain])
256
+ continue;
257
+ startBlocks[chain] = await multiProvider
258
+ .getProvider(chain)
259
+ .getBlockNumber();
260
+ }
225
261
  const mergedAddressesMap = objMerge(sdkContractAddressesMap, artifacts);
226
- const filteredAddressesMap = objFilter(mergedAddressesMap, (chain, v) => selectedChains.includes(chain) &&
262
+ const filteredAddressesMap = objFilter(mergedAddressesMap, (chain, v) => chains.includes(chain) &&
227
263
  !!v.mailbox &&
228
264
  !!v.interchainGasPaymaster &&
229
265
  !!v.validatorAnnounce);
230
- const agentConfig = buildAgentConfig([origin], multiProvider, filteredAddressesMap, startBlocks);
266
+ // TODO for v3 only build new agent config schema
267
+ const agentConfig = buildAgentConfig(Object.keys(filteredAddressesMap), multiProvider, filteredAddressesMap, startBlocks);
231
268
  writeJson(filePath, agentConfig);
232
269
  }
233
270
  //# 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,4 +1,4 @@
1
- import type { ERC20Metadata, TokenType } from '@hyperlane-xyz/hyperlane-token';
1
+ import type { ERC20Metadata, TokenType } from '@hyperlane-xyz/sdk';
2
2
  import type { Address } from '@hyperlane-xyz/utils';
3
3
  export type MinimalTokenMetadata = Omit<ERC20Metadata, 'totalSupply'>;
4
4
  interface BaseWarpUITokenConfig extends MinimalTokenMetadata {
@@ -1 +1 @@
1
- {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/deploy/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,gCAAgC,CAAC;AAC/E,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAKtE,UAAU,qBAAsB,SAAQ,oBAAoB;IAC1D,IAAI,EAAE,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,qBAAsB,SAAQ,qBAAqB;IAC3D,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,UAAU,iBAAkB,SAAQ,qBAAqB;IACvD,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,GAAG,iBAAiB,CAAC"}
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/deploy/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,aAAa,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AACnE,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,MAAM,MAAM,oBAAoB,GAAG,IAAI,CAAC,aAAa,EAAE,aAAa,CAAC,CAAC;AAKtE,UAAU,qBAAsB,SAAQ,oBAAoB;IAC1D,IAAI,EAAE,SAAS,CAAC,UAAU,GAAG,SAAS,CAAC,MAAM,CAAC;IAC9C,OAAO,EAAE,MAAM,CAAC;IAChB,OAAO,CAAC,EAAE,MAAM,CAAC;IACjB,KAAK,CAAC,EAAE,OAAO,CAAC;CACjB;AAED,UAAU,qBAAsB,SAAQ,qBAAqB;IAC3D,IAAI,EAAE,SAAS,CAAC,UAAU,CAAC;IAC3B,OAAO,EAAE,OAAO,CAAC;IACjB,oBAAoB,EAAE,OAAO,CAAC;CAC/B;AAED,UAAU,iBAAkB,SAAQ,qBAAqB;IACvD,IAAI,EAAE,SAAS,CAAC,MAAM,CAAC;IACvB,gBAAgB,EAAE,OAAO,CAAC;CAC3B;AAED,MAAM,MAAM,iBAAiB,GAAG,qBAAqB,GAAG,iBAAiB,CAAC"}
@@ -7,4 +7,10 @@ export declare function runPreflightChecks({ origin, remotes, signer, multiProvi
7
7
  multiProvider: MultiProvider;
8
8
  minBalanceWei: string;
9
9
  }): Promise<void>;
10
+ export declare function runPreflightChecksForChains({ chains, signer, multiProvider, minBalanceWei, }: {
11
+ chains: ChainName[];
12
+ signer: ethers.Signer;
13
+ multiProvider: MultiProvider;
14
+ minBalanceWei: string;
15
+ }): Promise<void>;
10
16
  //# sourceMappingURL=utils.d.ts.map
@@ -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,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
+ {"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,iBAYA;AAED,wBAAsB,2BAA2B,CAAC,EAChD,MAAM,EACN,MAAM,EACN,aAAa,EACb,aAAa,GACd,EAAE;IACD,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;IAC7B,aAAa,EAAE,MAAM,CAAC;CACvB,iBAiBA"}
@@ -8,7 +8,18 @@ export async function runPreflightChecks({ origin, remotes, signer, multiProvide
8
8
  throw new Error('Invalid chain selection');
9
9
  if (remotes.includes(origin))
10
10
  throw new Error('Origin and remotes must be distinct');
11
- for (const chain of [origin, ...remotes]) {
11
+ return runPreflightChecksForChains({
12
+ chains: [origin, ...remotes],
13
+ signer,
14
+ multiProvider,
15
+ minBalanceWei,
16
+ });
17
+ }
18
+ export async function runPreflightChecksForChains({ chains, signer, multiProvider, minBalanceWei, }) {
19
+ log('Running pre-flight checks...');
20
+ if (!chains?.length)
21
+ throw new Error('Empty chain selection');
22
+ for (const chain of chains) {
12
23
  const metadata = multiProvider.tryGetChainMetadata(chain);
13
24
  if (!metadata)
14
25
  throw new Error(`No chain config found for ${chain}`);
@@ -18,7 +29,7 @@ export async function runPreflightChecks({ origin, remotes, signer, multiProvide
18
29
  logGreen('Chains are valid ✅');
19
30
  assertSigner(signer);
20
31
  logGreen('Signer is valid ✅');
21
- await assertNativeBalances(multiProvider, signer, [origin, ...remotes], minBalanceWei);
32
+ await assertNativeBalances(multiProvider, signer, chains, minBalanceWei);
22
33
  logGreen('Balances are sufficient ✅');
23
34
  }
24
35
  //# 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,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
+ {"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,OAAO,2BAA2B,CAAC;QACjC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC;QAC5B,MAAM;QACN,aAAa;QACb,aAAa;KACd,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,EAChD,MAAM,EACN,MAAM,EACN,aAAa,EACb,aAAa,GAMd;IACC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAEpC,IAAI,CAAC,MAAM,EAAE,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC9D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,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,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,aAAa,CAAC,CAAC;IACzE,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":"AAsCA,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,iBAuCA"}