@hyperlane-xyz/cli 3.1.9 → 3.2.0

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 (81) hide show
  1. package/dist/cli.js +2 -2
  2. package/dist/cli.js.map +1 -1
  3. package/dist/logger.d.ts +1 -0
  4. package/dist/logger.d.ts.map +1 -1
  5. package/dist/logger.js +1 -0
  6. package/dist/logger.js.map +1 -1
  7. package/dist/src/commands/chains.js.map +1 -1
  8. package/dist/src/commands/config.d.ts.map +1 -1
  9. package/dist/src/commands/config.js +40 -10
  10. package/dist/src/commands/config.js.map +1 -1
  11. package/dist/src/commands/deploy.js +1 -1
  12. package/dist/src/commands/deploy.js.map +1 -1
  13. package/dist/src/config/artifacts.js.map +1 -1
  14. package/dist/src/config/chain.d.ts.map +1 -1
  15. package/dist/src/config/chain.js +13 -9
  16. package/dist/src/config/chain.js.map +1 -1
  17. package/dist/src/config/chain.test.d.ts +2 -0
  18. package/dist/src/config/chain.test.d.ts.map +1 -0
  19. package/dist/src/config/chain.test.js +13 -0
  20. package/dist/src/config/chain.test.js.map +1 -0
  21. package/dist/src/config/hooks.js +2 -2
  22. package/dist/src/config/hooks.js.map +1 -1
  23. package/dist/src/config/ism.d.ts +57 -0
  24. package/dist/src/config/ism.d.ts.map +1 -0
  25. package/dist/src/config/ism.js +201 -0
  26. package/dist/src/config/ism.js.map +1 -0
  27. package/dist/src/config/multisig.d.ts +1 -10
  28. package/dist/src/config/multisig.d.ts.map +1 -1
  29. package/dist/src/config/multisig.js +19 -21
  30. package/dist/src/config/multisig.js.map +1 -1
  31. package/dist/src/config/warp.js +1 -1
  32. package/dist/src/config/warp.js.map +1 -1
  33. package/dist/src/context.d.ts +16 -0
  34. package/dist/src/context.d.ts.map +1 -1
  35. package/dist/src/deploy/TestRecipientDeployer.js.map +1 -1
  36. package/dist/src/deploy/agent.js.map +1 -1
  37. package/dist/src/deploy/core.d.ts.map +1 -1
  38. package/dist/src/deploy/core.js +64 -26
  39. package/dist/src/deploy/core.js.map +1 -1
  40. package/dist/src/deploy/utils.d.ts +3 -1
  41. package/dist/src/deploy/utils.d.ts.map +1 -1
  42. package/dist/src/deploy/utils.js +9 -0
  43. package/dist/src/deploy/utils.js.map +1 -1
  44. package/dist/src/deploy/warp.d.ts.map +1 -1
  45. package/dist/src/deploy/warp.js +12 -10
  46. package/dist/src/deploy/warp.js.map +1 -1
  47. package/dist/src/send/message.js.map +1 -1
  48. package/dist/src/send/transfer.js.map +1 -1
  49. package/dist/src/status/message.js.map +1 -1
  50. package/dist/src/tests/ism.test.d.ts +2 -0
  51. package/dist/src/tests/ism.test.d.ts.map +1 -0
  52. package/dist/src/tests/ism.test.js +76 -0
  53. package/dist/src/tests/ism.test.js.map +1 -0
  54. package/dist/src/tests/multisig.test.d.ts +2 -0
  55. package/dist/src/tests/multisig.test.d.ts.map +1 -0
  56. package/dist/src/tests/multisig.test.js +34 -0
  57. package/dist/src/tests/multisig.test.js.map +1 -0
  58. package/dist/src/utils/balances.js.map +1 -1
  59. package/dist/src/utils/chains.d.ts +2 -2
  60. package/dist/src/utils/chains.d.ts.map +1 -1
  61. package/dist/src/utils/chains.js +20 -14
  62. package/dist/src/utils/chains.js.map +1 -1
  63. package/dist/src/utils/files.d.ts +1 -0
  64. package/dist/src/utils/files.d.ts.map +1 -1
  65. package/dist/src/utils/files.js +16 -5
  66. package/dist/src/utils/files.js.map +1 -1
  67. package/dist/src/utils/time.d.ts.map +1 -1
  68. package/dist/src/utils/time.js +8 -1
  69. package/dist/src/utils/time.js.map +1 -1
  70. package/dist/src/utils/time.test.d.ts +2 -0
  71. package/dist/src/utils/time.test.d.ts.map +1 -0
  72. package/dist/src/utils/time.test.js +9 -0
  73. package/dist/src/utils/time.test.js.map +1 -0
  74. package/dist/src/version.d.ts +2 -0
  75. package/dist/src/version.d.ts.map +1 -0
  76. package/dist/src/version.js +2 -0
  77. package/dist/src/version.js.map +1 -0
  78. package/examples/chain-config.yaml +6 -0
  79. package/examples/ism-advanced.yaml +33 -0
  80. package/examples/{multisig-ism.yaml → ism.yaml} +0 -8
  81. package/package.json +14 -7
@@ -0,0 +1,201 @@
1
+ import { confirm, input, select } from '@inquirer/prompts';
2
+ import { z } from 'zod';
3
+ import { IsmType } from '@hyperlane-xyz/sdk';
4
+ import { errorRed, log, logBlue, logGreen } from '../../logger.js';
5
+ import { runMultiChainSelectionStep } from '../utils/chains.js';
6
+ import { mergeYamlOrJson, readYamlOrJson } from '../utils/files.js';
7
+ import { readChainConfigsIfExists } from './chain.js';
8
+ const MultisigIsmConfigSchema = z.object({
9
+ type: z.union([
10
+ z.literal(IsmType.MERKLE_ROOT_MULTISIG),
11
+ z.literal(IsmType.MESSAGE_ID_MULTISIG),
12
+ ]),
13
+ threshold: z.number(),
14
+ validators: z.array(z.string()),
15
+ });
16
+ const RoutingIsmConfigSchema = z.lazy(() => z.object({
17
+ type: z.literal(IsmType.ROUTING),
18
+ owner: z.string(),
19
+ domains: z.record(IsmConfigSchema),
20
+ }));
21
+ const AggregationIsmConfigSchema = z
22
+ .lazy(() => z.object({
23
+ type: z.literal(IsmType.AGGREGATION),
24
+ modules: z.array(IsmConfigSchema),
25
+ threshold: z.number(),
26
+ }))
27
+ .refine(
28
+ // check ig modules.length >= threshold
29
+ (ismConfig) => {
30
+ return ismConfig.modules.length >= ismConfig.threshold;
31
+ }, {
32
+ message: 'Threshold cannot be greater than number of modules',
33
+ });
34
+ const TestIsmConfigSchema = z.object({
35
+ type: z.literal(IsmType.TEST_ISM),
36
+ });
37
+ const IsmConfigSchema = z.union([
38
+ MultisigIsmConfigSchema,
39
+ RoutingIsmConfigSchema,
40
+ AggregationIsmConfigSchema,
41
+ TestIsmConfigSchema,
42
+ ]);
43
+ const IsmConfigMapSchema = z.record(IsmConfigSchema).refine((ismConfigMap) => {
44
+ // check if any key in IsmConfigMap is found in its own RoutingIsmConfigSchema.domains
45
+ for (const [key, config] of Object.entries(ismConfigMap)) {
46
+ if (config.type === IsmType.ROUTING) {
47
+ if (config.domains && key in config.domains) {
48
+ return false;
49
+ }
50
+ }
51
+ }
52
+ return true;
53
+ }, {
54
+ message: 'Cannot set RoutingIsm.domain to the same chain you are configuring',
55
+ });
56
+ export function parseIsmConfig(filePath) {
57
+ const config = readYamlOrJson(filePath);
58
+ if (!config)
59
+ throw new Error(`No ISM config found at ${filePath}`);
60
+ return IsmConfigMapSchema.safeParse(config);
61
+ }
62
+ export function readIsmConfig(filePath) {
63
+ const result = parseIsmConfig(filePath);
64
+ if (!result.success) {
65
+ const firstIssue = result.error.issues[0];
66
+ throw new Error(`Invalid ISM config: ${firstIssue.path} => ${firstIssue.message}`);
67
+ }
68
+ const parsedConfig = result.data;
69
+ return parsedConfig;
70
+ }
71
+ export function isValildIsmConfig(config) {
72
+ return IsmConfigMapSchema.safeParse(config).success;
73
+ }
74
+ export async function createIsmConfigMap({ format, outPath, chainConfigPath, }) {
75
+ logBlue('Creating a new ISM config');
76
+ const customChains = readChainConfigsIfExists(chainConfigPath);
77
+ const chains = await runMultiChainSelectionStep(customChains);
78
+ const result = {};
79
+ for (const chain of chains) {
80
+ log(`Setting values for chain ${chain}`);
81
+ result[chain] = await createIsmConfig(chain, chainConfigPath);
82
+ // TODO consider re-enabling. Disabling based on feedback from @nambrot for now.
83
+ // repeat = await confirm({
84
+ // message: 'Use this same config for remaining chains?',
85
+ // });
86
+ }
87
+ if (isValildIsmConfig(result)) {
88
+ logGreen(`ISM config is valid, writing to file ${outPath}`);
89
+ mergeYamlOrJson(outPath, result, format);
90
+ }
91
+ else {
92
+ errorRed(`ISM config is invalid, please see https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/typescript/cli/examples/ism.yaml for an example`);
93
+ throw new Error('Invalid ISM config');
94
+ }
95
+ }
96
+ export async function createIsmConfig(chain, chainConfigPath) {
97
+ let lastConfig;
98
+ const moduleType = await select({
99
+ message: 'Select ISM type',
100
+ choices: [
101
+ {
102
+ value: IsmType.MESSAGE_ID_MULTISIG,
103
+ name: IsmType.MESSAGE_ID_MULTISIG,
104
+ description: 'Validators need to sign just this messageId',
105
+ },
106
+ {
107
+ value: IsmType.MERKLE_ROOT_MULTISIG,
108
+ name: IsmType.MERKLE_ROOT_MULTISIG,
109
+ description: 'Validators need to sign the root of the merkle tree of all messages from origin chain',
110
+ },
111
+ {
112
+ value: IsmType.ROUTING,
113
+ name: IsmType.ROUTING,
114
+ description: 'Each origin chain can be verified by the specified ISM type via RoutingISM',
115
+ },
116
+ {
117
+ value: IsmType.AGGREGATION,
118
+ name: IsmType.AGGREGATION,
119
+ description: 'You can aggregate multiple ISMs into one ISM via AggregationISM',
120
+ },
121
+ {
122
+ value: IsmType.TEST_ISM,
123
+ name: IsmType.TEST_ISM,
124
+ description: 'ISM where you can deliver messages without any validation (WARNING: only for testing, do not use in production)',
125
+ },
126
+ ],
127
+ pageSize: 10,
128
+ });
129
+ if (moduleType === IsmType.MESSAGE_ID_MULTISIG ||
130
+ moduleType === IsmType.MERKLE_ROOT_MULTISIG) {
131
+ lastConfig = await createMultisigConfig(moduleType);
132
+ }
133
+ else if (moduleType === IsmType.ROUTING) {
134
+ lastConfig = await createRoutingConfig(chain, chainConfigPath);
135
+ }
136
+ else if (moduleType === IsmType.AGGREGATION) {
137
+ lastConfig = await createAggregationConfig(chain, chainConfigPath);
138
+ }
139
+ else if (moduleType === IsmType.TEST_ISM) {
140
+ lastConfig = { type: IsmType.TEST_ISM };
141
+ }
142
+ else {
143
+ throw new Error(`Invalid ISM type: ${moduleType}}`);
144
+ }
145
+ return lastConfig;
146
+ }
147
+ export async function createMultisigConfig(type) {
148
+ const thresholdInput = await input({
149
+ message: 'Enter threshold of signers (number)',
150
+ });
151
+ const threshold = parseInt(thresholdInput, 10);
152
+ const validatorsInput = await input({
153
+ message: 'Enter validator addresses (comma separated list)',
154
+ });
155
+ const validators = validatorsInput.split(',').map((v) => v.trim());
156
+ return {
157
+ type,
158
+ threshold,
159
+ validators,
160
+ };
161
+ }
162
+ export async function createAggregationConfig(chain, chainConfigPath) {
163
+ const isms = parseInt(await input({
164
+ message: 'Enter the number of ISMs to aggregate (number)',
165
+ }), 10);
166
+ const threshold = parseInt(await input({
167
+ message: 'Enter the threshold of ISMs to for verification (number)',
168
+ }), 10);
169
+ const modules = [];
170
+ for (let i = 0; i < isms; i++) {
171
+ modules.push(await createIsmConfig(chain, chainConfigPath));
172
+ }
173
+ return {
174
+ type: IsmType.AGGREGATION,
175
+ modules,
176
+ threshold,
177
+ };
178
+ }
179
+ export async function createRoutingConfig(chain, chainConfigPath) {
180
+ const owner = await input({
181
+ message: 'Enter owner address',
182
+ });
183
+ const ownerAddress = owner;
184
+ const customChains = readChainConfigsIfExists(chainConfigPath);
185
+ delete customChains[chain];
186
+ const chains = await runMultiChainSelectionStep(customChains, `Select origin chains to be verified on ${chain}`, [chain]);
187
+ const domainsMap = {};
188
+ for (const chain of chains) {
189
+ await confirm({
190
+ message: `You are about to configure ISM from source chain ${chain}. Continue?`,
191
+ });
192
+ const config = await createIsmConfig(chain, chainConfigPath);
193
+ domainsMap[chain] = config;
194
+ }
195
+ return {
196
+ type: IsmType.ROUTING,
197
+ owner: ownerAddress,
198
+ domains: domainsMap,
199
+ };
200
+ }
201
+ //# sourceMappingURL=ism.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ism.js","sourceRoot":"","sources":["../../../src/config/ism.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,mBAAmB,CAAC;AAC3D,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAuB,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,QAAQ,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,iBAAiB,CAAC;AACnE,OAAO,EAAE,0BAA0B,EAAE,MAAM,oBAAoB,CAAC;AAChE,OAAO,EAAc,eAAe,EAAE,cAAc,EAAE,MAAM,mBAAmB,CAAC;AAEhF,OAAO,EAAE,wBAAwB,EAAE,MAAM,YAAY,CAAC;AAEtD,MAAM,uBAAuB,GAAG,CAAC,CAAC,MAAM,CAAC;IACvC,IAAI,EAAE,CAAC,CAAC,KAAK,CAAC;QACZ,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,oBAAoB,CAAC;QACvC,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,mBAAmB,CAAC;KACvC,CAAC;IACF,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;IACrB,UAAU,EAAE,CAAC,CAAC,KAAK,CAAC,CAAC,CAAC,MAAM,EAAE,CAAC;CAChC,CAAC,CAAC;AAEH,MAAM,sBAAsB,GAAqB,CAAC,CAAC,IAAI,CAAC,GAAG,EAAE,CAC3D,CAAC,CAAC,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,OAAO,CAAC;IAChC,KAAK,EAAE,CAAC,CAAC,MAAM,EAAE;IACjB,OAAO,EAAE,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC;CACnC,CAAC,CACH,CAAC;AAEF,MAAM,0BAA0B,GAAqB,CAAC;KACnD,IAAI,CAAC,GAAG,EAAE,CACT,CAAC,CAAC,MAAM,CAAC;IACP,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,WAAW,CAAC;IACpC,OAAO,EAAE,CAAC,CAAC,KAAK,CAAC,eAAe,CAAC;IACjC,SAAS,EAAE,CAAC,CAAC,MAAM,EAAE;CACtB,CAAC,CACH;KACA,MAAM;AACL,uCAAuC;AACvC,CAAC,SAAS,EAAE,EAAE;IACZ,OAAO,SAAS,CAAC,OAAO,CAAC,MAAM,IAAI,SAAS,CAAC,SAAS,CAAC;AACzD,CAAC,EACD;IACE,OAAO,EAAE,oDAAoD;CAC9D,CACF,CAAC;AAEJ,MAAM,mBAAmB,GAAG,CAAC,CAAC,MAAM,CAAC;IACnC,IAAI,EAAE,CAAC,CAAC,OAAO,CAAC,OAAO,CAAC,QAAQ,CAAC;CAClC,CAAC,CAAC;AAEH,MAAM,eAAe,GAAG,CAAC,CAAC,KAAK,CAAC;IAC9B,uBAAuB;IACvB,sBAAsB;IACtB,0BAA0B;IAC1B,mBAAmB;CACpB,CAAC,CAAC;AACH,MAAM,kBAAkB,GAAG,CAAC,CAAC,MAAM,CAAC,eAAe,CAAC,CAAC,MAAM,CACzD,CAAC,YAAY,EAAE,EAAE;IACf,sFAAsF;IACtF,KAAK,MAAM,CAAC,GAAG,EAAE,MAAM,CAAC,IAAI,MAAM,CAAC,OAAO,CAAC,YAAY,CAAC,EAAE,CAAC;QACzD,IAAI,MAAM,CAAC,IAAI,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;YACpC,IAAI,MAAM,CAAC,OAAO,IAAI,GAAG,IAAI,MAAM,CAAC,OAAO,EAAE,CAAC;gBAC5C,OAAO,KAAK,CAAC;YACf,CAAC;QACH,CAAC;IACH,CAAC;IACD,OAAO,IAAI,CAAC;AACd,CAAC,EACD;IACE,OAAO,EACL,oEAAoE;CACvE,CACF,CAAC;AAIF,MAAM,UAAU,cAAc,CAAC,QAAgB;IAC7C,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM;QAAE,MAAM,IAAI,KAAK,CAAC,0BAA0B,QAAQ,EAAE,CAAC,CAAC;IACnE,OAAO,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC;AAC9C,CAAC;AAED,MAAM,UAAU,aAAa,CAAC,QAAgB;IAC5C,MAAM,MAAM,GAAG,cAAc,CAAC,QAAQ,CAAC,CAAC;IACxC,IAAI,CAAC,MAAM,CAAC,OAAO,EAAE,CAAC;QACpB,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;QAC1C,MAAM,IAAI,KAAK,CACb,uBAAuB,UAAU,CAAC,IAAI,OAAO,UAAU,CAAC,OAAO,EAAE,CAClE,CAAC;IACJ,CAAC;IACD,MAAM,YAAY,GAAG,MAAM,CAAC,IAAI,CAAC;IACjC,OAAO,YAAY,CAAC;AACtB,CAAC;AAED,MAAM,UAAU,iBAAiB,CAAC,MAAW;IAC3C,OAAO,kBAAkB,CAAC,SAAS,CAAC,MAAM,CAAC,CAAC,OAAO,CAAC;AACtD,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACvC,MAAM,EACN,OAAO,EACP,eAAe,GAKhB;IACC,OAAO,CAAC,2BAA2B,CAAC,CAAC;IACrC,MAAM,YAAY,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;IAC/D,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAAC,YAAY,CAAC,CAAC;IAE9D,MAAM,MAAM,GAAoB,EAAE,CAAC;IACnC,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,GAAG,CAAC,4BAA4B,KAAK,EAAE,CAAC,CAAC;QACzC,MAAM,CAAC,KAAK,CAAC,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAE9D,gFAAgF;QAChF,2BAA2B;QAC3B,2DAA2D;QAC3D,MAAM;IACR,CAAC;IAED,IAAI,iBAAiB,CAAC,MAAM,CAAC,EAAE,CAAC;QAC9B,QAAQ,CAAC,wCAAwC,OAAO,EAAE,CAAC,CAAC;QAC5D,eAAe,CAAC,OAAO,EAAE,MAAM,EAAE,MAAM,CAAC,CAAC;IAC3C,CAAC;SAAM,CAAC;QACN,QAAQ,CACN,iJAAiJ,CAClJ,CAAC;QACF,MAAM,IAAI,KAAK,CAAC,oBAAoB,CAAC,CAAC;IACxC,CAAC;AACH,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,eAAe,CACnC,KAAgB,EAChB,eAAuB;IAEvB,IAAI,UAAwB,CAAC;IAC7B,MAAM,UAAU,GAAG,MAAM,MAAM,CAAC;QAC9B,OAAO,EAAE,iBAAiB;QAC1B,OAAO,EAAE;YACP;gBACE,KAAK,EAAE,OAAO,CAAC,mBAAmB;gBAClC,IAAI,EAAE,OAAO,CAAC,mBAAmB;gBACjC,WAAW,EAAE,6CAA6C;aAC3D;YACD;gBACE,KAAK,EAAE,OAAO,CAAC,oBAAoB;gBACnC,IAAI,EAAE,OAAO,CAAC,oBAAoB;gBAClC,WAAW,EACT,uFAAuF;aAC1F;YACD;gBACE,KAAK,EAAE,OAAO,CAAC,OAAO;gBACtB,IAAI,EAAE,OAAO,CAAC,OAAO;gBACrB,WAAW,EACT,4EAA4E;aAC/E;YACD;gBACE,KAAK,EAAE,OAAO,CAAC,WAAW;gBAC1B,IAAI,EAAE,OAAO,CAAC,WAAW;gBACzB,WAAW,EACT,iEAAiE;aACpE;YACD;gBACE,KAAK,EAAE,OAAO,CAAC,QAAQ;gBACvB,IAAI,EAAE,OAAO,CAAC,QAAQ;gBACtB,WAAW,EACT,iHAAiH;aACpH;SACF;QACD,QAAQ,EAAE,EAAE;KACb,CAAC,CAAC;IACH,IACE,UAAU,KAAK,OAAO,CAAC,mBAAmB;QAC1C,UAAU,KAAK,OAAO,CAAC,oBAAoB,EAC3C,CAAC;QACD,UAAU,GAAG,MAAM,oBAAoB,CAAC,UAAU,CAAC,CAAC;IACtD,CAAC;SAAM,IAAI,UAAU,KAAK,OAAO,CAAC,OAAO,EAAE,CAAC;QAC1C,UAAU,GAAG,MAAM,mBAAmB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACjE,CAAC;SAAM,IAAI,UAAU,KAAK,OAAO,CAAC,WAAW,EAAE,CAAC;QAC9C,UAAU,GAAG,MAAM,uBAAuB,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;IACrE,CAAC;SAAM,IAAI,UAAU,KAAK,OAAO,CAAC,QAAQ,EAAE,CAAC;QAC3C,UAAU,GAAG,EAAE,IAAI,EAAE,OAAO,CAAC,QAAQ,EAAE,CAAC;IAC1C,CAAC;SAAM,CAAC;QACN,MAAM,IAAI,KAAK,CAAC,qBAAqB,UAAU,GAAG,CAAC,CAAC;IACtD,CAAC;IACD,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,oBAAoB,CACxC,IAAgE;IAEhE,MAAM,cAAc,GAAG,MAAM,KAAK,CAAC;QACjC,OAAO,EAAE,qCAAqC;KAC/C,CAAC,CAAC;IACH,MAAM,SAAS,GAAG,QAAQ,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;IAE/C,MAAM,eAAe,GAAG,MAAM,KAAK,CAAC;QAClC,OAAO,EAAE,kDAAkD;KAC5D,CAAC,CAAC;IACH,MAAM,UAAU,GAAG,eAAe,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,CAAC,IAAI,EAAE,CAAC,CAAC;IACnE,OAAO;QACL,IAAI;QACJ,SAAS;QACT,UAAU;KACX,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,uBAAuB,CAC3C,KAAgB,EAChB,eAAuB;IAEvB,MAAM,IAAI,GAAG,QAAQ,CACnB,MAAM,KAAK,CAAC;QACV,OAAO,EAAE,gDAAgD;KAC1D,CAAC,EACF,EAAE,CACH,CAAC;IAEF,MAAM,SAAS,GAAG,QAAQ,CACxB,MAAM,KAAK,CAAC;QACV,OAAO,EAAE,0DAA0D;KACpE,CAAC,EACF,EAAE,CACH,CAAC;IAEF,MAAM,OAAO,GAAwB,EAAE,CAAC;IACxC,KAAK,IAAI,CAAC,GAAG,CAAC,EAAE,CAAC,GAAG,IAAI,EAAE,CAAC,EAAE,EAAE,CAAC;QAC9B,OAAO,CAAC,IAAI,CAAC,MAAM,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC,CAAC;IAC9D,CAAC;IACD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,WAAW;QACzB,OAAO;QACP,SAAS;KACV,CAAC;AACJ,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,mBAAmB,CACvC,KAAgB,EAChB,eAAuB;IAEvB,MAAM,KAAK,GAAG,MAAM,KAAK,CAAC;QACxB,OAAO,EAAE,qBAAqB;KAC/B,CAAC,CAAC;IACH,MAAM,YAAY,GAAG,KAAK,CAAC;IAC3B,MAAM,YAAY,GAAG,wBAAwB,CAAC,eAAe,CAAC,CAAC;IAC/D,OAAO,YAAY,CAAC,KAAK,CAAC,CAAC;IAC3B,MAAM,MAAM,GAAG,MAAM,0BAA0B,CAC7C,YAAY,EACZ,0CAA0C,KAAK,EAAE,EACjD,CAAC,KAAK,CAAC,CACR,CAAC;IAEF,MAAM,UAAU,GAA2B,EAAE,CAAC;IAC9C,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;QAC3B,MAAM,OAAO,CAAC;YACZ,OAAO,EAAE,oDAAoD,KAAK,aAAa;SAChF,CAAC,CAAC;QACH,MAAM,MAAM,GAAG,MAAM,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,CAAC;QAC7D,UAAU,CAAC,KAAK,CAAC,GAAG,MAAM,CAAC;IAC7B,CAAC;IACD,OAAO;QACL,IAAI,EAAE,OAAO,CAAC,OAAO;QACrB,KAAK,EAAE,YAAY;QACnB,OAAO,EAAE,UAAU;KACpB,CAAC;AACJ,CAAC"}
@@ -1,40 +1,31 @@
1
1
  import { z } from 'zod';
2
- import { ChainMap, IsmType, MultisigConfig } from '@hyperlane-xyz/sdk';
2
+ import { ChainMap, MultisigConfig } from '@hyperlane-xyz/sdk';
3
3
  import { FileFormat } from '../utils/files.js';
4
4
  declare const MultisigConfigMapSchema: z.ZodObject<{}, "strip", z.ZodObject<{
5
- type: z.ZodNativeEnum<typeof IsmType>;
6
5
  threshold: z.ZodNumber;
7
6
  validators: z.ZodArray<z.ZodString, "many">;
8
7
  }, "strip", z.ZodTypeAny, {
9
- type: IsmType;
10
8
  threshold: number;
11
9
  validators: string[];
12
10
  }, {
13
- type: IsmType;
14
11
  threshold: number;
15
12
  validators: string[];
16
13
  }>, z.objectOutputType<{}, z.ZodObject<{
17
- type: z.ZodNativeEnum<typeof IsmType>;
18
14
  threshold: z.ZodNumber;
19
15
  validators: z.ZodArray<z.ZodString, "many">;
20
16
  }, "strip", z.ZodTypeAny, {
21
- type: IsmType;
22
17
  threshold: number;
23
18
  validators: string[];
24
19
  }, {
25
- type: IsmType;
26
20
  threshold: number;
27
21
  validators: string[];
28
22
  }>, "strip">, z.objectInputType<{}, z.ZodObject<{
29
- type: z.ZodNativeEnum<typeof IsmType>;
30
23
  threshold: z.ZodNumber;
31
24
  validators: z.ZodArray<z.ZodString, "many">;
32
25
  }, "strip", z.ZodTypeAny, {
33
- type: IsmType;
34
26
  threshold: number;
35
27
  validators: string[];
36
28
  }, {
37
- type: IsmType;
38
29
  threshold: number;
39
30
  validators: string[];
40
31
  }>, "strip">>;
@@ -1 +1 @@
1
- {"version":3,"file":"multisig.d.ts","sourceRoot":"","sources":["../../../src/config/multisig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAKvE,OAAO,EAAE,UAAU,EAAmC,MAAM,mBAAmB,CAAC;AAIhF,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;aAM5B,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,4BAuBlD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,GAAG,WAEhD;AAED,wBAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,OAAO,EACP,eAAe,GAChB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB,iBAyDA"}
1
+ {"version":3,"file":"multisig.d.ts","sourceRoot":"","sources":["../../../src/config/multisig.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,CAAC,EAAE,MAAM,KAAK,CAAC;AAExB,OAAO,EAAE,QAAQ,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAU9D,OAAO,EAAE,UAAU,EAAmC,MAAM,mBAAmB,CAAC;AAIhF,QAAA,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;aAK5B,CAAC;AACF,MAAM,MAAM,iBAAiB,GAAG,CAAC,CAAC,KAAK,CAAC,OAAO,uBAAuB,CAAC,CAAC;AAExE,wBAAgB,kBAAkB,CAAC,QAAQ,EAAE,MAAM,4BAiClD;AAED,wBAAgB,qBAAqB,CAAC,MAAM,EAAE,GAAG,WAEhD;AAED,wBAAsB,oBAAoB,CAAC,EACzC,MAAM,EACN,OAAO,EACP,eAAe,GAChB,EAAE;IACD,MAAM,EAAE,UAAU,CAAC;IACnB,OAAO,EAAE,MAAM,CAAC;IAChB,eAAe,EAAE,MAAM,CAAC;CACzB,iBA6CA"}
@@ -1,13 +1,11 @@
1
- import { input, select } from '@inquirer/prompts';
1
+ import { input } from '@inquirer/prompts';
2
2
  import { z } from 'zod';
3
- import { IsmType } from '@hyperlane-xyz/sdk';
4
- import { objMap } from '@hyperlane-xyz/utils';
3
+ import { isValidAddress, normalizeAddressEvm, objMap, } from '@hyperlane-xyz/utils';
5
4
  import { errorRed, log, logBlue, logGreen } from '../../logger.js';
6
5
  import { runMultiChainSelectionStep } from '../utils/chains.js';
7
6
  import { mergeYamlOrJson, readYamlOrJson } from '../utils/files.js';
8
7
  import { readChainConfigsIfExists } from './chain.js';
9
8
  const MultisigConfigMapSchema = z.object({}).catchall(z.object({
10
- type: z.nativeEnum(IsmType),
11
9
  threshold: z.number(),
12
10
  validators: z.array(z.string()),
13
11
  }));
@@ -21,11 +19,23 @@ export function readMultisigConfig(filePath) {
21
19
  throw new Error(`Invalid multisig config: ${firstIssue.path} => ${firstIssue.message}`);
22
20
  }
23
21
  const parsedConfig = result.data;
24
- const formattedConfig = objMap(parsedConfig, (_, config) => ({
25
- type: config.type,
26
- threshold: config.threshold,
27
- validators: config.validators,
28
- }));
22
+ const formattedConfig = objMap(parsedConfig, (_, config) => {
23
+ if (config.threshold > config.validators.length)
24
+ throw new Error('Threshold cannot be greater than number of validators');
25
+ if (config.threshold < 1)
26
+ throw new Error('Threshold must be greater than 0');
27
+ const validators = [];
28
+ for (const v of config.validators) {
29
+ if (isValidAddress(v))
30
+ validators.push(normalizeAddressEvm(v));
31
+ else
32
+ throw new Error(`Invalid address ${v}`);
33
+ }
34
+ return {
35
+ threshold: config.threshold,
36
+ validators: validators,
37
+ };
38
+ });
29
39
  logGreen(`All multisig configs in ${filePath} are valid`);
30
40
  return formattedConfig;
31
41
  }
@@ -45,17 +55,6 @@ export async function createMultisigConfig({ format, outPath, chainConfigPath, }
45
55
  result[chain] = lastConfig;
46
56
  continue;
47
57
  }
48
- // TODO consider using default and not offering options here
49
- const moduleType = await select({
50
- message: 'Select multisig type',
51
- choices: [
52
- // { value: 'routing, name: 'routing' }, // TODO add support
53
- // { value: 'aggregation, name: 'aggregation' }, // TODO add support
54
- { value: IsmType.MERKLE_ROOT_MULTISIG, name: 'merkle root multisig' },
55
- { value: IsmType.MESSAGE_ID_MULTISIG, name: 'message id multisig' },
56
- ],
57
- pageSize: 5,
58
- });
59
58
  const thresholdInput = await input({
60
59
  message: 'Enter threshold of signers (number)',
61
60
  });
@@ -65,7 +64,6 @@ export async function createMultisigConfig({ format, outPath, chainConfigPath, }
65
64
  });
66
65
  const validators = validatorsInput.split(',').map((v) => v.trim());
67
66
  lastConfig = {
68
- type: moduleType,
69
67
  threshold,
70
68
  validators,
71
69
  };
@@ -1 +1 @@
1
- {"version":3,"file":"multisig.js","sourceRoot":"","sources":["../../../src/config/multisig.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"multisig.js","sourceRoot":"","sources":["../../../src/config/multisig.ts"],"names":[],"mappings":"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"}
@@ -61,7 +61,7 @@ export async function createWarpConfig({ format, outPath, chainConfigPath, }) {
61
61
  const isNft = isNative
62
62
  ? false
63
63
  : await confirm({ message: 'Is this an NFT (i.e. ERC-721)?' });
64
- const syntheticChains = await runMultiChainSelectionStep(customChains, 'Select the chains to which the base token will be connected');
64
+ const syntheticChains = await runMultiChainSelectionStep(customChains, 'Select chains to which the base token will be connected');
65
65
  // TODO add more prompts here to support customizing the token metadata
66
66
  const result = {
67
67
  base: {
@@ -1 +1 @@
1
- {"version":3,"file":"warp.js","sourceRoot":"","sources":["../../../src/config/warp.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"warp.js","sourceRoot":"","sources":["../../../src/config/warp.ts"],"names":[],"mappings":"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"}
@@ -181,6 +181,22 @@ export declare const sdkContractAddressesMap: {
181
181
  mailbox: string;
182
182
  validatorAnnounce: string;
183
183
  };
184
+ mantapacific: {
185
+ merkleRootMultisigIsmFactory: string;
186
+ messageIdMultisigIsmFactory: string;
187
+ aggregationIsmFactory: string;
188
+ aggregationHookFactory: string;
189
+ routingIsmFactory: string;
190
+ proxyAdmin: string;
191
+ mailbox: string;
192
+ domainRoutingIsm: string;
193
+ storageGasOracle: string;
194
+ interchainGasPaymaster: string;
195
+ merkleTreeHook: string;
196
+ aggregationHook: string;
197
+ protocolFee: string;
198
+ validatorAnnounce: string;
199
+ };
184
200
  basegoerli: {
185
201
  merkleRootMultisigIsmFactory: string;
186
202
  messageIdMultisigIsmFactory: string;
@@ -1 +1 @@
1
- {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,QAAQ,EACR,aAAa,EACb,qBAAqB,EACrB,aAAa,EAGd,MAAM,oBAAoB,CAAC;AAM5B,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGnC,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,SAAS,CAAC,EAAE,qBAAqB,CAAC,GAAG,CAAC,8BAMvC;AAED,wBAAgB,UAAU,CAAC,eAAe,EAAE,MAAM;;;EAIjD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;;;;EAKxE;AAED,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,QAAQ,CAAC,aAAa,CAAC,EACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,yBAMvB"}
1
+ {"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../src/context.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EACL,QAAQ,EACR,aAAa,EACb,qBAAqB,EACrB,aAAa,EAGd,MAAM,oBAAoB,CAAC;AAM5B,eAAO,MAAM,uBAAuB;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;CAGnC,CAAC;AAEF,wBAAgB,0BAA0B,CACxC,SAAS,CAAC,EAAE,qBAAqB,CAAC,GAAG,CAAC,8BAMvC;AAED,wBAAgB,UAAU,CAAC,eAAe,EAAE,MAAM;;;EAIjD;AAED,wBAAgB,oBAAoB,CAAC,GAAG,EAAE,MAAM,EAAE,eAAe,EAAE,MAAM;;;;EAKxE;AAED,wBAAgB,gBAAgB,CAC9B,YAAY,EAAE,QAAQ,CAAC,aAAa,CAAC,EACrC,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,yBAMvB"}
@@ -1 +1 @@
1
- {"version":3,"file":"TestRecipientDeployer.js","sourceRoot":"","sources":["../../../src/deploy/TestRecipientDeployer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAiB,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAEL,iBAAiB,GAElB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAW,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAc1D,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa,EAAE,IAAI,sBAAsB,EAAE;CAC5C,CAAC;AAEF,gDAAgD;AAChD,MAAM,OAAO,qBAAsB,SAAQ,iBAG1C;IACC,YAAY,aAA4B;QACtC,KAAK,CAAC,aAAa,EAAE,sBAAsB,EAAE;YAC3C,MAAM,EAAE,KAAK,CAAC,iCAAiC,CAAC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,KAAgB,EAChB,MAA2B;QAE3B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;QAC5E,IAAI;YACF,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;YACrC,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,wBAAwB,EAAE,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,oBAAoB,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,EAAE;gBACpD,IAAI,CAAC,MAAM,CACT,kDAAkD,MAAM,CAAC,wBAAwB,EAAE,CACpF,CAAC;gBACF,MAAM,EAAE,GAAG,aAAa,CAAC,2BAA2B,CAClD,MAAM,CAAC,wBAAwB,CAChC,CAAC;gBACF,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;aAC9C;SACF;QAAC,OAAO,KAAK,EAAE;YACd,IAAI,CAAC,MAAM,CAAC,kCAAkC,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;SAClD;QACD,OAAO;YACL,aAAa;SACd,CAAC;IACJ,CAAC;CACF"}
1
+ {"version":3,"file":"TestRecipientDeployer.js","sourceRoot":"","sources":["../../../src/deploy/TestRecipientDeployer.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,OAAO,CAAC;AAE1B,OAAO,EAAiB,sBAAsB,EAAE,MAAM,qBAAqB,CAAC;AAC5E,OAAO,EAEL,iBAAiB,GAElB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAW,SAAS,EAAE,MAAM,sBAAsB,CAAC;AAc1D,MAAM,CAAC,MAAM,sBAAsB,GAAG;IACpC,aAAa,EAAE,IAAI,sBAAsB,EAAE;CAC5C,CAAC;AAEF,gDAAgD;AAChD,MAAM,OAAO,qBAAsB,SAAQ,iBAG1C;IACC,YAAY,aAA4B;QACtC,KAAK,CAAC,aAAa,EAAE,sBAAsB,EAAE;YAC3C,MAAM,EAAE,KAAK,CAAC,iCAAiC,CAAC;SACjD,CAAC,CAAC;IACL,CAAC;IAED,KAAK,CAAC,eAAe,CACnB,KAAgB,EAChB,MAA2B;QAE3B,MAAM,aAAa,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,eAAe,EAAE,EAAE,CAAC,CAAC;QAC5E,IAAI,CAAC;YACH,IAAI,CAAC,MAAM,CAAC,gBAAgB,KAAK,EAAE,CAAC,CAAC;YACrC,MAAM,GAAG,GAAG,MAAM,aAAa,CAAC,wBAAwB,EAAE,CAAC;YAC3D,IAAI,CAAC,MAAM,CAAC,oBAAoB,KAAK,KAAK,GAAG,EAAE,CAAC,CAAC;YACjD,IAAI,CAAC,SAAS,CAAC,GAAG,EAAE,MAAM,CAAC,wBAAwB,CAAC,EAAE,CAAC;gBACrD,IAAI,CAAC,MAAM,CACT,kDAAkD,MAAM,CAAC,wBAAwB,EAAE,CACpF,CAAC;gBACF,MAAM,EAAE,GAAG,aAAa,CAAC,2BAA2B,CAClD,MAAM,CAAC,wBAAwB,CAChC,CAAC;gBACF,MAAM,IAAI,CAAC,aAAa,CAAC,QAAQ,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YAC/C,CAAC;QACH,CAAC;QAAC,OAAO,KAAK,EAAE,CAAC;YACf,IAAI,CAAC,MAAM,CAAC,kCAAkC,KAAK,KAAK,KAAK,EAAE,CAAC,CAAC;YACjE,IAAI,CAAC,MAAM,CAAC,mCAAmC,CAAC,CAAC;QACnD,CAAC;QACD,OAAO;YACL,aAAa;SACd,CAAC;IACJ,CAAC;CACF"}
@@ -1 +1 @@
1
- {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/deploy/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,WAAW,EACX,sBAAsB,EACtB,WAAW,GAKZ;IACC,IAAI,CAAC,WAAW,EAAE;QAChB,WAAW,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC;KAClE;IACD,IAAI,CAAC,WAAW,EAAE;QAChB,WAAW,GAAG,MAAM,KAAK,CAAC;YACxB,OAAO,EAAE,yDAAyD;SACnE,CAAC,CAAC;QACH,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;KACvC;IAED,IAAI,CAAC,sBAAsB,EAAE;QAC3B,OAAO,CACL,IAAI,EACJ,mFAAmF,CACpF,CAAC;QACF,sBAAsB,GAAG,MAAM,oBAAoB,CACjD,aAAa,EACb,mBAAmB,EACnB,cAAc,CACf,CAAC;KACH;IACD,MAAM,iBAAiB,GAAG,QAAQ,CAAM,sBAAsB,CAAC,CAAC;IAEhE,MAAM,oBAAoB,GAAG;QAC3B,IAAI,EAAE,IAAI;QACV,iBAAiB,EAAE,WAAW;QAC9B,YAAY,EAAE,WAAW;QACzB,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;KACrD,CAAC;IAEF,MAAM,qBAAqB,GAAG;QAC5B,eAAe,EAAE,IAAI;QACrB,IAAI,EAAE,oBAAoB;KAC3B,CAAC;IAEF,MAAM,0BAA0B,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAC;IACvE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;IAEzE,MAAM,iBAAiB,GAAG,YAAY,CACpC,8BAA8B,EAC9B,gBAAgB,CACjB,CAAC;IAEF,QAAQ,CACN,IAAI,EACJ,0EAA0E,EAC1E,IAAI,EACJ,GAAG,iBAAiB,EAAE,CACvB,CAAC;IACF,OAAO;AACT,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,YAAoB,EAAE,EAAE,CACnD,qHAAqH,YAAY,EAAE,CAAC;AAEtI,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE,CAC/B,CAAC;KACE,KAAK,CAAC,EAAE,CAAC;KACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC;KAC9B,IAAI,CAAC,EAAE,CAAC,CAAC;AAEd,SAAS,YAAY,CAAC,QAAa;IACjC,IAAI;QACF,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;KACvC;IAAC,OAAO,KAAK,EAAE;QACd,MAAM,CAAC,6CAA6C,CAAC,CAAC;QACtD,OAAO,EAAE,CAAC;KACX;AACH,CAAC"}
1
+ {"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/deploy/agent.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAC1C,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,iBAAiB,CAAC;AAC5D,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,WAAW,EACX,sBAAsB,EACtB,WAAW,GAKZ;IACC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,MAAM,KAAK,CAAC,EAAE,OAAO,EAAE,wBAAwB,EAAE,CAAC,CAAC;IACnE,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,MAAM,KAAK,CAAC;YACxB,OAAO,EAAE,yDAAyD;SACnE,CAAC,CAAC;QACH,WAAW,GAAG,UAAU,CAAC,WAAW,CAAC,CAAC;IACxC,CAAC;IAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,OAAO,CACL,IAAI,EACJ,mFAAmF,CACpF,CAAC;QACF,sBAAsB,GAAG,MAAM,oBAAoB,CACjD,aAAa,EACb,mBAAmB,EACnB,cAAc,CACf,CAAC;IACJ,CAAC;IACD,MAAM,iBAAiB,GAAG,QAAQ,CAAM,sBAAsB,CAAC,CAAC;IAEhE,MAAM,oBAAoB,GAAG;QAC3B,IAAI,EAAE,IAAI;QACV,iBAAiB,EAAE,WAAW;QAC9B,YAAY,EAAE,WAAW;QACzB,iBAAiB,EAAE,IAAI,CAAC,SAAS,CAAC,iBAAiB,CAAC;KACrD,CAAC;IAEF,MAAM,qBAAqB,GAAG;QAC5B,eAAe,EAAE,IAAI;QACrB,IAAI,EAAE,oBAAoB;KAC3B,CAAC;IAEF,MAAM,0BAA0B,GAAG,YAAY,CAAC,qBAAqB,CAAC,CAAC;IACvE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;IAEzE,MAAM,iBAAiB,GAAG,YAAY,CACpC,8BAA8B,EAC9B,gBAAgB,CACjB,CAAC;IAEF,QAAQ,CACN,IAAI,EACJ,0EAA0E,EAC1E,IAAI,EACJ,GAAG,iBAAiB,EAAE,CACvB,CAAC;IACF,OAAO;AACT,CAAC;AAED,MAAM,mBAAmB,GAAG,CAAC,YAAoB,EAAE,EAAE,CACnD,qHAAqH,YAAY,EAAE,CAAC;AAEtI,MAAM,UAAU,GAAG,CAAC,CAAS,EAAE,EAAE,CAC/B,CAAC;KACE,KAAK,CAAC,EAAE,CAAC;KACT,MAAM,CAAC,CAAC,IAAI,EAAE,EAAE,CAAC,IAAI,KAAK,GAAG,CAAC;KAC9B,IAAI,CAAC,EAAE,CAAC,CAAC;AAEd,SAAS,YAAY,CAAC,QAAa;IACjC,IAAI,CAAC;QACH,OAAO,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,QAAQ,CAAC,CAAC,CAAC;IACxC,CAAC;IAAC,OAAO,KAAK,EAAE,CAAC;QACf,MAAM,CAAC,6CAA6C,CAAC,CAAC;QACtD,OAAO,EAAE,CAAC;IACZ,CAAC;AACH,CAAC"}
@@ -1 +1 @@
1
- {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,SAAS,EAuBV,MAAM,oBAAoB,CAAC;AA0B5B,wBAAsB,aAAa,CAAC,EAClC,GAAG,EACH,eAAe,EACf,MAAM,EACN,aAAa,EACb,cAAc,EACd,aAAa,EACb,OAAO,EACP,gBAAgB,GACjB,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,iBAiCA"}
1
+ {"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"AAGA,OAAO,EAEL,SAAS,EAwBV,MAAM,oBAAoB,CAAC;AA4B5B,wBAAsB,aAAa,CAAC,EAClC,GAAG,EACH,eAAe,EACf,MAAM,EACN,aAAa,EACb,cAAc,EACd,aAAa,EACb,OAAO,EACP,gBAAgB,GACjB,EAAE;IACD,GAAG,EAAE,MAAM,CAAC;IACZ,eAAe,EAAE,MAAM,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,OAAO,EAAE,MAAM,CAAC;IAChB,gBAAgB,EAAE,OAAO,CAAC;CAC3B,iBA0CA"}
@@ -1,24 +1,34 @@
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';
3
+ import { GasOracleContractType, HookType, HyperlaneCoreDeployer, HyperlaneIsmFactory, HyperlaneProxyFactoryDeployer, IsmType, agentStartBlocks, buildAgentConfig, buildAggregationIsmConfigs, defaultMultisigConfigs, multisigIsmVerificationCost, serializeContractsMap, } from '@hyperlane-xyz/sdk';
4
4
  import { objFilter, objMerge } from '@hyperlane-xyz/utils';
5
5
  import { log, logBlue, logGray, logGreen, logRed } from '../../logger.js';
6
6
  import { readDeploymentArtifacts } from '../config/artifacts.js';
7
7
  import { readHookConfig } from '../config/hooks.js';
8
+ import { readIsmConfig } from '../config/ism.js';
8
9
  import { readMultisigConfig } from '../config/multisig.js';
9
10
  import { MINIMUM_CORE_DEPLOY_GAS } from '../consts.js';
10
11
  import { getContextWithSigner, getMergedContractAddresses, sdkContractAddressesMap, } from '../context.js';
11
12
  import { runMultiChainSelectionStep } from '../utils/chains.js';
12
13
  import { prepNewArtifactsFiles, runFileSelectionStep, writeJson, } from '../utils/files.js';
13
14
  import { TestRecipientDeployer, } from './TestRecipientDeployer.js';
15
+ import { isISMConfig, isZODISMConfig } from './utils.js';
14
16
  import { runPreflightChecksForChains } from './utils.js';
15
17
  export async function runCoreDeploy({ key, chainConfigPath, chains, ismConfigPath, hookConfigPath, artifactsPath, outPath, skipConfirmation, }) {
16
18
  const { customChains, multiProvider, signer } = getContextWithSigner(key, chainConfigPath);
17
19
  if (!chains?.length) {
18
- chains = await runMultiChainSelectionStep(customChains, 'Select chains to which core contacts will be deployed');
20
+ chains = await runMultiChainSelectionStep(customChains, 'Select chains to connect');
19
21
  }
20
22
  const artifacts = await runArtifactStep(chains, artifactsPath);
21
- const multisigConfig = await runIsmStep(chains, ismConfigPath);
23
+ const result = await runIsmStep(chains, ismConfigPath);
24
+ // we can either specify the full ISM config or just the multisig config
25
+ const isAdvancedIsm = isISMConfig(result);
26
+ const ismConfigs = isAdvancedIsm
27
+ ? result
28
+ : undefined;
29
+ const multisigConfigs = isAdvancedIsm
30
+ ? defaultMultisigConfigs
31
+ : result;
22
32
  // TODO re-enable when hook config is actually used
23
33
  await runHookStep(chains, hookConfigPath);
24
34
  const deploymentParams = {
@@ -26,7 +36,8 @@ export async function runCoreDeploy({ key, chainConfigPath, chains, ismConfigPat
26
36
  signer,
27
37
  multiProvider,
28
38
  artifacts,
29
- multisigConfig,
39
+ ismConfigs,
40
+ multisigConfigs,
30
41
  outPath,
31
42
  skipConfirmation,
32
43
  };
@@ -49,28 +60,47 @@ async function runArtifactStep(selectedChains, artifactsPath) {
49
60
  }
50
61
  const artifacts = readDeploymentArtifacts(artifactsPath);
51
62
  const artifactChains = Object.keys(artifacts).filter((c) => selectedChains.includes(c));
52
- log(`Found existing artifacts for chains: ${artifactChains.join(', ')}`);
63
+ if (artifactChains.length === 0) {
64
+ logGray('No artifacts found for selected chains');
65
+ }
66
+ else {
67
+ log(`Found existing artifacts for chains: ${artifactChains.join(', ')}`);
68
+ }
53
69
  return artifacts;
54
70
  }
55
71
  async function runIsmStep(selectedChains, ismConfigPath) {
56
72
  if (!ismConfigPath) {
57
73
  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');
74
+ logGray('Example config: https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/cli/typescript/cli/examples/ism.yaml');
59
75
  ismConfigPath = await runFileSelectionStep('./configs', 'ISM config', 'ism');
60
76
  }
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(', ')}`);
77
+ const isAdvancedIsm = isZODISMConfig(ismConfigPath);
78
+ // separate flow for 'ism' and 'ism-advanced' options
79
+ if (isAdvancedIsm) {
80
+ const ismConfig = readIsmConfig(ismConfigPath);
81
+ const requiredIsms = objFilter(ismConfig, (chain, config) => selectedChains.includes(chain));
82
+ // selected chains - (user configs + default configs) = missing config
83
+ const missingConfigs = selectedChains.filter((c) => !Object.keys(ismConfig).includes(c));
84
+ if (missingConfigs.length > 0) {
85
+ throw new Error(`Missing advanced ISM config for one or more chains: ${missingConfigs.join(', ')}`);
86
+ }
87
+ log(`Found configs for chains: ${selectedChains.join(', ')}`);
88
+ return requiredIsms;
89
+ }
90
+ else {
91
+ const multisigConfigs = {
92
+ ...defaultMultisigConfigs,
93
+ ...readMultisigConfig(ismConfigPath),
94
+ };
95
+ const requiredMultisigs = objFilter(multisigConfigs, (chain, config) => selectedChains.includes(chain));
96
+ // selected chains - (user configs + default configs) = missing config
97
+ const missingConfigs = selectedChains.filter((c) => !Object.keys(requiredMultisigs).includes(c));
98
+ if (missingConfigs.length > 0) {
99
+ throw new Error(`Missing ISM config for one or more chains: ${missingConfigs.join(', ')}`);
100
+ }
101
+ log(`Found configs for chains: ${selectedChains.join(', ')}`);
102
+ return requiredMultisigs;
71
103
  }
72
- log(`Found configs for chains: ${selectedChains.join(', ')}`);
73
- return requiredMultisigs;
74
104
  }
75
105
  async function runHookStep(_selectedChains, hookConfigPath) {
76
106
  if ('TODO: Skip this step for now as values are unused')
@@ -100,7 +130,7 @@ async function runDeployPlanStep({ chains, signer, artifacts, skipConfirmation,
100
130
  if (!isConfirmed)
101
131
  throw new Error('Deployment cancelled');
102
132
  }
103
- async function executeDeploy({ chains, signer, multiProvider, outPath, artifacts = {}, multisigConfig = {}, }) {
133
+ async function executeDeploy({ chains, signer, multiProvider, outPath, artifacts = {}, ismConfigs = {}, multisigConfigs = {}, }) {
104
134
  logBlue('All systems ready, captain! Beginning deployment...');
105
135
  const [contractsFilePath, agentFilePath] = prepNewArtifactsFiles(outPath, [
106
136
  { filename: 'core-deployment', description: 'Contract addresses' },
@@ -128,7 +158,8 @@ async function executeDeploy({ chains, signer, multiProvider, outPath, artifacts
128
158
  const defaultIsms = {};
129
159
  for (const ismOrigin of chains) {
130
160
  logBlue(`Deploying ISM to ${ismOrigin}`);
131
- const ismConfig = buildIsmConfig(owner, ismOrigin, chains, multisigConfig);
161
+ const ismConfig = ismConfigs[ismOrigin] ??
162
+ buildIsmConfig(owner, ismOrigin, chains, multisigConfigs);
132
163
  ismContracts[ismOrigin] = {
133
164
  multisigIsm: await ismFactory.deploy(ismOrigin, ismConfig),
134
165
  };
@@ -140,7 +171,7 @@ async function executeDeploy({ chains, signer, multiProvider, outPath, artifacts
140
171
  logBlue(`Deploying core contracts to ${chains.join(', ')}`);
141
172
  const coreDeployer = new HyperlaneCoreDeployer(multiProvider, ismFactory);
142
173
  coreDeployer.cacheAddressesMap(mergedContractAddrs);
143
- const coreConfigs = buildCoreConfigMap(owner, chains, defaultIsms, multisigConfig);
174
+ const coreConfigs = buildCoreConfigMap(owner, chains, defaultIsms, multisigConfigs ?? defaultMultisigConfigs);
144
175
  const coreContracts = await coreDeployer.deploy(coreConfigs);
145
176
  artifacts = writeMergedAddresses(contractsFilePath, artifacts, coreContracts);
146
177
  logGreen('Core contracts deployed');
@@ -160,11 +191,11 @@ async function executeDeploy({ chains, signer, multiProvider, outPath, artifacts
160
191
  logBlue(`Agent configs are in ${agentFilePath}`);
161
192
  }
162
193
  function buildIsmConfig(owner, local, chains, multisigIsmConfigs) {
163
- const multisigConfigs = buildMultisigIsmConfigs(IsmType.MESSAGE_ID_MULTISIG, local, chains, multisigIsmConfigs);
194
+ const aggregationIsmConfigs = buildAggregationIsmConfigs(local, chains, multisigIsmConfigs);
164
195
  return {
165
196
  owner,
166
197
  type: IsmType.ROUTING,
167
- domains: multisigConfigs,
198
+ domains: aggregationIsmConfigs,
168
199
  };
169
200
  }
170
201
  function buildCoreConfigMap(owner, chains, defaultIsms, multisigConfig) {
@@ -187,8 +218,8 @@ function buildCoreConfigMap(owner, chains, defaultIsms, multisigConfig) {
187
218
  },
188
219
  requiredHook: {
189
220
  type: HookType.PROTOCOL_FEE,
190
- maxProtocolFee: ethers.utils.parseUnits('1', 'gwei'),
191
- protocolFee: ethers.utils.parseUnits('0', 'wei'),
221
+ maxProtocolFee: ethers.utils.parseUnits('1', 'gwei'), // 1 gwei of native token
222
+ protocolFee: ethers.utils.parseUnits('0', 'wei'), // 1 wei
192
223
  beneficiary: owner,
193
224
  owner,
194
225
  },
@@ -218,7 +249,14 @@ function buildIgpConfigMap(owner, chains, multisigConfigs) {
218
249
  for (const remote of chains) {
219
250
  if (chain === remote)
220
251
  continue;
221
- overhead[remote] = multisigIsmVerificationCost(multisigConfigs[chain].threshold, multisigConfigs[chain].validators.length);
252
+ // TODO: accurate estimate of gas from ChainMap<ISMConfig>
253
+ const threshold = multisigConfigs[remote]
254
+ ? multisigConfigs[remote].threshold
255
+ : 2;
256
+ const validatorsLength = multisigConfigs[remote]
257
+ ? multisigConfigs[remote].validators.length
258
+ : 3;
259
+ overhead[remote] = multisigIsmVerificationCost(threshold, validatorsLength);
222
260
  gasOracleType[remote] = GasOracleContractType.StorageGasOracle;
223
261
  }
224
262
  configMap[chain] = {