@hyperlane-xyz/cli 3.20.0-beta0 → 4.0.0-alpha

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 (153) hide show
  1. package/README.md +1 -1
  2. package/dist/cli.js +10 -6
  3. package/dist/cli.js.map +1 -1
  4. package/dist/src/avs/config.d.ts +11 -0
  5. package/dist/src/avs/config.d.ts.map +1 -0
  6. package/dist/src/avs/config.js +10 -0
  7. package/dist/src/avs/config.js.map +1 -0
  8. package/dist/src/avs/stakeRegistry.d.ts +21 -0
  9. package/dist/src/avs/stakeRegistry.d.ts.map +1 -0
  10. package/dist/src/avs/stakeRegistry.js +64 -0
  11. package/dist/src/avs/stakeRegistry.js.map +1 -0
  12. package/dist/src/commands/avs.d.ts +12 -0
  13. package/dist/src/commands/avs.d.ts.map +1 -0
  14. package/dist/src/commands/avs.js +64 -0
  15. package/dist/src/commands/avs.js.map +1 -0
  16. package/dist/src/commands/config.d.ts.map +1 -1
  17. package/dist/src/commands/config.js +10 -60
  18. package/dist/src/commands/config.js.map +1 -1
  19. package/dist/src/commands/core.d.ts +16 -0
  20. package/dist/src/commands/core.d.ts.map +1 -0
  21. package/dist/src/commands/core.js +88 -0
  22. package/dist/src/commands/core.js.map +1 -0
  23. package/dist/src/commands/deploy.d.ts +13 -0
  24. package/dist/src/commands/deploy.d.ts.map +1 -1
  25. package/dist/src/commands/deploy.js +22 -26
  26. package/dist/src/commands/deploy.js.map +1 -1
  27. package/dist/src/commands/options.d.ts +11 -5
  28. package/dist/src/commands/options.d.ts.map +1 -1
  29. package/dist/src/commands/options.js +45 -11
  30. package/dist/src/commands/options.js.map +1 -1
  31. package/dist/src/commands/registry.d.ts +6 -0
  32. package/dist/src/commands/registry.d.ts.map +1 -0
  33. package/dist/src/commands/{chains.js → registry.js} +3 -3
  34. package/dist/src/commands/registry.js.map +1 -0
  35. package/dist/src/commands/send.d.ts.map +1 -1
  36. package/dist/src/commands/send.js +2 -42
  37. package/dist/src/commands/send.js.map +1 -1
  38. package/dist/src/commands/validator.d.ts +3 -0
  39. package/dist/src/commands/validator.d.ts.map +1 -0
  40. package/dist/src/commands/validator.js +34 -0
  41. package/dist/src/commands/validator.js.map +1 -0
  42. package/dist/src/commands/{hook.d.ts → warp.d.ts} +6 -2
  43. package/dist/src/commands/warp.d.ts.map +1 -0
  44. package/dist/src/commands/warp.js +101 -0
  45. package/dist/src/commands/warp.js.map +1 -0
  46. package/dist/src/config/chain.d.ts.map +1 -1
  47. package/dist/src/config/chain.js +21 -9
  48. package/dist/src/config/chain.js.map +1 -1
  49. package/dist/src/config/hooks.d.ts +4528 -90
  50. package/dist/src/config/hooks.d.ts.map +1 -1
  51. package/dist/src/config/hooks.js +31 -97
  52. package/dist/src/config/hooks.js.map +1 -1
  53. package/dist/src/config/ism.d.ts +58 -61
  54. package/dist/src/config/ism.d.ts.map +1 -1
  55. package/dist/src/config/ism.js +40 -128
  56. package/dist/src/config/ism.js.map +1 -1
  57. package/dist/src/config/warp.d.ts +3 -2
  58. package/dist/src/config/warp.d.ts.map +1 -1
  59. package/dist/src/config/warp.js +112 -49
  60. package/dist/src/config/warp.js.map +1 -1
  61. package/dist/src/consts.d.ts +1 -0
  62. package/dist/src/consts.d.ts.map +1 -1
  63. package/dist/src/consts.js +1 -0
  64. package/dist/src/consts.js.map +1 -1
  65. package/dist/src/context/context.d.ts +1 -1
  66. package/dist/src/context/context.d.ts.map +1 -1
  67. package/dist/src/context/context.js +37 -15
  68. package/dist/src/context/context.js.map +1 -1
  69. package/dist/src/context/types.d.ts +1 -0
  70. package/dist/src/context/types.d.ts.map +1 -1
  71. package/dist/src/deploy/agent.js +1 -1
  72. package/dist/src/deploy/agent.js.map +1 -1
  73. package/dist/src/deploy/core.d.ts +4 -8
  74. package/dist/src/deploy/core.d.ts.map +1 -1
  75. package/dist/src/deploy/core.js +28 -232
  76. package/dist/src/deploy/core.js.map +1 -1
  77. package/dist/src/deploy/dry-run.d.ts +2 -2
  78. package/dist/src/deploy/dry-run.d.ts.map +1 -1
  79. package/dist/src/deploy/dry-run.js +1 -0
  80. package/dist/src/deploy/dry-run.js.map +1 -1
  81. package/dist/src/deploy/utils.d.ts +4 -7
  82. package/dist/src/deploy/utils.d.ts.map +1 -1
  83. package/dist/src/deploy/utils.js +22 -19
  84. package/dist/src/deploy/utils.js.map +1 -1
  85. package/dist/src/deploy/warp.d.ts.map +1 -1
  86. package/dist/src/deploy/warp.js +38 -123
  87. package/dist/src/deploy/warp.js.map +1 -1
  88. package/dist/src/send/message.d.ts.map +1 -1
  89. package/dist/src/send/message.js +15 -29
  90. package/dist/src/send/message.js.map +1 -1
  91. package/dist/src/send/transfer.d.ts.map +1 -1
  92. package/dist/src/send/transfer.js +5 -6
  93. package/dist/src/send/transfer.js.map +1 -1
  94. package/dist/src/submit/submit.d.ts +5 -0
  95. package/dist/src/submit/submit.d.ts.map +1 -0
  96. package/dist/src/submit/submit.js +30 -0
  97. package/dist/src/submit/submit.js.map +1 -0
  98. package/dist/src/submit/types.d.ts +18 -0
  99. package/dist/src/submit/types.d.ts.map +1 -0
  100. package/dist/src/submit/types.js +2 -0
  101. package/dist/src/submit/types.js.map +1 -0
  102. package/dist/src/tests/deployTestErc20.js +3 -2
  103. package/dist/src/tests/deployTestErc20.js.map +1 -1
  104. package/dist/src/tests/hooks.test.js +14 -8
  105. package/dist/src/tests/hooks.test.js.map +1 -1
  106. package/dist/src/tests/ism.test.js +1 -1
  107. package/dist/src/tests/ism.test.js.map +1 -1
  108. package/dist/src/utils/balances.d.ts +2 -2
  109. package/dist/src/utils/balances.d.ts.map +1 -1
  110. package/dist/src/utils/balances.js +8 -3
  111. package/dist/src/utils/balances.js.map +1 -1
  112. package/dist/src/utils/chains.d.ts +1 -0
  113. package/dist/src/utils/chains.d.ts.map +1 -1
  114. package/dist/src/utils/chains.js +20 -3
  115. package/dist/src/utils/chains.js.map +1 -1
  116. package/dist/src/utils/env.d.ts +3 -0
  117. package/dist/src/utils/env.d.ts.map +1 -1
  118. package/dist/src/utils/env.js +3 -0
  119. package/dist/src/utils/env.js.map +1 -1
  120. package/dist/src/utils/files.d.ts +1 -0
  121. package/dist/src/utils/files.d.ts.map +1 -1
  122. package/dist/src/utils/files.js +8 -0
  123. package/dist/src/utils/files.js.map +1 -1
  124. package/dist/src/utils/keys.d.ts +5 -3
  125. package/dist/src/utils/keys.d.ts.map +1 -1
  126. package/dist/src/utils/keys.js +16 -13
  127. package/dist/src/utils/keys.js.map +1 -1
  128. package/dist/src/validator/address.d.ts +10 -0
  129. package/dist/src/validator/address.d.ts.map +1 -0
  130. package/dist/src/validator/address.js +107 -0
  131. package/dist/src/validator/address.js.map +1 -0
  132. package/dist/src/version.d.ts +1 -1
  133. package/dist/src/version.d.ts.map +1 -1
  134. package/dist/src/version.js +1 -1
  135. package/dist/src/version.js.map +1 -1
  136. package/examples/core-config.yaml +19 -0
  137. package/examples/hooks.yaml +8 -4
  138. package/examples/warp-route-deployment.yaml +2 -4
  139. package/package.json +7 -4
  140. package/dist/src/commands/chains.d.ts +0 -6
  141. package/dist/src/commands/chains.d.ts.map +0 -1
  142. package/dist/src/commands/chains.js.map +0 -1
  143. package/dist/src/commands/hook.d.ts.map +0 -1
  144. package/dist/src/commands/hook.js +0 -34
  145. package/dist/src/commands/hook.js.map +0 -1
  146. package/dist/src/commands/ism.d.ts +0 -12
  147. package/dist/src/commands/ism.d.ts.map +0 -1
  148. package/dist/src/commands/ism.js +0 -36
  149. package/dist/src/commands/ism.js.map +0 -1
  150. package/dist/src/registry/MergedRegistry.d.ts +0 -35
  151. package/dist/src/registry/MergedRegistry.d.ts.map +0 -1
  152. package/dist/src/registry/MergedRegistry.js +0 -83
  153. package/dist/src/registry/MergedRegistry.js.map +0 -1
@@ -1,19 +1,25 @@
1
+ import { GithubRegistry, MergedRegistry, } from '@hyperlane-xyz/registry';
2
+ import { FileSystemRegistry } from '@hyperlane-xyz/registry/fs';
1
3
  import { MultiProvider } from '@hyperlane-xyz/sdk';
4
+ import { isHttpsUrl, isNullish, rootLogger } from '@hyperlane-xyz/utils';
2
5
  import { isSignCommand } from '../commands/signCommands.js';
3
- import { forkNetworkToMultiProvider } from '../deploy/dry-run.js';
4
- import { MergedRegistry } from '../registry/MergedRegistry.js';
6
+ import { forkNetworkToMultiProvider, verifyAnvil } from '../deploy/dry-run.js';
7
+ import { logBlue } from '../logger.js';
5
8
  import { runSingleChainSelectionStep } from '../utils/chains.js';
6
9
  import { getImpersonatedSigner, getSigner } from '../utils/keys.js';
7
10
  export async function contextMiddleware(argv) {
8
- const isDryRun = !!argv.dryRun;
11
+ const isDryRun = !isNullish(argv.dryRun);
9
12
  const requiresKey = isSignCommand(argv);
10
13
  const settings = {
11
14
  registryUri: argv.registry,
12
15
  registryOverrideUri: argv.overrides,
13
16
  key: argv.key,
17
+ fromAddress: argv.fromAddress,
14
18
  requiresKey,
15
19
  skipConfirmation: argv.yes,
16
20
  };
21
+ if (!isDryRun && settings.fromAddress)
22
+ throw new Error("'--from-address' or '-f' should only be used for dry-runs");
17
23
  const context = isDryRun
18
24
  ? await getDryRunContext(settings, argv.dryRun)
19
25
  : await getContext(settings);
@@ -26,7 +32,7 @@ export async function contextMiddleware(argv) {
26
32
  export async function getContext({ registryUri, registryOverrideUri, key, requiresKey, skipConfirmation, }) {
27
33
  const registry = getRegistry(registryUri, registryOverrideUri);
28
34
  let signer = undefined;
29
- if (requiresKey) {
35
+ if (key || requiresKey) {
30
36
  ({ key, signer } = await getSigner({ key, skipConfirmation }));
31
37
  }
32
38
  const multiProvider = await getMultiProvider(registry, signer);
@@ -43,17 +49,20 @@ export async function getContext({ registryUri, registryOverrideUri, key, requir
43
49
  * Retrieves dry-run context for the user-selected command
44
50
  * @returns dry-run context for the current command
45
51
  */
46
- export async function getDryRunContext({ registryUri, registryOverrideUri, key, skipConfirmation }, chain) {
47
- const registry = getRegistry(registryUri, registryOverrideUri, true);
52
+ export async function getDryRunContext({ registryUri, registryOverrideUri, key, fromAddress, skipConfirmation, }, chain) {
53
+ const registry = getRegistry(registryUri, registryOverrideUri);
48
54
  const chainMetadata = await registry.getMetadata();
49
55
  if (!chain) {
50
56
  if (skipConfirmation)
51
57
  throw new Error('No chains provided');
52
58
  chain = await runSingleChainSelectionStep(chainMetadata, 'Select chain to dry-run against:');
53
59
  }
54
- const multiProvider = await getMultiProvider(registry);
55
- await forkNetworkToMultiProvider(multiProvider, chain);
56
- const { key: impersonatedKey, signer: impersonatedSigner } = await getImpersonatedSigner({
60
+ logBlue(`Dry-running against chain: ${chain}`);
61
+ await verifyAnvil();
62
+ let multiProvider = await getMultiProvider(registry);
63
+ multiProvider = await forkNetworkToMultiProvider(multiProvider, chain);
64
+ const { impersonatedKey, impersonatedSigner } = await getImpersonatedSigner({
65
+ fromAddress,
57
66
  key,
58
67
  skipConfirmation,
59
68
  });
@@ -76,13 +85,26 @@ export async function getDryRunContext({ registryUri, registryOverrideUri, key,
76
85
  * and an override one (such as a local directory)
77
86
  * @returns a new MergedRegistry
78
87
  */
79
- function getRegistry(primaryRegistryUri, overrideRegistryUri, isDryRun) {
80
- const registryUris = [primaryRegistryUri, overrideRegistryUri]
81
- .map((r) => r.trim())
82
- .filter((r) => !!r);
88
+ function getRegistry(primaryRegistryUri, overrideRegistryUri) {
89
+ const logger = rootLogger.child({ module: 'MergedRegistry' });
90
+ const registries = [primaryRegistryUri, overrideRegistryUri]
91
+ .map((uri) => uri.trim())
92
+ .filter((uri) => !!uri)
93
+ .map((uri, index) => {
94
+ const childLogger = logger.child({ uri, index });
95
+ if (isHttpsUrl(uri)) {
96
+ return new GithubRegistry({ uri, logger: childLogger });
97
+ }
98
+ else {
99
+ return new FileSystemRegistry({
100
+ uri,
101
+ logger: childLogger,
102
+ });
103
+ }
104
+ });
83
105
  return new MergedRegistry({
84
- registryUris,
85
- isDryRun,
106
+ registries,
107
+ logger,
86
108
  });
87
109
  }
88
110
  /**
@@ -1 +1 @@
1
- {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,cAAc,EAEd,cAAc,GACf,MAAM,yBAAyB,CAAC;AACjC,OAAO,EAAE,kBAAkB,EAAE,MAAM,4BAA4B,CAAC;AAChE,OAAO,EAAa,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,EAAE,MAAM,sBAAsB,CAAC;AAEzE,OAAO,EAAE,aAAa,EAAE,MAAM,6BAA6B,CAAC;AAC5D,OAAO,EAAE,0BAA0B,EAAE,WAAW,EAAE,MAAM,sBAAsB,CAAC;AAC/E,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AACjE,OAAO,EAAE,qBAAqB,EAAE,SAAS,EAAE,MAAM,kBAAkB,CAAC;AAQpE,MAAM,CAAC,KAAK,UAAU,iBAAiB,CAAC,IAAyB;IAC/D,MAAM,QAAQ,GAAG,CAAC,SAAS,CAAC,IAAI,CAAC,MAAM,CAAC,CAAC;IACzC,MAAM,WAAW,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;IACxC,MAAM,QAAQ,GAAoB;QAChC,WAAW,EAAE,IAAI,CAAC,QAAQ;QAC1B,mBAAmB,EAAE,IAAI,CAAC,SAAS;QACnC,GAAG,EAAE,IAAI,CAAC,GAAG;QACb,WAAW,EAAE,IAAI,CAAC,WAAW;QAC7B,WAAW;QACX,gBAAgB,EAAE,IAAI,CAAC,GAAG;KAC3B,CAAC;IACF,IAAI,CAAC,QAAQ,IAAI,QAAQ,CAAC,WAAW;QACnC,MAAM,IAAI,KAAK,CACb,2DAA2D,CAC5D,CAAC;IACJ,MAAM,OAAO,GAAG,QAAQ;QACtB,CAAC,CAAC,MAAM,gBAAgB,CAAC,QAAQ,EAAE,IAAI,CAAC,MAAM,CAAC;QAC/C,CAAC,CAAC,MAAM,UAAU,CAAC,QAAQ,CAAC,CAAC;IAC/B,IAAI,CAAC,OAAO,GAAG,OAAO,CAAC;AACzB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,UAAU,CAAC,EAC/B,WAAW,EACX,mBAAmB,EACnB,GAAG,EACH,WAAW,EACX,gBAAgB,GACA;IAChB,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAE/D,IAAI,MAAM,GAA8B,SAAS,CAAC;IAClD,IAAI,GAAG,IAAI,WAAW,EAAE,CAAC;QACvB,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,GAAG,MAAM,SAAS,CAAC,EAAE,GAAG,EAAE,gBAAgB,EAAE,CAAC,CAAC,CAAC;IACjE,CAAC;IACD,MAAM,aAAa,GAAG,MAAM,gBAAgB,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;IAE/D,OAAO;QACL,QAAQ;QACR,aAAa,EAAE,aAAa,CAAC,QAAQ;QACrC,aAAa;QACb,GAAG;QACH,MAAM;QACN,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;KACnB,CAAC;AACtB,CAAC;AAED;;;GAGG;AACH,MAAM,CAAC,KAAK,UAAU,gBAAgB,CACpC,EACE,WAAW,EACX,mBAAmB,EACnB,GAAG,EACH,WAAW,EACX,gBAAgB,GACA,EAClB,KAAiB;IAEjB,MAAM,QAAQ,GAAG,WAAW,CAAC,WAAW,EAAE,mBAAmB,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;IAEnD,IAAI,CAAC,KAAK,EAAE,CAAC;QACX,IAAI,gBAAgB;YAAE,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;QAC5D,KAAK,GAAG,MAAM,2BAA2B,CACvC,aAAa,EACb,kCAAkC,CACnC,CAAC;IACJ,CAAC;IAED,OAAO,CAAC,8BAA8B,KAAK,EAAE,CAAC,CAAC;IAC/C,MAAM,WAAW,EAAE,CAAC;IAEpB,IAAI,aAAa,GAAG,MAAM,gBAAgB,CAAC,QAAQ,CAAC,CAAC;IACrD,aAAa,GAAG,MAAM,0BAA0B,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACvE,MAAM,EAAE,eAAe,EAAE,kBAAkB,EAAE,GAAG,MAAM,qBAAqB,CAAC;QAC1E,WAAW;QACX,GAAG;QACH,gBAAgB;KACjB,CAAC,CAAC;IACH,aAAa,CAAC,eAAe,CAAC,kBAAkB,CAAC,CAAC;IAElD,OAAO;QACL,QAAQ;QACR,aAAa,EAAE,aAAa,CAAC,QAAQ;QACrC,GAAG,EAAE,eAAe;QACpB,MAAM,EAAE,kBAAkB;QAC1B,aAAa,EAAE,aAAa;QAC5B,gBAAgB,EAAE,CAAC,CAAC,gBAAgB;QACpC,QAAQ,EAAE,IAAI;QACd,WAAW,EAAE,KAAK;KACI,CAAC;AAC3B,CAAC;AAED;;;;;;GAMG;AACH,SAAS,WAAW,CAClB,kBAA0B,EAC1B,mBAA2B;IAE3B,MAAM,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC,EAAE,MAAM,EAAE,gBAAgB,EAAE,CAAC,CAAC;IAC9D,MAAM,UAAU,GAAG,CAAC,kBAAkB,EAAE,mBAAmB,CAAC;SACzD,GAAG,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,GAAG,CAAC,IAAI,EAAE,CAAC;SACxB,MAAM,CAAC,CAAC,GAAG,EAAE,EAAE,CAAC,CAAC,CAAC,GAAG,CAAC;SACtB,GAAG,CAAC,CAAC,GAAG,EAAE,KAAK,EAAE,EAAE;QAClB,MAAM,WAAW,GAAG,MAAM,CAAC,KAAK,CAAC,EAAE,GAAG,EAAE,KAAK,EAAE,CAAC,CAAC;QACjD,IAAI,UAAU,CAAC,GAAG,CAAC,EAAE,CAAC;YACpB,OAAO,IAAI,cAAc,CAAC,EAAE,GAAG,EAAE,MAAM,EAAE,WAAW,EAAE,CAAC,CAAC;QAC1D,CAAC;aAAM,CAAC;YACN,OAAO,IAAI,kBAAkB,CAAC;gBAC5B,GAAG;gBACH,MAAM,EAAE,WAAW;aACpB,CAAC,CAAC;QACL,CAAC;IACH,CAAC,CAAC,CAAC;IACL,OAAO,IAAI,cAAc,CAAC;QACxB,UAAU;QACV,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED;;;;GAIG;AACH,KAAK,UAAU,gBAAgB,CAAC,QAAmB,EAAE,MAAsB;IACzE,MAAM,aAAa,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;IACnD,MAAM,aAAa,GAAG,IAAI,aAAa,CAAC,aAAa,CAAC,CAAC;IACvD,IAAI,MAAM;QAAE,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAClD,OAAO,aAAa,CAAC;AACvB,CAAC"}
@@ -6,6 +6,7 @@ export interface ContextSettings {
6
6
  registryUri: string;
7
7
  registryOverrideUri: string;
8
8
  key?: string;
9
+ fromAddress?: string;
9
10
  requiresKey?: boolean;
10
11
  skipConfirmation?: boolean;
11
12
  }
@@ -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,EACd,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,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;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;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;CACxB;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
+ {"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,EACd,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,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;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;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;CACxB;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"}
@@ -28,7 +28,7 @@ export async function runKurtosisAgentDeploy({ context, originChain, relayChains
28
28
  };
29
29
  const base64EncodedPackageConfig = toBase64(kurtosisPackageConfig) || '';
30
30
  const kurtosisCloudUrl = getKurtosisCloudUrl(base64EncodedPackageConfig);
31
- const kurtosisCloudLink = terminalLink('Cmd+Click or Ctrl+Click here', kurtosisCloudUrl, { fallback: () => kurtosisCloudUrl });
31
+ const kurtosisCloudLink = terminalLink('Kurtosis Cloud Link 🔗 (cmd+click or ctrl+click here)', kurtosisCloudUrl, { fallback: () => kurtosisCloudUrl });
32
32
  logGreen('\n', 'Click the link below to deploy your validator and relayer with Kurtosis:', '\n', `${kurtosisCloudLink}`);
33
33
  return;
34
34
  }
@@ -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,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,mBAAmB,GAAG,MAAM,0BAA0B,CAC1D,OAAO,CAAC,aAAa,EACrB,gCAAgC,EAChC,IAAI,CACL,CAAC;QACF,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,8BAA8B,EAC9B,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"}
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,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,mBAAmB,GAAG,MAAM,0BAA0B,CAC1D,OAAO,CAAC,aAAa,EACrB,gCAAgC,EAChC,IAAI,CACL,CAAC;QACF,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"}
@@ -1,15 +1,11 @@
1
- import { ChainMap, ChainName, IgpConfig, MultisigConfig } from '@hyperlane-xyz/sdk';
2
- import { Address } from '@hyperlane-xyz/utils';
1
+ import { ChainName, CoreConfig } from '@hyperlane-xyz/sdk';
3
2
  import { WriteCommandContext } from '../context/types.js';
4
3
  /**
5
4
  * Executes the core deploy command.
6
5
  */
7
- export declare function runCoreDeploy({ context, chains, ismConfigPath, hookConfigPath, agentOutPath, }: {
6
+ export declare function runCoreDeploy({ context, chain, config, }: {
8
7
  context: WriteCommandContext;
9
- chains?: ChainName[];
10
- ismConfigPath?: string;
11
- hookConfigPath?: string;
12
- agentOutPath: string;
8
+ chain: ChainName;
9
+ config: CoreConfig;
13
10
  }): Promise<void>;
14
- export declare function buildIgpConfigMap(owner: Address, chains: ChainName[], multisigConfigs: ChainMap<MultisigConfig>): ChainMap<IgpConfig>;
15
11
  //# sourceMappingURL=core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,QAAQ,EACR,SAAS,EAUT,SAAS,EAGT,cAAc,EAOf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAA+B,MAAM,sBAAsB,CAAC;AAM5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAsB1D;;GAEG;AACH,wBAAsB,aAAa,CAAC,EAClC,OAAO,EACP,MAAM,EACN,aAAa,EACb,cAAc,EACd,YAAY,GACb,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB,iBA4CA;AAoPD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,SAAS,EAAE,EACnB,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC,GACxC,QAAQ,CAAC,SAAS,CAAC,CA6BrB"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,UAAU,EAAiB,MAAM,oBAAoB,CAAC;AAG1E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAgB1D;;GAEG;AACH,wBAAsB,aAAa,CAAC,EAClC,OAAO,EACP,KAAK,EACL,MAAM,GACP,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,MAAM,EAAE,UAAU,CAAC;CACpB,iBAwDA"}
@@ -1,254 +1,50 @@
1
- import { confirm } from '@inquirer/prompts';
2
- import { ethers } from 'ethers';
3
- import { GasOracleContractType, HyperlaneCore, HyperlaneCoreDeployer, HyperlaneIsmFactory, HyperlaneProxyFactoryDeployer, IsmType, buildAgentConfig, buildAggregationIsmConfigs, defaultMultisigConfigs, multisigIsmVerificationCost, serializeContractsMap, } from '@hyperlane-xyz/sdk';
4
- import { objFilter, objMap, objMerge } from '@hyperlane-xyz/utils';
5
- import { presetHookConfigs, readHooksConfigMap } from '../config/hooks.js';
6
- import { readIsmConfig } from '../config/ism.js';
7
- import { readMultisigConfig } from '../config/multisig.js';
1
+ import { EvmCoreModule } from '@hyperlane-xyz/sdk';
8
2
  import { MINIMUM_CORE_DEPLOY_GAS } from '../consts.js';
9
- import { log, logBlue, logBoldUnderlinedRed, logGray, logGreen, logRed, } from '../logger.js';
10
- import { runMultiChainSelectionStep } from '../utils/chains.js';
11
- import { runFileSelectionStep, writeJson } from '../utils/files.js';
12
- import { completeDeploy, isISMConfig, isZODISMConfig, prepareDeploy, runPreflightChecksForChains, } from './utils.js';
13
- const CONTRACT_CACHE_EXCLUSIONS = ['interchainGasPaymaster'];
3
+ import { logBlue } from '../logger.js';
4
+ import { runSingleChainSelectionStep } from '../utils/chains.js';
5
+ import { completeDeploy, prepareDeploy, runDeployPlanStep, runPreflightChecksForChains, } from './utils.js';
14
6
  /**
15
7
  * Executes the core deploy command.
16
8
  */
17
- export async function runCoreDeploy({ context, chains, ismConfigPath, hookConfigPath, agentOutPath, }) {
18
- const { chainMetadata, signer, dryRunChain, skipConfirmation } = context;
19
- if (dryRunChain)
20
- chains = [dryRunChain];
21
- else if (!chains?.length) {
9
+ export async function runCoreDeploy({ context, chain, config, }) {
10
+ const { signer, isDryRun, chainMetadata, dryRunChain, registry, skipConfirmation, } = context;
11
+ // Select a dry-run chain if it's not supplied
12
+ if (dryRunChain) {
13
+ chain = dryRunChain;
14
+ }
15
+ else if (!chain) {
22
16
  if (skipConfirmation)
23
- throw new Error('No chains provided');
24
- chains = await runMultiChainSelectionStep(chainMetadata, 'Select chains to connect:', true);
17
+ throw new Error('No chain provided');
18
+ chain = await runSingleChainSelectionStep(chainMetadata, 'Select chain to connect:');
25
19
  }
26
- const result = await runIsmStep(chains, skipConfirmation, ismConfigPath);
27
- // we can either specify the full ISM config or just the multisig config
28
- const isIsmConfig = isISMConfig(result);
29
- const ismConfigs = isIsmConfig ? result : undefined;
30
- const multisigConfigs = isIsmConfig
31
- ? defaultMultisigConfigs
32
- : result;
33
- const hooksConfig = await runHookStep(chains, hookConfigPath);
34
20
  const deploymentParams = {
35
21
  context,
36
- chains,
37
- ismConfigs,
38
- multisigConfigs,
39
- hooksConfig,
40
- agentOutPath,
22
+ chain,
23
+ config,
41
24
  };
42
25
  await runDeployPlanStep(deploymentParams);
43
26
  await runPreflightChecksForChains({
44
27
  ...deploymentParams,
28
+ chains: [chain],
45
29
  minGas: MINIMUM_CORE_DEPLOY_GAS,
46
30
  });
47
31
  const userAddress = await signer.getAddress();
48
- const initialBalances = await prepareDeploy(context, userAddress, chains);
49
- await executeDeploy(deploymentParams);
50
- await completeDeploy(context, 'core', initialBalances, userAddress, chains);
51
- }
52
- async function runIsmStep(selectedChains, skipConfirmation, ismConfigPath) {
53
- if (!ismConfigPath) {
54
- logBlue('\n', 'Hyperlane instances requires an Interchain Security Module (ISM).');
55
- logGray('Example config: https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/cli/typescript/cli/examples/ism.yaml');
56
- if (skipConfirmation)
57
- throw new Error('ISM config required');
58
- ismConfigPath = await runFileSelectionStep('./configs', 'ISM config', 'ism');
59
- }
60
- const isAdvancedIsm = isZODISMConfig(ismConfigPath);
61
- // separate flow for 'ism' and 'ism-advanced' options
62
- if (isAdvancedIsm) {
63
- logBoldUnderlinedRed('WARNING: YOU ARE DEPLOYING WITH AN ADVANCED ISM CONFIG');
64
- logRed('Advanced ISM configs require knowledge of different ISM types and how they work together topologically. If possible, use the basic ISM configs are recommended.');
65
- const ismConfig = readIsmConfig(ismConfigPath);
66
- const requiredIsms = objFilter(ismConfig, (chain, config) => selectedChains.includes(chain));
67
- // selected chains - (user configs + default configs) = missing config
68
- const missingConfigs = selectedChains.filter((c) => !Object.keys(ismConfig).includes(c));
69
- if (missingConfigs.length > 0) {
70
- throw new Error(`Missing advanced ISM config for one or more chains: ${missingConfigs.join(', ')}`);
71
- }
72
- log(`Found configs for chains: ${selectedChains.join(', ')}`);
73
- return requiredIsms;
74
- }
75
- else {
76
- const multisigConfigs = {
77
- ...defaultMultisigConfigs,
78
- ...readMultisigConfig(ismConfigPath),
79
- };
80
- const requiredMultisigs = objFilter(multisigConfigs, (chain, config) => selectedChains.includes(chain));
81
- // selected chains - (user configs + default configs) = missing config
82
- const missingConfigs = selectedChains.filter((c) => !Object.keys(requiredMultisigs).includes(c));
83
- if (missingConfigs.length > 0) {
84
- throw new Error(`Missing ISM config for one or more chains: ${missingConfigs.join(', ')}`);
85
- }
86
- log(`Found configs for chains: ${selectedChains.join(', ')}`);
87
- return requiredMultisigs;
88
- }
89
- }
90
- async function runHookStep(_selectedChains, hookConfigPath) {
91
- if (!hookConfigPath)
92
- return {};
93
- return readHooksConfigMap(hookConfigPath);
94
- }
95
- async function runDeployPlanStep({ context, chains }) {
96
- const { signer, skipConfirmation } = context;
97
- const address = await signer.getAddress();
98
- logBlue('\nDeployment plan');
99
- logGray('===============');
100
- log(`Transaction signer and owner of new contracts will be ${address}`);
101
- log(`Deploying to ${chains.join(', ')}`);
102
- log(`There are several contracts required for each chain but contracts in your provided registries will be skipped`);
103
- if (skipConfirmation)
104
- return;
105
- const isConfirmed = await confirm({
106
- message: 'Is this deployment plan correct?',
107
- });
108
- if (!isConfirmed)
109
- throw new Error('Deployment cancelled');
110
- }
111
- async function executeDeploy({ context, chains, ismConfigs = {}, multisigConfigs = {}, hooksConfig = {}, agentOutPath, }) {
32
+ const initialBalances = await prepareDeploy(context, userAddress, [chain]);
112
33
  logBlue('All systems ready, captain! Beginning deployment...');
113
- const { signer, multiProvider, registry } = context;
114
- let chainAddresses = await registry.getAddresses();
115
- chainAddresses = filterAddressesToCache(chainAddresses);
116
- const owner = await signer.getAddress();
117
- let artifacts = {};
118
- // 1. Deploy ISM factories to all deployable chains that don't have them.
119
- logBlue('Deploying ISM factory contracts');
120
- const ismFactoryDeployer = new HyperlaneProxyFactoryDeployer(multiProvider);
121
- ismFactoryDeployer.cacheAddressesMap(chainAddresses);
122
- const ismFactoryConfig = chains.reduce((chainMap, curr) => {
123
- chainMap[curr] = {};
124
- return chainMap;
125
- }, {});
126
- const ismFactoryContracts = await ismFactoryDeployer.deploy(ismFactoryConfig);
127
- artifacts = await updateChainAddresses(registry, ismFactoryContracts, artifacts);
128
- logGreen('ISM factory contracts deployed');
129
- // Build an IsmFactory that covers all chains so that we can
130
- // use it to deploy ISMs to remote chains.
131
- const ismFactory = HyperlaneIsmFactory.fromAddressesMap(chainAddresses, multiProvider);
132
- // 3. Construct ISM configs for all deployable chains
133
- const defaultIsms = {};
134
- for (const ismOrigin of chains) {
135
- defaultIsms[ismOrigin] =
136
- ismConfigs[ismOrigin] ??
137
- buildIsmConfig(owner, ismOrigin, chains, multisigConfigs);
138
- }
139
- // 4. Deploy core contracts to chains
140
- logBlue(`Deploying core contracts to ${chains.join(', ')}`);
141
- const coreDeployer = new HyperlaneCoreDeployer(multiProvider, ismFactory);
142
- coreDeployer.cacheAddressesMap(chainAddresses);
143
- const coreConfigs = buildCoreConfigMap(owner, chains, defaultIsms, hooksConfig);
144
- const coreContracts = await coreDeployer.deploy(coreConfigs);
145
- // 4.5 recover the toplevel ISM address
146
- const isms = {};
147
- for (const chain of chains) {
148
- isms[chain] = {
149
- interchainSecurityModule: coreDeployer.cachedAddresses[chain].interchainSecurityModule,
150
- };
151
- }
152
- artifacts = objMerge(artifacts, isms);
153
- artifacts = await updateChainAddresses(registry, coreContracts, artifacts);
154
- logGreen('✅ Core contracts deployed');
155
- log(JSON.stringify(artifacts, null, 2));
156
- await writeAgentConfig(context, artifacts, chains, agentOutPath);
157
- logBlue('Deployment is complete!');
158
- }
159
- function filterAddressesToCache(addressesMap) {
160
- // Filter out the certain addresses that must always be
161
- // deployed when deploying to a PI chain.
162
- // See https://github.com/hyperlane-xyz/hyperlane-monorepo/pull/2983
163
- // And https://github.com/hyperlane-xyz/hyperlane-monorepo/pull/3183
164
- return objMap(addressesMap, (_chain, addresses) => objFilter(addresses, (contract, _address) => !CONTRACT_CACHE_EXCLUSIONS.includes(contract)));
165
- }
166
- function buildIsmConfig(owner, local, chains, multisigIsmConfigs) {
167
- const aggregationIsmConfigs = buildAggregationIsmConfigs(local, chains, multisigIsmConfigs);
168
- return {
169
- owner,
170
- type: IsmType.ROUTING,
171
- domains: aggregationIsmConfigs,
172
- };
173
- }
174
- function buildCoreConfigMap(owner, chains, defaultIsms, hooksConfig) {
175
- return chains.reduce((config, chain) => {
176
- const hooks = hooksConfig[chain] ?? presetHookConfigs(owner);
177
- config[chain] = {
178
- owner,
179
- defaultIsm: defaultIsms[chain],
180
- defaultHook: hooks.default,
181
- requiredHook: hooks.required,
182
- };
183
- return config;
184
- }, {});
185
- }
186
- export function buildIgpConfigMap(owner, chains, multisigConfigs) {
187
- const configMap = {};
188
- for (const chain of chains) {
189
- const overhead = {};
190
- const gasOracleType = {};
191
- for (const remote of chains) {
192
- if (chain === remote)
193
- continue;
194
- // TODO: accurate estimate of gas from ChainMap<ISMConfig>
195
- const threshold = multisigConfigs[remote]
196
- ? multisigConfigs[remote].threshold
197
- : 2;
198
- const validatorsLength = multisigConfigs[remote]
199
- ? multisigConfigs[remote].validators.length
200
- : 3;
201
- overhead[remote] = multisigIsmVerificationCost(threshold, validatorsLength);
202
- gasOracleType[remote] = GasOracleContractType.StorageGasOracle;
203
- }
204
- configMap[chain] = {
205
- owner,
206
- beneficiary: owner,
207
- gasOracleType,
208
- overhead,
209
- oracleKey: owner,
210
- };
211
- }
212
- return configMap;
213
- }
214
- async function updateChainAddresses(registry, newContracts, otherAddresses) {
215
- let newAddresses = serializeContractsMap(newContracts);
216
- // The HyperlaneCoreDeployer is returning a nested object with ISM addresses
217
- // from other chains, which don't need to be in the artifacts atm.
218
- newAddresses = objMap(newAddresses, (_, newChainAddresses) => {
219
- // For each chain in the addresses chainmap, filter the values to those that are just strings
220
- return objFilter(newChainAddresses, (_, value) => typeof value === 'string');
34
+ const evmCoreModule = await EvmCoreModule.create({
35
+ chain,
36
+ config,
37
+ multiProvider: context.multiProvider,
221
38
  });
222
- const mergedAddresses = objMerge(otherAddresses, newAddresses);
223
- for (const chainName of Object.keys(newContracts)) {
39
+ await completeDeploy(context, 'core', initialBalances, userAddress, [chain]);
40
+ const deployedAddresses = evmCoreModule.serialize();
41
+ if (!isDryRun) {
224
42
  await registry.updateChain({
225
- chainName,
226
- addresses: mergedAddresses[chainName],
43
+ chainName: chain,
44
+ addresses: deployedAddresses,
227
45
  });
46
+ // @TODO implement writeAgentConfig
228
47
  }
229
- return mergedAddresses;
230
- }
231
- async function writeAgentConfig(context, artifacts, chains, outPath) {
232
- if (context.isDryRun)
233
- return;
234
- log('Writing agent configs');
235
- const { multiProvider, registry } = context;
236
- const startBlocks = {};
237
- const core = HyperlaneCore.fromAddressesMap(artifacts, multiProvider);
238
- for (const chain of chains) {
239
- const mailbox = core.getContracts(chain).mailbox;
240
- startBlocks[chain] = (await mailbox.deployedBlock()).toNumber();
241
- }
242
- const chainAddresses = await registry.getAddresses();
243
- for (const chain of chains) {
244
- if (!chainAddresses[chain].interchainGasPaymaster) {
245
- chainAddresses[chain].interchainGasPaymaster =
246
- ethers.constants.AddressZero;
247
- }
248
- }
249
- const agentConfig = buildAgentConfig(chains, // Use only the chains that were deployed to
250
- multiProvider, chainAddresses, startBlocks);
251
- writeJson(outPath, agentConfig);
252
- logGreen('Agent configs written');
48
+ logBlue('Deployment is complete!');
253
49
  }
254
50
  //# 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":"AAAA,OAAO,EAAyB,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE1E,OAAO,EAAE,uBAAuB,EAAE,MAAM,cAAc,CAAC;AAEvD,OAAO,EAAE,OAAO,EAAE,MAAM,cAAc,CAAC;AACvC,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEjE,OAAO,EACL,cAAc,EACd,aAAa,EACb,iBAAiB,EACjB,2BAA2B,GAC5B,MAAM,YAAY,CAAC;AAOpB;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,aAAa,CAAC,EAClC,OAAO,EACP,KAAK,EACL,MAAM,GAKP;IACC,MAAM,EACJ,MAAM,EACN,QAAQ,EACR,aAAa,EACb,WAAW,EACX,QAAQ,EACR,gBAAgB,GACjB,GAAG,OAAO,CAAC;IAEZ,8CAA8C;IAC9C,IAAI,WAAW,EAAE,CAAC;QAChB,KAAK,GAAG,WAAW,CAAC;IACtB,CAAC;SAAM,IAAI,CAAC,KAAK,EAAE,CAAC;QAClB,IAAI,gBAAgB;YAAE,MAAM,IAAI,KAAK,CAAC,mBAAmB,CAAC,CAAC;QAC3D,KAAK,GAAG,MAAM,2BAA2B,CACvC,aAAa,EACb,0BAA0B,CAC3B,CAAC;IACJ,CAAC;IACD,MAAM,gBAAgB,GAAiB;QACrC,OAAO;QACP,KAAK;QACL,MAAM;KACP,CAAC;IAEF,MAAM,iBAAiB,CAAC,gBAAgB,CAAC,CAAC;IAC1C,MAAM,2BAA2B,CAAC;QAChC,GAAG,gBAAgB;QACnB,MAAM,EAAE,CAAC,KAAK,CAAC;QACf,MAAM,EAAE,uBAAuB;KAChC,CAAC,CAAC;IAEH,MAAM,WAAW,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAE9C,MAAM,eAAe,GAAG,MAAM,aAAa,CAAC,OAAO,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAE3E,OAAO,CAAC,qDAAqD,CAAC,CAAC;IAC/D,MAAM,aAAa,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;QAC/C,KAAK;QACL,MAAM;QACN,aAAa,EAAE,OAAO,CAAC,aAAa;KACrC,CAAC,CAAC;IAEH,MAAM,cAAc,CAAC,OAAO,EAAE,MAAM,EAAE,eAAe,EAAE,WAAW,EAAE,CAAC,KAAK,CAAC,CAAC,CAAC;IAC7E,MAAM,iBAAiB,GAAG,aAAa,CAAC,SAAS,EAAE,CAAC;IAEpD,IAAI,CAAC,QAAQ,EAAE,CAAC;QACd,MAAM,QAAQ,CAAC,WAAW,CAAC;YACzB,SAAS,EAAE,KAAK;YAChB,SAAS,EAAE,iBAAiB;SAC7B,CAAC,CAAC;QAEH,mCAAmC;IACrC,CAAC;IACD,OAAO,CAAC,yBAAyB,CAAC,CAAC;AACrC,CAAC"}
@@ -4,7 +4,7 @@ import { MultiProvider } from '@hyperlane-xyz/sdk';
4
4
  * @param multiProvider the MultiProvider to be prepared
5
5
  * @param chains the chain selection passed-in by the user
6
6
  */
7
- export declare function forkNetworkToMultiProvider(multiProvider: MultiProvider, chain: string): Promise<void>;
7
+ export declare function forkNetworkToMultiProvider(multiProvider: MultiProvider, chain: string): Promise<MultiProvider<{}>>;
8
8
  /**
9
9
  * Ensures an anvil node is running locally.
10
10
  */
@@ -14,6 +14,6 @@ export declare function verifyAnvil(): Promise<void>;
14
14
  * @param error the thrown error
15
15
  * @param dryRun the chain name to execute the dry-run on
16
16
  */
17
- export declare function evaluateIfDryRunFailure(error: any, dryRun: boolean): void;
17
+ export declare function evaluateIfDryRunFailure(error: any, dryRun: string): void;
18
18
  export declare function completeDryRun(command: string): Promise<void>;
19
19
  //# sourceMappingURL=dry-run.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"dry-run.d.ts","sourceRoot":"","sources":["../../../src/deploy/dry-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EAId,MAAM,oBAAoB,CAAC;AAO5B;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,MAAM,iBAOd;AAED;;GAEG;AACH,wBAAsB,WAAW,kBAahC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,OAAO,QAKlE;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,iBAInD"}
1
+ {"version":3,"file":"dry-run.d.ts","sourceRoot":"","sources":["../../../src/deploy/dry-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EAId,MAAM,oBAAoB,CAAC;AAO5B;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,MAAM,8BAQd;AAED;;GAEG;AACH,wBAAsB,WAAW,kBAahC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,QAKjE;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,iBAInD"}
@@ -12,6 +12,7 @@ export async function forkNetworkToMultiProvider(multiProvider, chain) {
12
12
  [chain]: { blocks: { confirmations: 0 } },
13
13
  });
14
14
  await setFork(multiProvider, chain);
15
+ return multiProvider;
15
16
  }
16
17
  /**
17
18
  * Ensures an anvil node is running locally.
@@ -1 +1 @@
1
- {"version":3,"file":"dry-run.js","sourceRoot":"","sources":["../../../src/deploy/dry-run.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAEjB,gBAAgB,EAChB,SAAS,EACT,OAAO,GACR,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,aAA4B,EAC5B,KAAa;IAEb,aAAa,GAAG,aAAa,CAAC,mBAAmB,CAAC;QAChD,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE;KAC1C,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,OAAO,CAAC,uCAAuC,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC;+CACyB,CAAC,CAAC;IAC/C,CAAC;IAED,QAAQ,CAAC,+CAA+C,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAU,EAAE,MAAe;IACjE,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC3D,UAAU,CACR,uGAAuG,CACxG,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe;IAClD,MAAM,SAAS,EAAE,CAAC;IAElB,QAAQ,CAAC,KAAK,gBAAgB,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAC5E,CAAC"}
1
+ {"version":3,"file":"dry-run.js","sourceRoot":"","sources":["../../../src/deploy/dry-run.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAEjB,gBAAgB,EAChB,SAAS,EACT,OAAO,GACR,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,aAA4B,EAC5B,KAAa;IAEb,aAAa,GAAG,aAAa,CAAC,mBAAmB,CAAC;QAChD,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE;KAC1C,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;IACpC,OAAO,aAAa,CAAC;AACvB,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,OAAO,CAAC,uCAAuC,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC;+CACyB,CAAC,CAAC;IAC/C,CAAC;IAED,QAAQ,CAAC,+CAA+C,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAU,EAAE,MAAc;IAChE,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC3D,UAAU,CACR,uGAAuG,CACxG,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe;IAClD,MAAM,SAAS,EAAE,CAAC;IAElB,QAAQ,CAAC,KAAK,gBAAgB,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAC5E,CAAC"}
@@ -2,19 +2,16 @@ import { BigNumber } from 'ethers';
2
2
  import { ChainMap, ChainName, IsmConfig, MultisigConfig } from '@hyperlane-xyz/sdk';
3
3
  import { Address } from '@hyperlane-xyz/utils';
4
4
  import { WriteCommandContext } from '../context/types.js';
5
- export declare function runPreflightChecks({ context, origin, remotes, minGas, chainsToGasCheck, }: {
6
- context: WriteCommandContext;
7
- origin: ChainName;
8
- remotes: ChainName[];
9
- minGas: string;
10
- chainsToGasCheck?: ChainName[];
11
- }): Promise<void>;
12
5
  export declare function runPreflightChecksForChains({ context, chains, minGas, chainsToGasCheck, }: {
13
6
  context: WriteCommandContext;
14
7
  chains: ChainName[];
15
8
  minGas: string;
16
9
  chainsToGasCheck?: ChainName[];
17
10
  }): Promise<void>;
11
+ export declare function runDeployPlanStep({ context, chain, }: {
12
+ context: WriteCommandContext;
13
+ chain: ChainName;
14
+ }): Promise<void>;
18
15
  export declare function isISMConfig(config: ChainMap<MultisigConfig> | ChainMap<IsmConfig>): boolean;
19
16
  export declare function isZODISMConfig(filepath: string): boolean;
20
17
  export declare function prepareDeploy(context: WriteCommandContext, userAddress: Address, chains: ChainName[]): Promise<Record<string, BigNumber>>;
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/deploy/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAU,MAAM,QAAQ,CAAC;AAE3C,OAAO,EACL,QAAQ,EACR,SAAS,EACT,SAAS,EACT,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAgB,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAQ1D,wBAAsB,kBAAkB,CAAC,EACvC,OAAO,EACP,MAAM,EACN,OAAO,EACP,MAAM,EACN,gBAAgB,GACjB,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC;CAChC,iBAgBA;AAED,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,iBAuBA;AAGD,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,EACpB,MAAM,EAAE,SAAS,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAapC;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAC1C,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,SAAS,EAAE,iBAqBpB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,UAE9C"}
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,EACR,SAAS,EACT,SAAS,EACT,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAgB,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAQ1D,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,iBAuBA;AAED,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,EACP,KAAK,GACN,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,KAAK,EAAE,SAAS,CAAC;CAClB,iBAiBA;AAGD,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,EACpB,MAAM,EAAE,SAAS,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAapC;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAC1C,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,SAAS,EAAE,iBAqBpB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,UAE9C"}
@@ -1,27 +1,13 @@
1
+ import { confirm } from '@inquirer/prompts';
1
2
  import { ethers } from 'ethers';
2
3
  import { getLocalProvider, } from '@hyperlane-xyz/sdk';
3
4
  import { ProtocolType } from '@hyperlane-xyz/utils';
4
5
  import { parseIsmConfig } from '../config/ism.js';
5
- import { log, logGreen, logPink } from '../logger.js';
6
- import { assertGasBalances } from '../utils/balances.js';
6
+ import { log, logBlue, logGray, logGreen, logPink } from '../logger.js';
7
+ import { gasBalancesAreSufficient } from '../utils/balances.js';
7
8
  import { ENV } from '../utils/env.js';
8
9
  import { assertSigner } from '../utils/keys.js';
9
10
  import { completeDryRun } from './dry-run.js';
10
- export async function runPreflightChecks({ context, origin, remotes, minGas, chainsToGasCheck, }) {
11
- log('Running pre-flight checks...');
12
- if (!origin || !remotes?.length)
13
- throw new Error('Invalid chain selection');
14
- logGreen('✅ Chain selections are valid');
15
- if (remotes.includes(origin))
16
- throw new Error('Origin and remotes must be distinct');
17
- logGreen('✅ Origin and remote are distinct');
18
- return runPreflightChecksForChains({
19
- context,
20
- chains: [origin, ...remotes],
21
- minGas,
22
- chainsToGasCheck,
23
- });
24
- }
25
11
  export async function runPreflightChecksForChains({ context, chains, minGas, chainsToGasCheck, }) {
26
12
  log('Running pre-flight checks for chains...');
27
13
  const { signer, multiProvider } = context;
@@ -37,8 +23,25 @@ export async function runPreflightChecksForChains({ context, chains, minGas, cha
37
23
  logGreen('✅ Chains are valid');
38
24
  assertSigner(signer);
39
25
  logGreen('✅ Signer is valid');
40
- await assertGasBalances(multiProvider, signer, chainsToGasCheck ?? chains, minGas);
41
- logGreen('✅ Balances are sufficient');
26
+ const sufficient = await gasBalancesAreSufficient(multiProvider, signer, chainsToGasCheck ?? chains, minGas);
27
+ if (sufficient)
28
+ logGreen('✅ Balances are sufficient');
29
+ }
30
+ export async function runDeployPlanStep({ context, chain, }) {
31
+ const { signer, skipConfirmation } = context;
32
+ const address = await signer.getAddress();
33
+ logBlue('\nDeployment plan');
34
+ logGray('===============');
35
+ log(`Transaction signer and owner of new contracts will be ${address}`);
36
+ log(`Deploying to ${chain}`);
37
+ log(`There are several contracts required for each chain but contracts in your provided registries will be skipped`);
38
+ if (skipConfirmation)
39
+ return;
40
+ const isConfirmed = await confirm({
41
+ message: 'Is this deployment plan correct?',
42
+ });
43
+ if (!isConfirmed)
44
+ throw new Error('Deployment cancelled');
42
45
  }
43
46
  // from parsed types
44
47
  export function isISMConfig(config) {