@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,97 +1,105 @@
1
1
  import { confirm } from '@inquirer/prompts';
2
2
  import { ethers } from 'ethers';
3
- import { GasOracleContractType, HookType, HyperlaneCoreDeployer, HyperlaneIsmFactory, HyperlaneProxyFactoryDeployer, IsmType, agentStartBlocks, buildAgentConfig, buildMultisigIsmConfigs, defaultMultisigConfigs, multisigIsmVerificationCost, serializeContractsMap, } from '@hyperlane-xyz/sdk';
4
- import { objFilter, objMerge } from '@hyperlane-xyz/utils';
5
- import { log, logBlue, logGray, logGreen, logRed } from '../../logger.js';
6
- import { readDeploymentArtifacts } from '../config/artifacts.js';
7
- import { readHookConfig } from '../config/hooks.js';
3
+ import { GasOracleContractType, HyperlaneCore, HyperlaneCoreDeployer, HyperlaneIsmFactory, HyperlaneProxyFactoryDeployer, IsmType, buildAgentConfig, buildAggregationIsmConfigs, defaultMultisigConfigs, multisigIsmVerificationCost, serializeContractsMap, } from '@hyperlane-xyz/sdk';
4
+ import { objFilter, objMap, objMerge } from '@hyperlane-xyz/utils';
5
+ import { presetHookConfigs, readHooksConfigMap } from '../config/hooks.js';
6
+ import { readIsmConfig } from '../config/ism.js';
8
7
  import { readMultisigConfig } from '../config/multisig.js';
9
8
  import { MINIMUM_CORE_DEPLOY_GAS } from '../consts.js';
10
- import { getContextWithSigner, getMergedContractAddresses, sdkContractAddressesMap, } from '../context.js';
9
+ import { log, logBlue, logBoldUnderlinedRed, logGray, logGreen, logRed, } from '../logger.js';
11
10
  import { runMultiChainSelectionStep } from '../utils/chains.js';
12
- import { prepNewArtifactsFiles, runFileSelectionStep, writeJson, } from '../utils/files.js';
13
- import { TestRecipientDeployer, } from './TestRecipientDeployer.js';
14
- import { runPreflightChecksForChains } from './utils.js';
15
- export async function runCoreDeploy({ key, chainConfigPath, chains, ismConfigPath, hookConfigPath, artifactsPath, outPath, skipConfirmation, }) {
16
- const { customChains, multiProvider, signer } = getContextWithSigner(key, chainConfigPath);
17
- if (!chains?.length) {
18
- chains = await runMultiChainSelectionStep(customChains, 'Select chains to which core contacts will be deployed');
11
+ import { runFileSelectionStep, writeJson } from '../utils/files.js';
12
+ import { completeDeploy, isISMConfig, isZODISMConfig, prepareDeploy, runPreflightChecksForChains, } from './utils.js';
13
+ const CONTRACT_CACHE_EXCLUSIONS = ['interchainGasPaymaster'];
14
+ /**
15
+ * Executes the core deploy command.
16
+ */
17
+ export async function runCoreDeploy({ context, chains, ismConfigPath, hookConfigPath, agentOutPath, }) {
18
+ const { chainMetadata, signer, dryRunChain, skipConfirmation } = context;
19
+ if (dryRunChain)
20
+ chains = [dryRunChain];
21
+ else if (!chains?.length) {
22
+ if (skipConfirmation)
23
+ throw new Error('No chains provided');
24
+ chains = await runMultiChainSelectionStep(chainMetadata, 'Select chains to connect:', true);
19
25
  }
20
- const artifacts = await runArtifactStep(chains, artifactsPath);
21
- const multisigConfig = await runIsmStep(chains, ismConfigPath);
22
- // TODO re-enable when hook config is actually used
23
- await runHookStep(chains, hookConfigPath);
26
+ const result = await runIsmStep(chains, skipConfirmation, ismConfigPath);
27
+ // we can either specify the full ISM config or just the multisig config
28
+ const isIsmConfig = isISMConfig(result);
29
+ const ismConfigs = isIsmConfig ? result : undefined;
30
+ const multisigConfigs = isIsmConfig
31
+ ? defaultMultisigConfigs
32
+ : result;
33
+ const hooksConfig = await runHookStep(chains, hookConfigPath);
24
34
  const deploymentParams = {
35
+ context,
25
36
  chains,
26
- signer,
27
- multiProvider,
28
- artifacts,
29
- multisigConfig,
30
- outPath,
31
- skipConfirmation,
37
+ ismConfigs,
38
+ multisigConfigs,
39
+ hooksConfig,
40
+ agentOutPath,
32
41
  };
33
42
  await runDeployPlanStep(deploymentParams);
34
43
  await runPreflightChecksForChains({
35
44
  ...deploymentParams,
36
45
  minGas: MINIMUM_CORE_DEPLOY_GAS,
37
46
  });
47
+ const userAddress = await signer.getAddress();
48
+ const initialBalances = await prepareDeploy(context, userAddress, chains);
38
49
  await executeDeploy(deploymentParams);
50
+ await completeDeploy(context, 'core', initialBalances, userAddress, chains);
39
51
  }
40
- async function runArtifactStep(selectedChains, artifactsPath) {
41
- if (!artifactsPath) {
42
- logBlue('\n', 'Deployments can be totally new or can use some existing contract addresses.');
43
- const isResume = await confirm({
44
- message: 'Do you want use some existing contract addresses?',
45
- });
46
- if (!isResume)
47
- return undefined;
48
- artifactsPath = await runFileSelectionStep('./artifacts', 'contract artifacts', 'core-deployment');
49
- }
50
- const artifacts = readDeploymentArtifacts(artifactsPath);
51
- const artifactChains = Object.keys(artifacts).filter((c) => selectedChains.includes(c));
52
- log(`Found existing artifacts for chains: ${artifactChains.join(', ')}`);
53
- return artifacts;
54
- }
55
- async function runIsmStep(selectedChains, ismConfigPath) {
52
+ async function runIsmStep(selectedChains, skipConfirmation, ismConfigPath) {
56
53
  if (!ismConfigPath) {
57
54
  logBlue('\n', 'Hyperlane instances requires an Interchain Security Module (ISM).');
58
- logGray('Note, only Multisig ISM configs are currently supported in the CLI', 'Example config: https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/cli/typescript/cli/examples/multisig-ism.yaml');
55
+ logGray('Example config: https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/cli/typescript/cli/examples/ism.yaml');
56
+ if (skipConfirmation)
57
+ throw new Error('ISM config required');
59
58
  ismConfigPath = await runFileSelectionStep('./configs', 'ISM config', 'ism');
60
59
  }
61
- // first we check for user provided chains
62
- const multisigConfigs = {
63
- ...defaultMultisigConfigs,
64
- ...readMultisigConfig(ismConfigPath),
65
- };
66
- const requiredMultisigs = objFilter(multisigConfigs, (chain, config) => selectedChains.includes(chain));
67
- // selected chains - (user configs + default configs) = missing config
68
- const missingConfigs = selectedChains.filter((c) => !Object.keys(requiredMultisigs).includes(c));
69
- if (missingConfigs.length > 0) {
70
- throw new Error(`Missing ISM config for one or more chains: ${missingConfigs.join(', ')}`);
60
+ const isAdvancedIsm = isZODISMConfig(ismConfigPath);
61
+ // separate flow for 'ism' and 'ism-advanced' options
62
+ if (isAdvancedIsm) {
63
+ logBoldUnderlinedRed('WARNING: YOU ARE DEPLOYING WITH AN ADVANCED ISM CONFIG');
64
+ logRed('Advanced ISM configs require knowledge of different ISM types and how they work together topologically. If possible, use the basic ISM configs are recommended.');
65
+ const ismConfig = readIsmConfig(ismConfigPath);
66
+ const requiredIsms = objFilter(ismConfig, (chain, config) => selectedChains.includes(chain));
67
+ // selected chains - (user configs + default configs) = missing config
68
+ const missingConfigs = selectedChains.filter((c) => !Object.keys(ismConfig).includes(c));
69
+ if (missingConfigs.length > 0) {
70
+ throw new Error(`Missing advanced ISM config for one or more chains: ${missingConfigs.join(', ')}`);
71
+ }
72
+ log(`Found configs for chains: ${selectedChains.join(', ')}`);
73
+ return requiredIsms;
74
+ }
75
+ else {
76
+ const multisigConfigs = {
77
+ ...defaultMultisigConfigs,
78
+ ...readMultisigConfig(ismConfigPath),
79
+ };
80
+ const requiredMultisigs = objFilter(multisigConfigs, (chain, config) => selectedChains.includes(chain));
81
+ // selected chains - (user configs + default configs) = missing config
82
+ const missingConfigs = selectedChains.filter((c) => !Object.keys(requiredMultisigs).includes(c));
83
+ if (missingConfigs.length > 0) {
84
+ throw new Error(`Missing ISM config for one or more chains: ${missingConfigs.join(', ')}`);
85
+ }
86
+ log(`Found configs for chains: ${selectedChains.join(', ')}`);
87
+ return requiredMultisigs;
71
88
  }
72
- log(`Found configs for chains: ${selectedChains.join(', ')}`);
73
- return requiredMultisigs;
74
89
  }
75
90
  async function runHookStep(_selectedChains, hookConfigPath) {
76
- if ('TODO: Skip this step for now as values are unused')
77
- return;
78
- // const presetConfigChains = Object.keys(presetHookConfigs);
79
- if (!hookConfigPath) {
80
- logBlue('\n', 'Hyperlane instances can take an Interchain Security Module (ISM).');
81
- hookConfigPath = await runFileSelectionStep('./configs/', 'Hook config', 'hook');
82
- }
83
- const configs = readHookConfig(hookConfigPath);
84
- if (!configs)
85
- return;
86
- log(`Found hook configs for chains: ${Object.keys(configs).join(', ')}`);
91
+ if (!hookConfigPath)
92
+ return {};
93
+ return readHooksConfigMap(hookConfigPath);
87
94
  }
88
- async function runDeployPlanStep({ chains, signer, artifacts, skipConfirmation, }) {
95
+ async function runDeployPlanStep({ context, chains }) {
96
+ const { signer, skipConfirmation } = context;
89
97
  const address = await signer.getAddress();
90
98
  logBlue('\nDeployment plan');
91
99
  logGray('===============');
92
100
  log(`Transaction signer and owner of new contracts will be ${address}`);
93
101
  log(`Deploying to ${chains.join(', ')}`);
94
- log(`There are several contracts required for each chain but contracts in the Hyperlane SDK ${artifacts ? 'or your artifacts ' : ''}will be skipped`);
102
+ log(`There are several contracts required for each chain but contracts in your provided registries will be skipped`);
95
103
  if (skipConfirmation)
96
104
  return;
97
105
  const isConfirmed = await confirm({
@@ -100,117 +108,82 @@ async function runDeployPlanStep({ chains, signer, artifacts, skipConfirmation,
100
108
  if (!isConfirmed)
101
109
  throw new Error('Deployment cancelled');
102
110
  }
103
- async function executeDeploy({ chains, signer, multiProvider, outPath, artifacts = {}, multisigConfig = {}, }) {
111
+ async function executeDeploy({ context, chains, ismConfigs = {}, multisigConfigs = {}, hooksConfig = {}, agentOutPath, }) {
104
112
  logBlue('All systems ready, captain! Beginning deployment...');
105
- const [contractsFilePath, agentFilePath] = prepNewArtifactsFiles(outPath, [
106
- { filename: 'core-deployment', description: 'Contract addresses' },
107
- { filename: 'agent-config', description: 'Agent configs' },
108
- ]);
113
+ const { signer, multiProvider, registry } = context;
114
+ let chainAddresses = await registry.getAddresses();
115
+ chainAddresses = filterAddressesToCache(chainAddresses);
109
116
  const owner = await signer.getAddress();
110
- const mergedContractAddrs = getMergedContractAddresses(artifacts);
117
+ let artifacts = {};
111
118
  // 1. Deploy ISM factories to all deployable chains that don't have them.
112
119
  logBlue('Deploying ISM factory contracts');
113
120
  const ismFactoryDeployer = new HyperlaneProxyFactoryDeployer(multiProvider);
114
- ismFactoryDeployer.cacheAddressesMap(mergedContractAddrs);
121
+ ismFactoryDeployer.cacheAddressesMap(chainAddresses);
115
122
  const ismFactoryConfig = chains.reduce((chainMap, curr) => {
116
123
  chainMap[curr] = {};
117
124
  return chainMap;
118
125
  }, {});
119
126
  const ismFactoryContracts = await ismFactoryDeployer.deploy(ismFactoryConfig);
120
- artifacts = writeMergedAddresses(contractsFilePath, artifacts, ismFactoryContracts);
127
+ artifacts = await updateChainAddresses(registry, ismFactoryContracts, artifacts);
121
128
  logGreen('ISM factory contracts deployed');
122
129
  // Build an IsmFactory that covers all chains so that we can
123
130
  // use it to deploy ISMs to remote chains.
124
- const ismFactory = HyperlaneIsmFactory.fromAddressesMap(mergedContractAddrs, multiProvider);
125
- // 3. Deploy ISM contracts to remote deployable chains
126
- logBlue('Deploying ISMs');
127
- const ismContracts = {};
131
+ const ismFactory = HyperlaneIsmFactory.fromAddressesMap(chainAddresses, multiProvider);
132
+ // 3. Construct ISM configs for all deployable chains
128
133
  const defaultIsms = {};
129
134
  for (const ismOrigin of chains) {
130
- logBlue(`Deploying ISM to ${ismOrigin}`);
131
- const ismConfig = buildIsmConfig(owner, ismOrigin, chains, multisigConfig);
132
- ismContracts[ismOrigin] = {
133
- multisigIsm: await ismFactory.deploy(ismOrigin, ismConfig),
134
- };
135
- defaultIsms[ismOrigin] = ismContracts[ismOrigin].multisigIsm.address;
135
+ defaultIsms[ismOrigin] =
136
+ ismConfigs[ismOrigin] ??
137
+ buildIsmConfig(owner, ismOrigin, chains, multisigConfigs);
136
138
  }
137
- artifacts = writeMergedAddresses(contractsFilePath, artifacts, ismContracts);
138
- logGreen('ISM contracts deployed');
139
139
  // 4. Deploy core contracts to chains
140
140
  logBlue(`Deploying core contracts to ${chains.join(', ')}`);
141
141
  const coreDeployer = new HyperlaneCoreDeployer(multiProvider, ismFactory);
142
- coreDeployer.cacheAddressesMap(mergedContractAddrs);
143
- const coreConfigs = buildCoreConfigMap(owner, chains, defaultIsms, multisigConfig);
142
+ coreDeployer.cacheAddressesMap(chainAddresses);
143
+ const coreConfigs = buildCoreConfigMap(owner, chains, defaultIsms, hooksConfig);
144
144
  const coreContracts = await coreDeployer.deploy(coreConfigs);
145
- artifacts = writeMergedAddresses(contractsFilePath, artifacts, coreContracts);
146
- logGreen('Core contracts deployed');
147
- // 5. Deploy TestRecipients to all deployable chains
148
- log('Deploying test recipient contracts');
149
- const testRecipientConfig = buildTestRecipientConfigMap(chains, artifacts);
150
- const testRecipientDeployer = new TestRecipientDeployer(multiProvider);
151
- testRecipientDeployer.cacheAddressesMap(mergedContractAddrs);
152
- const testRecipients = await testRecipientDeployer.deploy(testRecipientConfig);
153
- artifacts = writeMergedAddresses(contractsFilePath, artifacts, testRecipients);
154
- logGreen('Test recipient contracts deployed');
155
- log('Writing agent configs');
156
- await writeAgentConfig(agentFilePath, artifacts, chains, multiProvider);
157
- logGreen('Agent configs written');
145
+ // 4.5 recover the toplevel ISM address
146
+ const isms = {};
147
+ for (const chain of chains) {
148
+ isms[chain] = {
149
+ interchainSecurityModule: coreDeployer.cachedAddresses[chain].interchainSecurityModule,
150
+ };
151
+ }
152
+ artifacts = objMerge(artifacts, isms);
153
+ artifacts = await updateChainAddresses(registry, coreContracts, artifacts);
154
+ logGreen(' Core contracts deployed');
155
+ log(JSON.stringify(artifacts, null, 2));
156
+ await writeAgentConfig(context, artifacts, chains, agentOutPath);
158
157
  logBlue('Deployment is complete!');
159
- logBlue(`Contract address artifacts are in ${contractsFilePath}`);
160
- logBlue(`Agent configs are in ${agentFilePath}`);
158
+ }
159
+ function filterAddressesToCache(addressesMap) {
160
+ // Filter out the certain addresses that must always be
161
+ // deployed when deploying to a PI chain.
162
+ // See https://github.com/hyperlane-xyz/hyperlane-monorepo/pull/2983
163
+ // And https://github.com/hyperlane-xyz/hyperlane-monorepo/pull/3183
164
+ return objMap(addressesMap, (_chain, addresses) => objFilter(addresses, (contract, _address) => !CONTRACT_CACHE_EXCLUSIONS.includes(contract)));
161
165
  }
162
166
  function buildIsmConfig(owner, local, chains, multisigIsmConfigs) {
163
- const multisigConfigs = buildMultisigIsmConfigs(IsmType.MESSAGE_ID_MULTISIG, local, chains, multisigIsmConfigs);
167
+ const aggregationIsmConfigs = buildAggregationIsmConfigs(local, chains, multisigIsmConfigs);
164
168
  return {
165
169
  owner,
166
170
  type: IsmType.ROUTING,
167
- domains: multisigConfigs,
171
+ domains: aggregationIsmConfigs,
168
172
  };
169
173
  }
170
- function buildCoreConfigMap(owner, chains, defaultIsms, multisigConfig) {
174
+ function buildCoreConfigMap(owner, chains, defaultIsms, hooksConfig) {
171
175
  return chains.reduce((config, chain) => {
172
- const igpConfig = buildIgpConfigMap(owner, chains, multisigConfig);
176
+ const hooks = hooksConfig[chain] ?? presetHookConfigs(owner);
173
177
  config[chain] = {
174
178
  owner,
175
179
  defaultIsm: defaultIsms[chain],
176
- defaultHook: {
177
- type: HookType.AGGREGATION,
178
- hooks: [
179
- {
180
- type: HookType.MERKLE_TREE,
181
- },
182
- {
183
- type: HookType.INTERCHAIN_GAS_PAYMASTER,
184
- ...igpConfig[chain],
185
- },
186
- ],
187
- },
188
- requiredHook: {
189
- type: HookType.PROTOCOL_FEE,
190
- maxProtocolFee: ethers.utils.parseUnits('1', 'gwei'),
191
- protocolFee: ethers.utils.parseUnits('0', 'wei'),
192
- beneficiary: owner,
193
- owner,
194
- },
180
+ defaultHook: hooks.default,
181
+ requiredHook: hooks.required,
195
182
  };
196
183
  return config;
197
184
  }, {});
198
185
  }
199
- function buildTestRecipientConfigMap(chains, addressesMap) {
200
- return chains.reduce((config, chain) => {
201
- const interchainSecurityModule =
202
- // TODO revisit assumption that multisigIsm is always the ISM
203
- addressesMap[chain].multisigIsm ??
204
- addressesMap[chain].interchainSecurityModule ??
205
- ethers.constants.AddressZero;
206
- if (interchainSecurityModule === ethers.constants.AddressZero) {
207
- logRed('Error: No ISM for TestRecipient, deploying with zero address');
208
- }
209
- config[chain] = { interchainSecurityModule };
210
- return config;
211
- }, {});
212
- }
213
- function buildIgpConfigMap(owner, chains, multisigConfigs) {
186
+ export function buildIgpConfigMap(owner, chains, multisigConfigs) {
214
187
  const configMap = {};
215
188
  for (const chain of chains) {
216
189
  const overhead = {};
@@ -218,7 +191,14 @@ function buildIgpConfigMap(owner, chains, multisigConfigs) {
218
191
  for (const remote of chains) {
219
192
  if (chain === remote)
220
193
  continue;
221
- overhead[remote] = multisigIsmVerificationCost(multisigConfigs[chain].threshold, multisigConfigs[chain].validators.length);
194
+ // TODO: accurate estimate of gas from ChainMap<ISMConfig>
195
+ const threshold = multisigConfigs[remote]
196
+ ? multisigConfigs[remote].threshold
197
+ : 2;
198
+ const validatorsLength = multisigConfigs[remote]
199
+ ? multisigConfigs[remote].validators.length
200
+ : 3;
201
+ overhead[remote] = multisigIsmVerificationCost(threshold, validatorsLength);
222
202
  gasOracleType[remote] = GasOracleContractType.StorageGasOracle;
223
203
  }
224
204
  configMap[chain] = {
@@ -231,28 +211,44 @@ function buildIgpConfigMap(owner, chains, multisigConfigs) {
231
211
  }
232
212
  return configMap;
233
213
  }
234
- function writeMergedAddresses(filePath, aAddresses, bContracts) {
235
- const bAddresses = serializeContractsMap(bContracts);
236
- const mergedAddresses = objMerge(aAddresses, bAddresses);
237
- writeJson(filePath, mergedAddresses);
214
+ async function updateChainAddresses(registry, newContracts, otherAddresses) {
215
+ let newAddresses = serializeContractsMap(newContracts);
216
+ // The HyperlaneCoreDeployer is returning a nested object with ISM addresses
217
+ // from other chains, which don't need to be in the artifacts atm.
218
+ newAddresses = objMap(newAddresses, (_, newChainAddresses) => {
219
+ // For each chain in the addresses chainmap, filter the values to those that are just strings
220
+ return objFilter(newChainAddresses, (_, value) => typeof value === 'string');
221
+ });
222
+ const mergedAddresses = objMerge(otherAddresses, newAddresses);
223
+ for (const chainName of Object.keys(newContracts)) {
224
+ await registry.updateChain({
225
+ chainName,
226
+ addresses: mergedAddresses[chainName],
227
+ });
228
+ }
238
229
  return mergedAddresses;
239
230
  }
240
- async function writeAgentConfig(filePath, artifacts, chains, multiProvider) {
241
- // TODO: share with rust/config/*
242
- const startBlocks = { ...agentStartBlocks };
231
+ async function writeAgentConfig(context, artifacts, chains, outPath) {
232
+ if (context.isDryRun)
233
+ return;
234
+ log('Writing agent configs');
235
+ const { multiProvider, registry } = context;
236
+ const startBlocks = {};
237
+ const core = HyperlaneCore.fromAddressesMap(artifacts, multiProvider);
243
238
  for (const chain of chains) {
244
- if (startBlocks[chain])
245
- continue;
246
- startBlocks[chain] = await multiProvider
247
- .getProvider(chain)
248
- .getBlockNumber();
239
+ const mailbox = core.getContracts(chain).mailbox;
240
+ startBlocks[chain] = (await mailbox.deployedBlock()).toNumber();
249
241
  }
250
- const mergedAddressesMap = objMerge(sdkContractAddressesMap, artifacts);
251
- const filteredAddressesMap = objFilter(mergedAddressesMap, (chain, v) => chains.includes(chain) &&
252
- !!v.mailbox &&
253
- !!v.interchainGasPaymaster &&
254
- !!v.validatorAnnounce);
255
- const agentConfig = buildAgentConfig(Object.keys(filteredAddressesMap), multiProvider, filteredAddressesMap, startBlocks);
256
- writeJson(filePath, agentConfig);
242
+ const chainAddresses = await registry.getAddresses();
243
+ for (const chain of chains) {
244
+ if (!chainAddresses[chain].interchainGasPaymaster) {
245
+ chainAddresses[chain].interchainGasPaymaster =
246
+ ethers.constants.AddressZero;
247
+ }
248
+ }
249
+ const agentConfig = buildAgentConfig(chains, // Use only the chains that were deployed to
250
+ multiProvider, chainAddresses, startBlocks);
251
+ writeJson(outPath, agentConfig);
252
+ logGreen('Agent configs written');
257
253
  }
258
254
  //# sourceMappingURL=core.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"core.js","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,19 @@
1
+ import { MultiProvider } from '@hyperlane-xyz/sdk';
2
+ /**
3
+ * Forks a provided network onto MultiProvider
4
+ * @param multiProvider the MultiProvider to be prepared
5
+ * @param chains the chain selection passed-in by the user
6
+ */
7
+ export declare function forkNetworkToMultiProvider(multiProvider: MultiProvider, chain: string): Promise<void>;
8
+ /**
9
+ * Ensures an anvil node is running locally.
10
+ */
11
+ export declare function verifyAnvil(): Promise<void>;
12
+ /**
13
+ * Evaluates if an error is related to the current dry-run.
14
+ * @param error the thrown error
15
+ * @param dryRun the chain name to execute the dry-run on
16
+ */
17
+ export declare function evaluateIfDryRunFailure(error: any, dryRun: string): void;
18
+ export declare function completeDryRun(command: string): Promise<void>;
19
+ //# sourceMappingURL=dry-run.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run.d.ts","sourceRoot":"","sources":["../../../src/deploy/dry-run.ts"],"names":[],"mappings":"AAAA,OAAO,EAEL,aAAa,EAId,MAAM,oBAAoB,CAAC;AAO5B;;;;GAIG;AACH,wBAAsB,0BAA0B,CAC9C,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,MAAM,iBAOd;AAED;;GAEG;AACH,wBAAsB,WAAW,kBAahC;AAED;;;;GAIG;AACH,wBAAgB,uBAAuB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,EAAE,MAAM,QAKjE;AAED,wBAAsB,cAAc,CAAC,OAAO,EAAE,MAAM,iBAInD"}
@@ -0,0 +1,45 @@
1
+ import { ANVIL_RPC_METHODS, getLocalProvider, resetFork, setFork, } from '@hyperlane-xyz/sdk';
2
+ import { logGray, logGreen, warnYellow } from '../logger.js';
3
+ import { ENV } from '../utils/env.js';
4
+ import { toUpperCamelCase } from './utils.js';
5
+ /**
6
+ * Forks a provided network onto MultiProvider
7
+ * @param multiProvider the MultiProvider to be prepared
8
+ * @param chains the chain selection passed-in by the user
9
+ */
10
+ export async function forkNetworkToMultiProvider(multiProvider, chain) {
11
+ multiProvider = multiProvider.extendChainMetadata({
12
+ [chain]: { blocks: { confirmations: 0 } },
13
+ });
14
+ await setFork(multiProvider, chain);
15
+ }
16
+ /**
17
+ * Ensures an anvil node is running locally.
18
+ */
19
+ export async function verifyAnvil() {
20
+ logGray('🔎 Verifying anvil node is running...');
21
+ const provider = getLocalProvider(ENV.ANVIL_IP_ADDR, ENV.ANVIL_PORT);
22
+ try {
23
+ await provider.send(ANVIL_RPC_METHODS.NODE_INFO, []);
24
+ }
25
+ catch (error) {
26
+ if (error.message.includes('missing response'))
27
+ throw new Error(`No active anvil node detected.
28
+ \tPlease run \`anvil\` in a separate instance.`);
29
+ }
30
+ logGreen('✅ Successfully verified anvil node is running');
31
+ }
32
+ /**
33
+ * Evaluates if an error is related to the current dry-run.
34
+ * @param error the thrown error
35
+ * @param dryRun the chain name to execute the dry-run on
36
+ */
37
+ export function evaluateIfDryRunFailure(error, dryRun) {
38
+ if (dryRun && error.message.includes('call revert exception'))
39
+ warnYellow('⛔️ [dry-run] The current RPC may not support forking. Please consider using a different RPC provider.');
40
+ }
41
+ export async function completeDryRun(command) {
42
+ await resetFork();
43
+ logGreen(`✅ ${toUpperCamelCase(command)} dry-run completed successfully`);
44
+ }
45
+ //# sourceMappingURL=dry-run.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"dry-run.js","sourceRoot":"","sources":["../../../src/deploy/dry-run.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,iBAAiB,EAEjB,gBAAgB,EAChB,SAAS,EACT,OAAO,GACR,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,UAAU,EAAE,MAAM,cAAc,CAAC;AAC7D,OAAO,EAAE,GAAG,EAAE,MAAM,iBAAiB,CAAC;AAEtC,OAAO,EAAE,gBAAgB,EAAE,MAAM,YAAY,CAAC;AAE9C;;;;GAIG;AACH,MAAM,CAAC,KAAK,UAAU,0BAA0B,CAC9C,aAA4B,EAC5B,KAAa;IAEb,aAAa,GAAG,aAAa,CAAC,mBAAmB,CAAC;QAChD,CAAC,KAAK,CAAC,EAAE,EAAE,MAAM,EAAE,EAAE,aAAa,EAAE,CAAC,EAAE,EAAE;KAC1C,CAAC,CAAC;IAEH,MAAM,OAAO,CAAC,aAAa,EAAE,KAAK,CAAC,CAAC;AACtC,CAAC;AAED;;GAEG;AACH,MAAM,CAAC,KAAK,UAAU,WAAW;IAC/B,OAAO,CAAC,uCAAuC,CAAC,CAAC;IAEjD,MAAM,QAAQ,GAAG,gBAAgB,CAAC,GAAG,CAAC,aAAa,EAAE,GAAG,CAAC,UAAU,CAAC,CAAC;IACrE,IAAI,CAAC;QACH,MAAM,QAAQ,CAAC,IAAI,CAAC,iBAAiB,CAAC,SAAS,EAAE,EAAE,CAAC,CAAC;IACvD,CAAC;IAAC,OAAO,KAAU,EAAE,CAAC;QACpB,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,kBAAkB,CAAC;YAC5C,MAAM,IAAI,KAAK,CAAC;+CACyB,CAAC,CAAC;IAC/C,CAAC;IAED,QAAQ,CAAC,+CAA+C,CAAC,CAAC;AAC5D,CAAC;AAED;;;;GAIG;AACH,MAAM,UAAU,uBAAuB,CAAC,KAAU,EAAE,MAAc;IAChE,IAAI,MAAM,IAAI,KAAK,CAAC,OAAO,CAAC,QAAQ,CAAC,uBAAuB,CAAC;QAC3D,UAAU,CACR,uGAAuG,CACxG,CAAC;AACN,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,cAAc,CAAC,OAAe;IAClD,MAAM,SAAS,EAAE,CAAC;IAElB,QAAQ,CAAC,KAAK,gBAAgB,CAAC,OAAO,CAAC,iCAAiC,CAAC,CAAC;AAC5E,CAAC"}
@@ -1,16 +1,23 @@
1
- import { ethers } from 'ethers';
2
- import { ChainName, MultiProvider } from '@hyperlane-xyz/sdk';
3
- export declare function runPreflightChecks({ origin, remotes, signer, multiProvider, minGas, }: {
1
+ import { BigNumber } from 'ethers';
2
+ import { ChainMap, ChainName, IsmConfig, MultisigConfig } from '@hyperlane-xyz/sdk';
3
+ import { Address } from '@hyperlane-xyz/utils';
4
+ import { WriteCommandContext } from '../context/types.js';
5
+ export declare function runPreflightChecks({ context, origin, remotes, minGas, chainsToGasCheck, }: {
6
+ context: WriteCommandContext;
4
7
  origin: ChainName;
5
8
  remotes: ChainName[];
6
- signer: ethers.Signer;
7
- multiProvider: MultiProvider;
8
9
  minGas: string;
10
+ chainsToGasCheck?: ChainName[];
9
11
  }): Promise<void>;
10
- export declare function runPreflightChecksForChains({ chains, signer, multiProvider, minGas, }: {
12
+ export declare function runPreflightChecksForChains({ context, chains, minGas, chainsToGasCheck, }: {
13
+ context: WriteCommandContext;
11
14
  chains: ChainName[];
12
- signer: ethers.Signer;
13
- multiProvider: MultiProvider;
14
15
  minGas: string;
16
+ chainsToGasCheck?: ChainName[];
15
17
  }): Promise<void>;
18
+ export declare function isISMConfig(config: ChainMap<MultisigConfig> | ChainMap<IsmConfig>): boolean;
19
+ export declare function isZODISMConfig(filepath: string): boolean;
20
+ export declare function prepareDeploy(context: WriteCommandContext, userAddress: Address, chains: ChainName[]): Promise<Record<string, BigNumber>>;
21
+ export declare function completeDeploy(context: WriteCommandContext, command: string, initialBalances: Record<string, BigNumber>, userAddress: Address, chains: ChainName[]): Promise<void>;
22
+ export declare function toUpperCamelCase(string: string): string;
16
23
  //# sourceMappingURL=utils.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/deploy/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAO9D,wBAAsB,kBAAkB,CAAC,EACvC,MAAM,EACN,OAAO,EACP,MAAM,EACN,aAAa,EACb,MAAM,GACP,EAAE;IACD,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,iBAYA;AAED,wBAAsB,2BAA2B,CAAC,EAChD,MAAM,EACN,MAAM,EACN,aAAa,EACb,MAAM,GACP,EAAE;IACD,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IACtB,aAAa,EAAE,aAAa,CAAC;IAC7B,MAAM,EAAE,MAAM,CAAC;CAChB,iBAiBA"}
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/deploy/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAU,MAAM,QAAQ,CAAC;AAE3C,OAAO,EACL,QAAQ,EACR,SAAS,EACT,SAAS,EACT,cAAc,EAEf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAAgB,MAAM,sBAAsB,CAAC;AAG7D,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAQ1D,wBAAsB,kBAAkB,CAAC,EACvC,OAAO,EACP,MAAM,EACN,OAAO,EACP,MAAM,EACN,gBAAgB,GACjB,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,SAAS,CAAC;IAClB,OAAO,EAAE,SAAS,EAAE,CAAC;IACrB,MAAM,EAAE,MAAM,CAAC;IACf,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC;CAChC,iBAgBA;AAED,wBAAsB,2BAA2B,CAAC,EAChD,OAAO,EACP,MAAM,EACN,MAAM,EACN,gBAAgB,GACjB,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,EAAE,SAAS,EAAE,CAAC;IACpB,MAAM,EAAE,MAAM,CAAC;IAGf,gBAAgB,CAAC,EAAE,SAAS,EAAE,CAAC;CAChC,iBAuBA;AAGD,wBAAgB,WAAW,CACzB,MAAM,EAAE,QAAQ,CAAC,cAAc,CAAC,GAAG,QAAQ,CAAC,SAAS,CAAC,GACrD,OAAO,CAET;AAGD,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,GAAG,OAAO,CAExD;AAED,wBAAsB,aAAa,CACjC,OAAO,EAAE,mBAAmB,EAC5B,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,SAAS,EAAE,GAClB,OAAO,CAAC,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC,CAapC;AAED,wBAAsB,cAAc,CAClC,OAAO,EAAE,mBAAmB,EAC5B,OAAO,EAAE,MAAM,EACf,eAAe,EAAE,MAAM,CAAC,MAAM,EAAE,SAAS,CAAC,EAC1C,WAAW,EAAE,OAAO,EACpB,MAAM,EAAE,SAAS,EAAE,iBAqBpB;AAED,wBAAgB,gBAAgB,CAAC,MAAM,EAAE,MAAM,UAE9C"}