@hyperlane-xyz/cli 3.1.9 → 3.2.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 (228) hide show
  1. package/README.md +6 -1
  2. package/dist/cli.d.ts +1 -1
  3. package/dist/cli.d.ts.map +1 -1
  4. package/dist/cli.js +27 -3
  5. package/dist/cli.js.map +1 -1
  6. package/dist/env.d.ts +2 -0
  7. package/dist/env.d.ts.map +1 -0
  8. package/dist/env.js +14 -0
  9. package/dist/env.js.map +1 -0
  10. package/dist/src/avs/config.d.ts +11 -0
  11. package/dist/src/avs/config.d.ts.map +1 -0
  12. package/dist/src/avs/config.js +10 -0
  13. package/dist/src/avs/config.js.map +1 -0
  14. package/dist/src/avs/stakeRegistry.d.ts +19 -0
  15. package/dist/src/avs/stakeRegistry.d.ts.map +1 -0
  16. package/dist/src/avs/stakeRegistry.js +94 -0
  17. package/dist/src/avs/stakeRegistry.js.map +1 -0
  18. package/dist/src/commands/avs.d.ts +12 -0
  19. package/dist/src/commands/avs.d.ts.map +1 -0
  20. package/dist/src/commands/avs.js +58 -0
  21. package/dist/src/commands/avs.js.map +1 -0
  22. package/dist/src/commands/chains.d.ts.map +1 -1
  23. package/dist/src/commands/chains.js +46 -27
  24. package/dist/src/commands/chains.js.map +1 -1
  25. package/dist/src/commands/config.js +74 -85
  26. package/dist/src/commands/config.js.map +1 -1
  27. package/dist/src/commands/deploy.d.ts.map +1 -1
  28. package/dist/src/commands/deploy.js +58 -91
  29. package/dist/src/commands/deploy.js.map +1 -1
  30. package/dist/src/commands/hook.d.ts +12 -0
  31. package/dist/src/commands/hook.d.ts.map +1 -0
  32. package/dist/src/commands/hook.js +34 -0
  33. package/dist/src/commands/hook.js.map +1 -0
  34. package/dist/src/commands/ism.d.ts +12 -0
  35. package/dist/src/commands/ism.d.ts.map +1 -0
  36. package/dist/src/commands/ism.js +36 -0
  37. package/dist/src/commands/ism.js.map +1 -0
  38. package/dist/src/commands/options.d.ts +19 -7
  39. package/dist/src/commands/options.d.ts.map +1 -1
  40. package/dist/src/commands/options.js +90 -27
  41. package/dist/src/commands/options.js.map +1 -1
  42. package/dist/src/commands/send.d.ts +14 -1
  43. package/dist/src/commands/send.d.ts.map +1 -1
  44. package/dist/src/commands/send.js +32 -55
  45. package/dist/src/commands/send.js.map +1 -1
  46. package/dist/src/commands/signCommands.d.ts +3 -0
  47. package/dist/src/commands/signCommands.d.ts.map +1 -0
  48. package/dist/src/commands/signCommands.js +11 -0
  49. package/dist/src/commands/signCommands.js.map +1 -0
  50. package/dist/src/commands/status.d.ts +5 -2
  51. package/dist/src/commands/status.d.ts.map +1 -1
  52. package/dist/src/commands/status.js +9 -19
  53. package/dist/src/commands/status.js.map +1 -1
  54. package/dist/src/config/chain.d.ts +5 -7
  55. package/dist/src/config/chain.d.ts.map +1 -1
  56. package/dist/src/config/chain.js +94 -64
  57. package/dist/src/config/chain.js.map +1 -1
  58. package/dist/src/config/chain.test.d.ts +2 -0
  59. package/dist/src/config/chain.test.d.ts.map +1 -0
  60. package/dist/src/config/chain.test.js +9 -0
  61. package/dist/src/config/chain.test.js.map +1 -0
  62. package/dist/src/config/hooks.d.ts +91 -214
  63. package/dist/src/config/hooks.d.ts.map +1 -1
  64. package/dist/src/config/hooks.js +218 -122
  65. package/dist/src/config/hooks.js.map +1 -1
  66. package/dist/src/config/ism.d.ts +74 -0
  67. package/dist/src/config/ism.d.ts.map +1 -0
  68. package/dist/src/config/ism.js +223 -0
  69. package/dist/src/config/ism.js.map +1 -0
  70. package/dist/src/config/multisig.d.ts +4 -14
  71. package/dist/src/config/multisig.d.ts.map +1 -1
  72. package/dist/src/config/multisig.js +35 -29
  73. package/dist/src/config/multisig.js.map +1 -1
  74. package/dist/src/config/warp.d.ts +7 -180
  75. package/dist/src/config/warp.d.ts.map +1 -1
  76. package/dist/src/config/warp.js +55 -62
  77. package/dist/src/config/warp.js.map +1 -1
  78. package/dist/src/consts.d.ts +1 -0
  79. package/dist/src/consts.d.ts.map +1 -1
  80. package/dist/src/consts.js +1 -0
  81. package/dist/src/consts.js.map +1 -1
  82. package/dist/src/context/context.d.ts +14 -0
  83. package/dist/src/context/context.d.ts.map +1 -0
  84. package/dist/src/context/context.js +108 -0
  85. package/dist/src/context/context.js.map +1 -0
  86. package/dist/src/context/types.d.ts +33 -0
  87. package/dist/src/context/types.d.ts.map +1 -0
  88. package/dist/src/context/types.js.map +1 -0
  89. package/dist/src/deploy/agent.d.ts +6 -4
  90. package/dist/src/deploy/agent.d.ts.map +1 -1
  91. package/dist/src/deploy/agent.js +10 -24
  92. package/dist/src/deploy/agent.js.map +1 -1
  93. package/dist/src/deploy/core.d.ts +10 -7
  94. package/dist/src/deploy/core.d.ts.map +1 -1
  95. package/dist/src/deploy/core.js +156 -160
  96. package/dist/src/deploy/core.js.map +1 -1
  97. package/dist/src/deploy/dry-run.d.ts +19 -0
  98. package/dist/src/deploy/dry-run.d.ts.map +1 -0
  99. package/dist/src/deploy/dry-run.js +45 -0
  100. package/dist/src/deploy/dry-run.js.map +1 -0
  101. package/dist/src/deploy/utils.d.ts +15 -8
  102. package/dist/src/deploy/utils.d.ts.map +1 -1
  103. package/dist/src/deploy/utils.js +60 -11
  104. package/dist/src/deploy/utils.js.map +1 -1
  105. package/dist/src/deploy/warp.d.ts +4 -7
  106. package/dist/src/deploy/warp.d.ts.map +1 -1
  107. package/dist/src/deploy/warp.js +131 -169
  108. package/dist/src/deploy/warp.js.map +1 -1
  109. package/dist/src/hook/read.d.ts +13 -0
  110. package/dist/src/hook/read.d.ts.map +1 -0
  111. package/dist/src/hook/read.js +25 -0
  112. package/dist/src/hook/read.js.map +1 -0
  113. package/dist/src/ism/read.d.ts +13 -0
  114. package/dist/src/ism/read.d.ts.map +1 -0
  115. package/dist/src/ism/read.js +25 -0
  116. package/dist/src/ism/read.js.map +1 -0
  117. package/dist/src/logger.d.ts +17 -0
  118. package/dist/src/logger.d.ts.map +1 -0
  119. package/dist/src/logger.js +32 -0
  120. package/dist/src/logger.js.map +1 -0
  121. package/dist/src/registry/MergedRegistry.d.ts +35 -0
  122. package/dist/src/registry/MergedRegistry.d.ts.map +1 -0
  123. package/dist/src/registry/MergedRegistry.js +83 -0
  124. package/dist/src/registry/MergedRegistry.js.map +1 -0
  125. package/dist/src/send/message.d.ts +7 -6
  126. package/dist/src/send/message.d.ts.map +1 -1
  127. package/dist/src/send/message.js +40 -22
  128. package/dist/src/send/message.js.map +1 -1
  129. package/dist/src/send/transfer.d.ts +8 -10
  130. package/dist/src/send/transfer.d.ts.map +1 -1
  131. package/dist/src/send/transfer.js +68 -70
  132. package/dist/src/send/transfer.js.map +1 -1
  133. package/dist/src/status/message.d.ts +7 -5
  134. package/dist/src/status/message.d.ts.map +1 -1
  135. package/dist/src/status/message.js +25 -12
  136. package/dist/src/status/message.js.map +1 -1
  137. package/dist/src/submit/submit.d.ts +5 -0
  138. package/dist/src/submit/submit.d.ts.map +1 -0
  139. package/dist/src/submit/submit.js +30 -0
  140. package/dist/src/submit/submit.js.map +1 -0
  141. package/dist/src/submit/types.d.ts +18 -0
  142. package/dist/src/submit/types.d.ts.map +1 -0
  143. package/dist/src/submit/types.js +2 -0
  144. package/dist/src/{deploy → submit}/types.js.map +1 -1
  145. package/dist/src/tests/deployTestErc20.d.ts +2 -0
  146. package/dist/src/tests/deployTestErc20.d.ts.map +1 -0
  147. package/dist/src/tests/deployTestErc20.js +26 -0
  148. package/dist/src/tests/deployTestErc20.js.map +1 -0
  149. package/dist/src/tests/hooks.test.d.ts +2 -0
  150. package/dist/src/tests/hooks.test.d.ts.map +1 -0
  151. package/dist/src/tests/hooks.test.js +83 -0
  152. package/dist/src/tests/hooks.test.js.map +1 -0
  153. package/dist/src/tests/ism.test.d.ts +2 -0
  154. package/dist/src/tests/ism.test.d.ts.map +1 -0
  155. package/dist/src/tests/ism.test.js +76 -0
  156. package/dist/src/tests/ism.test.js.map +1 -0
  157. package/dist/src/tests/multisig.test.d.ts +2 -0
  158. package/dist/src/tests/multisig.test.d.ts.map +1 -0
  159. package/dist/src/tests/multisig.test.js +34 -0
  160. package/dist/src/tests/multisig.test.js.map +1 -0
  161. package/dist/src/utils/balances.d.ts +2 -4
  162. package/dist/src/utils/balances.d.ts.map +1 -1
  163. package/dist/src/utils/balances.js +8 -12
  164. package/dist/src/utils/balances.js.map +1 -1
  165. package/dist/src/utils/chains.d.ts +3 -2
  166. package/dist/src/utils/chains.d.ts.map +1 -1
  167. package/dist/src/utils/chains.js +42 -23
  168. package/dist/src/utils/chains.js.map +1 -1
  169. package/dist/src/utils/env.d.ts +6 -0
  170. package/dist/src/utils/env.d.ts.map +1 -0
  171. package/dist/src/utils/env.js +9 -0
  172. package/dist/src/utils/env.js.map +1 -0
  173. package/dist/src/utils/files.d.ts +7 -4
  174. package/dist/src/utils/files.d.ts.map +1 -1
  175. package/dist/src/utils/files.js +52 -29
  176. package/dist/src/utils/files.js.map +1 -1
  177. package/dist/src/utils/keys.d.ts +28 -1
  178. package/dist/src/utils/keys.d.ts.map +1 -1
  179. package/dist/src/utils/keys.js +65 -6
  180. package/dist/src/utils/keys.js.map +1 -1
  181. package/dist/src/utils/time.d.ts.map +1 -1
  182. package/dist/src/utils/time.js +8 -1
  183. package/dist/src/utils/time.js.map +1 -1
  184. package/dist/src/utils/time.test.d.ts +2 -0
  185. package/dist/src/utils/time.test.d.ts.map +1 -0
  186. package/dist/src/utils/time.test.js +9 -0
  187. package/dist/src/utils/time.test.js.map +1 -0
  188. package/dist/src/utils/tokens.d.ts +3 -0
  189. package/dist/src/utils/tokens.d.ts.map +1 -0
  190. package/dist/src/utils/tokens.js +14 -0
  191. package/dist/src/utils/tokens.js.map +1 -0
  192. package/dist/src/utils/version-check.d.ts +2 -0
  193. package/dist/src/utils/version-check.d.ts.map +1 -0
  194. package/dist/src/utils/version-check.js +15 -0
  195. package/dist/src/utils/version-check.js.map +1 -0
  196. package/dist/src/version.d.ts +2 -0
  197. package/dist/src/version.d.ts.map +1 -0
  198. package/dist/src/version.js +2 -0
  199. package/dist/src/version.js.map +1 -0
  200. package/examples/chain-config.yaml +38 -40
  201. package/examples/contract-artifacts.yaml +4 -4
  202. package/examples/hooks.yaml +66 -0
  203. package/examples/ism-advanced.yaml +33 -0
  204. package/examples/{multisig-ism.yaml → ism.yaml} +0 -8
  205. package/examples/warp-route-deployment.yaml +32 -0
  206. package/package.json +27 -14
  207. package/dist/logger.d.ts +0 -13
  208. package/dist/logger.d.ts.map +0 -1
  209. package/dist/logger.js +0 -44
  210. package/dist/logger.js.map +0 -1
  211. package/dist/src/config/artifacts.d.ts +0 -3
  212. package/dist/src/config/artifacts.d.ts.map +0 -1
  213. package/dist/src/config/artifacts.js +0 -18
  214. package/dist/src/config/artifacts.js.map +0 -1
  215. package/dist/src/context.d.ts +0 -388
  216. package/dist/src/context.d.ts.map +0 -1
  217. package/dist/src/context.js +0 -30
  218. package/dist/src/context.js.map +0 -1
  219. package/dist/src/deploy/TestRecipientDeployer.d.ts +0 -20
  220. package/dist/src/deploy/TestRecipientDeployer.d.ts.map +0 -1
  221. package/dist/src/deploy/TestRecipientDeployer.js +0 -36
  222. package/dist/src/deploy/TestRecipientDeployer.js.map +0 -1
  223. package/dist/src/deploy/types.d.ts +0 -21
  224. package/dist/src/deploy/types.d.ts.map +0 -1
  225. package/examples/anvil-chains.yaml +0 -22
  226. package/examples/hook-config.yaml +0 -18
  227. package/examples/warp-tokens.yaml +0 -26
  228. /package/dist/src/{deploy → context}/types.js +0 -0
@@ -1,47 +1,110 @@
1
+ import os from 'os';
2
+ import { DEFAULT_GITHUB_REGISTRY } from '@hyperlane-xyz/registry';
3
+ import { LogFormat, LogLevel } from '@hyperlane-xyz/utils';
4
+ import { ENV } from '../utils/env.js';
5
+ /* Global options */
6
+ export const logFormatCommandOption = {
7
+ type: 'string',
8
+ description: 'Log output format',
9
+ choices: Object.values(LogFormat),
10
+ };
11
+ export const logLevelCommandOption = {
12
+ type: 'string',
13
+ description: 'Log verbosity level',
14
+ choices: Object.values(LogLevel),
15
+ };
16
+ export const registryUriCommandOption = {
17
+ type: 'string',
18
+ description: 'Registry URI, such as a Github repo URL or a local file path',
19
+ alias: 'r',
20
+ default: DEFAULT_GITHUB_REGISTRY,
21
+ };
22
+ export const overrideRegistryUriCommandOption = {
23
+ type: 'string',
24
+ description: 'Path to a local registry to override the default registry',
25
+ default: `${os.homedir()}/.hyperlane`,
26
+ };
27
+ export const skipConfirmationOption = {
28
+ type: 'boolean',
29
+ description: 'Skip confirmation prompts',
30
+ default: false,
31
+ alias: 'y',
32
+ };
1
33
  export const keyCommandOption = {
2
34
  type: 'string',
3
- description: 'A hex private key or seed phrase for transaction signing. Or use the HYP_KEY env var',
4
- alias: 'k',
35
+ description: 'A hex private key or seed phrase for transaction signing, or use the HYP_KEY env var.',
36
+ alias: ['k', 'private-key', 'seed-phrase'],
37
+ default: ENV.HYP_KEY,
38
+ defaultDescription: 'process.env.HYP_KEY',
5
39
  };
6
- export const chainsCommandOption = {
40
+ /* Command-specific options */
41
+ export const coreTargetsCommandOption = {
7
42
  type: 'string',
8
- description: 'A path to a JSON or YAML file with chain configs',
9
- default: './configs/chains.yaml',
10
- alias: 'c',
43
+ description: 'Comma separated list of chain names to which contracts will be deployed',
11
44
  };
12
- export const outDirCommandOption = {
45
+ export const agentTargetsCommandOption = {
13
46
  type: 'string',
14
- description: 'A folder name output artifacts into',
15
- default: './artifacts',
16
- alias: 'o',
47
+ description: 'Comma separated list of chains to relay between',
17
48
  };
18
- export const coreArtifactsOption = {
49
+ export const originCommandOption = {
19
50
  type: 'string',
20
- description: 'File path to core deployment output artifacts',
21
- alias: 'ca',
51
+ description: 'The name of the origin chain to deploy to',
22
52
  };
23
- export const agentConfigurationOption = {
53
+ export const ismCommandOption = {
24
54
  type: 'string',
25
- description: 'File path to agent configuration artifacts',
26
- alias: 'ac',
55
+ description: 'A path to a JSON or YAML file with basic or advanced ISM configs (e.g. Multisig)',
27
56
  };
28
- export const fileFormatOption = {
57
+ export const hookCommandOption = {
29
58
  type: 'string',
30
- description: 'Output file format',
31
- choices: ['json', 'yaml'],
32
- default: 'yaml',
33
- alias: 'f',
59
+ description: 'A path to a JSON or YAML file with Hook configs (for every chain)',
60
+ };
61
+ export const warpDeploymentConfigCommandOption = {
62
+ type: 'string',
63
+ description: 'A path to a JSON or YAML file with a warp route deployment config.',
64
+ default: './configs/warp-route-deployment.yaml',
65
+ alias: 'w',
66
+ };
67
+ export const warpCoreConfigCommandOption = {
68
+ type: 'string',
69
+ description: 'File path to Warp Route config',
70
+ alias: 'w',
71
+ // TODO make this optional and have the commands get it from the registry
72
+ demandOption: true,
34
73
  };
35
- export const outputFileOption = (defaultPath) => ({
74
+ export const agentConfigCommandOption = (isIn, defaultPath) => ({
75
+ type: 'string',
76
+ description: `${isIn ? 'Input' : 'Output'} file path for the agent configuration`,
77
+ default: defaultPath,
78
+ });
79
+ export const outputFileCommandOption = (defaultPath) => ({
36
80
  type: 'string',
37
81
  description: 'Output file path',
38
82
  default: defaultPath,
39
83
  alias: 'o',
40
84
  });
41
- export const skipConfirmationOption = {
42
- type: 'boolean',
43
- description: 'Skip confirmation prompts',
44
- default: false,
45
- alias: 'y',
85
+ export const inputFileCommandOption = {
86
+ type: 'string',
87
+ description: 'Input file path',
88
+ alias: 'i',
89
+ demandOption: true,
46
90
  };
91
+ export const fromAddressCommandOption = {
92
+ type: 'string',
93
+ description: `An address to simulate transaction signing on a forked network`,
94
+ alias: 'f',
95
+ };
96
+ export const dryRunCommandOption = {
97
+ type: 'string',
98
+ description: 'Chain name to fork and simulate deployment. Please ensure an anvil node instance is running during execution via `anvil`.',
99
+ alias: 'd',
100
+ };
101
+ export const chainCommandOption = {
102
+ type: 'string',
103
+ description: 'The specific chain to perform operations with.',
104
+ };
105
+ export const addressCommandOption = (description, demandOption = false) => ({
106
+ type: 'string',
107
+ description,
108
+ demandOption,
109
+ });
47
110
  //# sourceMappingURL=options.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/commands/options.ts"],"names":[],"mappings":"AAGA,MAAM,CAAC,MAAM,gBAAgB,GAAY;IACvC,IAAI,EAAE,QAAQ;IACd,WAAW,EACT,sFAAsF;IACxF,KAAK,EAAE,GAAG;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAY;IAC1C,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,kDAAkD;IAC/D,OAAO,EAAE,uBAAuB;IAChC,KAAK,EAAE,GAAG;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAY;IAC1C,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,qCAAqC;IAClD,OAAO,EAAE,aAAa;IACtB,KAAK,EAAE,GAAG;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,mBAAmB,GAAY;IAC1C,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,+CAA+C;IAC5D,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,wBAAwB,GAAY;IAC/C,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,4CAA4C;IACzD,KAAK,EAAE,IAAI;CACZ,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAY;IACvC,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,oBAAoB;IACjC,OAAO,EAAE,CAAC,MAAM,EAAE,MAAM,CAAC;IACzB,OAAO,EAAE,MAAM;IACf,KAAK,EAAE,GAAG;CACX,CAAC;AAEF,MAAM,CAAC,MAAM,gBAAgB,GAAG,CAAC,WAAmB,EAAW,EAAE,CAAC,CAAC;IACjE,IAAI,EAAE,QAAQ;IACd,WAAW,EAAE,kBAAkB;IAC/B,OAAO,EAAE,WAAW;IACpB,KAAK,EAAE,GAAG;CACX,CAAC,CAAC;AAEH,MAAM,CAAC,MAAM,sBAAsB,GAAY;IAC7C,IAAI,EAAE,SAAS;IACf,WAAW,EAAE,2BAA2B;IACxC,OAAO,EAAE,KAAK;IACd,KAAK,EAAE,GAAG;CACX,CAAC"}
1
+ {"version":3,"file":"options.js","sourceRoot":"","sources":["../../../src/commands/options.ts"],"names":[],"mappings":"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"}
@@ -1,6 +1,19 @@
1
- import { CommandModule } from 'yargs';
1
+ import { CommandModule, Options } from 'yargs';
2
2
  /**
3
3
  * Parent command
4
4
  */
5
5
  export declare const sendCommand: CommandModule;
6
+ /**
7
+ * Message command
8
+ */
9
+ export declare const messageOptions: {
10
+ [k: string]: Options;
11
+ };
12
+ export interface MessageOptionsArgTypes {
13
+ origin?: string;
14
+ destination?: string;
15
+ timeout: number;
16
+ quick: boolean;
17
+ relay: boolean;
18
+ }
6
19
  //# sourceMappingURL=send.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/commands/send.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAW,MAAM,OAAO,CAAC;AAc/C;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,aAUzB,CAAC"}
1
+ {"version":3,"file":"send.d.ts","sourceRoot":"","sources":["../../../src/commands/send.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAS/C;;GAEG;AACH,eAAO,MAAM,WAAW,EAAE,aAUzB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,cAAc,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAwBlD,CAAC;AAEF,MAAM,WAAW,sBAAsB;IACrC,MAAM,CAAC,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,EAAE,OAAO,CAAC;IACf,KAAK,EAAE,OAAO,CAAC;CAChB"}
@@ -1,8 +1,8 @@
1
- import { TokenType } from '@hyperlane-xyz/sdk';
2
- import { log } from '../../logger.js';
1
+ import { ethers } from 'ethers';
2
+ import { log } from '../logger.js';
3
3
  import { sendTestMessage } from '../send/message.js';
4
4
  import { sendTestTransfer } from '../send/transfer.js';
5
- import { chainsCommandOption, coreArtifactsOption, keyCommandOption, } from './options.js';
5
+ import { warpCoreConfigCommandOption } from './options.js';
6
6
  /**
7
7
  * Parent command
8
8
  */
@@ -19,20 +19,15 @@ export const sendCommand = {
19
19
  /**
20
20
  * Message command
21
21
  */
22
- const messageOptions = {
23
- key: keyCommandOption,
22
+ export const messageOptions = {
24
23
  origin: {
25
24
  type: 'string',
26
25
  description: 'Origin chain to send message from',
27
- demandOption: true,
28
26
  },
29
27
  destination: {
30
28
  type: 'string',
31
29
  description: 'Destination chain to send message to',
32
- demandOption: true,
33
30
  },
34
- core: coreArtifactsOption,
35
- chains: chainsCommandOption,
36
31
  timeout: {
37
32
  type: 'number',
38
33
  description: 'Timeout in seconds',
@@ -43,27 +38,32 @@ const messageOptions = {
43
38
  description: 'Skip wait for message to be delivered',
44
39
  default: false,
45
40
  },
41
+ relay: {
42
+ type: 'boolean',
43
+ description: 'Handle self-relay of message on destination chain',
44
+ default: false,
45
+ },
46
46
  };
47
47
  const messageCommand = {
48
48
  command: 'message',
49
49
  describe: 'Send a test message to a remote chain',
50
- builder: (yargs) => yargs.options(messageOptions),
51
- handler: async (argv) => {
52
- const key = argv.key || process.env.HYP_KEY;
53
- const chainConfigPath = argv.chains;
54
- const coreArtifactsPath = argv.core;
55
- const origin = argv.origin;
56
- const destination = argv.destination;
57
- const timeoutSec = argv.timeout;
58
- const skipWaitForDelivery = argv.quick;
50
+ builder: {
51
+ ...messageOptions,
52
+ body: {
53
+ type: 'string',
54
+ description: 'Optional Message body',
55
+ default: 'Hello!',
56
+ },
57
+ },
58
+ handler: async ({ context, origin, destination, timeout, quick, relay, body, }) => {
59
59
  await sendTestMessage({
60
- key,
61
- chainConfigPath,
62
- coreArtifactsPath,
60
+ context,
63
61
  origin,
64
62
  destination,
65
- timeoutSec,
66
- skipWaitForDelivery,
63
+ messageBody: ethers.utils.hexlify(ethers.utils.toUtf8Bytes(body)),
64
+ timeoutSec: timeout,
65
+ skipWaitForDelivery: quick,
66
+ selfRelay: relay,
67
67
  });
68
68
  process.exit(0);
69
69
  },
@@ -74,19 +74,9 @@ const messageCommand = {
74
74
  const transferCommand = {
75
75
  command: 'transfer',
76
76
  describe: 'Send a test token transfer on a warp route',
77
- builder: (yargs) => yargs.options({
77
+ builder: {
78
78
  ...messageOptions,
79
- router: {
80
- type: 'string',
81
- description: 'The address of the token router contract',
82
- demandOption: true,
83
- },
84
- type: {
85
- type: 'string',
86
- description: 'Warp token type (native of collateral)',
87
- default: TokenType.collateral,
88
- choices: [TokenType.collateral, TokenType.native],
89
- },
79
+ warp: warpCoreConfigCommandOption,
90
80
  wei: {
91
81
  type: 'string',
92
82
  description: 'Amount in wei to send',
@@ -96,31 +86,18 @@ const transferCommand = {
96
86
  type: 'string',
97
87
  description: 'Token recipient address (defaults to sender)',
98
88
  },
99
- }),
100
- handler: async (argv) => {
101
- const key = argv.key || process.env.HYP_KEY;
102
- const chainConfigPath = argv.chains;
103
- const coreArtifactsPath = argv.core;
104
- const origin = argv.origin;
105
- const destination = argv.destination;
106
- const timeoutSec = argv.timeout;
107
- const routerAddress = argv.router;
108
- const tokenType = argv.type;
109
- const wei = argv.wei;
110
- const recipient = argv.recipient;
111
- const skipWaitForDelivery = argv.quick;
89
+ },
90
+ handler: async ({ context, origin, destination, timeout, quick, relay, warp, wei, recipient, }) => {
112
91
  await sendTestTransfer({
113
- key,
114
- chainConfigPath,
115
- coreArtifactsPath,
92
+ context,
93
+ warpConfigPath: warp,
116
94
  origin,
117
95
  destination,
118
- routerAddress,
119
- tokenType,
120
96
  wei,
121
97
  recipient,
122
- timeoutSec,
123
- skipWaitForDelivery,
98
+ timeoutSec: timeout,
99
+ skipWaitForDelivery: quick,
100
+ selfRelay: relay,
124
101
  });
125
102
  process.exit(0);
126
103
  },
@@ -1 +1 @@
1
- {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/commands/send.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"send.js","sourceRoot":"","sources":["../../../src/commands/send.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,3 @@
1
+ export declare const SIGN_COMMANDS: string[];
2
+ export declare function isSignCommand(argv: any): boolean;
3
+ //# sourceMappingURL=signCommands.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signCommands.d.ts","sourceRoot":"","sources":["../../../src/commands/signCommands.ts"],"names":[],"mappings":"AAGA,eAAO,MAAM,aAAa,UAAqB,CAAC;AAEhD,wBAAgB,aAAa,CAAC,IAAI,EAAE,GAAG,GAAG,OAAO,CAOhD"}
@@ -0,0 +1,11 @@
1
+ // Commands that send tx and require a key to sign.
2
+ // It's useful to have this listed here so the context
3
+ // middleware can request keys up front when required.
4
+ export const SIGN_COMMANDS = ['deploy', 'send'];
5
+ export function isSignCommand(argv) {
6
+ return (SIGN_COMMANDS.includes(argv._[0]) ||
7
+ (argv._.length > 1 &&
8
+ (SIGN_COMMANDS.includes(argv._[1]) ||
9
+ (argv._[1] === 'avs' && argv._[2] === 'register'))));
10
+ }
11
+ //# sourceMappingURL=signCommands.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"signCommands.js","sourceRoot":"","sources":["../../../src/commands/signCommands.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,sDAAsD;AACtD,sDAAsD;AACtD,MAAM,CAAC,MAAM,aAAa,GAAG,CAAC,QAAQ,EAAE,MAAM,CAAC,CAAC;AAEhD,MAAM,UAAU,aAAa,CAAC,IAAS;IACrC,OAAO,CACL,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;QACjC,CAAC,IAAI,CAAC,CAAC,CAAC,MAAM,GAAG,CAAC;YAChB,CAAC,aAAa,CAAC,QAAQ,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,CAAC;gBAChC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,KAAK,IAAI,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,KAAK,UAAU,CAAC,CAAC,CAAC,CACxD,CAAC;AACJ,CAAC"}
@@ -1,3 +1,6 @@
1
- import { CommandModule } from 'yargs';
2
- export declare const statusCommand: CommandModule;
1
+ import { CommandModuleWithContext } from '../context/types.js';
2
+ import { MessageOptionsArgTypes } from './send.js';
3
+ export declare const statusCommand: CommandModuleWithContext<MessageOptionsArgTypes & {
4
+ id?: string;
5
+ }>;
3
6
  //# sourceMappingURL=status.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAMtC,eAAO,MAAM,aAAa,EAAE,aA+B3B,CAAC"}
1
+ {"version":3,"file":"status.d.ts","sourceRoot":"","sources":["../../../src/commands/status.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,wBAAwB,EAAE,MAAM,qBAAqB,CAAC;AAG/D,OAAO,EAAE,sBAAsB,EAAkB,MAAM,WAAW,CAAC;AAEnE,eAAO,MAAM,aAAa,EAAE,wBAAwB,CAClD,sBAAsB,GAAG;IAAE,EAAE,CAAC,EAAE,MAAM,CAAA;CAAE,CAqBzC,CAAC"}
@@ -1,32 +1,22 @@
1
1
  import { checkMessageStatus } from '../status/message.js';
2
- import { chainsCommandOption, coreArtifactsOption } from './options.js';
2
+ import { messageOptions } from './send.js';
3
3
  export const statusCommand = {
4
4
  command: 'status',
5
5
  describe: 'Check status of a message',
6
- builder: (yargs) => yargs.options({
6
+ builder: {
7
+ ...messageOptions,
7
8
  id: {
8
9
  type: 'string',
9
10
  description: 'Message ID',
10
- demandOption: true,
11
11
  },
12
- destination: {
13
- type: 'string',
14
- description: 'Destination chain name',
15
- demandOption: true,
16
- },
17
- chains: chainsCommandOption,
18
- core: coreArtifactsOption,
19
- }),
20
- handler: async (argv) => {
21
- const chainConfigPath = argv.chains;
22
- const coreArtifactsPath = argv.core;
23
- const messageId = argv.id;
24
- const destination = argv.destination;
12
+ },
13
+ handler: async ({ context, origin, destination, id, relay }) => {
25
14
  await checkMessageStatus({
26
- chainConfigPath,
27
- coreArtifactsPath,
28
- messageId,
15
+ context,
16
+ messageId: id,
29
17
  destination,
18
+ origin,
19
+ selfRelay: relay,
30
20
  });
31
21
  process.exit(0);
32
22
  },
@@ -1 +1 @@
1
- {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/status.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAAE,mBAAmB,EAAE,mBAAmB,EAAE,MAAM,cAAc,CAAC;AAExE,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,2BAA2B;IACrC,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK,CAAC,OAAO,CAAC;QACZ,EAAE,EAAE;YACF,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,YAAY;YACzB,YAAY,EAAE,IAAI;SACnB;QACD,WAAW,EAAE;YACX,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,wBAAwB;YACrC,YAAY,EAAE,IAAI;SACnB;QACD,MAAM,EAAE,mBAAmB;QAC3B,IAAI,EAAE,mBAAmB;KAC1B,CAAC;IACJ,OAAO,EAAE,KAAK,EAAE,IAAS,EAAE,EAAE;QAC3B,MAAM,eAAe,GAAW,IAAI,CAAC,MAAM,CAAC;QAC5C,MAAM,iBAAiB,GAAW,IAAI,CAAC,IAAI,CAAC;QAC5C,MAAM,SAAS,GAAW,IAAI,CAAC,EAAE,CAAC;QAClC,MAAM,WAAW,GAAW,IAAI,CAAC,WAAW,CAAC;QAC7C,MAAM,kBAAkB,CAAC;YACvB,eAAe;YACf,iBAAiB;YACjB,SAAS;YACT,WAAW;SACZ,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"status.js","sourceRoot":"","sources":["../../../src/commands/status.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,kBAAkB,EAAE,MAAM,sBAAsB,CAAC;AAE1D,OAAO,EAA0B,cAAc,EAAE,MAAM,WAAW,CAAC;AAEnE,MAAM,CAAC,MAAM,aAAa,GAEtB;IACF,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,2BAA2B;IACrC,OAAO,EAAE;QACP,GAAG,cAAc;QACjB,EAAE,EAAE;YACF,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,YAAY;SAC1B;KACF;IACD,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,MAAM,EAAE,WAAW,EAAE,EAAE,EAAE,KAAK,EAAE,EAAE,EAAE;QAC7D,MAAM,kBAAkB,CAAC;YACvB,OAAO;YACP,SAAS,EAAE,EAAE;YACb,WAAW;YACX,MAAM;YACN,SAAS,EAAE,KAAK;SACjB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;CACF,CAAC"}
@@ -1,9 +1,7 @@
1
- import { ChainMap, ChainMetadata } from '@hyperlane-xyz/sdk';
2
- import { FileFormat } from '../utils/files.js';
3
- export declare function readChainConfigs(filePath: string): ChainMap<ChainMetadata>;
4
- export declare function readChainConfigsIfExists(filePath: string): ChainMap<ChainMetadata>;
5
- export declare function createChainConfig({ format, outPath, }: {
6
- format: FileFormat;
7
- outPath: string;
1
+ import { ChainMetadata } from '@hyperlane-xyz/sdk';
2
+ import { CommandContext } from '../context/types.js';
3
+ export declare function readChainConfigs(filePath: string): ChainMetadata;
4
+ export declare function createChainConfig({ context, }: {
5
+ context: CommandContext;
8
6
  }): Promise<void>;
9
7
  //# sourceMappingURL=chain.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../../src/config/chain.ts"],"names":[],"mappings":"AAGA,OAAO,EACL,QAAQ,EACR,aAAa,EAEd,MAAM,oBAAoB,CAAC;AAK5B,OAAO,EAAE,UAAU,EAAmC,MAAM,mBAAmB,CAAC;AAEhF,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,2BAiChD;AAED,wBAAgB,wBAAwB,CAAC,QAAQ,EAAE,MAAM,2BAOxD;AAED,wBAAsB,iBAAiB,CAAC,EACtC,MAAM,EACN,OAAO,GACR,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;CACjB,iBA2CA"}
1
+ {"version":3,"file":"chain.d.ts","sourceRoot":"","sources":["../../../src/config/chain.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,aAAa,EAAuB,MAAM,oBAAoB,CAAC;AAGxE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD,wBAAgB,gBAAgB,CAAC,QAAQ,EAAE,MAAM,iBAuBhD;AAED,wBAAsB,iBAAiB,CAAC,EACtC,OAAO,GACR,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;CACzB,iBAiHA"}
@@ -1,82 +1,112 @@
1
- import { confirm, input, select } from '@inquirer/prompts';
2
- import fs from 'fs';
3
- import { ChainMetadataSchema, } from '@hyperlane-xyz/sdk';
1
+ import { confirm, input } from '@inquirer/prompts';
2
+ import { ethers } from 'ethers';
3
+ import { ChainMetadataSchema } from '@hyperlane-xyz/sdk';
4
4
  import { ProtocolType } from '@hyperlane-xyz/utils';
5
- import { errorRed, log, logBlue, logGreen } from '../../logger.js';
6
- import { getMultiProvider } from '../context.js';
7
- import { mergeYamlOrJson, readYamlOrJson } from '../utils/files.js';
5
+ import { errorRed, log, logBlue, logGreen } from '../logger.js';
6
+ import { detectAndConfirmOrPrompt } from '../utils/chains.js';
7
+ import { readYamlOrJson } from '../utils/files.js';
8
8
  export function readChainConfigs(filePath) {
9
9
  log(`Reading file configs in ${filePath}`);
10
- const chainToMetadata = readYamlOrJson(filePath);
11
- if (!chainToMetadata ||
12
- typeof chainToMetadata !== 'object' ||
13
- !Object.keys(chainToMetadata).length) {
10
+ const chainMetadata = readYamlOrJson(filePath);
11
+ if (!chainMetadata ||
12
+ typeof chainMetadata !== 'object' ||
13
+ !Object.keys(chainMetadata).length) {
14
14
  errorRed(`No configs found in ${filePath}`);
15
15
  process.exit(1);
16
16
  }
17
- for (const [chain, metadata] of Object.entries(chainToMetadata)) {
18
- const parseResult = ChainMetadataSchema.safeParse(metadata);
19
- if (!parseResult.success) {
20
- errorRed(`Chain config for ${chain} is invalid, please see https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/typescript/cli/examples/chain-config.yaml for an example`);
21
- errorRed(JSON.stringify(parseResult.error.errors));
22
- process.exit(1);
23
- }
24
- if (metadata.name !== chain) {
25
- errorRed(`Chain ${chain} name does not match key`);
26
- process.exit(1);
27
- }
28
- }
29
- // Ensure multiprovider accepts this metadata
30
- getMultiProvider(chainToMetadata);
31
- logGreen(`All chain configs in ${filePath} are valid`);
32
- return chainToMetadata;
33
- }
34
- export function readChainConfigsIfExists(filePath) {
35
- if (!fs.existsSync(filePath)) {
36
- log('No chain config file provided');
37
- return {};
38
- }
39
- else {
40
- return readChainConfigs(filePath);
17
+ // Validate configs from file and merge in core configs as needed
18
+ const parseResult = ChainMetadataSchema.safeParse(chainMetadata);
19
+ if (!parseResult.success) {
20
+ errorRed(`Chain config for ${filePath} is invalid, please see https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/typescript/cli/examples/chain-config.yaml for an example`);
21
+ errorRed(JSON.stringify(parseResult.error.errors));
22
+ process.exit(1);
41
23
  }
24
+ return chainMetadata;
42
25
  }
43
- export async function createChainConfig({ format, outPath, }) {
26
+ export async function createChainConfig({ context, }) {
44
27
  logBlue('Creating a new chain config');
45
- const name = await input({
46
- message: 'Enter chain name (one word, lower case)',
47
- });
48
- const chainId = await input({ message: 'Enter chain id (number)' });
49
- const skipDomain = await confirm({
50
- message: 'Will the domainId match the chainId (recommended)?',
51
- });
52
- let domainId;
53
- if (skipDomain) {
54
- domainId = chainId;
55
- }
56
- else {
57
- domainId = await input({
58
- message: 'Enter domain id (number, often matches chainId)',
59
- });
60
- }
61
- const protocol = await select({
62
- message: 'Select protocol type',
63
- choices: Object.values(ProtocolType).map((protocol) => ({
64
- name: protocol,
65
- value: protocol,
66
- })),
67
- });
68
- const rpcUrl = await input({ message: 'Enter http or https rpc url' });
28
+ const rpcUrl = await detectAndConfirmOrPrompt(async () => {
29
+ await new ethers.providers.JsonRpcProvider().getNetwork();
30
+ return ethers.providers.JsonRpcProvider.defaultUrl();
31
+ }, 'rpc url', 'Enter http or https');
32
+ const provider = new ethers.providers.JsonRpcProvider(rpcUrl);
33
+ const name = await detectAndConfirmOrPrompt(async () => {
34
+ const clientName = await provider.send('web3_clientVersion', []);
35
+ const port = rpcUrl.split(':').slice(-1);
36
+ const client = clientName.split('/')[0];
37
+ return `${client}${port}`;
38
+ }, 'chain name', 'Enter (one word, lower case)');
39
+ const chainId = parseInt(await detectAndConfirmOrPrompt(async () => {
40
+ const network = await provider.getNetwork();
41
+ return network.chainId.toString();
42
+ }, 'chain id', 'Enter a (number)'), 10);
69
43
  const metadata = {
70
44
  name,
71
- chainId: parseInt(chainId, 10),
72
- domainId: parseInt(domainId, 10),
73
- protocol,
45
+ chainId,
46
+ domainId: chainId,
47
+ protocol: ProtocolType.Ethereum,
74
48
  rpcUrls: [{ http: rpcUrl }],
75
49
  };
50
+ const wantAdvancedConfig = await confirm({
51
+ default: false,
52
+ message: 'Do you want to set block or gas properties for this chain config?',
53
+ });
54
+ if (wantAdvancedConfig) {
55
+ const wantBlockConfig = await confirm({
56
+ message: 'Do you want to add block config for this chain?',
57
+ });
58
+ if (wantBlockConfig) {
59
+ const blockConfirmation = await input({
60
+ message: 'Enter no. of blocks to wait before considering a transaction confirmed(0-500)',
61
+ validate: (value) => parseInt(value) >= 0 && parseInt(value) <= 500,
62
+ });
63
+ const blockReorgPeriod = await input({
64
+ message: 'Enter no. of blocks before a transaction has a near-zero chance of reverting(0-500)',
65
+ validate: (value) => parseInt(value) >= 0 && parseInt(value) <= 500,
66
+ });
67
+ const blockTimeEstimate = await input({
68
+ message: 'Enter the rough estimate of time per block in seconds(0-20)',
69
+ validate: (value) => parseInt(value) >= 0 && parseInt(value) <= 20,
70
+ });
71
+ metadata.blocks = {
72
+ confirmations: parseInt(blockConfirmation, 10),
73
+ reorgPeriod: parseInt(blockReorgPeriod, 10),
74
+ estimateBlockTime: parseInt(blockTimeEstimate, 10),
75
+ };
76
+ }
77
+ const wantGasConfig = await confirm({
78
+ message: 'Do you want to add gas config for this chain?',
79
+ });
80
+ if (wantGasConfig) {
81
+ const isEIP1559 = await confirm({
82
+ message: 'Is your chain an EIP1559 enabled?',
83
+ });
84
+ if (isEIP1559) {
85
+ const maxFeePerGas = await input({
86
+ message: 'Enter the max fee per gas in gwei',
87
+ });
88
+ const maxPriorityFeePerGas = await input({
89
+ message: 'Enter the max priority fee per gas in gwei',
90
+ });
91
+ metadata.transactionOverrides = {
92
+ maxFeePerGas: BigInt(maxFeePerGas) * BigInt(10 ** 9),
93
+ maxPriorityFeePerGas: BigInt(maxPriorityFeePerGas) * BigInt(10 ** 9),
94
+ };
95
+ }
96
+ else {
97
+ const gasPrice = await input({
98
+ message: 'Enter the gas price in gwei',
99
+ });
100
+ metadata.transactionOverrides = {
101
+ gasPrice: BigInt(gasPrice) * BigInt(10 ** 9),
102
+ };
103
+ }
104
+ }
105
+ }
76
106
  const parseResult = ChainMetadataSchema.safeParse(metadata);
77
107
  if (parseResult.success) {
78
- logGreen(`Chain config is valid, writing to file ${outPath}`);
79
- mergeYamlOrJson(outPath, { [name]: metadata }, format);
108
+ logGreen(`Chain config is valid, writing to registry`);
109
+ await context.registry.updateChain({ chainName: metadata.name, metadata });
80
110
  }
81
111
  else {
82
112
  errorRed(`Chain config is invalid, please see https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/typescript/cli/examples/chain-config.yaml for an example`);