@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
package/README.md CHANGED
@@ -12,7 +12,7 @@ To read more about interchain applications, how the protocol works, and how to i
12
12
 
13
13
  ## Setup
14
14
 
15
- Node 16 or newer is required.
15
+ Node 18 or newer is required.
16
16
 
17
17
  **Option 1: Global install:**
18
18
 
@@ -55,3 +55,8 @@ Run warp route deployments: `hyperlane deploy warp`
55
55
  View SDK contract addresses: `hyperlane chains addresses`
56
56
 
57
57
  Send test message: `hyperlane send message`
58
+
59
+ ## Logging
60
+
61
+ The logging format can be toggled between human-readable vs JSON-structured logs using the `LOG_FORMAT` environment variable or the `--log <pretty|json>` flag.
62
+ The logging verbosity can be configured using the `LOG_LEVEL` environment variable or the `--verbosity <debug|info|warn|error|off>` flag.
package/dist/cli.d.ts CHANGED
@@ -1,3 +1,3 @@
1
1
  #! /usr/bin/env node
2
- export {};
2
+ import './env.js';
3
3
  //# sourceMappingURL=cli.d.ts.map
package/dist/cli.d.ts.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":""}
1
+ {"version":3,"file":"cli.d.ts","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";AAMA,OAAO,UAAU,CAAC"}
package/dist/cli.js CHANGED
@@ -1,25 +1,49 @@
1
1
  #! /usr/bin/env node
2
2
  import chalk from 'chalk';
3
3
  import yargs from 'yargs';
4
- import { errorRed } from './logger.js';
4
+ import './env.js';
5
+ import { avsCommand } from './src/commands/avs.js';
5
6
  import { chainsCommand } from './src/commands/chains.js';
6
7
  import { configCommand } from './src/commands/config.js';
7
8
  import { deployCommand } from './src/commands/deploy.js';
9
+ import { hookCommand } from './src/commands/hook.js';
10
+ import { ismCommand } from './src/commands/ism.js';
11
+ import { keyCommandOption, logFormatCommandOption, logLevelCommandOption, overrideRegistryUriCommandOption, registryUriCommandOption, skipConfirmationOption, } from './src/commands/options.js';
8
12
  import { sendCommand } from './src/commands/send.js';
9
13
  import { statusCommand } from './src/commands/status.js';
14
+ import { contextMiddleware } from './src/context/context.js';
15
+ import { configureLogger, errorRed } from './src/logger.js';
16
+ import { checkVersion } from './src/utils/version-check.js';
17
+ import { VERSION } from './src/version.js';
10
18
  // From yargs code:
11
19
  const MISSING_PARAMS_ERROR = 'Not enough non-option arguments';
12
20
  console.log(chalk.blue('Hyperlane'), chalk.magentaBright('CLI'));
21
+ await checkVersion();
13
22
  try {
14
23
  await yargs(process.argv.slice(2))
15
24
  .scriptName('hyperlane')
16
- // TODO get version num from package.json
17
- .version(false)
25
+ .option('log', logFormatCommandOption)
26
+ .option('verbosity', logLevelCommandOption)
27
+ .option('registry', registryUriCommandOption)
28
+ .option('overrides', overrideRegistryUriCommandOption)
29
+ .option('key', keyCommandOption)
30
+ .option('yes', skipConfirmationOption)
31
+ .global(['log', 'verbosity', 'registry', 'overrides', 'yes'])
32
+ .middleware([
33
+ (argv) => {
34
+ configureLogger(argv.log, argv.verbosity);
35
+ },
36
+ contextMiddleware,
37
+ ])
38
+ .command(avsCommand)
18
39
  .command(chainsCommand)
19
40
  .command(configCommand)
20
41
  .command(deployCommand)
42
+ .command(hookCommand)
43
+ .command(ismCommand)
21
44
  .command(sendCommand)
22
45
  .command(statusCommand)
46
+ .version(VERSION)
23
47
  .demandCommand()
24
48
  .strict()
25
49
  .help()
package/dist/cli.js.map CHANGED
@@ -1 +1 @@
1
- {"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":";AACA,OAAO,KAAK,MAAM,OAAO,CAAC;AAC1B,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAE,QAAQ,EAAE,MAAM,aAAa,CAAC;AACvC,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,WAAW,EAAE,MAAM,wBAAwB,CAAC;AACrD,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AAEzD,mBAAmB;AACnB,MAAM,oBAAoB,GAAG,iCAAiC,CAAC;AAE/D,OAAO,CAAC,GAAG,CAAC,KAAK,CAAC,IAAI,CAAC,WAAW,CAAC,EAAE,KAAK,CAAC,aAAa,CAAC,KAAK,CAAC,CAAC,CAAC;AAEjE,IAAI;IACF,MAAM,KAAK,CAAC,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;SAC/B,UAAU,CAAC,WAAW,CAAC;QACxB,yCAAyC;SACxC,OAAO,CAAC,KAAK,CAAC;SACd,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,aAAa,CAAC;SACtB,OAAO,CAAC,WAAW,CAAC;SACpB,OAAO,CAAC,aAAa,CAAC;SACtB,aAAa,EAAE;SACf,MAAM,EAAE;SACR,IAAI,EAAE;SACN,IAAI,CAAC,CAAC,GAAG,EAAE,GAAG,EAAE,KAAK,EAAE,EAAE;QACxB,IAAI,GAAG,IAAI,CAAC,GAAG,CAAC,QAAQ,CAAC,oBAAoB,CAAC;YAAE,QAAQ,CAAC,SAAS,GAAG,GAAG,CAAC,CAAC;QAC1E,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,KAAK,CAAC,QAAQ,EAAE,CAAC;QACjB,OAAO,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC;QAChB,IAAI,GAAG;YAAE,QAAQ,CAAC,GAAG,CAAC,QAAQ,EAAE,CAAC,CAAC;QAClC,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC,CAAC,CAAC,IAAI,CAAC;CACX;AAAC,OAAO,KAAU,EAAE;IACnB,QAAQ,CAAC,SAAS,GAAG,KAAK,CAAC,OAAO,CAAC,CAAC;CACrC"}
1
+ {"version":3,"file":"cli.js","sourceRoot":"","sources":["../cli.ts"],"names":[],"mappings":"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"}
package/dist/env.d.ts ADDED
@@ -0,0 +1,2 @@
1
+ export {};
2
+ //# sourceMappingURL=env.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.d.ts","sourceRoot":"","sources":["../env.ts"],"names":[],"mappings":""}
package/dist/env.js ADDED
@@ -0,0 +1,14 @@
1
+ // This file isn't in the src dir so it it's imported before others
2
+ // See https://github.com/trivago/prettier-plugin-sort-imports/issues/112
3
+ // Workaround for bug in bigint-buffer which solana-web3.js depends on
4
+ // https://github.com/no2chem/bigint-buffer/issues/31#issuecomment-1752134062
5
+ const defaultWarn = console.warn;
6
+ console.warn = (...args) => {
7
+ if (args &&
8
+ typeof args[0] === 'string' &&
9
+ args[0]?.includes('bigint: Failed to load bindings'))
10
+ return;
11
+ defaultWarn(...args);
12
+ };
13
+ export {};
14
+ //# sourceMappingURL=env.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"env.js","sourceRoot":"","sources":["../env.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,yEAAyE;AAEzE,sEAAsE;AACtE,6EAA6E;AAC7E,MAAM,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;AACjC,OAAO,CAAC,IAAI,GAAG,CAAC,GAAG,IAAI,EAAE,EAAE;IACzB,IACE,IAAI;QACJ,OAAO,IAAI,CAAC,CAAC,CAAC,KAAK,QAAQ;QAC3B,IAAI,CAAC,CAAC,CAAC,EAAE,QAAQ,CAAC,iCAAiC,CAAC;QAEpD,OAAO;IACT,WAAW,CAAC,GAAG,IAAI,CAAC,CAAC;AACvB,CAAC,CAAC"}
@@ -0,0 +1,11 @@
1
+ import { ChainMap } from '@hyperlane-xyz/sdk';
2
+ import { Address } from '@hyperlane-xyz/utils';
3
+ interface AVSContracts {
4
+ avsDirectory: Address;
5
+ proxyAdmin: Address;
6
+ ecdsaStakeRegistry: Address;
7
+ hyperlaneServiceManager: Address;
8
+ }
9
+ export declare const avsAddresses: ChainMap<AVSContracts>;
10
+ export {};
11
+ //# sourceMappingURL=config.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/avs/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,oBAAoB,CAAC;AAC9C,OAAO,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAE/C,UAAU,YAAY;IACpB,YAAY,EAAE,OAAO,CAAC;IACtB,UAAU,EAAE,OAAO,CAAC;IACpB,kBAAkB,EAAE,OAAO,CAAC;IAC5B,uBAAuB,EAAE,OAAO,CAAC;CAClC;AAGD,eAAO,MAAM,YAAY,EAAE,QAAQ,CAAC,YAAY,CAO/C,CAAC"}
@@ -0,0 +1,10 @@
1
+ // TODO: move to registry
2
+ export const avsAddresses = {
3
+ holesky: {
4
+ avsDirectory: '0x055733000064333CaDDbC92763c58BF0192fFeBf',
5
+ proxyAdmin: '0x11918DC33E067C5DA83EEF58E50F856398b8Df4C',
6
+ ecdsaStakeRegistry: '0xFCc63b537e70652A280c4E7883C5BB5a1700e897',
7
+ hyperlaneServiceManager: '0xb94F96D398eA5BAB5CA528EE9Fdc19afaA825818',
8
+ },
9
+ };
10
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../../../src/avs/config.ts"],"names":[],"mappings":"AAUA,yBAAyB;AACzB,MAAM,CAAC,MAAM,YAAY,GAA2B;IAClD,OAAO,EAAE;QACP,YAAY,EAAE,4CAA4C;QAC1D,UAAU,EAAE,4CAA4C;QACxD,kBAAkB,EAAE,4CAA4C;QAChE,uBAAuB,EAAE,4CAA4C;KACtE;CACF,CAAC"}
@@ -0,0 +1,19 @@
1
+ import { BigNumberish, utils } from 'ethers';
2
+ import { ChainName } from '@hyperlane-xyz/sdk';
3
+ import { WriteCommandContext } from '../context/types.js';
4
+ export type SignatureWithSaltAndExpiryStruct = {
5
+ signature: utils.BytesLike;
6
+ salt: utils.BytesLike;
7
+ expiry: BigNumberish;
8
+ };
9
+ export declare function registerOperatorWithSignature({ context, chain, operatorKeyPath, }: {
10
+ context: WriteCommandContext;
11
+ chain: ChainName;
12
+ operatorKeyPath: string;
13
+ }): Promise<void>;
14
+ export declare function deregisterOperator({ context, chain, operatorKeyPath, }: {
15
+ context: WriteCommandContext;
16
+ chain: ChainName;
17
+ operatorKeyPath: string;
18
+ }): Promise<void>;
19
+ //# sourceMappingURL=stakeRegistry.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakeRegistry.d.ts","sourceRoot":"","sources":["../../../src/avs/stakeRegistry.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,YAAY,EAAU,KAAK,EAAE,MAAM,QAAQ,CAAC;AAGrD,OAAO,EAAE,SAAS,EAAE,MAAM,oBAAoB,CAAC;AAI/C,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAO1D,MAAM,MAAM,gCAAgC,GAAG;IAC7C,SAAS,EAAE,KAAK,CAAC,SAAS,CAAC;IAC3B,IAAI,EAAE,KAAK,CAAC,SAAS,CAAC;IACtB,MAAM,EAAE,YAAY,CAAC;CACtB,CAAC;AAEF,wBAAsB,6BAA6B,CAAC,EAClD,OAAO,EACP,KAAK,EACL,eAAe,GAChB,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB,iBAoDA;AAED,wBAAsB,kBAAkB,CAAC,EACvC,OAAO,EACP,KAAK,EACL,eAAe,GAChB,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,KAAK,EAAE,SAAS,CAAC;IACjB,eAAe,EAAE,MAAM,CAAC;CACzB,iBA+BA"}
@@ -0,0 +1,94 @@
1
+ import { password } from '@inquirer/prompts';
2
+ import { Wallet, utils } from 'ethers';
3
+ import { ECDSAStakeRegistry__factory } from '@hyperlane-xyz/core';
4
+ import { addressToBytes32 } from '@hyperlane-xyz/utils';
5
+ import { MINIMUM_AVS_GAS } from '../consts.js';
6
+ import { runPreflightChecksForChains } from '../deploy/utils.js';
7
+ import { log, logBlue } from '../logger.js';
8
+ import { readFileAtPath, resolvePath } from '../utils/files.js';
9
+ import { avsAddresses } from './config.js';
10
+ export async function registerOperatorWithSignature({ context, chain, operatorKeyPath, }) {
11
+ const { multiProvider, key } = context;
12
+ const provider = multiProvider.getProvider(chain);
13
+ const connectedSigner = new Wallet(key, provider);
14
+ await runPreflightChecksForChains({
15
+ context: {
16
+ ...context,
17
+ signer: connectedSigner,
18
+ },
19
+ chains: [chain],
20
+ minGas: MINIMUM_AVS_GAS,
21
+ });
22
+ // Read the encrypted JSON key from the file
23
+ const encryptedJson = readFileAtPath(resolvePath(operatorKeyPath));
24
+ const keyFilePassword = await password({
25
+ mask: '*',
26
+ message: 'Enter the password for the operator key file: ',
27
+ });
28
+ const operator = await Wallet.fromEncryptedJson(encryptedJson, keyFilePassword);
29
+ const stakeRegistryAddress = avsAddresses[chain].ecdsaStakeRegistry;
30
+ const ecdsaStakeRegistry = ECDSAStakeRegistry__factory.connect(stakeRegistryAddress, connectedSigner);
31
+ const domainId = multiProvider.getDomainId(chain);
32
+ const operatorSignature = await getOperatorSignature(domainId, avsAddresses[chain].hyperlaneServiceManager, avsAddresses[chain].avsDirectory, operator);
33
+ log(`Registering operator ${operator.address} with signature on ${chain}...`);
34
+ await multiProvider.handleTx(chain, ecdsaStakeRegistry.registerOperatorWithSignature(operator.address, operatorSignature));
35
+ logBlue(`Operator ${operator.address} registered to Hyperlane AVS`);
36
+ }
37
+ export async function deregisterOperator({ context, chain, operatorKeyPath, }) {
38
+ const { multiProvider } = context;
39
+ // Read the encrypted JSON key from the file
40
+ const encryptedJson = readFileAtPath(resolvePath(operatorKeyPath));
41
+ const keyFilePassword = await password({
42
+ mask: '*',
43
+ message: 'Enter the password for the operator key file: ',
44
+ });
45
+ const operatorAsSigner = await Wallet.fromEncryptedJson(encryptedJson, keyFilePassword);
46
+ const provider = multiProvider.getProvider(chain);
47
+ const connectedSigner = operatorAsSigner.connect(provider);
48
+ const stakeRegistryAddress = avsAddresses[chain].ecdsaStakeRegistry;
49
+ const ecdsaStakeRegistry = ECDSAStakeRegistry__factory.connect(stakeRegistryAddress, connectedSigner);
50
+ log(`Deregistering operator ${operatorAsSigner.address} on ${chain}...`);
51
+ await multiProvider.handleTx(chain, ecdsaStakeRegistry.deregisterOperator());
52
+ logBlue(`Operator ${operatorAsSigner.address} deregistered from Hyperlane AVS`);
53
+ }
54
+ async function getOperatorSignature(domain, serviceManager, avsDirectory, operator) {
55
+ const operatorRegistrationTypehash = utils.keccak256(utils.toUtf8Bytes('OperatorAVSRegistration(address operator,address avs,bytes32 salt,uint256 expiry)'));
56
+ const salt = utils.hexZeroPad(utils.randomBytes(32), 32);
57
+ // give a expiry timestamp 1 week from now
58
+ const expiry = utils.hexZeroPad(utils.hexlify(Math.floor(Date.now() / 1000) + 60 * 60 * 24 * 7), 32);
59
+ const structHash = utils.keccak256(utils.solidityPack(['bytes32', 'bytes32', 'bytes32', 'bytes32', 'bytes32'], [
60
+ operatorRegistrationTypehash,
61
+ addressToBytes32(operator.address),
62
+ addressToBytes32(serviceManager),
63
+ salt,
64
+ expiry,
65
+ ]));
66
+ const domainSeparator = getDomainSeparator(domain, avsDirectory);
67
+ const signingHash = utils.keccak256(utils.solidityPack(['bytes', 'bytes32', 'bytes32'], [utils.toUtf8Bytes('\x19\x01'), domainSeparator, structHash]));
68
+ // Eigenlayer's AVSDirectory expects the signature over raw signed hash instead of EIP-191 compatible toEthSignedMessageHash
69
+ // see https://github.com/Layr-Labs/eigenlayer-contracts/blob/ef2ea4a7459884f381057aa9bbcd29c7148cfb63/src/contracts/libraries/EIP1271SignatureUtils.sol#L22
70
+ const signature = operator
71
+ ._signingKey()
72
+ .signDigest(utils.arrayify(signingHash));
73
+ return {
74
+ signature: utils.joinSignature(signature),
75
+ salt,
76
+ expiry,
77
+ };
78
+ }
79
+ function getDomainSeparator(domain, avsDirectory) {
80
+ if (!avsDirectory) {
81
+ throw new Error('Invalid domain for operator to the AVS, currently only Ethereum Mainnet and Holesky are supported.');
82
+ }
83
+ const domainTypehash = utils.keccak256(utils.toUtf8Bytes('EIP712Domain(string name,uint256 chainId,address verifyingContract)'));
84
+ const domainBN = utils.hexZeroPad(utils.hexlify(domain), 32);
85
+ const eigenlayerDigest = utils.keccak256(utils.toUtf8Bytes('EigenLayer'));
86
+ const domainSeparator = utils.keccak256(utils.solidityPack(['bytes32', 'bytes32', 'bytes32', 'bytes32'], [
87
+ domainTypehash,
88
+ eigenlayerDigest,
89
+ domainBN,
90
+ addressToBytes32(avsDirectory),
91
+ ]));
92
+ return domainSeparator;
93
+ }
94
+ //# sourceMappingURL=stakeRegistry.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"stakeRegistry.js","sourceRoot":"","sources":["../../../src/avs/stakeRegistry.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,12 @@
1
+ import { CommandModule, Options } from 'yargs';
2
+ /**
3
+ * Parent command
4
+ */
5
+ export declare const avsCommand: CommandModule;
6
+ /**
7
+ * Registration command
8
+ */
9
+ export declare const registrationOptions: {
10
+ [k: string]: Options;
11
+ };
12
+ //# sourceMappingURL=avs.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avs.d.ts","sourceRoot":"","sources":["../../../src/commands/avs.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,OAAO,EAAE,MAAM,OAAO,CAAC;AAW/C;;GAEG;AACH,eAAO,MAAM,UAAU,EAAE,aAUxB,CAAC;AAEF;;GAEG;AACH,eAAO,MAAM,mBAAmB,EAAE;IAAE,CAAC,CAAC,EAAE,MAAM,GAAG,OAAO,CAAA;CAYvD,CAAC"}
@@ -0,0 +1,58 @@
1
+ import { deregisterOperator, registerOperatorWithSignature, } from '../avs/stakeRegistry.js';
2
+ import { log } from '../logger.js';
3
+ /**
4
+ * Parent command
5
+ */
6
+ export const avsCommand = {
7
+ command: 'avs',
8
+ describe: 'Interact with the Hyperlane AVS',
9
+ builder: (yargs) => yargs
10
+ .command(registerCommand)
11
+ .command(deregisterCommand)
12
+ .version(false)
13
+ .demandCommand(),
14
+ handler: () => log('Command required'),
15
+ };
16
+ /**
17
+ * Registration command
18
+ */
19
+ export const registrationOptions = {
20
+ chain: {
21
+ type: 'string',
22
+ description: 'Chain to interact with the AVS on',
23
+ demandOption: true,
24
+ choices: ['holesky', 'ethereum'],
25
+ },
26
+ operatorKeyPath: {
27
+ type: 'string',
28
+ description: 'Path to the operator key file',
29
+ demandOption: true,
30
+ },
31
+ };
32
+ const registerCommand = {
33
+ command: 'register',
34
+ describe: 'Register operator with the AVS',
35
+ builder: registrationOptions,
36
+ handler: async ({ context, chain, operatorKeyPath }) => {
37
+ await registerOperatorWithSignature({
38
+ context,
39
+ chain,
40
+ operatorKeyPath,
41
+ });
42
+ process.exit(0);
43
+ },
44
+ };
45
+ const deregisterCommand = {
46
+ command: 'deregister',
47
+ describe: 'Deregister yourself with the AVS',
48
+ builder: registrationOptions,
49
+ handler: async ({ context, chain, operatorKeyPath }) => {
50
+ await deregisterOperator({
51
+ context,
52
+ chain,
53
+ operatorKeyPath,
54
+ });
55
+ process.exit(0);
56
+ },
57
+ };
58
+ //# sourceMappingURL=avs.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"avs.js","sourceRoot":"","sources":["../../../src/commands/avs.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,kBAAkB,EAClB,6BAA6B,GAC9B,MAAM,yBAAyB,CAAC;AAEjC,OAAO,EAAE,GAAG,EAAE,MAAM,cAAc,CAAC;AAEnC;;GAEG;AACH,MAAM,CAAC,MAAM,UAAU,GAAkB;IACvC,OAAO,EAAE,KAAK;IACd,QAAQ,EAAE,iCAAiC;IAC3C,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,OAAO,CAAC,eAAe,CAAC;SACxB,OAAO,CAAC,iBAAiB,CAAC;SAC1B,OAAO,CAAC,KAAK,CAAC;SACd,aAAa,EAAE;IACpB,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,MAAM,CAAC,MAAM,mBAAmB,GAA6B;IAC3D,KAAK,EAAE;QACL,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,mCAAmC;QAChD,YAAY,EAAE,IAAI;QAClB,OAAO,EAAE,CAAC,SAAS,EAAE,UAAU,CAAC;KACjC;IACD,eAAe,EAAE;QACf,IAAI,EAAE,QAAQ;QACd,WAAW,EAAE,+BAA+B;QAC5C,YAAY,EAAE,IAAI;KACnB;CACF,CAAC;AAEF,MAAM,eAAe,GAGhB;IACH,OAAO,EAAE,UAAU;IACnB,QAAQ,EAAE,gCAAgC;IAC1C,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE;QACrD,MAAM,6BAA6B,CAAC;YAClC,OAAO;YACP,KAAK;YACL,eAAe;SAChB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;CACF,CAAC;AAEF,MAAM,iBAAiB,GAGlB;IACH,OAAO,EAAE,YAAY;IACrB,QAAQ,EAAE,kCAAkC;IAC5C,OAAO,EAAE,mBAAmB;IAC5B,OAAO,EAAE,KAAK,EAAE,EAAE,OAAO,EAAE,KAAK,EAAE,eAAe,EAAE,EAAE,EAAE;QACrD,MAAM,kBAAkB,CAAC;YACvB,OAAO;YACP,KAAK;YACL,eAAe;SAChB,CAAC,CAAC;QACH,OAAO,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC;IAClB,CAAC;CACF,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../src/commands/chains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAatC;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,aAU3B,CAAC"}
1
+ {"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../src/commands/chains.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAQtC;;GAEG;AACH,eAAO,MAAM,aAAa,EAAE,aAU3B,CAAC"}
@@ -1,11 +1,11 @@
1
- import { Chains, Mainnets, Testnets, chainMetadata, hyperlaneContractAddresses, } from '@hyperlane-xyz/sdk';
2
- import { log, logBlue, logGray, logTable } from '../../logger.js';
1
+ import { log, logBlue, logGray, logTable } from '../logger.js';
2
+ const ChainTypes = ['mainnet', 'testnet'];
3
3
  /**
4
4
  * Parent command
5
5
  */
6
6
  export const chainsCommand = {
7
7
  command: 'chains',
8
- describe: 'View information about core Hyperlane chains',
8
+ describe: 'View information about Hyperlane chains in a registry',
9
9
  builder: (yargs) => yargs
10
10
  .command(listCommand)
11
11
  .command(addressesCommand)
@@ -18,21 +18,40 @@ export const chainsCommand = {
18
18
  */
19
19
  const listCommand = {
20
20
  command: 'list',
21
- describe: 'List all core chains included in the Hyperlane SDK',
22
- handler: () => {
23
- const serializer = (chains) => chains.reduce((result, chain) => {
24
- result[chain] = {
25
- 'Display Name': chainMetadata[chain].displayName,
26
- 'Chain Id': chainMetadata[chain].chainId,
27
- };
28
- return result;
29
- }, {});
30
- logBlue('Hyperlane core mainnet chains:');
31
- logGray('------------------------------');
32
- logTable(serializer(Mainnets));
33
- logBlue('\nHyperlane core testnet chains:');
34
- logGray('------------------------------');
35
- logTable(serializer(Testnets));
21
+ describe: 'List all chains included in a registry',
22
+ builder: {
23
+ type: {
24
+ describe: 'Specify the type of chains',
25
+ choices: ChainTypes,
26
+ },
27
+ },
28
+ handler: async ({ type, context }) => {
29
+ const logChainsForType = (type) => {
30
+ logBlue(`\nHyperlane ${type} chains:`);
31
+ logGray('------------------------------');
32
+ const chains = Object.values(context.chainMetadata).filter((c) => {
33
+ if (type === 'mainnet')
34
+ return !c.isTestnet;
35
+ else
36
+ return !!c.isTestnet;
37
+ });
38
+ const tableData = chains.reduce((result, chain) => {
39
+ const { chainId, displayName } = chain;
40
+ result[chain.name] = {
41
+ 'Display Name': displayName,
42
+ 'Chain Id': chainId,
43
+ };
44
+ return result;
45
+ }, {});
46
+ logTable(tableData);
47
+ };
48
+ if (type) {
49
+ logChainsForType(type);
50
+ }
51
+ else {
52
+ logChainsForType('mainnet');
53
+ logChainsForType('testnet');
54
+ }
36
55
  },
37
56
  };
38
57
  /**
@@ -41,25 +60,25 @@ const listCommand = {
41
60
  const addressesCommand = {
42
61
  command: 'addresses',
43
62
  describe: 'Display the addresses of core Hyperlane contracts',
44
- builder: (yargs) => yargs.options({
63
+ builder: {
45
64
  name: {
46
65
  type: 'string',
47
66
  description: 'Chain to display addresses for',
48
- choices: Object.values(Chains),
49
67
  alias: 'chain',
50
68
  },
51
- }),
52
- handler: (args) => {
53
- const name = args.name;
54
- if (name && hyperlaneContractAddresses[name]) {
69
+ },
70
+ handler: async ({ name, context }) => {
71
+ if (name) {
72
+ const result = await context.registry.getChainAddresses(name);
55
73
  logBlue('Hyperlane contract addresses for:', name);
56
74
  logGray('---------------------------------');
57
- log(JSON.stringify(hyperlaneContractAddresses[name], null, 2));
75
+ log(JSON.stringify(result, null, 2));
58
76
  }
59
77
  else {
60
- logBlue('Hyperlane core contract addresses:');
78
+ const result = await context.registry.getAddresses();
79
+ logBlue('Hyperlane contract addresses:');
61
80
  logGray('----------------------------------');
62
- log(JSON.stringify(hyperlaneContractAddresses, null, 2));
81
+ log(JSON.stringify(result, null, 2));
63
82
  }
64
83
  },
65
84
  };
@@ -1 +1 @@
1
- {"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../src/commands/chains.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,MAAM,EAEN,QAAQ,EACR,QAAQ,EACR,aAAa,EACb,0BAA0B,GAC3B,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAElE;;GAEG;AACH,MAAM,CAAC,MAAM,aAAa,GAAkB;IAC1C,OAAO,EAAE,QAAQ;IACjB,QAAQ,EAAE,8CAA8C;IACxD,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK;SACF,OAAO,CAAC,WAAW,CAAC;SACpB,OAAO,CAAC,gBAAgB,CAAC;SACzB,OAAO,CAAC,KAAK,CAAC;SACd,aAAa,EAAE;IACpB,OAAO,EAAE,GAAG,EAAE,CAAC,GAAG,CAAC,kBAAkB,CAAC;CACvC,CAAC;AAEF;;GAEG;AACH,MAAM,WAAW,GAAkB;IACjC,OAAO,EAAE,MAAM;IACf,QAAQ,EAAE,oDAAoD;IAC9D,OAAO,EAAE,GAAG,EAAE;QACZ,MAAM,UAAU,GAAG,CAAC,MAAgB,EAAE,EAAE,CACtC,MAAM,CAAC,MAAM,CAAM,CAAC,MAAM,EAAE,KAAK,EAAE,EAAE;YACnC,MAAM,CAAC,KAAK,CAAC,GAAG;gBACd,cAAc,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,WAAW;gBAChD,UAAU,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC,OAAO;aACzC,CAAC;YACF,OAAO,MAAM,CAAC;QAChB,CAAC,EAAE,EAAE,CAAC,CAAC;QAET,OAAO,CAAC,gCAAgC,CAAC,CAAC;QAC1C,OAAO,CAAC,gCAAgC,CAAC,CAAC;QAC1C,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;QAC/B,OAAO,CAAC,kCAAkC,CAAC,CAAC;QAC5C,OAAO,CAAC,gCAAgC,CAAC,CAAC;QAC1C,QAAQ,CAAC,UAAU,CAAC,QAAQ,CAAC,CAAC,CAAC;IACjC,CAAC;CACF,CAAC;AAEF;;GAEG;AACH,MAAM,gBAAgB,GAAkB;IACtC,OAAO,EAAE,WAAW;IACpB,QAAQ,EAAE,mDAAmD;IAC7D,OAAO,EAAE,CAAC,KAAK,EAAE,EAAE,CACjB,KAAK,CAAC,OAAO,CAAC;QACZ,IAAI,EAAE;YACJ,IAAI,EAAE,QAAQ;YACd,WAAW,EAAE,gCAAgC;YAC7C,OAAO,EAAE,MAAM,CAAC,MAAM,CAAC,MAAM,CAAC;YAC9B,KAAK,EAAE,OAAO;SACf;KACF,CAAC;IACJ,OAAO,EAAE,CAAC,IAAI,EAAE,EAAE;QAChB,MAAM,IAAI,GAAG,IAAI,CAAC,IAAiC,CAAC;QACpD,IAAI,IAAI,IAAI,0BAA0B,CAAC,IAAI,CAAC,EAAE;YAC5C,OAAO,CAAC,mCAAmC,EAAE,IAAI,CAAC,CAAC;YACnD,OAAO,CAAC,mCAAmC,CAAC,CAAC;YAC7C,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,0BAA0B,CAAC,IAAI,CAAC,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;SAChE;aAAM;YACL,OAAO,CAAC,oCAAoC,CAAC,CAAC;YAC9C,OAAO,CAAC,oCAAoC,CAAC,CAAC;YAC9C,GAAG,CAAC,IAAI,CAAC,SAAS,CAAC,0BAA0B,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;SAC1D;IACH,CAAC;CACF,CAAC"}
1
+ {"version":3,"file":"chains.js","sourceRoot":"","sources":["../../../src/commands/chains.ts"],"names":[],"mappings":"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"}