@hyperlane-xyz/cli 4.0.0 → 4.2.0-beta.2

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 (97) hide show
  1. package/README.md +4 -1
  2. package/dist/cli.js +2 -0
  3. package/dist/cli.js.map +1 -1
  4. package/dist/src/commands/core.d.ts.map +1 -1
  5. package/dist/src/commands/core.js +11 -5
  6. package/dist/src/commands/core.js.map +1 -1
  7. package/dist/src/commands/options.d.ts +2 -0
  8. package/dist/src/commands/options.d.ts.map +1 -1
  9. package/dist/src/commands/options.js +14 -3
  10. package/dist/src/commands/options.js.map +1 -1
  11. package/dist/src/commands/registry.js +16 -9
  12. package/dist/src/commands/registry.js.map +1 -1
  13. package/dist/src/commands/signCommands.d.ts.map +1 -1
  14. package/dist/src/commands/signCommands.js +1 -1
  15. package/dist/src/commands/signCommands.js.map +1 -1
  16. package/dist/src/commands/status.d.ts +2 -0
  17. package/dist/src/commands/status.d.ts.map +1 -1
  18. package/dist/src/commands/status.js +6 -1
  19. package/dist/src/commands/status.js.map +1 -1
  20. package/dist/src/commands/submit.d.ts +11 -0
  21. package/dist/src/commands/submit.d.ts.map +1 -0
  22. package/dist/src/commands/submit.js +28 -0
  23. package/dist/src/commands/submit.js.map +1 -0
  24. package/dist/src/commands/warp.d.ts +5 -0
  25. package/dist/src/commands/warp.d.ts.map +1 -1
  26. package/dist/src/commands/warp.js +41 -3
  27. package/dist/src/commands/warp.js.map +1 -1
  28. package/dist/src/config/agent.d.ts +1 -1
  29. package/dist/src/config/agent.d.ts.map +1 -1
  30. package/dist/src/config/agent.js +59 -17
  31. package/dist/src/config/agent.js.map +1 -1
  32. package/dist/src/config/chain.d.ts.map +1 -1
  33. package/dist/src/config/chain.js +42 -4
  34. package/dist/src/config/chain.js.map +1 -1
  35. package/dist/src/config/hooks.d.ts +133 -133
  36. package/dist/src/config/prompts.d.ts +2 -0
  37. package/dist/src/config/prompts.d.ts.map +1 -0
  38. package/dist/src/config/prompts.js +9 -0
  39. package/dist/src/config/prompts.js.map +1 -0
  40. package/dist/src/config/submit.d.ts +7 -0
  41. package/dist/src/config/submit.d.ts.map +1 -0
  42. package/dist/src/config/submit.js +33 -0
  43. package/dist/src/config/submit.js.map +1 -0
  44. package/dist/src/config/warp.js +1 -1
  45. package/dist/src/config/warp.js.map +1 -1
  46. package/dist/src/consts.js +1 -1
  47. package/dist/src/consts.js.map +1 -1
  48. package/dist/src/context/context.d.ts +4 -3
  49. package/dist/src/context/context.d.ts.map +1 -1
  50. package/dist/src/context/context.js +51 -5
  51. package/dist/src/context/context.js.map +1 -1
  52. package/dist/src/context/types.d.ts +3 -1
  53. package/dist/src/context/types.d.ts.map +1 -1
  54. package/dist/src/deploy/core.d.ts.map +1 -1
  55. package/dist/src/deploy/core.js +11 -4
  56. package/dist/src/deploy/core.js.map +1 -1
  57. package/dist/src/deploy/utils.d.ts.map +1 -1
  58. package/dist/src/deploy/utils.js +2 -4
  59. package/dist/src/deploy/utils.js.map +1 -1
  60. package/dist/src/deploy/warp.d.ts +10 -0
  61. package/dist/src/deploy/warp.d.ts.map +1 -1
  62. package/dist/src/deploy/warp.js +300 -58
  63. package/dist/src/deploy/warp.js.map +1 -1
  64. package/dist/src/send/message.d.ts.map +1 -1
  65. package/dist/src/send/message.js +3 -2
  66. package/dist/src/send/message.js.map +1 -1
  67. package/dist/src/send/transfer.d.ts.map +1 -1
  68. package/dist/src/send/transfer.js +12 -6
  69. package/dist/src/send/transfer.js.map +1 -1
  70. package/dist/src/status/message.d.ts +2 -1
  71. package/dist/src/status/message.d.ts.map +1 -1
  72. package/dist/src/status/message.js +35 -17
  73. package/dist/src/status/message.js.map +1 -1
  74. package/dist/src/submit/submit.d.ts +1 -1
  75. package/dist/src/submit/submit.d.ts.map +1 -1
  76. package/dist/src/submit/submit.js +16 -10
  77. package/dist/src/submit/submit.js.map +1 -1
  78. package/dist/src/submit/types.d.ts +5 -16
  79. package/dist/src/submit/types.d.ts.map +1 -1
  80. package/dist/src/utils/balances.d.ts +1 -2
  81. package/dist/src/utils/balances.d.ts.map +1 -1
  82. package/dist/src/utils/balances.js +23 -24
  83. package/dist/src/utils/balances.js.map +1 -1
  84. package/dist/src/utils/files.d.ts.map +1 -1
  85. package/dist/src/utils/files.js +1 -1
  86. package/dist/src/utils/files.js.map +1 -1
  87. package/dist/src/version.d.ts +1 -1
  88. package/dist/src/version.d.ts.map +1 -1
  89. package/dist/src/version.js +1 -1
  90. package/dist/src/version.js.map +1 -1
  91. package/examples/submit/strategy/gnosis-ica-strategy.yaml +11 -0
  92. package/examples/submit/strategy/gnosis-strategy.yaml +5 -0
  93. package/examples/submit/strategy/impersonated-account-strategy.yaml +4 -0
  94. package/examples/submit/strategy/json-rpc-strategy.yaml +3 -0
  95. package/examples/submit/transactions/alfajores-transactions.json +8 -0
  96. package/examples/submit/transactions/avalanche-transactions.json +8 -0
  97. package/package.json +4 -4
@@ -1,14 +1,16 @@
1
1
  import { confirm } from '@inquirer/prompts';
2
2
  import { stringify as yamlStringify } from 'yaml';
3
- import { EvmIsmModule, HypERC20Deployer, HypERC721Deployer, HyperlaneProxyFactoryDeployer, TOKEN_TYPE_TO_STANDARD, TokenType, getTokenConnectionId, isTokenMetadata, serializeContracts, } from '@hyperlane-xyz/sdk';
4
- import { ProtocolType, objMap, promiseObjAll } from '@hyperlane-xyz/utils';
3
+ import { buildArtifact as coreBuildArtifact } from '@hyperlane-xyz/core/buildArtifact.js';
4
+ import { ContractVerifier, EvmERC20WarpModule, EvmERC20WarpRouteReader, EvmIsmModule, ExplorerLicenseType, HypERC20Deployer, HypERC721Deployer, HyperlaneProxyFactoryDeployer, IsmType, TOKEN_TYPE_TO_STANDARD, WarpCoreConfigSchema, WarpRouteDeployConfigSchema, attachContractsMap, connectContractsMap, getTokenConnectionId, hypERC20factories, isCollateralConfig, isTokenMetadata, serializeContracts, } from '@hyperlane-xyz/sdk';
5
+ import { ProtocolType, assert, objFilter, objKeys, objMap, promiseObjAll, } from '@hyperlane-xyz/utils';
5
6
  import { readWarpRouteDeployConfig } from '../config/warp.js';
6
7
  import { MINIMUM_WARP_DEPLOY_GAS } from '../consts.js';
7
- import { log, logBlue, logGray, logGreen, logTable } from '../logger.js';
8
+ import { getOrRequestApiKeys } from '../context/context.js';
9
+ import { log, logBlue, logGray, logGreen, logRed, logTable, } from '../logger.js';
8
10
  import { indentYamlOrJson, isFile, runFileSelectionStep, } from '../utils/files.js';
9
11
  import { completeDeploy, prepareDeploy, runPreflightChecksForChains, } from './utils.js';
10
12
  export async function runWarpRouteDeploy({ context, warpRouteDeploymentConfigPath, }) {
11
- const { signer, skipConfirmation } = context;
13
+ const { signer, skipConfirmation, chainMetadata } = context;
12
14
  if (!warpRouteDeploymentConfigPath ||
13
15
  !isFile(warpRouteDeploymentConfigPath)) {
14
16
  if (skipConfirmation)
@@ -19,13 +21,15 @@ export async function runWarpRouteDeploy({ context, warpRouteDeploymentConfigPat
19
21
  log(`Using warp route deployment config at ${warpRouteDeploymentConfigPath}`);
20
22
  }
21
23
  const warpRouteConfig = await readWarpRouteDeployConfig(warpRouteDeploymentConfigPath, context);
24
+ const chains = Object.keys(warpRouteConfig);
25
+ let apiKeys = {};
26
+ if (!skipConfirmation)
27
+ apiKeys = await getOrRequestApiKeys(chains, chainMetadata);
22
28
  const deploymentParams = {
23
29
  context,
24
- configMap: warpRouteConfig,
30
+ warpDeployConfig: warpRouteConfig,
25
31
  };
26
- logBlue('Warp route deployment plan');
27
32
  await runDeployPlanStep(deploymentParams);
28
- const chains = Object.keys(warpRouteConfig);
29
33
  await runPreflightChecksForChains({
30
34
  context,
31
35
  chains,
@@ -33,16 +37,15 @@ export async function runWarpRouteDeploy({ context, warpRouteDeploymentConfigPat
33
37
  });
34
38
  const userAddress = await signer.getAddress();
35
39
  const initialBalances = await prepareDeploy(context, userAddress, chains);
36
- await executeDeploy(deploymentParams);
40
+ const deployedContracts = await executeDeploy(deploymentParams, apiKeys);
41
+ const warpCoreConfig = await getWarpCoreConfig(deploymentParams, deployedContracts);
42
+ await writeDeploymentArtifacts(warpCoreConfig, context);
37
43
  await completeDeploy(context, 'warp', initialBalances, userAddress, chains);
38
44
  }
39
- async function runDeployPlanStep({ context, configMap }) {
45
+ async function runDeployPlanStep({ context, warpDeployConfig }) {
40
46
  const { skipConfirmation } = context;
41
- logBlue('\nDeployment plan');
42
- logGray('===============');
43
- log(`Using token standard ${configMap.isNft ? 'ERC721' : 'ERC20'}`);
44
- logTable(configMap);
45
- if (skipConfirmation)
47
+ displayWarpDeployPlan(warpDeployConfig);
48
+ if (skipConfirmation || context.isDryRun)
46
49
  return;
47
50
  const isConfirmed = await confirm({
48
51
  message: 'Is this deployment plan correct?',
@@ -50,53 +53,55 @@ async function runDeployPlanStep({ context, configMap }) {
50
53
  if (!isConfirmed)
51
54
  throw new Error('Deployment cancelled');
52
55
  }
53
- async function executeDeploy(params) {
54
- logBlue('All systems ready, captain! Beginning deployment...');
55
- const { configMap, context: { registry, multiProvider, isDryRun, dryRunChain }, } = params;
56
- const deployer = configMap.isNft
56
+ async function executeDeploy(params, apiKeys) {
57
+ logBlue('🚀 All systems ready, captain! Beginning deployment...');
58
+ const { warpDeployConfig, context: { registry, multiProvider, isDryRun, dryRunChain }, } = params;
59
+ const deployer = warpDeployConfig.isNft
57
60
  ? new HypERC721Deployer(multiProvider)
58
- : new HypERC20Deployer(multiProvider);
61
+ : new HypERC20Deployer(multiProvider); // TODO: replace with EvmERC20WarpModule
59
62
  const config = isDryRun && dryRunChain
60
- ? { [dryRunChain]: configMap[dryRunChain] }
61
- : configMap;
62
- const ismFactoryDeployer = new HyperlaneProxyFactoryDeployer(multiProvider);
63
+ ? { [dryRunChain]: warpDeployConfig[dryRunChain] }
64
+ : warpDeployConfig;
65
+ const contractVerifier = new ContractVerifier(multiProvider, apiKeys, coreBuildArtifact, ExplorerLicenseType.MIT);
66
+ const ismFactoryDeployer = new HyperlaneProxyFactoryDeployer(multiProvider, contractVerifier);
63
67
  // For each chain in WarpRouteConfig, deploy each Ism Factory, if it's not in the registry
64
68
  // Then return a modified config with the ism address as a string
65
- const modifiedConfig = await deployAndResolveWarpIsm(config, multiProvider, registry, ismFactoryDeployer);
69
+ const modifiedConfig = await deployAndResolveWarpIsm(config, multiProvider, registry, ismFactoryDeployer, contractVerifier);
66
70
  const deployedContracts = await deployer.deploy(modifiedConfig);
67
- const warpCoreConfig = await getWarpCoreConfig(params, deployedContracts);
68
71
  logGreen('✅ Warp contract deployments complete');
69
- if (!isDryRun) {
72
+ return deployedContracts;
73
+ }
74
+ async function writeDeploymentArtifacts(warpCoreConfig, context) {
75
+ if (!context.isDryRun) {
70
76
  log('Writing deployment artifacts...');
71
- await registry.addWarpRoute(warpCoreConfig);
77
+ await context.registry.addWarpRoute(warpCoreConfig);
72
78
  }
73
79
  log(indentYamlOrJson(yamlStringify(warpCoreConfig, null, 2), 4));
74
80
  }
75
- async function deployAndResolveWarpIsm(warpConfig, multiProvider, registry, ismFactoryDeployer) {
81
+ async function deployAndResolveWarpIsm(warpConfig, multiProvider, registry, ismFactoryDeployer, contractVerifier) {
76
82
  return promiseObjAll(objMap(warpConfig, async (chain, config) => {
77
- // Skip deployment if Ism is empty, or a string
78
83
  if (!config.interchainSecurityModule ||
79
84
  typeof config.interchainSecurityModule === 'string') {
80
85
  logGray(`Config Ism is ${!config.interchainSecurityModule
81
86
  ? 'empty'
82
- : config.interchainSecurityModule}, skipping deployment`);
87
+ : config.interchainSecurityModule}, skipping deployment.`);
83
88
  return config;
84
89
  }
85
- logBlue('Loading Registry factory addresses');
86
- let chainAddresses = await registry.getChainAddresses(chain); // Can includes other addresses
90
+ logBlue(`Loading registry factory addresses for ${chain}...`);
91
+ let chainAddresses = await registry.getChainAddresses(chain);
87
92
  if (!chainAddresses) {
88
- logGray('Registry factory addresses not found, deploying');
93
+ logGray(`Registry factory addresses not found for ${chain}. Deploying...`);
89
94
  chainAddresses = serializeContracts(await ismFactoryDeployer.deployContracts(chain));
90
95
  }
91
- logGray(`Creating ${config.interchainSecurityModule.type} Ism for ${config.type} token on ${chain} chain`);
96
+ logGray(`Creating ${config.interchainSecurityModule.type} ISM for ${config.type} token on ${chain} chain...`);
92
97
  const deployedIsm = await createWarpIsm(chain, warpConfig, multiProvider, {
93
98
  domainRoutingIsmFactory: chainAddresses.domainRoutingIsmFactory,
94
99
  staticAggregationHookFactory: chainAddresses.staticAggregationHookFactory,
95
100
  staticAggregationIsmFactory: chainAddresses.staticAggregationIsmFactory,
96
101
  staticMerkleRootMultisigIsmFactory: chainAddresses.staticMerkleRootMultisigIsmFactory,
97
102
  staticMessageIdMultisigIsmFactory: chainAddresses.staticMessageIdMultisigIsmFactory,
98
- });
99
- logGreen(`Finished creating ${config.interchainSecurityModule.type} Ism for ${config.type} token on ${chain} chain`);
103
+ }, contractVerifier);
104
+ logGreen(`Finished creating ${config.interchainSecurityModule.type} ISM for ${config.type} token on ${chain} chain.`);
100
105
  return { ...warpConfig[chain], interchainSecurityModule: deployedIsm };
101
106
  }));
102
107
  }
@@ -105,7 +110,7 @@ async function deployAndResolveWarpIsm(warpConfig, multiProvider, registry, ismF
105
110
  *
106
111
  * @returns The deployed ism address
107
112
  */
108
- async function createWarpIsm(chain, warpConfig, multiProvider, factoryAddresses) {
113
+ async function createWarpIsm(chain, warpConfig, multiProvider, factoryAddresses, contractVerifier) {
109
114
  const { domainRoutingIsmFactory, staticAggregationHookFactory, staticAggregationIsmFactory, staticMerkleRootMultisigIsmFactory, staticMessageIdMultisigIsmFactory, } = factoryAddresses;
110
115
  const evmIsmModule = await EvmIsmModule.create({
111
116
  chain,
@@ -119,41 +124,50 @@ async function createWarpIsm(chain, warpConfig, multiProvider, factoryAddresses)
119
124
  staticMessageIdMultisigIsmFactory,
120
125
  },
121
126
  config: warpConfig[chain].interchainSecurityModule,
127
+ contractVerifier,
122
128
  });
123
129
  const { deployedIsm } = evmIsmModule.serialize();
124
130
  return deployedIsm;
125
131
  }
126
- async function getWarpCoreConfig({ configMap, context }, contracts) {
132
+ async function getWarpCoreConfig({ warpDeployConfig, context }, contracts) {
127
133
  const warpCoreConfig = { tokens: [] };
128
134
  // TODO: replace with warp read
129
- const tokenMetadata = await HypERC20Deployer.deriveTokenMetadata(context.multiProvider, configMap);
130
- // First pass, create token configs
135
+ const tokenMetadata = await HypERC20Deployer.deriveTokenMetadata(context.multiProvider, warpDeployConfig);
136
+ assert(tokenMetadata && isTokenMetadata(tokenMetadata), 'Missing required token metadata');
137
+ const { decimals, symbol, name } = tokenMetadata;
138
+ assert(decimals, 'Missing decimals on token metadata');
139
+ generateTokenConfigs(warpCoreConfig, warpDeployConfig, contracts, symbol, name, decimals);
140
+ fullyConnectTokens(warpCoreConfig);
141
+ return warpCoreConfig;
142
+ }
143
+ /**
144
+ * Creates token configs.
145
+ */
146
+ function generateTokenConfigs(warpCoreConfig, warpDeployConfig, contracts, symbol, name, decimals) {
131
147
  for (const [chainName, contract] of Object.entries(contracts)) {
132
- const config = configMap[chainName];
133
- const metadata = {
134
- ...tokenMetadata,
135
- ...config,
136
- };
137
- if (!isTokenMetadata(metadata)) {
138
- throw new Error('Missing required token metadata');
139
- }
140
- const { decimals } = metadata;
141
- if (!decimals) {
142
- throw new Error('Missing decimals on token metadata');
143
- }
144
- const collateralAddressOrDenom = config.type === TokenType.collateral ? config.token : undefined;
148
+ const config = warpDeployConfig[chainName];
149
+ const collateralAddressOrDenom = isCollateralConfig(config)
150
+ ? config.token // gets set in the above deriveTokenMetadata()
151
+ : undefined;
145
152
  warpCoreConfig.tokens.push({
146
153
  chainName,
147
154
  standard: TOKEN_TYPE_TO_STANDARD[config.type],
148
- ...metadata,
149
155
  decimals,
150
- addressOrDenom: contract[configMap[chainName].type].address,
156
+ symbol,
157
+ name,
158
+ addressOrDenom: contract[warpDeployConfig[chainName].type]
159
+ .address,
151
160
  collateralAddressOrDenom,
152
161
  });
153
162
  }
154
- // Second pass, add connections between tokens
155
- // Assumes full interconnectivity between all tokens for now b.c. that's
156
- // what the deployers do by default.
163
+ }
164
+ /**
165
+ * Adds connections between tokens.
166
+ *
167
+ * Assumes full interconnectivity between all tokens for now b.c. that's
168
+ * what the deployers do by default.
169
+ */
170
+ function fullyConnectTokens(warpCoreConfig) {
157
171
  for (const token1 of warpCoreConfig.tokens) {
158
172
  for (const token2 of warpCoreConfig.tokens) {
159
173
  if (token1.chainName === token2.chainName &&
@@ -165,6 +179,234 @@ async function getWarpCoreConfig({ configMap, context }, contracts) {
165
179
  });
166
180
  }
167
181
  }
168
- return warpCoreConfig;
182
+ }
183
+ export async function runWarpRouteApply(params) {
184
+ const { warpDeployConfig, warpCoreConfig, context } = params;
185
+ const { registry, multiProvider, chainMetadata, skipConfirmation } = context;
186
+ WarpRouteDeployConfigSchema.parse(warpDeployConfig);
187
+ WarpCoreConfigSchema.parse(warpCoreConfig);
188
+ const addresses = await registry.getAddresses();
189
+ const warpCoreConfigByChain = Object.fromEntries(warpCoreConfig.tokens.map((token) => [
190
+ token.chainName,
191
+ token,
192
+ ]) /* Necessary for O(1) reads below */);
193
+ const chains = Object.keys(warpDeployConfig);
194
+ let apiKeys = {};
195
+ if (!skipConfirmation)
196
+ apiKeys = await getOrRequestApiKeys(chains, chainMetadata);
197
+ const contractVerifier = new ContractVerifier(multiProvider, apiKeys, coreBuildArtifact, ExplorerLicenseType.MIT);
198
+ const warpDeployChains = Object.keys(warpDeployConfig);
199
+ const warpCoreChains = Object.keys(warpCoreConfigByChain);
200
+ if (warpDeployChains.length === warpCoreChains.length) {
201
+ logGray('Updating deployed Warp Routes');
202
+ await promiseObjAll(objMap(warpDeployConfig, async (chain, config) => {
203
+ try {
204
+ config.ismFactoryAddresses = addresses[chain];
205
+ const evmERC20WarpModule = new EvmERC20WarpModule(multiProvider, {
206
+ config,
207
+ chain,
208
+ addresses: {
209
+ deployedTokenRoute: warpCoreConfigByChain[chain].addressOrDenom,
210
+ },
211
+ }, contractVerifier);
212
+ const transactions = await evmERC20WarpModule.update(config);
213
+ if (transactions.length) {
214
+ for (const transaction of transactions) {
215
+ await multiProvider.sendTransaction(chain, transaction);
216
+ }
217
+ logGreen(`Warp config updated on ${chain}.`);
218
+ }
219
+ else {
220
+ logGreen(`Warp config on ${chain} is the same as target. No updates needed.`);
221
+ }
222
+ }
223
+ catch (e) {
224
+ logRed(`Warp config on ${chain} failed to update.`, e);
225
+ }
226
+ }));
227
+ }
228
+ else if (warpDeployChains.length > warpCoreChains.length) {
229
+ logGray('Extending deployed Warp configs');
230
+ // Split between the existing and additional config
231
+ const existingConfigs = objFilter(warpDeployConfig, (chain, _config) => warpCoreChains.includes(chain));
232
+ let extendedConfigs = objFilter(warpDeployConfig, (chain, _config) => !warpCoreChains.includes(chain));
233
+ const existingTokenMetadata = await HypERC20Deployer.deriveTokenMetadata(multiProvider, existingConfigs);
234
+ extendedConfigs = objMap(extendedConfigs, (_chain, extendedConfig) => {
235
+ return {
236
+ ...extendedConfig,
237
+ ...existingTokenMetadata,
238
+ };
239
+ });
240
+ const newExtensionContracts = await executeDeploy({
241
+ // TODO: use EvmERC20WarpModule when it's ready
242
+ context,
243
+ warpDeployConfig: extendedConfigs,
244
+ }, apiKeys);
245
+ const existingContractAddresses = objMap(existingConfigs, (chain, config) => ({
246
+ [config.type]: warpCoreConfigByChain[chain].addressOrDenom,
247
+ }));
248
+ const mergedRouters = {
249
+ ...connectContractsMap(attachContractsMap(existingContractAddresses, hypERC20factories), multiProvider),
250
+ ...newExtensionContracts,
251
+ };
252
+ await enrollRemoteRouters(mergedRouters, multiProvider);
253
+ const updatedWarpCoreConfig = await getWarpCoreConfig(params, mergedRouters);
254
+ WarpCoreConfigSchema.parse(updatedWarpCoreConfig);
255
+ await writeDeploymentArtifacts(updatedWarpCoreConfig, context);
256
+ }
257
+ else {
258
+ throw new Error('Unenrolling warp routes is currently not supported');
259
+ }
260
+ }
261
+ /**
262
+ * Enroll all deployed routers with each other.
263
+ *
264
+ * @param deployedContractsMap - A map of deployed Hyperlane contracts by chain.
265
+ * @param multiProvider - A MultiProvider instance to interact with multiple chains.
266
+ */
267
+ async function enrollRemoteRouters(deployedContractsMap, multiProvider) {
268
+ logBlue(`Enrolling deployed routers with each other (if not already)...`);
269
+ const deployedRouters = objMap(deployedContractsMap, (_, contracts) => getRouter(contracts).address);
270
+ const allChains = Object.keys(deployedRouters);
271
+ await promiseObjAll(objMap(deployedContractsMap, async (chain, contracts) => {
272
+ const router = getRouter(contracts); // Assume deployedContract always has 1 value
273
+ // Mutate the config.remoteRouters by setting it to all other routers to update
274
+ const warpRouteReader = new EvmERC20WarpRouteReader(multiProvider, chain);
275
+ const mutatedWarpRouteConfig = await warpRouteReader.deriveWarpRouteConfig(router.address);
276
+ const evmERC20WarpModule = new EvmERC20WarpModule(multiProvider, {
277
+ config: mutatedWarpRouteConfig,
278
+ chain,
279
+ addresses: { deployedTokenRoute: router.address },
280
+ });
281
+ const otherChains = multiProvider
282
+ .getRemoteChains(chain)
283
+ .filter((c) => allChains.includes(c));
284
+ mutatedWarpRouteConfig.remoteRouters = otherChains.reduce((remoteRouters, chain) => {
285
+ remoteRouters[multiProvider.getDomainId(chain)] =
286
+ deployedRouters[chain];
287
+ return remoteRouters;
288
+ }, {});
289
+ const mutatedConfigTxs = await evmERC20WarpModule.update(mutatedWarpRouteConfig);
290
+ for (const transaction of mutatedConfigTxs) {
291
+ const receipt = await multiProvider.sendTransaction(chain, transaction);
292
+ logGreen(`Successfully enrolled routers on ${chain}: ${receipt.transactionHash}`);
293
+ }
294
+ }));
295
+ }
296
+ function getRouter(contracts) {
297
+ for (const key of objKeys(hypERC20factories)) {
298
+ if (contracts[key])
299
+ return contracts[key];
300
+ }
301
+ throw new Error('No matching contract found.');
302
+ }
303
+ function displayWarpDeployPlan(deployConfig) {
304
+ logBlue('\nWarp Route Deployment Plan');
305
+ logGray('==========================');
306
+ log(`📋 Token Standard: ${deployConfig.isNft ? 'ERC721' : 'ERC20'}`);
307
+ const { transformedDeployConfig, transformedIsmConfigs } = transformDeployConfigForDisplay(deployConfig);
308
+ log('📋 Warp Route Config:');
309
+ logTable(transformedDeployConfig);
310
+ objMap(transformedIsmConfigs, (chain, ismConfigs) => {
311
+ log(`📋 ${chain} ISM Config(s):`);
312
+ ismConfigs.forEach((ismConfig) => {
313
+ logTable(ismConfig);
314
+ });
315
+ });
316
+ }
317
+ function transformDeployConfigForDisplay(deployConfig) {
318
+ const transformedIsmConfigs = {};
319
+ const transformedDeployConfig = objMap(deployConfig, (chain, config) => {
320
+ if (config.interchainSecurityModule)
321
+ transformedIsmConfigs[chain] = transformIsmConfigForDisplay(config.interchainSecurityModule);
322
+ return {
323
+ 'NFT?': config.isNft ?? false,
324
+ Type: config.type,
325
+ Owner: config.owner,
326
+ Mailbox: config.mailbox,
327
+ 'ISM Config(s)': config.interchainSecurityModule
328
+ ? 'See table(s) below.'
329
+ : 'No ISM config(s) specified.',
330
+ };
331
+ });
332
+ return {
333
+ transformedDeployConfig,
334
+ transformedIsmConfigs,
335
+ };
336
+ }
337
+ function transformIsmConfigForDisplay(ismConfig) {
338
+ const ismConfigs = [];
339
+ switch (ismConfig.type) {
340
+ case IsmType.AGGREGATION:
341
+ ismConfigs.push({
342
+ Type: ismConfig.type,
343
+ Threshold: ismConfig.threshold,
344
+ Modules: 'See table(s) below.',
345
+ });
346
+ ismConfig.modules.forEach((module) => {
347
+ ismConfigs.push(...transformIsmConfigForDisplay(module));
348
+ });
349
+ return ismConfigs;
350
+ case IsmType.ROUTING:
351
+ return [
352
+ {
353
+ Type: ismConfig.type,
354
+ Owner: ismConfig.owner,
355
+ 'Owner Overrides': ismConfig.ownerOverrides ?? 'Undefined',
356
+ Domains: 'See warp config for domain specification.',
357
+ },
358
+ ];
359
+ case IsmType.FALLBACK_ROUTING:
360
+ return [
361
+ {
362
+ Type: ismConfig.type,
363
+ Owner: ismConfig.owner,
364
+ 'Owner Overrides': ismConfig.ownerOverrides ?? 'Undefined',
365
+ Domains: 'See warp config for domain specification.',
366
+ },
367
+ ];
368
+ case IsmType.MERKLE_ROOT_MULTISIG:
369
+ return [
370
+ {
371
+ Type: ismConfig.type,
372
+ Validators: ismConfig.validators,
373
+ Threshold: ismConfig.threshold,
374
+ },
375
+ ];
376
+ case IsmType.MESSAGE_ID_MULTISIG:
377
+ return [
378
+ {
379
+ Type: ismConfig.type,
380
+ Validators: ismConfig.validators,
381
+ Threshold: ismConfig.threshold,
382
+ },
383
+ ];
384
+ case IsmType.OP_STACK:
385
+ return [
386
+ {
387
+ Type: ismConfig.type,
388
+ Origin: ismConfig.origin,
389
+ 'Native Bridge': ismConfig.nativeBridge,
390
+ },
391
+ ];
392
+ case IsmType.PAUSABLE:
393
+ return [
394
+ {
395
+ Type: ismConfig.type,
396
+ Owner: ismConfig.owner,
397
+ 'Paused ?': ismConfig.paused,
398
+ 'Owner Overrides': ismConfig.ownerOverrides ?? 'Undefined',
399
+ },
400
+ ];
401
+ case IsmType.TRUSTED_RELAYER:
402
+ return [
403
+ {
404
+ Type: ismConfig.type,
405
+ Relayer: ismConfig.relayer,
406
+ },
407
+ ];
408
+ default:
409
+ return [ismConfig];
410
+ }
169
411
  }
170
412
  //# sourceMappingURL=warp.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"warp.js","sourceRoot":"","sources":["../../../src/deploy/warp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"warp.js","sourceRoot":"","sources":["../../../src/deploy/warp.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/send/message.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAiB,MAAM,oBAAoB,CAAC;AAI9D,OAAO,EAAkB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAM1E,wBAAsB,eAAe,CAAC,EACpC,OAAO,EACP,MAAM,EACN,WAAW,EACX,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,SAAS,GACV,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,iBAoCA"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/send/message.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAmC,MAAM,oBAAoB,CAAC;AAIhF,OAAO,EAAkB,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAM1E,wBAAsB,eAAe,CAAC,EACpC,OAAO,EACP,MAAM,EACN,WAAW,EACX,WAAW,EACX,UAAU,EACV,mBAAmB,EACnB,SAAS,GACV,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,WAAW,EAAE,MAAM,CAAC;IACpB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,iBAoCA"}
@@ -1,5 +1,5 @@
1
1
  import { stringify as yamlStringify } from 'yaml';
2
- import { HyperlaneCore } from '@hyperlane-xyz/sdk';
2
+ import { HyperlaneCore, HyperlaneRelayer } from '@hyperlane-xyz/sdk';
3
3
  import { addressToBytes32, timeout } from '@hyperlane-xyz/utils';
4
4
  import { MINIMUM_TEST_SEND_GAS } from '../consts.js';
5
5
  import { runPreflightChecksForChains } from '../deploy/utils.js';
@@ -49,8 +49,9 @@ async function executeDelivery({ context, origin, destination, messageBody, skip
49
49
  logBlue(`Message ID: ${message.id}`);
50
50
  log(`Message:\n${indentYamlOrJson(yamlStringify(message, null, 2), 4)}`);
51
51
  if (selfRelay) {
52
+ const relayer = new HyperlaneRelayer({ core });
52
53
  log('Attempting self-relay of message');
53
- await core.relayMessage(message, dispatchTx);
54
+ await relayer.relayMessage(dispatchTx);
54
55
  logGreen('Message was self-relayed!');
55
56
  }
56
57
  else {
@@ -1 +1 @@
1
- {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/send/message.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/send/message.ts"],"names":[],"mappings":"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"}
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../src/send/transfer.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,SAAS,EAOT,cAAc,EACf,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAM1D,wBAAsB,gBAAgB,CAAC,EACrC,OAAO,EACP,cAAc,EACd,MAAM,EACN,WAAW,EACX,MAAM,EACN,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,SAAS,GACV,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,iBAsCA"}
1
+ {"version":3,"file":"transfer.d.ts","sourceRoot":"","sources":["../../../src/send/transfer.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,SAAS,EAST,cAAc,EACf,MAAM,oBAAoB,CAAC;AAI5B,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAO1D,wBAAsB,gBAAgB,CAAC,EACrC,OAAO,EACP,cAAc,EACd,MAAM,EACN,WAAW,EACX,MAAM,EACN,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,SAAS,GACV,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,cAAc,EAAE,cAAc,CAAC;IAC/B,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,UAAU,EAAE,MAAM,CAAC;IACnB,mBAAmB,EAAE,OAAO,CAAC;IAC7B,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,iBAsCA"}
@@ -1,9 +1,11 @@
1
- import { HyperlaneCore, MultiProtocolProvider, ProviderType, TokenAmount, WarpCore, } from '@hyperlane-xyz/sdk';
1
+ import { stringify as yamlStringify } from 'yaml';
2
+ import { HyperlaneCore, HyperlaneRelayer, MultiProtocolProvider, ProviderType, TokenAmount, WarpCore, } from '@hyperlane-xyz/sdk';
2
3
  import { timeout } from '@hyperlane-xyz/utils';
3
4
  import { MINIMUM_TEST_SEND_GAS } from '../consts.js';
4
5
  import { runPreflightChecksForChains } from '../deploy/utils.js';
5
- import { logBlue, logGreen, logRed } from '../logger.js';
6
+ import { log, logBlue, logGreen, logRed } from '../logger.js';
6
7
  import { runSingleChainSelectionStep } from '../utils/chains.js';
8
+ import { indentYamlOrJson } from '../utils/files.js';
7
9
  import { runTokenSelectionStep } from '../utils/tokens.js';
8
10
  export async function sendTestTransfer({ context, warpCoreConfig, origin, destination, amount, recipient, timeoutSec, skipWaitForDelivery, selfRelay, }) {
9
11
  const { chainMetadata } = context;
@@ -79,12 +81,16 @@ async function executeDelivery({ context, origin, destination, warpCoreConfig, a
79
81
  }
80
82
  }
81
83
  const transferTxReceipt = txReceipts[txReceipts.length - 1];
82
- const message = core.getDispatchedMessages(transferTxReceipt)[0];
83
- logBlue(`Sent message from ${origin} to ${recipient} on ${destination}.`);
84
+ const messageIndex = 0;
85
+ const message = HyperlaneCore.getDispatchedMessages(transferTxReceipt)[messageIndex];
86
+ logBlue(`Sent transfer from sender (${senderAddress}) on ${origin} to recipient (${recipient}) on ${destination}.`);
84
87
  logBlue(`Message ID: ${message.id}`);
88
+ log(`Message:\n${indentYamlOrJson(yamlStringify(message, null, 2), 4)}`);
85
89
  if (selfRelay) {
86
- await core.relayMessage(message, transferTxReceipt);
87
- logGreen('Message was self-relayed!');
90
+ const relayer = new HyperlaneRelayer({ core });
91
+ log('Attempting self-relay of transfer...');
92
+ await relayer.relayMessage(transferTxReceipt, messageIndex, message);
93
+ logGreen('Transfer was self-relayed!');
88
94
  return;
89
95
  }
90
96
  if (skipWaitForDelivery)
@@ -1 +1 @@
1
- {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../../src/send/transfer.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"transfer.js","sourceRoot":"","sources":["../../../src/send/transfer.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,8 @@
1
1
  import { ChainName } from '@hyperlane-xyz/sdk';
2
2
  import { CommandContext } from '../context/types.js';
3
- export declare function checkMessageStatus({ context, messageId, destination, origin, selfRelay, }: {
3
+ export declare function checkMessageStatus({ context, messageId, destination, origin, selfRelay, dispatchTx, }: {
4
4
  context: CommandContext;
5
+ dispatchTx?: string;
5
6
  messageId?: string;
6
7
  destination?: ChainName;
7
8
  origin?: ChainName;
@@ -1 +1 @@
1
- {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/status/message.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAiB,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,wBAAsB,kBAAkB,CAAC,EACvC,OAAO,EACP,SAAS,EACT,WAAW,EACX,MAAM,EACN,SAAS,GACV,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,iBA0CA"}
1
+ {"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/status/message.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAmC,MAAM,oBAAoB,CAAC;AAGhF,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,wBAAsB,kBAAkB,CAAC,EACvC,OAAO,EACP,SAAS,EACT,WAAW,EACX,MAAM,EACN,SAAS,EACT,UAAU,GACX,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,UAAU,CAAC,EAAE,MAAM,CAAC;IACpB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,iBAiEA"}