@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,84 +1,77 @@
1
1
  import { confirm, input } from '@inquirer/prompts';
2
2
  import { ethers } from 'ethers';
3
- import { z } from 'zod';
4
- import { TokenType } from '@hyperlane-xyz/sdk';
5
- import { errorRed, logBlue, logGreen } from '../../logger.js';
3
+ import { TokenType, WarpCoreConfigSchema, WarpRouteDeployConfigSchema, } from '@hyperlane-xyz/sdk';
4
+ import { objFilter } from '@hyperlane-xyz/utils';
5
+ import { errorRed, logBlue, logGreen } from '../logger.js';
6
6
  import { runMultiChainSelectionStep, runSingleChainSelectionStep, } from '../utils/chains.js';
7
7
  import { readYamlOrJson, writeYamlOrJson } from '../utils/files.js';
8
- import { readChainConfigsIfExists } from './chain.js';
9
- const ConnectionConfigSchema = {
10
- mailbox: z.string().optional(),
11
- interchainGasPaymaster: z.string().optional(),
12
- interchainSecurityModule: z.string().optional(),
13
- foreignDeployment: z.string().optional(),
14
- };
15
- export const WarpRouteConfigSchema = z.object({
16
- base: z.object({
17
- type: z.literal(TokenType.native).or(z.literal(TokenType.collateral)),
18
- chainName: z.string(),
19
- address: z.string().optional(),
20
- isNft: z.boolean().optional(),
21
- name: z.string().optional(),
22
- symbol: z.string().optional(),
23
- decimals: z.number().optional(),
24
- ...ConnectionConfigSchema,
25
- }),
26
- synthetics: z
27
- .array(z.object({
28
- chainName: z.string(),
29
- name: z.string().optional(),
30
- symbol: z.string().optional(),
31
- totalSupply: z.number().optional(),
32
- ...ConnectionConfigSchema,
33
- }))
34
- .nonempty(),
35
- });
36
- export function readWarpRouteConfig(filePath) {
8
+ export function readWarpRouteDeployConfig(filePath) {
37
9
  const config = readYamlOrJson(filePath);
38
10
  if (!config)
39
- throw new Error(`No warp config found at ${filePath}`);
40
- const result = WarpRouteConfigSchema.safeParse(config);
41
- if (!result.success) {
42
- const firstIssue = result.error.issues[0];
43
- throw new Error(`Invalid warp config: ${firstIssue.path} => ${firstIssue.message}`);
44
- }
45
- return result.data;
11
+ throw new Error(`No warp route deploy config found at ${filePath}`);
12
+ return WarpRouteDeployConfigSchema.parse(config);
46
13
  }
47
- export function isValidWarpRouteConfig(config) {
48
- return WarpRouteConfigSchema.safeParse(config).success;
14
+ export function isValidWarpRouteDeployConfig(config) {
15
+ return WarpRouteDeployConfigSchema.safeParse(config).success;
49
16
  }
50
- export async function createWarpConfig({ format, outPath, chainConfigPath, }) {
51
- logBlue('Creating a new warp route config');
52
- const customChains = readChainConfigsIfExists(chainConfigPath);
53
- const baseChain = await runSingleChainSelectionStep(customChains, 'Select base chain with the original token to warp');
17
+ export async function createWarpRouteDeployConfig({ context, outPath, }) {
18
+ logBlue('Creating a new warp route deployment config');
19
+ const baseChain = await runSingleChainSelectionStep(context.chainMetadata, 'Select base chain with the original token to warp');
54
20
  const isNative = await confirm({
55
21
  message: 'Are you creating a route for the native token of the base chain (e.g. Ether on Ethereum)?',
56
22
  });
57
- const baseType = isNative ? TokenType.native : TokenType.collateral;
58
- const baseAddress = isNative
59
- ? ethers.constants.AddressZero
60
- : await input({ message: 'Enter the token address' });
61
23
  const isNft = isNative
62
24
  ? false
63
25
  : await confirm({ message: 'Is this an NFT (i.e. ERC-721)?' });
64
- const syntheticChains = await runMultiChainSelectionStep(customChains, 'Select the chains to which the base token will be connected');
26
+ const isYieldBearing = isNative || isNft
27
+ ? false
28
+ : await confirm({
29
+ message: 'Do you want this warp route to be yield-bearing (i.e. deposits into ERC-4626 vault)?',
30
+ });
31
+ const addressMessage = `Enter the ${isYieldBearing ? 'ERC-4626 vault' : 'collateral token'} address`;
32
+ const baseAddress = isNative
33
+ ? ethers.constants.AddressZero
34
+ : await input({ message: addressMessage });
35
+ const metadataWithoutBase = objFilter(context.chainMetadata, (chain, _) => chain !== baseChain);
36
+ const syntheticChains = await runMultiChainSelectionStep(metadataWithoutBase, 'Select chains to which the base token will be connected');
65
37
  // TODO add more prompts here to support customizing the token metadata
66
- const result = {
67
- base: {
68
- chainName: baseChain,
69
- type: baseType,
70
- address: baseAddress,
71
- isNft,
72
- },
73
- synthetics: syntheticChains.map((chain) => ({ chainName: chain })),
74
- };
75
- if (isValidWarpRouteConfig(result)) {
38
+ let result;
39
+ if (isNative) {
40
+ result = {
41
+ [baseChain]: {
42
+ type: TokenType.native,
43
+ },
44
+ };
45
+ }
46
+ else {
47
+ result = {
48
+ [baseChain]: {
49
+ type: isYieldBearing ? TokenType.collateralVault : TokenType.collateral,
50
+ token: baseAddress,
51
+ isNft,
52
+ },
53
+ };
54
+ }
55
+ syntheticChains.map((chain) => {
56
+ result[chain] = {
57
+ type: TokenType.synthetic,
58
+ };
59
+ });
60
+ if (isValidWarpRouteDeployConfig(result)) {
76
61
  logGreen(`Warp Route config is valid, writing to file ${outPath}`);
77
- writeYamlOrJson(outPath, result, format);
62
+ writeYamlOrJson(outPath, result);
78
63
  }
79
64
  else {
80
- errorRed(`Warp config is invalid, please see https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/typescript/cli/examples/warp-tokens.yaml for an example`);
65
+ errorRed(`Warp route deployment config is invalid, please see https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/typescript/cli/examples/warp-route-deployment.yaml for an example`);
81
66
  throw new Error('Invalid multisig config');
82
67
  }
83
68
  }
69
+ // Note, this is different than the function above which reads a config
70
+ // for a DEPLOYMENT. This gets a config for using a warp route (aka WarpCoreConfig)
71
+ export function readWarpRouteConfig(filePath) {
72
+ const config = readYamlOrJson(filePath);
73
+ if (!config)
74
+ throw new Error(`No warp route config found at ${filePath}`);
75
+ return WarpCoreConfigSchema.parse(config);
76
+ }
84
77
  //# sourceMappingURL=warp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"warp.js","sourceRoot":"","sources":["../../../src/config/warp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"warp.js","sourceRoot":"","sources":["../../../src/config/warp.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,5 @@
1
1
  export declare const MINIMUM_CORE_DEPLOY_GAS: string;
2
2
  export declare const MINIMUM_WARP_DEPLOY_GAS: string;
3
3
  export declare const MINIMUM_TEST_SEND_GAS: string;
4
+ export declare const MINIMUM_AVS_GAS: string;
4
5
  //# sourceMappingURL=consts.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AACxD,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AACxD,eAAO,MAAM,qBAAqB,QAAmB,CAAC"}
1
+ {"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AACxD,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AACxD,eAAO,MAAM,qBAAqB,QAAmB,CAAC;AACtD,eAAO,MAAM,eAAe,QAAmB,CAAC"}
@@ -1,4 +1,5 @@
1
1
  export const MINIMUM_CORE_DEPLOY_GAS = (1e8).toString();
2
2
  export const MINIMUM_WARP_DEPLOY_GAS = (1e7).toString();
3
3
  export const MINIMUM_TEST_SEND_GAS = (3e5).toString();
4
+ export const MINIMUM_AVS_GAS = (3e6).toString();
4
5
  //# sourceMappingURL=consts.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/consts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC"}
1
+ {"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/consts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC"}
@@ -0,0 +1,14 @@
1
+ import { ChainName } from '@hyperlane-xyz/sdk';
2
+ import { CommandContext, ContextSettings } from './types.js';
3
+ export declare function contextMiddleware(argv: Record<string, any>): Promise<void>;
4
+ /**
5
+ * Retrieves context for the user-selected command
6
+ * @returns context for the current command
7
+ */
8
+ export declare function getContext({ registryUri, registryOverrideUri, key, requiresKey, skipConfirmation, }: ContextSettings): Promise<CommandContext>;
9
+ /**
10
+ * Retrieves dry-run context for the user-selected command
11
+ * @returns dry-run context for the current command
12
+ */
13
+ export declare function getDryRunContext({ registryUri, registryOverrideUri, key, fromAddress, skipConfirmation, }: ContextSettings, chain?: ChainName): Promise<CommandContext>;
14
+ //# sourceMappingURL=context.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAiB,MAAM,oBAAoB,CAAC;AAU9D,OAAO,EACL,cAAc,EACd,eAAe,EAEhB,MAAM,YAAY,CAAC;AAEpB,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,iBAmBhE;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,EAC/B,WAAW,EACX,mBAAmB,EACnB,GAAG,EACH,WAAW,EACX,gBAAgB,GACjB,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAiB3C;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,EACE,WAAW,EACX,mBAAmB,EACnB,GAAG,EACH,WAAW,EACX,gBAAgB,GACjB,EAAE,eAAe,EAClB,KAAK,CAAC,EAAE,SAAS,GAChB,OAAO,CAAC,cAAc,CAAC,CAmCzB"}
@@ -0,0 +1,108 @@
1
+ import { MultiProvider } from '@hyperlane-xyz/sdk';
2
+ import { isNullish } from '@hyperlane-xyz/utils';
3
+ import { isSignCommand } from '../commands/signCommands.js';
4
+ import { forkNetworkToMultiProvider, verifyAnvil } from '../deploy/dry-run.js';
5
+ import { logBlue } from '../logger.js';
6
+ import { MergedRegistry } from '../registry/MergedRegistry.js';
7
+ import { runSingleChainSelectionStep } from '../utils/chains.js';
8
+ import { getImpersonatedSigner, getSigner } from '../utils/keys.js';
9
+ export async function contextMiddleware(argv) {
10
+ const isDryRun = !isNullish(argv.dryRun);
11
+ const requiresKey = isSignCommand(argv);
12
+ const settings = {
13
+ registryUri: argv.registry,
14
+ registryOverrideUri: argv.overrides,
15
+ key: argv.key,
16
+ fromAddress: argv.fromAddress,
17
+ requiresKey,
18
+ skipConfirmation: argv.yes,
19
+ };
20
+ if (!isDryRun && settings.fromAddress)
21
+ throw new Error("'--from-address' or '-f' should only be used for dry-runs");
22
+ const context = isDryRun
23
+ ? await getDryRunContext(settings, argv.dryRun)
24
+ : await getContext(settings);
25
+ argv.context = context;
26
+ }
27
+ /**
28
+ * Retrieves context for the user-selected command
29
+ * @returns context for the current command
30
+ */
31
+ export async function getContext({ registryUri, registryOverrideUri, key, requiresKey, skipConfirmation, }) {
32
+ const registry = getRegistry(registryUri, registryOverrideUri);
33
+ let signer = undefined;
34
+ if (requiresKey) {
35
+ ({ key, signer } = await getSigner({ key, skipConfirmation }));
36
+ }
37
+ const multiProvider = await getMultiProvider(registry, signer);
38
+ return {
39
+ registry,
40
+ chainMetadata: multiProvider.metadata,
41
+ multiProvider,
42
+ key,
43
+ signer,
44
+ skipConfirmation: !!skipConfirmation,
45
+ };
46
+ }
47
+ /**
48
+ * Retrieves dry-run context for the user-selected command
49
+ * @returns dry-run context for the current command
50
+ */
51
+ export async function getDryRunContext({ registryUri, registryOverrideUri, key, fromAddress, skipConfirmation, }, chain) {
52
+ const registry = getRegistry(registryUri, registryOverrideUri, true);
53
+ const chainMetadata = await registry.getMetadata();
54
+ if (!chain) {
55
+ if (skipConfirmation)
56
+ throw new Error('No chains provided');
57
+ chain = await runSingleChainSelectionStep(chainMetadata, 'Select chain to dry-run against:');
58
+ }
59
+ logBlue(`Dry-running against chain: ${chain}`);
60
+ await verifyAnvil();
61
+ const multiProvider = await getMultiProvider(registry);
62
+ await forkNetworkToMultiProvider(multiProvider, chain);
63
+ const { impersonatedKey, impersonatedSigner } = await getImpersonatedSigner({
64
+ fromAddress,
65
+ key,
66
+ skipConfirmation,
67
+ });
68
+ multiProvider.setSharedSigner(impersonatedSigner);
69
+ return {
70
+ registry,
71
+ chainMetadata: multiProvider.metadata,
72
+ key: impersonatedKey,
73
+ signer: impersonatedSigner,
74
+ multiProvider: multiProvider,
75
+ skipConfirmation: !!skipConfirmation,
76
+ isDryRun: true,
77
+ dryRunChain: chain,
78
+ };
79
+ }
80
+ /**
81
+ * Creates a new MergedRegistry using the provided URIs
82
+ * The intention of the MergedRegistry is to join the common data
83
+ * from a primary URI (such as the Hyperlane default Github repo)
84
+ * and an override one (such as a local directory)
85
+ * @returns a new MergedRegistry
86
+ */
87
+ function getRegistry(primaryRegistryUri, overrideRegistryUri, isDryRun) {
88
+ const registryUris = [primaryRegistryUri, overrideRegistryUri]
89
+ .map((r) => r.trim())
90
+ .filter((r) => !!r);
91
+ return new MergedRegistry({
92
+ registryUris,
93
+ isDryRun,
94
+ });
95
+ }
96
+ /**
97
+ * Retrieves a new MultiProvider based on all known chain metadata & custom user chains
98
+ * @param customChains Custom chains specified by the user
99
+ * @returns a new MultiProvider
100
+ */
101
+ async function getMultiProvider(registry, signer) {
102
+ const chainMetadata = await registry.getMetadata();
103
+ const multiProvider = new MultiProvider(chainMetadata);
104
+ if (signer)
105
+ multiProvider.setSharedSigner(signer);
106
+ return multiProvider;
107
+ }
108
+ //# sourceMappingURL=context.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import type { ethers } from 'ethers';
2
+ import type { CommandModule } from 'yargs';
3
+ import type { IRegistry } from '@hyperlane-xyz/registry';
4
+ import type { ChainMap, ChainMetadata, MultiProvider } from '@hyperlane-xyz/sdk';
5
+ export interface ContextSettings {
6
+ registryUri: string;
7
+ registryOverrideUri: string;
8
+ key?: string;
9
+ fromAddress?: string;
10
+ requiresKey?: boolean;
11
+ skipConfirmation?: boolean;
12
+ }
13
+ export interface CommandContext {
14
+ registry: IRegistry;
15
+ chainMetadata: ChainMap<ChainMetadata>;
16
+ multiProvider: MultiProvider;
17
+ skipConfirmation: boolean;
18
+ key?: string;
19
+ signer?: ethers.Signer;
20
+ }
21
+ export interface WriteCommandContext extends CommandContext {
22
+ key: string;
23
+ signer: ethers.Signer;
24
+ isDryRun?: boolean;
25
+ dryRunChain?: string;
26
+ }
27
+ export type CommandModuleWithContext<Args> = CommandModule<{}, Args & {
28
+ context: CommandContext;
29
+ }>;
30
+ export type CommandModuleWithWriteContext<Args> = CommandModule<{}, Args & {
31
+ context: WriteCommandContext;
32
+ }>;
33
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +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,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"}
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/context/types.ts"],"names":[],"mappings":""}
@@ -1,6 +1,8 @@
1
- export declare function runKurtosisAgentDeploy({ originChain, agentConfigurationPath, relayChains, }: {
2
- originChain: string;
3
- agentConfigurationPath: string;
4
- relayChains: string;
1
+ import { CommandContext } from '../context/types.js';
2
+ export declare function runKurtosisAgentDeploy({ context, originChain, relayChains, agentConfigurationPath, }: {
3
+ context: CommandContext;
4
+ originChain?: string;
5
+ relayChains?: string;
6
+ agentConfigurationPath?: string;
5
7
  }): Promise<void>;
6
8
  //# sourceMappingURL=agent.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/deploy/agent.ts"],"names":[],"mappings":"AAMA,wBAAsB,sBAAsB,CAAC,EAC3C,WAAW,EACX,sBAAsB,EACtB,WAAW,GACZ,EAAE;IACD,WAAW,EAAE,MAAM,CAAC;IACpB,sBAAsB,EAAE,MAAM,CAAC;IAC/B,WAAW,EAAE,MAAM,CAAC;CACrB,iBAmDA"}
1
+ {"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/deploy/agent.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQrD,wBAAsB,sBAAsB,CAAC,EAC3C,OAAO,EACP,WAAW,EACX,WAAW,EACX,sBAAsB,GACvB,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,iBAyDA"}
@@ -1,20 +1,19 @@
1
- import { input } from '@inquirer/prompts';
2
1
  import terminalLink from 'terminal-link';
3
- import { logBlue, logGreen, logRed } from '../../logger.js';
2
+ import { toBase64 } from '@hyperlane-xyz/utils';
3
+ import { logBlue, logGreen } from '../logger.js';
4
+ import { runMultiChainSelectionStep, runSingleChainSelectionStep, } from '../utils/chains.js';
4
5
  import { readJson, runFileSelectionStep } from '../utils/files.js';
5
- export async function runKurtosisAgentDeploy({ originChain, agentConfigurationPath, relayChains, }) {
6
+ export async function runKurtosisAgentDeploy({ context, originChain, relayChains, agentConfigurationPath, }) {
6
7
  if (!originChain) {
7
- originChain = await input({ message: 'Enter the origin chain' });
8
+ originChain = await runSingleChainSelectionStep(context.chainMetadata, 'Select the origin chain');
8
9
  }
9
10
  if (!relayChains) {
10
- relayChains = await input({
11
- message: 'Enter a comma separated list of chains to relay between',
12
- });
13
- relayChains = trimSpaces(relayChains);
11
+ const selectedRelayChains = await runMultiChainSelectionStep(context.chainMetadata, 'Select chains to relay between', true);
12
+ relayChains = selectedRelayChains.join(',');
14
13
  }
15
14
  if (!agentConfigurationPath) {
16
15
  logBlue('\n', 'No agent config json was provided. Please specify the agent config json filepath.');
17
- agentConfigurationPath = await runFileSelectionStep('./artifacts', 'agent config json', 'agent-config');
16
+ agentConfigurationPath = await runFileSelectionStep('./configs', 'agent config json', 'agent-config');
18
17
  }
19
18
  const agentConfigObject = readJson(agentConfigurationPath);
20
19
  const hyperlanePackageArgs = {
@@ -27,24 +26,11 @@ export async function runKurtosisAgentDeploy({ originChain, agentConfigurationPa
27
26
  restartServices: true,
28
27
  args: hyperlanePackageArgs,
29
28
  };
30
- const base64EncodedPackageConfig = jsonToBase64(kurtosisPackageConfig);
29
+ const base64EncodedPackageConfig = toBase64(kurtosisPackageConfig) || '';
31
30
  const kurtosisCloudUrl = getKurtosisCloudUrl(base64EncodedPackageConfig);
32
- const kurtosisCloudLink = terminalLink('Cmd+Click or Ctrl+Click here', kurtosisCloudUrl);
31
+ const kurtosisCloudLink = terminalLink('Kurtosis Cloud Link 🔗 (cmd+click or ctrl+click here)', kurtosisCloudUrl, { fallback: () => kurtosisCloudUrl });
33
32
  logGreen('\n', 'Click the link below to deploy your validator and relayer with Kurtosis:', '\n', `${kurtosisCloudLink}`);
34
33
  return;
35
34
  }
36
35
  const getKurtosisCloudUrl = (base64Params) => `https://cloud.kurtosis.com/enclave-manager?package-id=github.com%2Fkurtosis-tech%2Fhyperlane-package&package-args=${base64Params}`;
37
- const trimSpaces = (a) => a
38
- .split('')
39
- .filter((char) => char !== ' ')
40
- .join('');
41
- function jsonToBase64(jsonData) {
42
- try {
43
- return btoa(JSON.stringify(jsonData));
44
- }
45
- catch (error) {
46
- logRed('Error occurred creating kurtosis cloud url.');
47
- return '';
48
- }
49
- }
50
36
  //# sourceMappingURL=agent.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/deploy/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,WAAW,EACX,sBAAsB,EACtB,WAAW,GAKZ;IACC,IAAI,CAAC,WAAW,EAAE;QAChB,WAAW,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC;KAClE;IACD,IAAI,CAAC,WAAW,EAAE;QAChB,WAAW,GAAG,MAAM,KAAK,CAAC;YACxB,OAAO,EAAE,yDAAyD;SACnE,CAAC,CAAC;QACH,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;KACvC;IAED,IAAI,CAAC,sBAAsB,EAAE;QAC3B,OAAO,CACL,IAAI,EACJ,mFAAmF,CACpF,CAAC;QACF,sBAAsB,GAAG,MAAM,oBAAoB,CACjD,aAAa,EACb,mBAAmB,EACnB,cAAc,CACf,CAAC;KACH;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,YAAY,CAAC,qBAAqB,CAAC,CAAC;IACvE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;IAEzE,MAAM,iBAAiB,GAAG,YAAY,CACpC,8BAA8B,EAC9B,gBAAgB,CACjB,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;AAEtI,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE,CAC/B,CAAC;KACE,KAAK,CAAC,EAAE,CAAC;KACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC;KAC9B,IAAI,CAAC,EAAE,CAAC,CAAC;AAEd,SAAS,YAAY,CAAC,QAAa;IACjC,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;KACvC;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,CAAC,6CAA6C,CAAC,CAAC;QACtD,OAAO,EAAE,CAAC;KACX;AACH,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,12 +1,15 @@
1
- import { ChainName } from '@hyperlane-xyz/sdk';
2
- export declare function runCoreDeploy({ key, chainConfigPath, chains, ismConfigPath, hookConfigPath, artifactsPath, outPath, skipConfirmation, }: {
3
- key: string;
4
- chainConfigPath: string;
1
+ import { ChainMap, ChainName, IgpConfig, MultisigConfig } from '@hyperlane-xyz/sdk';
2
+ import { Address } from '@hyperlane-xyz/utils';
3
+ import { WriteCommandContext } from '../context/types.js';
4
+ /**
5
+ * Executes the core deploy command.
6
+ */
7
+ export declare function runCoreDeploy({ context, chains, ismConfigPath, hookConfigPath, agentOutPath, }: {
8
+ context: WriteCommandContext;
5
9
  chains?: ChainName[];
6
10
  ismConfigPath?: string;
7
11
  hookConfigPath?: string;
8
- artifactsPath?: string;
9
- outPath: string;
10
- skipConfirmation: boolean;
12
+ agentOutPath: string;
11
13
  }): Promise<void>;
14
+ export declare function buildIgpConfigMap(owner: Address, chains: ChainName[], multisigConfigs: ChainMap<MultisigConfig>): ChainMap<IgpConfig>;
12
15
  //# sourceMappingURL=core.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,SAAS,EAuBV,MAAM,oBAAoB,CAAC;AA0B5B,wBAAsB,aAAa,CAAC,EAClC,GAAG,EACH,eAAe,EACf,MAAM,EACN,aAAa,EACb,cAAc,EACd,aAAa,EACb,OAAO,EACP,gBAAgB,GACjB,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,iBAiCA"}
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"}