@hyperlane-xyz/cli 3.1.10 → 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 (219) 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 -4
  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 -68
  57. package/dist/src/config/chain.js.map +1 -1
  58. package/dist/src/config/chain.test.js +1 -5
  59. package/dist/src/config/chain.test.js.map +1 -1
  60. package/dist/src/config/hooks.d.ts +91 -214
  61. package/dist/src/config/hooks.d.ts.map +1 -1
  62. package/dist/src/config/hooks.js +218 -122
  63. package/dist/src/config/hooks.js.map +1 -1
  64. package/dist/src/config/ism.d.ts +74 -0
  65. package/dist/src/config/ism.d.ts.map +1 -0
  66. package/dist/src/config/ism.js +223 -0
  67. package/dist/src/config/ism.js.map +1 -0
  68. package/dist/src/config/multisig.d.ts +4 -14
  69. package/dist/src/config/multisig.d.ts.map +1 -1
  70. package/dist/src/config/multisig.js +35 -29
  71. package/dist/src/config/multisig.js.map +1 -1
  72. package/dist/src/config/warp.d.ts +7 -180
  73. package/dist/src/config/warp.d.ts.map +1 -1
  74. package/dist/src/config/warp.js +55 -62
  75. package/dist/src/config/warp.js.map +1 -1
  76. package/dist/src/consts.d.ts +1 -0
  77. package/dist/src/consts.d.ts.map +1 -1
  78. package/dist/src/consts.js +1 -0
  79. package/dist/src/consts.js.map +1 -1
  80. package/dist/src/context/context.d.ts +14 -0
  81. package/dist/src/context/context.d.ts.map +1 -0
  82. package/dist/src/context/context.js +108 -0
  83. package/dist/src/context/context.js.map +1 -0
  84. package/dist/src/context/types.d.ts +33 -0
  85. package/dist/src/context/types.d.ts.map +1 -0
  86. package/dist/src/context/types.js.map +1 -0
  87. package/dist/src/deploy/agent.d.ts +6 -4
  88. package/dist/src/deploy/agent.d.ts.map +1 -1
  89. package/dist/src/deploy/agent.js +10 -24
  90. package/dist/src/deploy/agent.js.map +1 -1
  91. package/dist/src/deploy/core.d.ts +10 -7
  92. package/dist/src/deploy/core.d.ts.map +1 -1
  93. package/dist/src/deploy/core.js +156 -160
  94. package/dist/src/deploy/core.js.map +1 -1
  95. package/dist/src/deploy/dry-run.d.ts +19 -0
  96. package/dist/src/deploy/dry-run.d.ts.map +1 -0
  97. package/dist/src/deploy/dry-run.js +45 -0
  98. package/dist/src/deploy/dry-run.js.map +1 -0
  99. package/dist/src/deploy/utils.d.ts +15 -8
  100. package/dist/src/deploy/utils.d.ts.map +1 -1
  101. package/dist/src/deploy/utils.js +60 -11
  102. package/dist/src/deploy/utils.js.map +1 -1
  103. package/dist/src/deploy/warp.d.ts +4 -7
  104. package/dist/src/deploy/warp.d.ts.map +1 -1
  105. package/dist/src/deploy/warp.js +129 -169
  106. package/dist/src/deploy/warp.js.map +1 -1
  107. package/dist/src/hook/read.d.ts +13 -0
  108. package/dist/src/hook/read.d.ts.map +1 -0
  109. package/dist/src/hook/read.js +25 -0
  110. package/dist/src/hook/read.js.map +1 -0
  111. package/dist/src/ism/read.d.ts +13 -0
  112. package/dist/src/ism/read.d.ts.map +1 -0
  113. package/dist/src/ism/read.js +25 -0
  114. package/dist/src/ism/read.js.map +1 -0
  115. package/dist/src/logger.d.ts +17 -0
  116. package/dist/src/logger.d.ts.map +1 -0
  117. package/dist/src/logger.js +32 -0
  118. package/dist/src/logger.js.map +1 -0
  119. package/dist/src/registry/MergedRegistry.d.ts +35 -0
  120. package/dist/src/registry/MergedRegistry.d.ts.map +1 -0
  121. package/dist/src/registry/MergedRegistry.js +83 -0
  122. package/dist/src/registry/MergedRegistry.js.map +1 -0
  123. package/dist/src/send/message.d.ts +7 -6
  124. package/dist/src/send/message.d.ts.map +1 -1
  125. package/dist/src/send/message.js +40 -22
  126. package/dist/src/send/message.js.map +1 -1
  127. package/dist/src/send/transfer.d.ts +8 -10
  128. package/dist/src/send/transfer.d.ts.map +1 -1
  129. package/dist/src/send/transfer.js +68 -70
  130. package/dist/src/send/transfer.js.map +1 -1
  131. package/dist/src/status/message.d.ts +7 -5
  132. package/dist/src/status/message.d.ts.map +1 -1
  133. package/dist/src/status/message.js +25 -12
  134. package/dist/src/status/message.js.map +1 -1
  135. package/dist/src/submit/submit.d.ts +5 -0
  136. package/dist/src/submit/submit.d.ts.map +1 -0
  137. package/dist/src/submit/submit.js +30 -0
  138. package/dist/src/submit/submit.js.map +1 -0
  139. package/dist/src/submit/types.d.ts +18 -0
  140. package/dist/src/submit/types.d.ts.map +1 -0
  141. package/dist/src/submit/types.js +2 -0
  142. package/dist/src/{deploy → submit}/types.js.map +1 -1
  143. package/dist/src/tests/deployTestErc20.d.ts +2 -0
  144. package/dist/src/tests/deployTestErc20.d.ts.map +1 -0
  145. package/dist/src/tests/deployTestErc20.js +26 -0
  146. package/dist/src/tests/deployTestErc20.js.map +1 -0
  147. package/dist/src/tests/hooks.test.d.ts +2 -0
  148. package/dist/src/tests/hooks.test.d.ts.map +1 -0
  149. package/dist/src/tests/hooks.test.js +83 -0
  150. package/dist/src/tests/hooks.test.js.map +1 -0
  151. package/dist/src/tests/ism.test.d.ts +2 -0
  152. package/dist/src/tests/ism.test.d.ts.map +1 -0
  153. package/dist/src/tests/ism.test.js +76 -0
  154. package/dist/src/tests/ism.test.js.map +1 -0
  155. package/dist/src/tests/multisig.test.d.ts +2 -0
  156. package/dist/src/tests/multisig.test.d.ts.map +1 -0
  157. package/dist/src/tests/multisig.test.js +34 -0
  158. package/dist/src/tests/multisig.test.js.map +1 -0
  159. package/dist/src/utils/balances.d.ts +2 -4
  160. package/dist/src/utils/balances.d.ts.map +1 -1
  161. package/dist/src/utils/balances.js +8 -12
  162. package/dist/src/utils/balances.js.map +1 -1
  163. package/dist/src/utils/chains.d.ts +3 -2
  164. package/dist/src/utils/chains.d.ts.map +1 -1
  165. package/dist/src/utils/chains.js +33 -18
  166. package/dist/src/utils/chains.js.map +1 -1
  167. package/dist/src/utils/env.d.ts +6 -0
  168. package/dist/src/utils/env.d.ts.map +1 -0
  169. package/dist/src/utils/env.js +9 -0
  170. package/dist/src/utils/env.js.map +1 -0
  171. package/dist/src/utils/files.d.ts +6 -4
  172. package/dist/src/utils/files.d.ts.map +1 -1
  173. package/dist/src/utils/files.js +37 -25
  174. package/dist/src/utils/files.js.map +1 -1
  175. package/dist/src/utils/keys.d.ts +28 -1
  176. package/dist/src/utils/keys.d.ts.map +1 -1
  177. package/dist/src/utils/keys.js +65 -6
  178. package/dist/src/utils/keys.js.map +1 -1
  179. package/dist/src/utils/tokens.d.ts +3 -0
  180. package/dist/src/utils/tokens.d.ts.map +1 -0
  181. package/dist/src/utils/tokens.js +14 -0
  182. package/dist/src/utils/tokens.js.map +1 -0
  183. package/dist/src/utils/version-check.d.ts +2 -0
  184. package/dist/src/utils/version-check.d.ts.map +1 -0
  185. package/dist/src/utils/version-check.js +15 -0
  186. package/dist/src/utils/version-check.js.map +1 -0
  187. package/dist/src/version.d.ts +2 -0
  188. package/dist/src/version.d.ts.map +1 -0
  189. package/dist/src/version.js +2 -0
  190. package/dist/src/version.js.map +1 -0
  191. package/examples/chain-config.yaml +38 -46
  192. package/examples/contract-artifacts.yaml +4 -4
  193. package/examples/hooks.yaml +66 -0
  194. package/examples/ism-advanced.yaml +33 -0
  195. package/examples/{multisig-ism.yaml → ism.yaml} +0 -8
  196. package/examples/warp-route-deployment.yaml +32 -0
  197. package/package.json +20 -13
  198. package/dist/logger.d.ts +0 -14
  199. package/dist/logger.d.ts.map +0 -1
  200. package/dist/logger.js +0 -45
  201. package/dist/logger.js.map +0 -1
  202. package/dist/src/config/artifacts.d.ts +0 -3
  203. package/dist/src/config/artifacts.d.ts.map +0 -1
  204. package/dist/src/config/artifacts.js +0 -18
  205. package/dist/src/config/artifacts.js.map +0 -1
  206. package/dist/src/context.d.ts +0 -388
  207. package/dist/src/context.d.ts.map +0 -1
  208. package/dist/src/context.js +0 -30
  209. package/dist/src/context.js.map +0 -1
  210. package/dist/src/deploy/TestRecipientDeployer.d.ts +0 -20
  211. package/dist/src/deploy/TestRecipientDeployer.d.ts.map +0 -1
  212. package/dist/src/deploy/TestRecipientDeployer.js +0 -36
  213. package/dist/src/deploy/TestRecipientDeployer.js.map +0 -1
  214. package/dist/src/deploy/types.d.ts +0 -21
  215. package/dist/src/deploy/types.d.ts.map +0 -1
  216. package/examples/anvil-chains.yaml +0 -22
  217. package/examples/hook-config.yaml +0 -18
  218. package/examples/warp-tokens.yaml +0 -26
  219. /package/dist/src/{deploy → context}/types.js +0 -0
@@ -1,22 +1,30 @@
1
+ import { ethers } from 'ethers';
2
+ import { getLocalProvider, } from '@hyperlane-xyz/sdk';
1
3
  import { ProtocolType } from '@hyperlane-xyz/utils';
2
- import { log, logGreen } from '../../logger.js';
3
- import { assertGasBalances } from '../utils/balances.js';
4
+ import { parseIsmConfig } from '../config/ism.js';
5
+ import { log, logGreen, logPink } from '../logger.js';
6
+ import { gasBalancesAreSufficient } from '../utils/balances.js';
7
+ import { ENV } from '../utils/env.js';
4
8
  import { assertSigner } from '../utils/keys.js';
5
- export async function runPreflightChecks({ origin, remotes, signer, multiProvider, minGas, }) {
9
+ import { completeDryRun } from './dry-run.js';
10
+ export async function runPreflightChecks({ context, origin, remotes, minGas, chainsToGasCheck, }) {
6
11
  log('Running pre-flight checks...');
7
12
  if (!origin || !remotes?.length)
8
13
  throw new Error('Invalid chain selection');
14
+ logGreen('✅ Chain selections are valid');
9
15
  if (remotes.includes(origin))
10
16
  throw new Error('Origin and remotes must be distinct');
17
+ logGreen('✅ Origin and remote are distinct');
11
18
  return runPreflightChecksForChains({
19
+ context,
12
20
  chains: [origin, ...remotes],
13
- signer,
14
- multiProvider,
15
21
  minGas,
22
+ chainsToGasCheck,
16
23
  });
17
24
  }
18
- export async function runPreflightChecksForChains({ chains, signer, multiProvider, minGas, }) {
19
- log('Running pre-flight checks...');
25
+ export async function runPreflightChecksForChains({ context, chains, minGas, chainsToGasCheck, }) {
26
+ log('Running pre-flight checks for chains...');
27
+ const { signer, multiProvider } = context;
20
28
  if (!chains?.length)
21
29
  throw new Error('Empty chain selection');
22
30
  for (const chain of chains) {
@@ -26,10 +34,51 @@ export async function runPreflightChecksForChains({ chains, signer, multiProvide
26
34
  if (metadata.protocol !== ProtocolType.Ethereum)
27
35
  throw new Error('Only Ethereum chains are supported for now');
28
36
  }
29
- logGreen('Chains are valid');
37
+ logGreen('Chains are valid');
30
38
  assertSigner(signer);
31
- logGreen('Signer is valid');
32
- await assertGasBalances(multiProvider, signer, chains, minGas);
33
- logGreen('Balances are sufficient ✅');
39
+ logGreen('Signer is valid');
40
+ const sufficient = await gasBalancesAreSufficient(multiProvider, signer, chainsToGasCheck ?? chains, minGas);
41
+ if (sufficient)
42
+ logGreen('✅ Balances are sufficient');
43
+ }
44
+ // from parsed types
45
+ export function isISMConfig(config) {
46
+ return Object.values(config).some((c) => 'type' in c);
47
+ }
48
+ // directly from filepath
49
+ export function isZODISMConfig(filepath) {
50
+ return parseIsmConfig(filepath).success;
51
+ }
52
+ export async function prepareDeploy(context, userAddress, chains) {
53
+ const { multiProvider, isDryRun } = context;
54
+ const initialBalances = {};
55
+ await Promise.all(chains.map(async (chain) => {
56
+ const provider = isDryRun
57
+ ? getLocalProvider(ENV.ANVIL_IP_ADDR, ENV.ANVIL_PORT)
58
+ : multiProvider.getProvider(chain);
59
+ const currentBalance = await provider.getBalance(userAddress);
60
+ initialBalances[chain] = currentBalance;
61
+ }));
62
+ return initialBalances;
63
+ }
64
+ export async function completeDeploy(context, command, initialBalances, userAddress, chains) {
65
+ const { multiProvider, isDryRun } = context;
66
+ if (chains.length > 0)
67
+ logPink(`⛽️ Gas Usage Statistics`);
68
+ for (const chain of chains) {
69
+ const provider = isDryRun
70
+ ? getLocalProvider(ENV.ANVIL_IP_ADDR, ENV.ANVIL_PORT)
71
+ : multiProvider.getProvider(chain);
72
+ const currentBalance = await provider.getBalance(userAddress);
73
+ const balanceDelta = initialBalances[chain].sub(currentBalance);
74
+ if (isDryRun && balanceDelta.lt(0))
75
+ break;
76
+ logPink(`\t- Gas required for ${command} ${isDryRun ? 'dry-run' : 'deploy'} on ${chain}: ${ethers.utils.formatEther(balanceDelta)} ${multiProvider.getChainMetadata(chain).nativeToken?.symbol}`);
77
+ }
78
+ if (isDryRun)
79
+ await completeDryRun(command);
80
+ }
81
+ export function toUpperCamelCase(string) {
82
+ return string.charAt(0).toUpperCase() + string.slice(1);
34
83
  }
35
84
  //# sourceMappingURL=utils.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/deploy/utils.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,GAAG,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAEhD,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACvC,MAAM,EACN,OAAO,EACP,MAAM,EACN,aAAa,EACb,MAAM,GAOP;IACC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAEpC,IAAI,CAAC,MAAM,IAAI,CAAC,OAAO,EAAE,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,yBAAyB,CAAC,CAAC;IAC5E,IAAI,OAAO,CAAC,QAAQ,CAAC,MAAM,CAAC;QAC1B,MAAM,IAAI,KAAK,CAAC,qCAAqC,CAAC,CAAC;IACzD,OAAO,2BAA2B,CAAC;QACjC,MAAM,EAAE,CAAC,MAAM,EAAE,GAAG,OAAO,CAAC;QAC5B,MAAM;QACN,aAAa;QACb,MAAM;KACP,CAAC,CAAC;AACL,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAAC,EAChD,MAAM,EACN,MAAM,EACN,aAAa,EACb,MAAM,GAMP;IACC,GAAG,CAAC,8BAA8B,CAAC,CAAC;IAEpC,IAAI,CAAC,MAAM,EAAE,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,uBAAuB,CAAC,CAAC;IAC9D,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE;QAC1B,MAAM,QAAQ,GAAG,aAAa,CAAC,mBAAmB,CAAC,KAAK,CAAC,CAAC;QAC1D,IAAI,CAAC,QAAQ;YAAE,MAAM,IAAI,KAAK,CAAC,6BAA6B,KAAK,EAAE,CAAC,CAAC;QACrE,IAAI,QAAQ,CAAC,QAAQ,KAAK,YAAY,CAAC,QAAQ;YAC7C,MAAM,IAAI,KAAK,CAAC,4CAA4C,CAAC,CAAC;KACjE;IACD,QAAQ,CAAC,oBAAoB,CAAC,CAAC;IAE/B,YAAY,CAAC,MAAM,CAAC,CAAC;IACrB,QAAQ,CAAC,mBAAmB,CAAC,CAAC;IAE9B,MAAM,iBAAiB,CAAC,aAAa,EAAE,MAAM,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC/D,QAAQ,CAAC,2BAA2B,CAAC,CAAC;AACxC,CAAC"}
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/deploy/utils.ts"],"names":[],"mappings":"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"}
@@ -1,9 +1,6 @@
1
- export declare function runWarpDeploy({ key, chainConfigPath, warpConfigPath, coreArtifactsPath, outPath, skipConfirmation, }: {
2
- key: string;
3
- chainConfigPath: string;
4
- warpConfigPath?: string;
5
- coreArtifactsPath?: string;
6
- outPath: string;
7
- skipConfirmation: boolean;
1
+ import { WriteCommandContext } from '../context/types.js';
2
+ export declare function runWarpRouteDeploy({ context, warpRouteDeploymentConfigPath, }: {
3
+ context: WriteCommandContext;
4
+ warpRouteDeploymentConfigPath?: string;
8
5
  }): Promise<void>;
9
6
  //# sourceMappingURL=warp.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"warp.d.ts","sourceRoot":"","sources":["../../../src/deploy/warp.ts"],"names":[],"mappings":"AAuCA,wBAAsB,aAAa,CAAC,EAClC,GAAG,EACH,eAAe,EACf,cAAc,EACd,iBAAiB,EACjB,OAAO,EACP,gBAAgB,GACjB,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,iBAAiB,CAAC,EAAE,MAAM,CAAC;IAC3B,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,iBAyCA"}
1
+ {"version":3,"file":"warp.d.ts","sourceRoot":"","sources":["../../../src/deploy/warp.ts"],"names":[],"mappings":"AA8BA,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAM1D,wBAAsB,kBAAkB,CAAC,EACvC,OAAO,EACP,6BAA6B,GAC9B,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,6BAA6B,CAAC,EAAE,MAAM,CAAC;CACxC,iBAiDA"}
@@ -1,130 +1,122 @@
1
1
  import { confirm, input } from '@inquirer/prompts';
2
- import { ethers } from 'ethers';
3
- import { ERC20__factory, ERC721__factory } from '@hyperlane-xyz/core';
4
- import { HypERC20Deployer, HypERC721Deployer, TokenType, chainMetadata as defaultChainMetadata, getChainIdNumber, } from '@hyperlane-xyz/sdk';
5
- import { ProtocolType, objMap } from '@hyperlane-xyz/utils';
6
- import { log, logBlue, logGray, logGreen } from '../../logger.js';
7
- import { readDeploymentArtifacts } from '../config/artifacts.js';
8
- import { readWarpRouteConfig } from '../config/warp.js';
2
+ import { EvmTokenAdapter, HypERC20Deployer, HypERC721Deployer, MultiProtocolProvider, TOKEN_TYPE_TO_STANDARD, TokenType, getTokenConnectionId, isCollateralConfig, isNativeConfig, isSyntheticConfig, } from '@hyperlane-xyz/sdk';
3
+ import { ProtocolType } from '@hyperlane-xyz/utils';
4
+ import { readWarpRouteDeployConfig } from '../config/warp.js';
9
5
  import { MINIMUM_WARP_DEPLOY_GAS } from '../consts.js';
10
- import { getContextWithSigner, getMergedContractAddresses, } from '../context.js';
11
- import { isFile, prepNewArtifactsFiles, runFileSelectionStep, writeJson, } from '../utils/files.js';
12
- import { runPreflightChecks } from './utils.js';
13
- export async function runWarpDeploy({ key, chainConfigPath, warpConfigPath, coreArtifactsPath, outPath, skipConfirmation, }) {
14
- const { multiProvider, signer } = getContextWithSigner(key, chainConfigPath);
15
- if (!warpConfigPath || !isFile(warpConfigPath)) {
16
- warpConfigPath = await runFileSelectionStep('./configs', 'Warp config', 'warp');
6
+ import { log, logBlue, logGray, logGreen } from '../logger.js';
7
+ import { isFile, runFileSelectionStep } from '../utils/files.js';
8
+ import { completeDeploy, prepareDeploy, runPreflightChecks } from './utils.js';
9
+ export async function runWarpRouteDeploy({ context, warpRouteDeploymentConfigPath, }) {
10
+ const { signer, skipConfirmation } = context;
11
+ if (!warpRouteDeploymentConfigPath ||
12
+ !isFile(warpRouteDeploymentConfigPath)) {
13
+ if (skipConfirmation)
14
+ throw new Error('Warp route deployment config required');
15
+ warpRouteDeploymentConfigPath = await runFileSelectionStep('./configs', 'Warp route deployment config', 'warp');
17
16
  }
18
17
  else {
19
- log(`Using warp config at ${warpConfigPath}`);
18
+ log(`Using warp route deployment config at ${warpRouteDeploymentConfigPath}`);
20
19
  }
21
- const warpRouteConfig = readWarpRouteConfig(warpConfigPath);
22
- const artifacts = coreArtifactsPath
23
- ? readDeploymentArtifacts(coreArtifactsPath)
24
- : undefined;
20
+ const warpRouteConfig = readWarpRouteDeployConfig(warpRouteDeploymentConfigPath);
25
21
  const configs = await runBuildConfigStep({
22
+ context,
26
23
  warpRouteConfig,
27
- artifacts,
28
- multiProvider,
29
- signer,
30
24
  });
31
25
  const deploymentParams = {
26
+ context,
32
27
  ...configs,
33
- signer,
34
- multiProvider,
35
- outPath,
36
- skipConfirmation,
37
28
  };
38
- logBlue('WARP Deployment plan');
29
+ logBlue('Warp route deployment plan');
39
30
  await runDeployPlanStep(deploymentParams);
40
31
  await runPreflightChecks({
41
32
  ...deploymentParams,
42
33
  minGas: MINIMUM_WARP_DEPLOY_GAS,
43
34
  });
35
+ const userAddress = await signer.getAddress();
36
+ const chains = [deploymentParams.origin, ...configs.remotes];
37
+ const initialBalances = await prepareDeploy(context, userAddress, chains);
44
38
  await executeDeploy(deploymentParams);
39
+ await completeDeploy(context, 'warp', initialBalances, userAddress, chains);
45
40
  }
46
- async function runBuildConfigStep({ warpRouteConfig, multiProvider, signer, artifacts, }) {
41
+ async function runBuildConfigStep({ context, warpRouteConfig, }) {
42
+ const { registry, signer, multiProvider, skipConfirmation } = context;
47
43
  log('Assembling token configs');
48
- const { base, synthetics } = warpRouteConfig;
49
- const { type: baseType, chainName: baseChainName, isNft } = base;
44
+ const chainAddresses = await registry.getAddresses();
50
45
  const owner = await signer.getAddress();
51
- const baseMetadata = await fetchBaseTokenMetadata(base, multiProvider);
52
- log(`Using base token metadata: Name: ${baseMetadata.name}, Symbol: ${baseMetadata.symbol}, Decimals: ${baseMetadata.decimals}`);
53
- const mergedContractAddrs = getMergedContractAddresses(artifacts);
54
- // Create configs that coalesce together values from the config file,
55
- // the artifacts, and the SDK as a fallback
56
- const configMap = {
57
- [baseChainName]: {
58
- type: baseType,
59
- token: baseType === TokenType.collateral
60
- ? base.address
61
- : ethers.constants.AddressZero,
62
- owner,
63
- mailbox: base.mailbox || mergedContractAddrs[baseChainName]?.mailbox,
64
- interchainSecurityModule: base.interchainSecurityModule ||
65
- mergedContractAddrs[baseChainName]?.interchainSecurityModule ||
66
- mergedContractAddrs[baseChainName]?.multisigIsm,
67
- // ismFactory: mergedContractAddrs[baseChainName].routingIsmFactory, // TODO fix when updating from routingIsm
68
- foreignDeployment: base.foreignDeployment,
69
- name: baseMetadata.name,
70
- symbol: baseMetadata.symbol,
71
- decimals: baseMetadata.decimals,
72
- },
73
- };
74
- for (const synthetic of synthetics) {
75
- const sChainName = synthetic.chainName;
76
- configMap[sChainName] = {
77
- type: TokenType.synthetic,
78
- name: synthetic.name || baseMetadata.name,
79
- symbol: synthetic.symbol || baseMetadata.symbol,
80
- totalSupply: synthetic.totalSupply || 0,
81
- owner,
82
- mailbox: synthetic.mailbox || mergedContractAddrs[sChainName].mailbox,
83
- interchainSecurityModule: synthetic.interchainSecurityModule ||
84
- mergedContractAddrs[sChainName]?.interchainSecurityModule ||
85
- mergedContractAddrs[sChainName]?.multisigIsm,
86
- // ismFactory: mergedContractAddrs[sChainName].routingIsmFactory, // TODO fix
87
- foreignDeployment: synthetic.foreignDeployment,
88
- };
89
- }
90
- // Request input for any address fields that are missing
91
46
  const requiredRouterFields = ['mailbox'];
92
- let hasShownInfo = false;
93
- for (const [chain, token] of Object.entries(configMap)) {
47
+ const remotes = [];
48
+ /// @dev This will keep track of the base collateral metadata which can get overwritten if there are multiple collaterals.
49
+ /// These 'base' variables are used to derive synthetic fields
50
+ /// @todo Remove this artifact when multi-collateral is enabled
51
+ let baseChainName = '';
52
+ let baseMetadata = {};
53
+ // Define configs that coalesce together values from the config file
54
+ for (const [chain, config] of Object.entries(warpRouteConfig)) {
55
+ // the artifacts, and the SDK as a fallback
56
+ config.owner = owner;
57
+ config.mailbox = config.mailbox || chainAddresses[chain]?.mailbox;
58
+ config.interchainSecurityModule =
59
+ config.interchainSecurityModule ||
60
+ chainAddresses[chain]?.interchainSecurityModule ||
61
+ chainAddresses[chain]?.multisigIsm;
62
+ // config.ismFactory: chainAddresses[baseChainName].domainRoutingIsmFactory, // TODO fix when updating from routingIsm
63
+ if (isCollateralConfig(config) || isNativeConfig(config)) {
64
+ // Store the base metadata
65
+ baseChainName = chain;
66
+ baseMetadata = await fetchBaseTokenMetadata(chain, config, multiProvider);
67
+ log(`Using token metadata: Name: ${baseMetadata.name}, Symbol: ${baseMetadata.symbol}, Decimals: ${baseMetadata.decimals}`);
68
+ if (isCollateralConfig(config)) {
69
+ config.name = baseMetadata.name;
70
+ config.symbol = baseMetadata.symbol;
71
+ config.decimals = baseMetadata.decimals;
72
+ }
73
+ }
74
+ else if (isSyntheticConfig(config)) {
75
+ // Use the config, or baseMetadata
76
+ config.name = config.name || baseMetadata.name;
77
+ config.symbol = config.symbol || baseMetadata.symbol;
78
+ config.totalSupply = config.totalSupply || 0;
79
+ remotes.push(chain);
80
+ }
81
+ let hasShownInfo = false;
82
+ // Request input for any address fields that are missing
94
83
  for (const field of requiredRouterFields) {
95
- if (token[field])
84
+ if (config[field])
96
85
  continue;
86
+ if (skipConfirmation)
87
+ throw new Error(`Field ${field} for token on ${chain} required`);
97
88
  if (!hasShownInfo) {
98
89
  logBlue('Some router fields are missing. Please enter them now, add them to your warp config, or use the --core flag to use deployment artifacts.');
99
90
  hasShownInfo = true;
100
91
  }
101
92
  const value = await input({
102
- message: `Enter ${field} for ${getTokenName(token)} token on ${chain}`,
93
+ message: `Enter ${field} for ${getTokenName(config)} token on ${chain}`,
103
94
  });
104
95
  if (!value)
105
96
  throw new Error(`Field ${field} required`);
106
- token[field] = value.trim();
97
+ config[field] = value.trim();
107
98
  }
108
99
  }
109
100
  log('Token configs ready');
110
101
  return {
111
- configMap,
112
- metadata: baseMetadata,
102
+ configMap: warpRouteConfig,
113
103
  origin: baseChainName,
114
- remotes: synthetics.map(({ chainName }) => chainName),
115
- isNft: !!isNft,
104
+ metadata: baseMetadata,
105
+ remotes,
116
106
  };
117
107
  }
118
- async function runDeployPlanStep({ configMap, isNft, origin, remotes, signer, skipConfirmation, }) {
108
+ async function runDeployPlanStep({ context, configMap, origin, remotes, }) {
109
+ const { signer, skipConfirmation } = context;
119
110
  const address = await signer.getAddress();
120
111
  const baseToken = configMap[origin];
121
112
  const baseName = getTokenName(baseToken);
122
113
  logBlue('\nDeployment plan');
123
114
  logGray('===============');
115
+ log(`Collateral type will be ${baseToken.type}`);
124
116
  log(`Transaction signer and owner of new contracts will be ${address}`);
125
117
  log(`Deploying a warp route with a base of ${baseName} token on ${origin}`);
126
118
  log(`Connecting it to new synthetic tokens on ${remotes.join(', ')}`);
127
- log(`Using token standard ${isNft ? 'ERC721' : 'ERC20'}`);
119
+ log(`Using token standard ${configMap.isNft ? 'ERC721' : 'ERC20'}`);
128
120
  if (skipConfirmation)
129
121
  return;
130
122
  const isConfirmed = await confirm({
@@ -135,107 +127,75 @@ async function runDeployPlanStep({ configMap, isNft, origin, remotes, signer, sk
135
127
  }
136
128
  async function executeDeploy(params) {
137
129
  logBlue('All systems ready, captain! Beginning deployment...');
138
- const { configMap, isNft, multiProvider, outPath } = params;
139
- const [contractsFilePath, tokenConfigPath] = prepNewArtifactsFiles(outPath, [
140
- { filename: 'warp-deployment', description: 'Contract addresses' },
141
- { filename: 'warp-ui-token-config', description: 'Warp UI token config' },
142
- ]);
143
- const deployer = isNft
130
+ const { configMap, context: { registry, multiProvider, isDryRun }, } = params;
131
+ const deployer = configMap.isNft
144
132
  ? new HypERC721Deployer(multiProvider)
145
133
  : new HypERC20Deployer(multiProvider);
146
- const deployedContracts = await deployer.deploy(configMap);
147
- logGreen('Hyp token deployments complete');
148
- log('Writing deployment artifacts');
149
- writeTokenDeploymentArtifacts(contractsFilePath, deployedContracts, params);
150
- writeWarpUiTokenConfig(tokenConfigPath, deployedContracts, params);
134
+ const config = isDryRun
135
+ ? { [params.origin]: configMap[params.origin] }
136
+ : configMap;
137
+ const deployedContracts = await deployer.deploy(config); /// @todo remove ChainMap once Hyperlane deployers are refactored
138
+ logGreen('✅ Hyp token deployments complete');
139
+ if (!isDryRun)
140
+ log('Writing deployment artifacts');
141
+ const warpCoreConfig = getWarpCoreConfig(params, deployedContracts);
142
+ await registry.addWarpRoute(warpCoreConfig);
143
+ log(JSON.stringify(warpCoreConfig, null, 2));
151
144
  logBlue('Deployment is complete!');
152
- logBlue(`Contract address artifacts are in ${contractsFilePath}`);
153
- logBlue(`Warp UI token config is in ${tokenConfigPath}`);
154
145
  }
155
- // TODO move into token classes in the SDK
156
- async function fetchBaseTokenMetadata(base, multiProvider) {
157
- const { type, name, symbol, chainName, address, decimals, isNft } = base;
158
- // Skip fetching metadata if it's already provided in the config
159
- if (name && symbol && decimals) {
160
- return { name, symbol, decimals };
161
- }
162
- if (type === TokenType.native) {
163
- return (multiProvider.getChainMetadata(base.chainName).nativeToken ||
164
- defaultChainMetadata.ethereum.nativeToken);
146
+ async function fetchBaseTokenMetadata(chain, config, multiProvider) {
147
+ if (config.type === TokenType.native) {
148
+ // If it's a native token, use the chain's native token metadata
149
+ const chainNativeToken = multiProvider.getChainMetadata(chain).nativeToken;
150
+ if (chainNativeToken)
151
+ return chainNativeToken;
152
+ else
153
+ throw new Error(`No native token metadata for ${chain}`);
165
154
  }
166
- else if (base.type === TokenType.collateral && address) {
167
- log(`Fetching token metadata for ${address} on ${chainName}}`);
168
- const provider = multiProvider.getProvider(chainName);
169
- if (isNft) {
170
- const erc721Contract = ERC721__factory.connect(address, provider);
171
- const [name, symbol] = await Promise.all([
172
- erc721Contract.name(),
173
- erc721Contract.symbol(),
174
- ]);
175
- return { name, symbol, decimals: 0 };
176
- }
177
- else {
178
- const erc20Contract = ERC20__factory.connect(address, provider);
179
- const [name, symbol, decimals] = await Promise.all([
180
- erc20Contract.name(),
181
- erc20Contract.symbol(),
182
- erc20Contract.decimals(),
183
- ]);
184
- return { name, symbol, decimals };
185
- }
155
+ else if (config.type === TokenType.collateralVault ||
156
+ config.type === TokenType.collateral) {
157
+ // If it's a collateral type, use a TokenAdapter to query for its metadata
158
+ log(`Fetching token metadata for ${config.token} on ${chain}`);
159
+ const adapter = new EvmTokenAdapter(chain, MultiProtocolProvider.fromMultiProvider(multiProvider), { token: config.token });
160
+ return adapter.getMetadata();
186
161
  }
187
162
  else {
188
- throw new Error(`Unsupported token: ${base}`);
163
+ throw new Error(`Unsupported token: ${config.type}. Consider setting token metadata in your deployment config.`);
189
164
  }
190
165
  }
191
166
  function getTokenName(token) {
192
167
  return token.type === TokenType.native ? 'native' : token.name;
193
168
  }
194
- function writeTokenDeploymentArtifacts(filePath, contracts, { configMap }) {
195
- const artifacts = objMap(contracts, (chain, contract) => {
196
- return {
197
- router: contract.router.address,
198
- tokenType: configMap[chain].type,
199
- };
200
- });
201
- writeJson(filePath, artifacts);
202
- }
203
- function writeWarpUiTokenConfig(filePath, contracts, { configMap, isNft, metadata, origin, multiProvider }) {
204
- const baseConfig = configMap[origin];
205
- const hypTokenAddr = contracts[origin]?.router?.address || configMap[origin]?.foreignDeployment;
206
- if (!hypTokenAddr) {
207
- throw Error('No base Hyperlane token address deployed and no foreign deployment specified');
208
- }
209
- const chain = multiProvider.getChainMetadata(origin);
210
- if (chain.protocol !== ProtocolType.Ethereum)
211
- throw Error('Unsupported VM');
212
- const chainMetadata = multiProvider.getChainMetadata(origin);
213
- const commonFields = {
214
- chainId: getChainIdNumber(chainMetadata),
215
- name: metadata.name,
216
- symbol: metadata.symbol,
217
- decimals: metadata.decimals,
218
- };
219
- let tokenConfig;
220
- if (baseConfig.type === TokenType.collateral) {
221
- tokenConfig = {
222
- ...commonFields,
223
- type: TokenType.collateral,
224
- address: baseConfig.token,
225
- hypCollateralAddress: hypTokenAddr,
226
- isNft,
227
- };
228
- }
229
- else if (baseConfig.type === TokenType.native) {
230
- tokenConfig = {
231
- ...commonFields,
232
- type: TokenType.native,
233
- hypNativeAddress: hypTokenAddr,
234
- };
169
+ function getWarpCoreConfig({ configMap, metadata }, contracts) {
170
+ const warpCoreConfig = { tokens: [] };
171
+ // First pass, create token configs
172
+ for (const [chainName, contract] of Object.entries(contracts)) {
173
+ const config = configMap[chainName];
174
+ const collateralAddressOrDenom = config.type === TokenType.collateral ? config.token : undefined;
175
+ warpCoreConfig.tokens.push({
176
+ chainName,
177
+ standard: TOKEN_TYPE_TO_STANDARD[config.type],
178
+ name: metadata.name,
179
+ symbol: metadata.symbol,
180
+ decimals: metadata.decimals,
181
+ addressOrDenom: contract[configMap[chainName].type].address,
182
+ collateralAddressOrDenom,
183
+ });
235
184
  }
236
- else {
237
- throw new Error(`Unsupported token type: ${baseConfig.type}`);
185
+ // Second pass, add connections between tokens
186
+ // Assumes full interconnectivity between all tokens for now b.c. that's
187
+ // what the deployers do by default.
188
+ for (const token1 of warpCoreConfig.tokens) {
189
+ for (const token2 of warpCoreConfig.tokens) {
190
+ if (token1.chainName === token2.chainName &&
191
+ token1.addressOrDenom === token2.addressOrDenom)
192
+ continue;
193
+ token1.connections ||= [];
194
+ token1.connections.push({
195
+ token: getTokenConnectionId(ProtocolType.Ethereum, token2.chainName, token2.addressOrDenom),
196
+ });
197
+ }
238
198
  }
239
- writeJson(filePath, tokenConfig);
199
+ return warpCoreConfig;
240
200
  }
241
201
  //# 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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"}
@@ -0,0 +1,13 @@
1
+ import { ChainName } from '@hyperlane-xyz/sdk';
2
+ import { Address } from '@hyperlane-xyz/utils';
3
+ import { CommandContext } from '../context/types.js';
4
+ /**
5
+ * Read Hook config for a specified chain and address, logging or writing result to file.
6
+ */
7
+ export declare function readHookConfig({ context, chain, address, out, }: {
8
+ context: CommandContext;
9
+ chain: ChainName;
10
+ address: Address;
11
+ out?: string;
12
+ }): Promise<void>;
13
+ //# sourceMappingURL=read.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.d.ts","sourceRoot":"","sources":["../../../src/hook/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAiB,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAE,OAAO,EAAiC,MAAM,sBAAsB,CAAC;AAE9E,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD;;GAEG;AACH,wBAAsB,cAAc,CAAC,EACnC,OAAO,EACP,KAAK,EACL,OAAO,EACP,GAAG,GACJ,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,KAAK,EAAE,SAAS,CAAC;IACjB,OAAO,EAAE,OAAO,CAAC;IACjB,GAAG,CAAC,EAAE,MAAM,CAAC;CACd,GAAG,OAAO,CAAC,IAAI,CAAC,CAgBhB"}
@@ -0,0 +1,25 @@
1
+ import { EvmHookReader } from '@hyperlane-xyz/sdk';
2
+ import { ProtocolType, stringifyObject } from '@hyperlane-xyz/utils';
3
+ import { log, logBlue, logRed } from '../logger.js';
4
+ import { resolveFileFormat, writeFileAtPath } from '../utils/files.js';
5
+ /**
6
+ * Read Hook config for a specified chain and address, logging or writing result to file.
7
+ */
8
+ export async function readHookConfig({ context, chain, address, out, }) {
9
+ if (context.multiProvider.getProtocol(chain) === ProtocolType.Ethereum) {
10
+ const hookReader = new EvmHookReader(context.multiProvider, chain);
11
+ const config = await hookReader.deriveHookConfig(address);
12
+ const stringConfig = stringifyObject(config, resolveFileFormat(out), 2);
13
+ if (!out) {
14
+ logBlue(`Hook Config at ${address} on ${chain}:`);
15
+ log(stringConfig);
16
+ }
17
+ else {
18
+ writeFileAtPath(out, stringConfig + '\n');
19
+ logBlue(`Hook Config written to ${out}.`);
20
+ }
21
+ return;
22
+ }
23
+ logRed('Unsupported chain. Currently this command supports EVM chains only.');
24
+ }
25
+ //# sourceMappingURL=read.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"read.js","sourceRoot":"","sources":["../../../src/hook/read.ts"],"names":[],"mappings":"AAAA,OAAO,EAAa,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAC9D,OAAO,EAAW,YAAY,EAAE,eAAe,EAAE,MAAM,sBAAsB,CAAC;AAG9E,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,MAAM,EAAE,MAAM,cAAc,CAAC;AACpD,OAAO,EAAE,iBAAiB,EAAE,eAAe,EAAE,MAAM,mBAAmB,CAAC;AAEvE;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,EACnC,OAAO,EACP,KAAK,EACL,OAAO,EACP,GAAG,GAMJ;IACC,IAAI,OAAO,CAAC,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,KAAK,YAAY,CAAC,QAAQ,EAAE,CAAC;QACvE,MAAM,UAAU,GAAG,IAAI,aAAa,CAAC,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;QACnE,MAAM,MAAM,GAAG,MAAM,UAAU,CAAC,gBAAgB,CAAC,OAAO,CAAC,CAAC;QAC1D,MAAM,YAAY,GAAG,eAAe,CAAC,MAAM,EAAE,iBAAiB,CAAC,GAAG,CAAC,EAAE,CAAC,CAAC,CAAC;QACxE,IAAI,CAAC,GAAG,EAAE,CAAC;YACT,OAAO,CAAC,kBAAkB,OAAO,OAAO,KAAK,GAAG,CAAC,CAAC;YAClD,GAAG,CAAC,YAAY,CAAC,CAAC;QACpB,CAAC;aAAM,CAAC;YACN,eAAe,CAAC,GAAG,EAAE,YAAY,GAAG,IAAI,CAAC,CAAC;YAC1C,OAAO,CAAC,0BAA0B,GAAG,GAAG,CAAC,CAAC;QAC5C,CAAC;QACD,OAAO;IACT,CAAC;IAED,MAAM,CAAC,qEAAqE,CAAC,CAAC;AAChF,CAAC"}
@@ -0,0 +1,13 @@
1
+ import { ChainName } from '@hyperlane-xyz/sdk';
2
+ import { Address } from '@hyperlane-xyz/utils';
3
+ import { CommandContext } from '../context/types.js';
4
+ /**
5
+ * Read ISM config for a specified chain and address, logging or writing result to file.
6
+ */
7
+ export declare function readIsmConfig({ context, chain, address, out, }: {
8
+ context: CommandContext;
9
+ chain: ChainName;
10
+ address: Address;
11
+ out?: string;
12
+ }): Promise<void>;
13
+ //# sourceMappingURL=read.d.ts.map