@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,13 +1,12 @@
1
1
  import { confirm, input, select } from '@inquirer/prompts';
2
- import { BigNumber } from 'bignumber.js';
2
+ import { BigNumber as BigNumberJs } from 'bignumber.js';
3
3
  import { ethers } from 'ethers';
4
4
  import { z } from 'zod';
5
- import { GasOracleContractType, HookType, defaultMultisigConfigs, multisigIsmVerificationCost, } from '@hyperlane-xyz/sdk';
5
+ import { GasOracleContractType, HookType, } from '@hyperlane-xyz/sdk';
6
6
  import { normalizeAddressEvm, objMap, toWei, } from '@hyperlane-xyz/utils';
7
- import { errorRed, log, logBlue, logGreen, logRed } from '../../logger.js';
7
+ import { errorRed, log, logBlue, logGreen, logRed } from '../logger.js';
8
8
  import { runMultiChainSelectionStep } from '../utils/chains.js';
9
9
  import { mergeYamlOrJson, readYamlOrJson } from '../utils/files.js';
10
- import { readChainConfigsIfExists } from './chain.js';
11
10
  const ProtocolFeeSchema = z.object({
12
11
  type: z.literal(HookType.PROTOCOL_FEE),
13
12
  owner: z.string(),
@@ -18,159 +17,256 @@ const ProtocolFeeSchema = z.object({
18
17
  const MerkleTreeSchema = z.object({
19
18
  type: z.literal(HookType.MERKLE_TREE),
20
19
  });
21
- const HookSchema = z.union([ProtocolFeeSchema, MerkleTreeSchema]);
22
- const ConfigSchema = z.object({
23
- required: HookSchema,
24
- default: HookSchema,
20
+ const IGPSchema = z.object({
21
+ type: z.literal(HookType.INTERCHAIN_GAS_PAYMASTER),
22
+ owner: z.string(),
23
+ beneficiary: z.string(),
24
+ overhead: z.record(z.number()),
25
+ gasOracleType: z.record(z.literal(GasOracleContractType.StorageGasOracle)),
26
+ oracleKey: z.string(),
25
27
  });
26
- const HookConfigMapSchema = z.object({}).catchall(ConfigSchema);
28
+ const RoutingConfigSchema = z.lazy(() => z.object({
29
+ type: z.literal(HookType.ROUTING),
30
+ owner: z.string(),
31
+ domains: z.record(HookConfigSchema),
32
+ }));
33
+ const AggregationConfigSchema = z.lazy(() => z.object({
34
+ type: z.literal(HookType.AGGREGATION),
35
+ hooks: z.array(HookConfigSchema),
36
+ }));
37
+ const HookConfigSchema = z.union([
38
+ ProtocolFeeSchema,
39
+ MerkleTreeSchema,
40
+ IGPSchema,
41
+ RoutingConfigSchema,
42
+ AggregationConfigSchema,
43
+ ]);
44
+ const HooksConfigSchema = z.object({
45
+ required: HookConfigSchema,
46
+ default: HookConfigSchema,
47
+ });
48
+ const HooksConfigMapSchema = z.record(HooksConfigSchema);
27
49
  export function isValidHookConfigMap(config) {
28
- return HookConfigMapSchema.safeParse(config).success;
50
+ return HooksConfigMapSchema.safeParse(config).success;
29
51
  }
30
- export function presetHookConfigs(owner, local, destinationChains, ismConfig) {
31
- const gasOracleType = destinationChains.reduce((acc, chain) => {
32
- acc[chain] = GasOracleContractType.StorageGasOracle;
33
- return acc;
34
- }, {});
35
- const overhead = destinationChains.reduce((acc, chain) => {
36
- let validatorThreshold;
37
- let validatorCount;
38
- if (ismConfig) {
39
- validatorThreshold = ismConfig.threshold;
40
- validatorCount = ismConfig.validators.length;
41
- }
42
- else if (local in defaultMultisigConfigs) {
43
- validatorThreshold = defaultMultisigConfigs[local].threshold;
44
- validatorCount = defaultMultisigConfigs[local].validators.length;
45
- }
46
- else {
47
- throw new Error('Cannot estimate gas overhead for IGP hook');
48
- }
49
- acc[chain] = multisigIsmVerificationCost(validatorThreshold, validatorCount);
50
- return acc;
51
- }, {});
52
- // TODO improve types here to avoid need for `as` casts
52
+ export function presetHookConfigs(owner) {
53
53
  return {
54
54
  required: {
55
55
  type: HookType.PROTOCOL_FEE,
56
- maxProtocolFee: ethers.utils.parseUnits('1', 'gwei'),
57
- protocolFee: ethers.utils.parseUnits('0', 'wei'),
56
+ maxProtocolFee: ethers.utils.parseUnits('1', 'gwei').toString(),
57
+ protocolFee: ethers.utils.parseUnits('0', 'wei').toString(),
58
58
  beneficiary: owner,
59
59
  owner: owner,
60
60
  },
61
61
  default: {
62
- type: HookType.AGGREGATION,
63
- hooks: [
64
- {
65
- type: HookType.MERKLE_TREE,
66
- },
67
- {
68
- type: HookType.INTERCHAIN_GAS_PAYMASTER,
69
- owner: owner,
70
- beneficiary: owner,
71
- gasOracleType,
72
- overhead,
73
- oracleKey: owner,
74
- },
75
- ],
62
+ type: HookType.MERKLE_TREE,
76
63
  },
77
64
  };
78
65
  }
79
- export function readHookConfig(filePath) {
66
+ export function readHooksConfigMap(filePath) {
80
67
  const config = readYamlOrJson(filePath);
81
68
  if (!config) {
82
- logRed(`No multisig config found at ${filePath}`);
69
+ logRed(`No hook config found at ${filePath}`);
83
70
  return;
84
71
  }
85
- const result = HookConfigMapSchema.safeParse(config);
72
+ const result = HooksConfigMapSchema.safeParse(config);
86
73
  if (!result.success) {
87
74
  const firstIssue = result.error.issues[0];
88
75
  throw new Error(`Invalid hook config: ${firstIssue.path} => ${firstIssue.message}`);
89
76
  }
90
77
  const parsedConfig = result.data;
91
- const defaultHook = objMap(parsedConfig, (_, config) => ({
92
- type: config.default.type,
93
- }));
94
- logGreen(`All multisig configs in ${filePath} are valid`);
95
- return defaultHook;
78
+ const hooks = objMap(parsedConfig, (_, config) => config);
79
+ logGreen(`All hook configs in ${filePath} are valid for ${hooks}`);
80
+ return hooks;
96
81
  }
97
- // TODO: read different hook configs
98
- // export async function readProtocolFeeHookConfig(config: {type: HookType.PROTOCOL_FEE, ...}) {
99
- export async function createHookConfig({ format, outPath, chainConfigPath, }) {
82
+ export async function createHooksConfigMap({ context, outPath, }) {
100
83
  logBlue('Creating a new hook config');
101
- const customChains = readChainConfigsIfExists(chainConfigPath);
102
- const chains = await runMultiChainSelectionStep(customChains);
84
+ const chains = await runMultiChainSelectionStep(context.chainMetadata);
103
85
  const result = {};
104
86
  for (const chain of chains) {
105
87
  for (const hookRequirements of ['required', 'default']) {
106
88
  log(`Setting ${hookRequirements} hook for chain ${chain}`);
107
- const hookType = await select({
108
- message: 'Select hook type',
109
- choices: [
110
- { value: 'merkle_tree', name: 'MerkleTreeHook' },
111
- { value: 'protocol_fee', name: 'StaticProtocolFee' },
112
- ],
113
- pageSize: 5,
114
- });
115
- if (hookType === 'merkle_tree') {
116
- result[chain] = {
117
- ...result[chain],
118
- [hookRequirements]: { type: HookType.MERKLE_TREE },
119
- };
120
- }
121
- else if (hookType === 'protocol_fee') {
122
- const owner = await input({
123
- message: 'Enter owner address',
124
- });
125
- const ownerAddress = normalizeAddressEvm(owner);
126
- let beneficiary;
127
- let sameAsOwner = false;
128
- sameAsOwner = await confirm({
129
- message: 'Use this same address for the beneficiary?',
130
- });
131
- if (sameAsOwner) {
132
- beneficiary = ownerAddress;
133
- }
134
- else {
135
- beneficiary = await input({
136
- message: 'Enter beneficiary address',
137
- });
138
- }
139
- const beneficiaryAddress = normalizeAddressEvm(beneficiary);
140
- // TODO: input in gwei, wei, etc
141
- const maxProtocolFee = toWei(await input({
142
- message: 'Enter max protocol fee in (e.g. 1.0)',
143
- }));
144
- const protocolFee = toWei(await input({
145
- message: 'Enter protocol fee (e.g. 1.0)',
146
- }));
147
- if (BigNumber(protocolFee).gt(maxProtocolFee)) {
148
- errorRed('Protocol fee cannot be greater than max protocol fee');
149
- throw new Error('Invalid protocol fee');
150
- }
151
- result[chain] = {
152
- ...result[chain],
153
- [hookRequirements]: {
154
- type: HookType.PROTOCOL_FEE,
155
- maxProtocolFee: maxProtocolFee.toString(),
156
- protocolFee: protocolFee.toString(),
157
- beneficiary: beneficiaryAddress,
158
- owner: ownerAddress,
159
- },
160
- };
161
- }
162
- else {
163
- throw new Error(`Invalid hook type: ${hookType}}`);
164
- }
89
+ const remotes = chains.filter((c) => c !== chain);
90
+ result[chain] = {
91
+ ...result[chain],
92
+ [hookRequirements]: await createHookConfig(context, chain, remotes),
93
+ };
165
94
  }
166
95
  if (isValidHookConfigMap(result)) {
167
96
  logGreen(`Hook config is valid, writing to file ${outPath}`);
168
- mergeYamlOrJson(outPath, result, format);
97
+ mergeYamlOrJson(outPath, result);
169
98
  }
170
99
  else {
171
- errorRed(`Hook config is invalid, please see https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/typescript/cli/examples/hook-config.yaml for an example`);
100
+ errorRed(`Hook config is invalid, please see https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/typescript/cli/examples/hooks.yaml for an example`);
172
101
  throw new Error('Invalid hook config');
173
102
  }
174
103
  }
175
104
  }
105
+ export async function createHookConfig(context, chain, remotes) {
106
+ let lastConfig;
107
+ const hookType = await select({
108
+ message: 'Select hook type',
109
+ choices: [
110
+ {
111
+ value: HookType.MERKLE_TREE,
112
+ name: HookType.MERKLE_TREE,
113
+ description: 'Add messages to the incremental merkle tree on origin chain (needed for the merkleRootMultisigIsm on the remote chain)',
114
+ },
115
+ {
116
+ value: HookType.PROTOCOL_FEE,
117
+ name: HookType.PROTOCOL_FEE,
118
+ description: 'Charge fees for each message dispatch from this chain',
119
+ },
120
+ {
121
+ value: HookType.INTERCHAIN_GAS_PAYMASTER,
122
+ name: HookType.INTERCHAIN_GAS_PAYMASTER,
123
+ description: 'Allow for payments for expected gas to be paid by the relayer while delivering on remote chain',
124
+ },
125
+ {
126
+ value: HookType.AGGREGATION,
127
+ name: HookType.AGGREGATION,
128
+ description: 'Aggregate multiple hooks into a single hook (e.g. merkle tree + IGP) which will be called in sequence',
129
+ },
130
+ {
131
+ value: HookType.ROUTING,
132
+ name: HookType.ROUTING,
133
+ description: 'Each destination domain can have its own hook configured via DomainRoutingHook',
134
+ },
135
+ ],
136
+ pageSize: 10,
137
+ });
138
+ if (hookType === HookType.MERKLE_TREE) {
139
+ lastConfig = { type: HookType.MERKLE_TREE };
140
+ }
141
+ else if (hookType === HookType.PROTOCOL_FEE) {
142
+ lastConfig = await createProtocolFeeConfig(context, chain);
143
+ }
144
+ else if (hookType === HookType.INTERCHAIN_GAS_PAYMASTER) {
145
+ lastConfig = await createIGPConfig(remotes);
146
+ }
147
+ else if (hookType === HookType.AGGREGATION) {
148
+ lastConfig = await createAggregationConfig(context, chain, remotes);
149
+ }
150
+ else if (hookType === HookType.ROUTING) {
151
+ lastConfig = await createRoutingConfig(context, chain, remotes);
152
+ }
153
+ else {
154
+ throw new Error(`Invalid hook type: ${hookType}`);
155
+ }
156
+ return lastConfig;
157
+ }
158
+ export async function createProtocolFeeConfig(context, chain) {
159
+ const owner = await input({
160
+ message: 'Enter owner address',
161
+ });
162
+ const ownerAddress = normalizeAddressEvm(owner);
163
+ let beneficiary;
164
+ let sameAsOwner = false;
165
+ sameAsOwner = await confirm({
166
+ message: 'Use this same address for the beneficiary?',
167
+ });
168
+ if (sameAsOwner) {
169
+ beneficiary = ownerAddress;
170
+ }
171
+ else {
172
+ beneficiary = await input({
173
+ message: 'Enter beneficiary address',
174
+ });
175
+ }
176
+ const beneficiaryAddress = normalizeAddressEvm(beneficiary);
177
+ // TODO: input in gwei, wei, etc
178
+ const maxProtocolFee = toWei(await input({
179
+ message: `Enter max protocol fee ${nativeTokenAndDecimals(context, chain)} e.g. 1.0)`,
180
+ }));
181
+ const protocolFee = toWei(await input({
182
+ message: `Enter protocol fee in ${nativeTokenAndDecimals(context, chain)} e.g. 0.01)`,
183
+ }));
184
+ if (BigNumberJs(protocolFee).gt(maxProtocolFee)) {
185
+ errorRed('Protocol fee cannot be greater than max protocol fee');
186
+ throw new Error('Invalid protocol fee');
187
+ }
188
+ return {
189
+ type: HookType.PROTOCOL_FEE,
190
+ maxProtocolFee: maxProtocolFee.toString(),
191
+ protocolFee: protocolFee.toString(),
192
+ beneficiary: beneficiaryAddress,
193
+ owner: ownerAddress,
194
+ };
195
+ }
196
+ export async function createIGPConfig(remotes) {
197
+ const owner = await input({
198
+ message: 'Enter owner address',
199
+ });
200
+ const ownerAddress = normalizeAddressEvm(owner);
201
+ let beneficiary, oracleKey;
202
+ let sameAsOwner = false;
203
+ sameAsOwner = await confirm({
204
+ message: 'Use this same address for the beneficiary and gasOracleKey?',
205
+ });
206
+ if (sameAsOwner) {
207
+ beneficiary = ownerAddress;
208
+ oracleKey = ownerAddress;
209
+ }
210
+ else {
211
+ beneficiary = await input({
212
+ message: 'Enter beneficiary address',
213
+ });
214
+ oracleKey = await input({
215
+ message: 'Enter gasOracleKey address',
216
+ });
217
+ }
218
+ const beneficiaryAddress = normalizeAddressEvm(beneficiary);
219
+ const oracleKeyAddress = normalizeAddressEvm(oracleKey);
220
+ const overheads = {};
221
+ for (const chain of remotes) {
222
+ const overhead = parseInt(await input({
223
+ message: `Enter overhead for ${chain} (eg 75000)`,
224
+ }));
225
+ overheads[chain] = overhead;
226
+ }
227
+ return {
228
+ type: HookType.INTERCHAIN_GAS_PAYMASTER,
229
+ beneficiary: beneficiaryAddress,
230
+ owner: ownerAddress,
231
+ oracleKey: oracleKeyAddress,
232
+ overhead: overheads,
233
+ gasOracleType: objMap(overheads, () => GasOracleContractType.StorageGasOracle),
234
+ };
235
+ }
236
+ export async function createAggregationConfig(context, chain, remotes) {
237
+ const hooksNum = parseInt(await input({
238
+ message: 'Enter the number of hooks to aggregate (number)',
239
+ }), 10);
240
+ const hooks = [];
241
+ for (let i = 0; i < hooksNum; i++) {
242
+ logBlue(`Creating hook ${i + 1} of ${hooksNum} ...`);
243
+ hooks.push(await createHookConfig(context, chain, remotes));
244
+ }
245
+ return {
246
+ type: HookType.AGGREGATION,
247
+ hooks,
248
+ };
249
+ }
250
+ export async function createRoutingConfig(context, origin, remotes) {
251
+ const owner = await input({
252
+ message: 'Enter owner address',
253
+ });
254
+ const ownerAddress = owner;
255
+ const domainsMap = {};
256
+ for (const chain of remotes) {
257
+ await confirm({
258
+ message: `You are about to configure hook for remote chain ${chain}. Continue?`,
259
+ });
260
+ const config = await createHookConfig(context, origin, remotes);
261
+ domainsMap[chain] = config;
262
+ }
263
+ return {
264
+ type: HookType.ROUTING,
265
+ owner: ownerAddress,
266
+ domains: domainsMap,
267
+ };
268
+ }
269
+ function nativeTokenAndDecimals(context, chain) {
270
+ return `10^${context.chainMetadata[chain].nativeToken?.decimals ?? '18'} which you cannot exceed (in ${context.chainMetadata[chain].nativeToken?.symbol ?? 'eth'}`;
271
+ }
176
272
  //# sourceMappingURL=hooks.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/config/hooks.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"hooks.js","sourceRoot":"","sources":["../../../src/config/hooks.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,74 @@
1
+ import { z } from 'zod';
2
+ import { ChainName, IsmType } from '@hyperlane-xyz/sdk';
3
+ import { CommandContext } from '../context/types.js';
4
+ declare const IsmConfigSchema: z.ZodUnion<[z.ZodObject<{
5
+ type: z.ZodUnion<[z.ZodLiteral<IsmType.MERKLE_ROOT_MULTISIG>, z.ZodLiteral<IsmType.MESSAGE_ID_MULTISIG>]>;
6
+ threshold: z.ZodNumber;
7
+ validators: z.ZodArray<z.ZodString, "many">;
8
+ }, "strip", z.ZodTypeAny, {
9
+ type: IsmType.MERKLE_ROOT_MULTISIG | IsmType.MESSAGE_ID_MULTISIG;
10
+ threshold: number;
11
+ validators: string[];
12
+ }, {
13
+ type: IsmType.MERKLE_ROOT_MULTISIG | IsmType.MESSAGE_ID_MULTISIG;
14
+ threshold: number;
15
+ validators: string[];
16
+ }>, z.ZodType<any, z.ZodTypeDef, any>, z.ZodType<any, z.ZodTypeDef, any>, z.ZodObject<{
17
+ type: z.ZodLiteral<IsmType.TEST_ISM>;
18
+ }, "strip", z.ZodTypeAny, {
19
+ type: IsmType.TEST_ISM;
20
+ }, {
21
+ type: IsmType.TEST_ISM;
22
+ }>, z.ZodObject<{
23
+ type: z.ZodLiteral<IsmType.TRUSTED_RELAYER>;
24
+ relayer: z.ZodString;
25
+ }, "strip", z.ZodTypeAny, {
26
+ type: IsmType.TRUSTED_RELAYER;
27
+ relayer: string;
28
+ }, {
29
+ type: IsmType.TRUSTED_RELAYER;
30
+ relayer: string;
31
+ }>]>;
32
+ declare const IsmConfigMapSchema: z.ZodEffects<z.ZodRecord<z.ZodString, z.ZodUnion<[z.ZodObject<{
33
+ type: z.ZodUnion<[z.ZodLiteral<IsmType.MERKLE_ROOT_MULTISIG>, z.ZodLiteral<IsmType.MESSAGE_ID_MULTISIG>]>;
34
+ threshold: z.ZodNumber;
35
+ validators: z.ZodArray<z.ZodString, "many">;
36
+ }, "strip", z.ZodTypeAny, {
37
+ type: IsmType.MERKLE_ROOT_MULTISIG | IsmType.MESSAGE_ID_MULTISIG;
38
+ threshold: number;
39
+ validators: string[];
40
+ }, {
41
+ type: IsmType.MERKLE_ROOT_MULTISIG | IsmType.MESSAGE_ID_MULTISIG;
42
+ threshold: number;
43
+ validators: string[];
44
+ }>, z.ZodType<any, z.ZodTypeDef, any>, z.ZodType<any, z.ZodTypeDef, any>, z.ZodObject<{
45
+ type: z.ZodLiteral<IsmType.TEST_ISM>;
46
+ }, "strip", z.ZodTypeAny, {
47
+ type: IsmType.TEST_ISM;
48
+ }, {
49
+ type: IsmType.TEST_ISM;
50
+ }>, z.ZodObject<{
51
+ type: z.ZodLiteral<IsmType.TRUSTED_RELAYER>;
52
+ relayer: z.ZodString;
53
+ }, "strip", z.ZodTypeAny, {
54
+ type: IsmType.TRUSTED_RELAYER;
55
+ relayer: string;
56
+ }, {
57
+ type: IsmType.TRUSTED_RELAYER;
58
+ relayer: string;
59
+ }>]>>, Record<string, any>, Record<string, any>>;
60
+ export type ZodIsmConfig = z.infer<typeof IsmConfigSchema>;
61
+ export type ZodIsmConfigMap = z.infer<typeof IsmConfigMapSchema>;
62
+ export declare function parseIsmConfig(filePath: string): z.SafeParseReturnType<Record<string, any>, Record<string, any>>;
63
+ export declare function readIsmConfig(filePath: string): Record<string, any>;
64
+ export declare function isValildIsmConfig(config: any): boolean;
65
+ export declare function createIsmConfigMap({ context, outPath, }: {
66
+ context: CommandContext;
67
+ outPath: string;
68
+ }): Promise<void>;
69
+ export declare function createIsmConfig(remote: ChainName, origins: ChainName[]): Promise<ZodIsmConfig>;
70
+ export declare function createMultisigConfig(type: IsmType.MERKLE_ROOT_MULTISIG | IsmType.MESSAGE_ID_MULTISIG): Promise<ZodIsmConfig>;
71
+ export declare function createAggregationConfig(remote: ChainName, chains: ChainName[]): Promise<ZodIsmConfig>;
72
+ export declare function createRoutingConfig(type: IsmType.ROUTING | IsmType.FALLBACK_ROUTING, remote: ChainName, chains: ChainName[]): Promise<ZodIsmConfig>;
73
+ export {};
74
+ //# sourceMappingURL=ism.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ism.d.ts","sourceRoot":"","sources":["../../../src/config/ism.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAY,SAAS,EAAE,OAAO,EAAS,MAAM,oBAAoB,CAAC;AAEzE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AA2DrD,QAAA,MAAM,eAAe;;;;;;;;;;;;;;;;;;;;;;;;;;;IAMnB,CAAC;AACH,QAAA,MAAM,kBAAkB;;;;;;;;;;;;;;;;;;;;;;;;;;;gDAgBvB,CAAC;AACF,MAAM,MAAM,YAAY,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,eAAe,CAAC,CAAC;AAC3D,MAAM,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,kBAAkB,CAAC,CAAC;AAEjE,wBAAgB,cAAc,CAAC,QAAQ,EAAE,MAAM,mEAI9C;AAED,wBAAgB,aAAa,CAAC,QAAQ,EAAE,MAAM,uBAU7C;AAED,wBAAgB,iBAAiB,CAAC,MAAM,EAAE,GAAG,WAE5C;AAED,wBAAsB,kBAAkB,CAAC,EACvC,OAAO,EACP,OAAO,GACR,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB,iBAgCA;AAED,wBAAsB,eAAe,CACnC,MAAM,EAAE,SAAS,EACjB,OAAO,EAAE,SAAS,EAAE,GACnB,OAAO,CAAC,YAAY,CAAC,CA6DvB;AAED,wBAAsB,oBAAoB,CACxC,IAAI,EAAE,OAAO,CAAC,oBAAoB,GAAG,OAAO,CAAC,mBAAmB,GAC/D,OAAO,CAAC,YAAY,CAAC,CAevB;AAYD,wBAAsB,uBAAuB,CAC3C,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,SAAS,EAAE,GAClB,OAAO,CAAC,YAAY,CAAC,CAwBvB;AAED,wBAAsB,mBAAmB,CACvC,IAAI,EAAE,OAAO,CAAC,OAAO,GAAG,OAAO,CAAC,gBAAgB,EAChD,MAAM,EAAE,SAAS,EACjB,MAAM,EAAE,SAAS,EAAE,GAClB,OAAO,CAAC,YAAY,CAAC,CAoBvB"}