@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.
- package/README.md +6 -1
- package/dist/cli.d.ts +1 -1
- package/dist/cli.d.ts.map +1 -1
- package/dist/cli.js +27 -3
- package/dist/cli.js.map +1 -1
- package/dist/env.d.ts +2 -0
- package/dist/env.d.ts.map +1 -0
- package/dist/env.js +14 -0
- package/dist/env.js.map +1 -0
- package/dist/src/avs/config.d.ts +11 -0
- package/dist/src/avs/config.d.ts.map +1 -0
- package/dist/src/avs/config.js +10 -0
- package/dist/src/avs/config.js.map +1 -0
- package/dist/src/avs/stakeRegistry.d.ts +19 -0
- package/dist/src/avs/stakeRegistry.d.ts.map +1 -0
- package/dist/src/avs/stakeRegistry.js +94 -0
- package/dist/src/avs/stakeRegistry.js.map +1 -0
- package/dist/src/commands/avs.d.ts +12 -0
- package/dist/src/commands/avs.d.ts.map +1 -0
- package/dist/src/commands/avs.js +58 -0
- package/dist/src/commands/avs.js.map +1 -0
- package/dist/src/commands/chains.d.ts.map +1 -1
- package/dist/src/commands/chains.js +46 -27
- package/dist/src/commands/chains.js.map +1 -1
- package/dist/src/commands/config.js +74 -85
- package/dist/src/commands/config.js.map +1 -1
- package/dist/src/commands/deploy.d.ts.map +1 -1
- package/dist/src/commands/deploy.js +58 -91
- package/dist/src/commands/deploy.js.map +1 -1
- package/dist/src/commands/hook.d.ts +12 -0
- package/dist/src/commands/hook.d.ts.map +1 -0
- package/dist/src/commands/hook.js +34 -0
- package/dist/src/commands/hook.js.map +1 -0
- package/dist/src/commands/ism.d.ts +12 -0
- package/dist/src/commands/ism.d.ts.map +1 -0
- package/dist/src/commands/ism.js +36 -0
- package/dist/src/commands/ism.js.map +1 -0
- package/dist/src/commands/options.d.ts +19 -7
- package/dist/src/commands/options.d.ts.map +1 -1
- package/dist/src/commands/options.js +90 -27
- package/dist/src/commands/options.js.map +1 -1
- package/dist/src/commands/send.d.ts +14 -1
- package/dist/src/commands/send.d.ts.map +1 -1
- package/dist/src/commands/send.js +32 -55
- package/dist/src/commands/send.js.map +1 -1
- package/dist/src/commands/signCommands.d.ts +3 -0
- package/dist/src/commands/signCommands.d.ts.map +1 -0
- package/dist/src/commands/signCommands.js +11 -0
- package/dist/src/commands/signCommands.js.map +1 -0
- package/dist/src/commands/status.d.ts +5 -2
- package/dist/src/commands/status.d.ts.map +1 -1
- package/dist/src/commands/status.js +9 -19
- package/dist/src/commands/status.js.map +1 -1
- package/dist/src/config/chain.d.ts +5 -7
- package/dist/src/config/chain.d.ts.map +1 -1
- package/dist/src/config/chain.js +94 -64
- package/dist/src/config/chain.js.map +1 -1
- package/dist/src/config/chain.test.d.ts +2 -0
- package/dist/src/config/chain.test.d.ts.map +1 -0
- package/dist/src/config/chain.test.js +9 -0
- package/dist/src/config/chain.test.js.map +1 -0
- package/dist/src/config/hooks.d.ts +91 -214
- package/dist/src/config/hooks.d.ts.map +1 -1
- package/dist/src/config/hooks.js +218 -122
- package/dist/src/config/hooks.js.map +1 -1
- package/dist/src/config/ism.d.ts +74 -0
- package/dist/src/config/ism.d.ts.map +1 -0
- package/dist/src/config/ism.js +223 -0
- package/dist/src/config/ism.js.map +1 -0
- package/dist/src/config/multisig.d.ts +4 -14
- package/dist/src/config/multisig.d.ts.map +1 -1
- package/dist/src/config/multisig.js +35 -29
- package/dist/src/config/multisig.js.map +1 -1
- package/dist/src/config/warp.d.ts +7 -180
- package/dist/src/config/warp.d.ts.map +1 -1
- package/dist/src/config/warp.js +55 -62
- package/dist/src/config/warp.js.map +1 -1
- package/dist/src/consts.d.ts +1 -0
- package/dist/src/consts.d.ts.map +1 -1
- package/dist/src/consts.js +1 -0
- package/dist/src/consts.js.map +1 -1
- package/dist/src/context/context.d.ts +14 -0
- package/dist/src/context/context.d.ts.map +1 -0
- package/dist/src/context/context.js +108 -0
- package/dist/src/context/context.js.map +1 -0
- package/dist/src/context/types.d.ts +33 -0
- package/dist/src/context/types.d.ts.map +1 -0
- package/dist/src/context/types.js.map +1 -0
- package/dist/src/deploy/agent.d.ts +6 -4
- package/dist/src/deploy/agent.d.ts.map +1 -1
- package/dist/src/deploy/agent.js +10 -24
- package/dist/src/deploy/agent.js.map +1 -1
- package/dist/src/deploy/core.d.ts +10 -7
- package/dist/src/deploy/core.d.ts.map +1 -1
- package/dist/src/deploy/core.js +156 -160
- package/dist/src/deploy/core.js.map +1 -1
- package/dist/src/deploy/dry-run.d.ts +19 -0
- package/dist/src/deploy/dry-run.d.ts.map +1 -0
- package/dist/src/deploy/dry-run.js +45 -0
- package/dist/src/deploy/dry-run.js.map +1 -0
- package/dist/src/deploy/utils.d.ts +15 -8
- package/dist/src/deploy/utils.d.ts.map +1 -1
- package/dist/src/deploy/utils.js +60 -11
- package/dist/src/deploy/utils.js.map +1 -1
- package/dist/src/deploy/warp.d.ts +4 -7
- package/dist/src/deploy/warp.d.ts.map +1 -1
- package/dist/src/deploy/warp.js +131 -169
- package/dist/src/deploy/warp.js.map +1 -1
- package/dist/src/hook/read.d.ts +13 -0
- package/dist/src/hook/read.d.ts.map +1 -0
- package/dist/src/hook/read.js +25 -0
- package/dist/src/hook/read.js.map +1 -0
- package/dist/src/ism/read.d.ts +13 -0
- package/dist/src/ism/read.d.ts.map +1 -0
- package/dist/src/ism/read.js +25 -0
- package/dist/src/ism/read.js.map +1 -0
- package/dist/src/logger.d.ts +17 -0
- package/dist/src/logger.d.ts.map +1 -0
- package/dist/src/logger.js +32 -0
- package/dist/src/logger.js.map +1 -0
- package/dist/src/registry/MergedRegistry.d.ts +35 -0
- package/dist/src/registry/MergedRegistry.d.ts.map +1 -0
- package/dist/src/registry/MergedRegistry.js +83 -0
- package/dist/src/registry/MergedRegistry.js.map +1 -0
- package/dist/src/send/message.d.ts +7 -6
- package/dist/src/send/message.d.ts.map +1 -1
- package/dist/src/send/message.js +40 -22
- package/dist/src/send/message.js.map +1 -1
- package/dist/src/send/transfer.d.ts +8 -10
- package/dist/src/send/transfer.d.ts.map +1 -1
- package/dist/src/send/transfer.js +68 -70
- package/dist/src/send/transfer.js.map +1 -1
- package/dist/src/status/message.d.ts +7 -5
- package/dist/src/status/message.d.ts.map +1 -1
- package/dist/src/status/message.js +25 -12
- package/dist/src/status/message.js.map +1 -1
- package/dist/src/submit/submit.d.ts +5 -0
- package/dist/src/submit/submit.d.ts.map +1 -0
- package/dist/src/submit/submit.js +30 -0
- package/dist/src/submit/submit.js.map +1 -0
- package/dist/src/submit/types.d.ts +18 -0
- package/dist/src/submit/types.d.ts.map +1 -0
- package/dist/src/submit/types.js +2 -0
- package/dist/src/{deploy → submit}/types.js.map +1 -1
- package/dist/src/tests/deployTestErc20.d.ts +2 -0
- package/dist/src/tests/deployTestErc20.d.ts.map +1 -0
- package/dist/src/tests/deployTestErc20.js +26 -0
- package/dist/src/tests/deployTestErc20.js.map +1 -0
- package/dist/src/tests/hooks.test.d.ts +2 -0
- package/dist/src/tests/hooks.test.d.ts.map +1 -0
- package/dist/src/tests/hooks.test.js +83 -0
- package/dist/src/tests/hooks.test.js.map +1 -0
- package/dist/src/tests/ism.test.d.ts +2 -0
- package/dist/src/tests/ism.test.d.ts.map +1 -0
- package/dist/src/tests/ism.test.js +76 -0
- package/dist/src/tests/ism.test.js.map +1 -0
- package/dist/src/tests/multisig.test.d.ts +2 -0
- package/dist/src/tests/multisig.test.d.ts.map +1 -0
- package/dist/src/tests/multisig.test.js +34 -0
- package/dist/src/tests/multisig.test.js.map +1 -0
- package/dist/src/utils/balances.d.ts +2 -4
- package/dist/src/utils/balances.d.ts.map +1 -1
- package/dist/src/utils/balances.js +8 -12
- package/dist/src/utils/balances.js.map +1 -1
- package/dist/src/utils/chains.d.ts +3 -2
- package/dist/src/utils/chains.d.ts.map +1 -1
- package/dist/src/utils/chains.js +42 -23
- package/dist/src/utils/chains.js.map +1 -1
- package/dist/src/utils/env.d.ts +6 -0
- package/dist/src/utils/env.d.ts.map +1 -0
- package/dist/src/utils/env.js +9 -0
- package/dist/src/utils/env.js.map +1 -0
- package/dist/src/utils/files.d.ts +7 -4
- package/dist/src/utils/files.d.ts.map +1 -1
- package/dist/src/utils/files.js +52 -29
- package/dist/src/utils/files.js.map +1 -1
- package/dist/src/utils/keys.d.ts +28 -1
- package/dist/src/utils/keys.d.ts.map +1 -1
- package/dist/src/utils/keys.js +65 -6
- package/dist/src/utils/keys.js.map +1 -1
- package/dist/src/utils/time.d.ts.map +1 -1
- package/dist/src/utils/time.js +8 -1
- package/dist/src/utils/time.js.map +1 -1
- package/dist/src/utils/time.test.d.ts +2 -0
- package/dist/src/utils/time.test.d.ts.map +1 -0
- package/dist/src/utils/time.test.js +9 -0
- package/dist/src/utils/time.test.js.map +1 -0
- package/dist/src/utils/tokens.d.ts +3 -0
- package/dist/src/utils/tokens.d.ts.map +1 -0
- package/dist/src/utils/tokens.js +14 -0
- package/dist/src/utils/tokens.js.map +1 -0
- package/dist/src/utils/version-check.d.ts +2 -0
- package/dist/src/utils/version-check.d.ts.map +1 -0
- package/dist/src/utils/version-check.js +15 -0
- package/dist/src/utils/version-check.js.map +1 -0
- package/dist/src/version.d.ts +2 -0
- package/dist/src/version.d.ts.map +1 -0
- package/dist/src/version.js +2 -0
- package/dist/src/version.js.map +1 -0
- package/examples/chain-config.yaml +38 -40
- package/examples/contract-artifacts.yaml +4 -4
- package/examples/hooks.yaml +66 -0
- package/examples/ism-advanced.yaml +33 -0
- package/examples/{multisig-ism.yaml → ism.yaml} +0 -8
- package/examples/warp-route-deployment.yaml +32 -0
- package/package.json +27 -14
- package/dist/logger.d.ts +0 -13
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -44
- package/dist/logger.js.map +0 -1
- package/dist/src/config/artifacts.d.ts +0 -3
- package/dist/src/config/artifacts.d.ts.map +0 -1
- package/dist/src/config/artifacts.js +0 -18
- package/dist/src/config/artifacts.js.map +0 -1
- package/dist/src/context.d.ts +0 -388
- package/dist/src/context.d.ts.map +0 -1
- package/dist/src/context.js +0 -30
- package/dist/src/context.js.map +0 -1
- package/dist/src/deploy/TestRecipientDeployer.d.ts +0 -20
- package/dist/src/deploy/TestRecipientDeployer.d.ts.map +0 -1
- package/dist/src/deploy/TestRecipientDeployer.js +0 -36
- package/dist/src/deploy/TestRecipientDeployer.js.map +0 -1
- package/dist/src/deploy/types.d.ts +0 -21
- package/dist/src/deploy/types.d.ts.map +0 -1
- package/examples/anvil-chains.yaml +0 -22
- package/examples/hook-config.yaml +0 -18
- package/examples/warp-tokens.yaml +0 -26
- /package/dist/src/{deploy → context}/types.js +0 -0
|
@@ -0,0 +1,223 @@
|
|
|
1
|
+
import { confirm, input, select } from '@inquirer/prompts';
|
|
2
|
+
import { z } from 'zod';
|
|
3
|
+
import { IsmType, ZHash } from '@hyperlane-xyz/sdk';
|
|
4
|
+
import { errorRed, log, logBlue, logBoldUnderlinedRed, logGreen, logRed, } from '../logger.js';
|
|
5
|
+
import { runMultiChainSelectionStep } from '../utils/chains.js';
|
|
6
|
+
import { mergeYamlOrJson, readYamlOrJson } from '../utils/files.js';
|
|
7
|
+
const MultisigIsmConfigSchema = z.object({
|
|
8
|
+
type: z.union([
|
|
9
|
+
z.literal(IsmType.MERKLE_ROOT_MULTISIG),
|
|
10
|
+
z.literal(IsmType.MESSAGE_ID_MULTISIG),
|
|
11
|
+
]),
|
|
12
|
+
threshold: z.number(),
|
|
13
|
+
validators: z.array(ZHash),
|
|
14
|
+
});
|
|
15
|
+
const RoutingIsmConfigSchema = z.lazy(() => z.object({
|
|
16
|
+
type: z.union([
|
|
17
|
+
z.literal(IsmType.ROUTING),
|
|
18
|
+
z.literal(IsmType.FALLBACK_ROUTING),
|
|
19
|
+
]),
|
|
20
|
+
owner: ZHash,
|
|
21
|
+
domains: z.record(IsmConfigSchema),
|
|
22
|
+
}));
|
|
23
|
+
const AggregationIsmConfigSchema = z
|
|
24
|
+
.lazy(() => z.object({
|
|
25
|
+
type: z.literal(IsmType.AGGREGATION),
|
|
26
|
+
modules: z.array(IsmConfigSchema),
|
|
27
|
+
threshold: z.number(),
|
|
28
|
+
}))
|
|
29
|
+
.refine(
|
|
30
|
+
// check ig modules.length >= threshold
|
|
31
|
+
(ismConfig) => {
|
|
32
|
+
return ismConfig.modules.length >= ismConfig.threshold;
|
|
33
|
+
}, {
|
|
34
|
+
message: 'Threshold cannot be greater than number of modules',
|
|
35
|
+
});
|
|
36
|
+
const TestIsmConfigSchema = z.object({
|
|
37
|
+
type: z.literal(IsmType.TEST_ISM),
|
|
38
|
+
});
|
|
39
|
+
const TrustedRelayerIsmConfigSchema = z.object({
|
|
40
|
+
type: z.literal(IsmType.TRUSTED_RELAYER),
|
|
41
|
+
relayer: ZHash,
|
|
42
|
+
});
|
|
43
|
+
const IsmConfigSchema = z.union([
|
|
44
|
+
MultisigIsmConfigSchema,
|
|
45
|
+
RoutingIsmConfigSchema,
|
|
46
|
+
AggregationIsmConfigSchema,
|
|
47
|
+
TestIsmConfigSchema,
|
|
48
|
+
TrustedRelayerIsmConfigSchema,
|
|
49
|
+
]);
|
|
50
|
+
const IsmConfigMapSchema = z.record(IsmConfigSchema).refine((ismConfigMap) => {
|
|
51
|
+
// check if any key in IsmConfigMap is found in its own RoutingIsmConfigSchema.domains
|
|
52
|
+
for (const [key, config] of Object.entries(ismConfigMap)) {
|
|
53
|
+
if (config.type === IsmType.ROUTING) {
|
|
54
|
+
if (config.domains && key in config.domains) {
|
|
55
|
+
return false;
|
|
56
|
+
}
|
|
57
|
+
}
|
|
58
|
+
}
|
|
59
|
+
return true;
|
|
60
|
+
}, {
|
|
61
|
+
message: 'Cannot set RoutingIsm.domain to the same chain you are configuring',
|
|
62
|
+
});
|
|
63
|
+
export function parseIsmConfig(filePath) {
|
|
64
|
+
const config = readYamlOrJson(filePath);
|
|
65
|
+
if (!config)
|
|
66
|
+
throw new Error(`No ISM config found at ${filePath}`);
|
|
67
|
+
return IsmConfigMapSchema.safeParse(config);
|
|
68
|
+
}
|
|
69
|
+
export function readIsmConfig(filePath) {
|
|
70
|
+
const result = parseIsmConfig(filePath);
|
|
71
|
+
if (!result.success) {
|
|
72
|
+
const firstIssue = result.error.issues[0];
|
|
73
|
+
throw new Error(`Invalid ISM config: ${firstIssue.path} => ${firstIssue.message}`);
|
|
74
|
+
}
|
|
75
|
+
const parsedConfig = result.data;
|
|
76
|
+
return parsedConfig;
|
|
77
|
+
}
|
|
78
|
+
export function isValildIsmConfig(config) {
|
|
79
|
+
return IsmConfigMapSchema.safeParse(config).success;
|
|
80
|
+
}
|
|
81
|
+
export async function createIsmConfigMap({ context, outPath, }) {
|
|
82
|
+
logBlue('Creating a new advanced ISM config');
|
|
83
|
+
logBoldUnderlinedRed('WARNING: USE AT YOUR RISK.');
|
|
84
|
+
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.');
|
|
85
|
+
const chains = await runMultiChainSelectionStep(context.chainMetadata, 'Select chains to configure ISM for', true);
|
|
86
|
+
const result = {};
|
|
87
|
+
for (const chain of chains) {
|
|
88
|
+
log(`Setting values for chain ${chain}`);
|
|
89
|
+
result[chain] = await createIsmConfig(chain, chains);
|
|
90
|
+
// TODO consider re-enabling. Disabling based on feedback from @nambrot for now.
|
|
91
|
+
// repeat = await confirm({
|
|
92
|
+
// message: 'Use this same config for remaining chains?',
|
|
93
|
+
// });
|
|
94
|
+
}
|
|
95
|
+
if (isValildIsmConfig(result)) {
|
|
96
|
+
logGreen(`ISM config is valid, writing to file ${outPath}`);
|
|
97
|
+
mergeYamlOrJson(outPath, result);
|
|
98
|
+
}
|
|
99
|
+
else {
|
|
100
|
+
errorRed(`ISM config is invalid, please see https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/typescript/cli/examples/ism.yaml for an example`);
|
|
101
|
+
throw new Error('Invalid ISM config');
|
|
102
|
+
}
|
|
103
|
+
}
|
|
104
|
+
export async function createIsmConfig(remote, origins) {
|
|
105
|
+
let lastConfig;
|
|
106
|
+
const moduleType = await select({
|
|
107
|
+
message: 'Select ISM type',
|
|
108
|
+
choices: [
|
|
109
|
+
{
|
|
110
|
+
value: IsmType.MESSAGE_ID_MULTISIG,
|
|
111
|
+
description: 'Validators need to sign just this messageId',
|
|
112
|
+
},
|
|
113
|
+
{
|
|
114
|
+
value: IsmType.MERKLE_ROOT_MULTISIG,
|
|
115
|
+
description: 'Validators need to sign the root of the merkle tree of all messages from origin chain',
|
|
116
|
+
},
|
|
117
|
+
{
|
|
118
|
+
value: IsmType.ROUTING,
|
|
119
|
+
description: 'Each origin chain can be verified by the specified ISM type via RoutingISM',
|
|
120
|
+
},
|
|
121
|
+
{
|
|
122
|
+
value: IsmType.FALLBACK_ROUTING,
|
|
123
|
+
description: "You can specify ISM type for specific chains you like and fallback to mailbox's default ISM for other chains via DefaultFallbackRoutingISM",
|
|
124
|
+
},
|
|
125
|
+
{
|
|
126
|
+
value: IsmType.AGGREGATION,
|
|
127
|
+
description: 'You can aggregate multiple ISMs into one ISM via AggregationISM',
|
|
128
|
+
},
|
|
129
|
+
{
|
|
130
|
+
value: IsmType.TRUSTED_RELAYER,
|
|
131
|
+
description: 'Deliver messages from an authorized address',
|
|
132
|
+
},
|
|
133
|
+
{
|
|
134
|
+
value: IsmType.TEST_ISM,
|
|
135
|
+
description: 'ISM where you can deliver messages without any validation (WARNING: only for testing, do not use in production)',
|
|
136
|
+
},
|
|
137
|
+
],
|
|
138
|
+
pageSize: 10,
|
|
139
|
+
});
|
|
140
|
+
if (moduleType === IsmType.MESSAGE_ID_MULTISIG ||
|
|
141
|
+
moduleType === IsmType.MERKLE_ROOT_MULTISIG) {
|
|
142
|
+
lastConfig = await createMultisigConfig(moduleType);
|
|
143
|
+
}
|
|
144
|
+
else if (moduleType === IsmType.ROUTING ||
|
|
145
|
+
moduleType === IsmType.FALLBACK_ROUTING) {
|
|
146
|
+
lastConfig = await createRoutingConfig(moduleType, remote, origins);
|
|
147
|
+
}
|
|
148
|
+
else if (moduleType === IsmType.AGGREGATION) {
|
|
149
|
+
lastConfig = await createAggregationConfig(remote, origins);
|
|
150
|
+
}
|
|
151
|
+
else if (moduleType === IsmType.TEST_ISM) {
|
|
152
|
+
lastConfig = { type: IsmType.TEST_ISM };
|
|
153
|
+
}
|
|
154
|
+
else if (moduleType === IsmType.TRUSTED_RELAYER) {
|
|
155
|
+
lastConfig = await createTrustedRelayerConfig();
|
|
156
|
+
}
|
|
157
|
+
else {
|
|
158
|
+
throw new Error(`Invalid ISM type: ${moduleType}}`);
|
|
159
|
+
}
|
|
160
|
+
return lastConfig;
|
|
161
|
+
}
|
|
162
|
+
export async function createMultisigConfig(type) {
|
|
163
|
+
const thresholdInput = await input({
|
|
164
|
+
message: 'Enter threshold of validators (number)',
|
|
165
|
+
});
|
|
166
|
+
const threshold = parseInt(thresholdInput, 10);
|
|
167
|
+
const validatorsInput = await input({
|
|
168
|
+
message: 'Enter validator addresses (comma separated list)',
|
|
169
|
+
});
|
|
170
|
+
const validators = validatorsInput.split(',').map((v) => v.trim());
|
|
171
|
+
return {
|
|
172
|
+
type,
|
|
173
|
+
threshold,
|
|
174
|
+
validators,
|
|
175
|
+
};
|
|
176
|
+
}
|
|
177
|
+
async function createTrustedRelayerConfig() {
|
|
178
|
+
const relayer = await input({
|
|
179
|
+
message: 'Enter relayer address',
|
|
180
|
+
});
|
|
181
|
+
return {
|
|
182
|
+
type: IsmType.TRUSTED_RELAYER,
|
|
183
|
+
relayer,
|
|
184
|
+
};
|
|
185
|
+
}
|
|
186
|
+
export async function createAggregationConfig(remote, chains) {
|
|
187
|
+
const isms = parseInt(await input({
|
|
188
|
+
message: 'Enter the number of ISMs to aggregate (number)',
|
|
189
|
+
}), 10);
|
|
190
|
+
const threshold = parseInt(await input({
|
|
191
|
+
message: 'Enter the threshold of ISMs to for verification (number)',
|
|
192
|
+
}), 10);
|
|
193
|
+
const modules = [];
|
|
194
|
+
for (let i = 0; i < isms; i++) {
|
|
195
|
+
modules.push(await createIsmConfig(remote, chains));
|
|
196
|
+
}
|
|
197
|
+
return {
|
|
198
|
+
type: IsmType.AGGREGATION,
|
|
199
|
+
modules,
|
|
200
|
+
threshold,
|
|
201
|
+
};
|
|
202
|
+
}
|
|
203
|
+
export async function createRoutingConfig(type, remote, chains) {
|
|
204
|
+
const owner = await input({
|
|
205
|
+
message: 'Enter owner address',
|
|
206
|
+
});
|
|
207
|
+
const ownerAddress = owner;
|
|
208
|
+
const origins = chains.filter((chain) => chain !== remote);
|
|
209
|
+
const domainsMap = {};
|
|
210
|
+
for (const chain of origins) {
|
|
211
|
+
await confirm({
|
|
212
|
+
message: `You are about to configure ISM from source chain ${chain}. Continue?`,
|
|
213
|
+
});
|
|
214
|
+
const config = await createIsmConfig(chain, chains);
|
|
215
|
+
domainsMap[chain] = config;
|
|
216
|
+
}
|
|
217
|
+
return {
|
|
218
|
+
type,
|
|
219
|
+
owner: ownerAddress,
|
|
220
|
+
domains: domainsMap,
|
|
221
|
+
};
|
|
222
|
+
}
|
|
223
|
+
//# sourceMappingURL=ism.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ism.js","sourceRoot":"","sources":["../../../src/config/ism.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,50 +1,40 @@
|
|
|
1
1
|
import { z } from 'zod';
|
|
2
|
-
import { ChainMap,
|
|
3
|
-
import {
|
|
2
|
+
import { ChainMap, MultisigConfig } from '@hyperlane-xyz/sdk';
|
|
3
|
+
import { CommandContext } from '../context/types.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">>;
|
|
41
32
|
export type MultisigConfigMap = z.infer<typeof MultisigConfigMapSchema>;
|
|
42
33
|
export declare function readMultisigConfig(filePath: string): ChainMap<MultisigConfig>;
|
|
43
34
|
export declare function isValidMultisigConfig(config: any): boolean;
|
|
44
|
-
export declare function createMultisigConfig({
|
|
45
|
-
|
|
35
|
+
export declare function createMultisigConfig({ context, outPath, }: {
|
|
36
|
+
context: CommandContext;
|
|
46
37
|
outPath: string;
|
|
47
|
-
chainConfigPath: string;
|
|
48
38
|
}): Promise<void>;
|
|
49
39
|
export {};
|
|
50
40
|
//# sourceMappingURL=multisig.d.ts.map
|
|
@@ -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,
|
|
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,EAAS,MAAM,oBAAoB,CAAC;AAQrE,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAKrD,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,OAAO,EACP,OAAO,GACR,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB,iBAsDA"}
|
|
@@ -1,15 +1,13 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { confirm, input } from '@inquirer/prompts';
|
|
2
2
|
import { z } from 'zod';
|
|
3
|
-
import {
|
|
4
|
-
import { objMap } from '@hyperlane-xyz/utils';
|
|
5
|
-
import { errorRed, log, logBlue, logGreen } from '
|
|
3
|
+
import { ZHash } from '@hyperlane-xyz/sdk';
|
|
4
|
+
import { isValidAddress, normalizeAddressEvm, objMap, } from '@hyperlane-xyz/utils';
|
|
5
|
+
import { errorRed, log, logBlue, logGreen } from '../logger.js';
|
|
6
6
|
import { runMultiChainSelectionStep } from '../utils/chains.js';
|
|
7
7
|
import { mergeYamlOrJson, readYamlOrJson } from '../utils/files.js';
|
|
8
|
-
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
|
-
validators: z.array(
|
|
10
|
+
validators: z.array(ZHash),
|
|
13
11
|
}));
|
|
14
12
|
export function readMultisigConfig(filePath) {
|
|
15
13
|
const config = readYamlOrJson(filePath);
|
|
@@ -21,21 +19,34 @@ 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
|
-
|
|
26
|
-
|
|
27
|
-
|
|
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
|
}
|
|
32
42
|
export function isValidMultisigConfig(config) {
|
|
33
43
|
return MultisigConfigMapSchema.safeParse(config).success;
|
|
34
44
|
}
|
|
35
|
-
export async function createMultisigConfig({
|
|
45
|
+
export async function createMultisigConfig({ context, outPath, }) {
|
|
36
46
|
logBlue('Creating a new multisig config');
|
|
37
|
-
|
|
38
|
-
const chains = await runMultiChainSelectionStep(
|
|
47
|
+
log('Select your own chain below to run your own validators. If you want to reuse existing Hyperlane validators instead of running your own, do not select additional mainnet or testnet chains.');
|
|
48
|
+
const chains = await runMultiChainSelectionStep(context.chainMetadata);
|
|
49
|
+
const chainAddresses = await context.registry.getAddresses();
|
|
39
50
|
const result = {};
|
|
40
51
|
let lastConfig = undefined;
|
|
41
52
|
const repeat = false;
|
|
@@ -45,17 +56,13 @@ export async function createMultisigConfig({ format, outPath, chainConfigPath, }
|
|
|
45
56
|
result[chain] = lastConfig;
|
|
46
57
|
continue;
|
|
47
58
|
}
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
{ value: IsmType.MESSAGE_ID_MULTISIG, name: 'message id multisig' },
|
|
56
|
-
],
|
|
57
|
-
pageSize: 5,
|
|
58
|
-
});
|
|
59
|
+
if (Object.keys(chainAddresses).includes(chain)) {
|
|
60
|
+
const reuseCoreConfig = await confirm({
|
|
61
|
+
message: 'Use existing Hyperlane validators for this chain?',
|
|
62
|
+
});
|
|
63
|
+
if (reuseCoreConfig)
|
|
64
|
+
continue;
|
|
65
|
+
}
|
|
59
66
|
const thresholdInput = await input({
|
|
60
67
|
message: 'Enter threshold of signers (number)',
|
|
61
68
|
});
|
|
@@ -65,7 +72,6 @@ export async function createMultisigConfig({ format, outPath, chainConfigPath, }
|
|
|
65
72
|
});
|
|
66
73
|
const validators = validatorsInput.split(',').map((v) => v.trim());
|
|
67
74
|
lastConfig = {
|
|
68
|
-
type: moduleType,
|
|
69
75
|
threshold,
|
|
70
76
|
validators,
|
|
71
77
|
};
|
|
@@ -77,10 +83,10 @@ export async function createMultisigConfig({ format, outPath, chainConfigPath, }
|
|
|
77
83
|
}
|
|
78
84
|
if (isValidMultisigConfig(result)) {
|
|
79
85
|
logGreen(`Multisig config is valid, writing to file ${outPath}`);
|
|
80
|
-
mergeYamlOrJson(outPath, result
|
|
86
|
+
mergeYamlOrJson(outPath, result);
|
|
81
87
|
}
|
|
82
88
|
else {
|
|
83
|
-
errorRed(`Multisig config is invalid, please see https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/typescript/cli/examples/
|
|
89
|
+
errorRed(`Multisig config is invalid, please see https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/typescript/cli/examples/ism.yaml for an example`);
|
|
84
90
|
throw new Error('Invalid multisig config');
|
|
85
91
|
}
|
|
86
92
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"multisig.js","sourceRoot":"","sources":["../../../src/config/multisig.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,
|
|
1
|
+
{"version":3,"file":"multisig.js","sourceRoot":"","sources":["../../../src/config/multisig.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,183 +1,10 @@
|
|
|
1
|
-
import {
|
|
2
|
-
import {
|
|
3
|
-
|
|
4
|
-
export declare
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
interchainGasPaymaster: z.ZodOptional<z.ZodString>;
|
|
8
|
-
interchainSecurityModule: z.ZodOptional<z.ZodString>;
|
|
9
|
-
foreignDeployment: z.ZodOptional<z.ZodString>;
|
|
10
|
-
type: z.ZodUnion<[z.ZodLiteral<TokenType.native>, z.ZodLiteral<TokenType.collateral>]>;
|
|
11
|
-
chainName: z.ZodString;
|
|
12
|
-
address: z.ZodOptional<z.ZodString>;
|
|
13
|
-
isNft: z.ZodOptional<z.ZodBoolean>;
|
|
14
|
-
name: z.ZodOptional<z.ZodString>;
|
|
15
|
-
symbol: z.ZodOptional<z.ZodString>;
|
|
16
|
-
decimals: z.ZodOptional<z.ZodNumber>;
|
|
17
|
-
}, "strip", z.ZodTypeAny, {
|
|
18
|
-
type: TokenType.collateral | TokenType.native;
|
|
19
|
-
chainName: string;
|
|
20
|
-
mailbox?: string | undefined;
|
|
21
|
-
interchainGasPaymaster?: string | undefined;
|
|
22
|
-
interchainSecurityModule?: string | undefined;
|
|
23
|
-
foreignDeployment?: string | undefined;
|
|
24
|
-
address?: string | undefined;
|
|
25
|
-
isNft?: boolean | undefined;
|
|
26
|
-
name?: string | undefined;
|
|
27
|
-
symbol?: string | undefined;
|
|
28
|
-
decimals?: number | undefined;
|
|
29
|
-
}, {
|
|
30
|
-
type: TokenType.collateral | TokenType.native;
|
|
31
|
-
chainName: string;
|
|
32
|
-
mailbox?: string | undefined;
|
|
33
|
-
interchainGasPaymaster?: string | undefined;
|
|
34
|
-
interchainSecurityModule?: string | undefined;
|
|
35
|
-
foreignDeployment?: string | undefined;
|
|
36
|
-
address?: string | undefined;
|
|
37
|
-
isNft?: boolean | undefined;
|
|
38
|
-
name?: string | undefined;
|
|
39
|
-
symbol?: string | undefined;
|
|
40
|
-
decimals?: number | undefined;
|
|
41
|
-
}>;
|
|
42
|
-
synthetics: z.ZodArray<z.ZodObject<{
|
|
43
|
-
mailbox: z.ZodOptional<z.ZodString>;
|
|
44
|
-
interchainGasPaymaster: z.ZodOptional<z.ZodString>;
|
|
45
|
-
interchainSecurityModule: z.ZodOptional<z.ZodString>;
|
|
46
|
-
foreignDeployment: z.ZodOptional<z.ZodString>;
|
|
47
|
-
chainName: z.ZodString;
|
|
48
|
-
name: z.ZodOptional<z.ZodString>;
|
|
49
|
-
symbol: z.ZodOptional<z.ZodString>;
|
|
50
|
-
totalSupply: z.ZodOptional<z.ZodNumber>;
|
|
51
|
-
}, "strip", z.ZodTypeAny, {
|
|
52
|
-
chainName: string;
|
|
53
|
-
mailbox?: string | undefined;
|
|
54
|
-
interchainGasPaymaster?: string | undefined;
|
|
55
|
-
interchainSecurityModule?: string | undefined;
|
|
56
|
-
foreignDeployment?: string | undefined;
|
|
57
|
-
name?: string | undefined;
|
|
58
|
-
symbol?: string | undefined;
|
|
59
|
-
totalSupply?: number | undefined;
|
|
60
|
-
}, {
|
|
61
|
-
chainName: string;
|
|
62
|
-
mailbox?: string | undefined;
|
|
63
|
-
interchainGasPaymaster?: string | undefined;
|
|
64
|
-
interchainSecurityModule?: string | undefined;
|
|
65
|
-
foreignDeployment?: string | undefined;
|
|
66
|
-
name?: string | undefined;
|
|
67
|
-
symbol?: string | undefined;
|
|
68
|
-
totalSupply?: number | undefined;
|
|
69
|
-
}>, "atleastone">;
|
|
70
|
-
}, "strip", z.ZodTypeAny, {
|
|
71
|
-
base: {
|
|
72
|
-
type: TokenType.collateral | TokenType.native;
|
|
73
|
-
chainName: string;
|
|
74
|
-
mailbox?: string | undefined;
|
|
75
|
-
interchainGasPaymaster?: string | undefined;
|
|
76
|
-
interchainSecurityModule?: string | undefined;
|
|
77
|
-
foreignDeployment?: string | undefined;
|
|
78
|
-
address?: string | undefined;
|
|
79
|
-
isNft?: boolean | undefined;
|
|
80
|
-
name?: string | undefined;
|
|
81
|
-
symbol?: string | undefined;
|
|
82
|
-
decimals?: number | undefined;
|
|
83
|
-
};
|
|
84
|
-
synthetics: [{
|
|
85
|
-
chainName: string;
|
|
86
|
-
mailbox?: string | undefined;
|
|
87
|
-
interchainGasPaymaster?: string | undefined;
|
|
88
|
-
interchainSecurityModule?: string | undefined;
|
|
89
|
-
foreignDeployment?: string | undefined;
|
|
90
|
-
name?: string | undefined;
|
|
91
|
-
symbol?: string | undefined;
|
|
92
|
-
totalSupply?: number | undefined;
|
|
93
|
-
}, ...{
|
|
94
|
-
chainName: string;
|
|
95
|
-
mailbox?: string | undefined;
|
|
96
|
-
interchainGasPaymaster?: string | undefined;
|
|
97
|
-
interchainSecurityModule?: string | undefined;
|
|
98
|
-
foreignDeployment?: string | undefined;
|
|
99
|
-
name?: string | undefined;
|
|
100
|
-
symbol?: string | undefined;
|
|
101
|
-
totalSupply?: number | undefined;
|
|
102
|
-
}[]];
|
|
103
|
-
}, {
|
|
104
|
-
base: {
|
|
105
|
-
type: TokenType.collateral | TokenType.native;
|
|
106
|
-
chainName: string;
|
|
107
|
-
mailbox?: string | undefined;
|
|
108
|
-
interchainGasPaymaster?: string | undefined;
|
|
109
|
-
interchainSecurityModule?: string | undefined;
|
|
110
|
-
foreignDeployment?: string | undefined;
|
|
111
|
-
address?: string | undefined;
|
|
112
|
-
isNft?: boolean | undefined;
|
|
113
|
-
name?: string | undefined;
|
|
114
|
-
symbol?: string | undefined;
|
|
115
|
-
decimals?: number | undefined;
|
|
116
|
-
};
|
|
117
|
-
synthetics: [{
|
|
118
|
-
chainName: string;
|
|
119
|
-
mailbox?: string | undefined;
|
|
120
|
-
interchainGasPaymaster?: string | undefined;
|
|
121
|
-
interchainSecurityModule?: string | undefined;
|
|
122
|
-
foreignDeployment?: string | undefined;
|
|
123
|
-
name?: string | undefined;
|
|
124
|
-
symbol?: string | undefined;
|
|
125
|
-
totalSupply?: number | undefined;
|
|
126
|
-
}, ...{
|
|
127
|
-
chainName: string;
|
|
128
|
-
mailbox?: string | undefined;
|
|
129
|
-
interchainGasPaymaster?: string | undefined;
|
|
130
|
-
interchainSecurityModule?: string | undefined;
|
|
131
|
-
foreignDeployment?: string | undefined;
|
|
132
|
-
name?: string | undefined;
|
|
133
|
-
symbol?: string | undefined;
|
|
134
|
-
totalSupply?: number | undefined;
|
|
135
|
-
}[]];
|
|
136
|
-
}>;
|
|
137
|
-
type InferredType = z.infer<typeof WarpRouteConfigSchema>;
|
|
138
|
-
export type WarpRouteConfig = {
|
|
139
|
-
base: InferredType['base'];
|
|
140
|
-
synthetics: Array<InferredType['synthetics'][0]>;
|
|
141
|
-
};
|
|
142
|
-
export declare function readWarpRouteConfig(filePath: string): {
|
|
143
|
-
base: {
|
|
144
|
-
type: TokenType.collateral | TokenType.native;
|
|
145
|
-
chainName: string;
|
|
146
|
-
mailbox?: string | undefined;
|
|
147
|
-
interchainGasPaymaster?: string | undefined;
|
|
148
|
-
interchainSecurityModule?: string | undefined;
|
|
149
|
-
foreignDeployment?: string | undefined;
|
|
150
|
-
address?: string | undefined;
|
|
151
|
-
isNft?: boolean | undefined;
|
|
152
|
-
name?: string | undefined;
|
|
153
|
-
symbol?: string | undefined;
|
|
154
|
-
decimals?: number | undefined;
|
|
155
|
-
};
|
|
156
|
-
synthetics: [{
|
|
157
|
-
chainName: string;
|
|
158
|
-
mailbox?: string | undefined;
|
|
159
|
-
interchainGasPaymaster?: string | undefined;
|
|
160
|
-
interchainSecurityModule?: string | undefined;
|
|
161
|
-
foreignDeployment?: string | undefined;
|
|
162
|
-
name?: string | undefined;
|
|
163
|
-
symbol?: string | undefined;
|
|
164
|
-
totalSupply?: number | undefined;
|
|
165
|
-
}, ...{
|
|
166
|
-
chainName: string;
|
|
167
|
-
mailbox?: string | undefined;
|
|
168
|
-
interchainGasPaymaster?: string | undefined;
|
|
169
|
-
interchainSecurityModule?: string | undefined;
|
|
170
|
-
foreignDeployment?: string | undefined;
|
|
171
|
-
name?: string | undefined;
|
|
172
|
-
symbol?: string | undefined;
|
|
173
|
-
totalSupply?: number | undefined;
|
|
174
|
-
}[]];
|
|
175
|
-
};
|
|
176
|
-
export declare function isValidWarpRouteConfig(config: any): boolean;
|
|
177
|
-
export declare function createWarpConfig({ format, outPath, chainConfigPath, }: {
|
|
178
|
-
format: FileFormat;
|
|
1
|
+
import { WarpCoreConfig, WarpRouteDeployConfig } from '@hyperlane-xyz/sdk';
|
|
2
|
+
import { CommandContext } from '../context/types.js';
|
|
3
|
+
export declare function readWarpRouteDeployConfig(filePath: string): WarpRouteDeployConfig;
|
|
4
|
+
export declare function isValidWarpRouteDeployConfig(config: any): boolean;
|
|
5
|
+
export declare function createWarpRouteDeployConfig({ context, outPath, }: {
|
|
6
|
+
context: CommandContext;
|
|
179
7
|
outPath: string;
|
|
180
|
-
chainConfigPath: string;
|
|
181
8
|
}): Promise<void>;
|
|
182
|
-
export
|
|
9
|
+
export declare function readWarpRouteConfig(filePath: string): WarpCoreConfig;
|
|
183
10
|
//# sourceMappingURL=warp.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warp.d.ts","sourceRoot":"","sources":["../../../src/config/warp.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"warp.d.ts","sourceRoot":"","sources":["../../../src/config/warp.ts"],"names":[],"mappings":"AAGA,OAAO,EAGL,cAAc,EAEd,qBAAqB,EAEtB,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQrD,wBAAgB,yBAAyB,CACvC,QAAQ,EAAE,MAAM,GACf,qBAAqB,CAKvB;AAED,wBAAgB,4BAA4B,CAAC,MAAM,EAAE,GAAG,WAEvD;AAED,wBAAsB,2BAA2B,CAAC,EAChD,OAAO,EACP,OAAO,GACR,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,OAAO,EAAE,MAAM,CAAC;CACjB,iBAwEA;AAID,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,cAAc,CAIpE"}
|