@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.
- 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 -4
- 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 -68
- package/dist/src/config/chain.js.map +1 -1
- package/dist/src/config/chain.test.js +1 -5
- package/dist/src/config/chain.test.js.map +1 -1
- 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 +129 -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 +33 -18
- 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 +6 -4
- package/dist/src/utils/files.d.ts.map +1 -1
- package/dist/src/utils/files.js +37 -25
- 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/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 -46
- 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 +20 -13
- package/dist/logger.d.ts +0 -14
- package/dist/logger.d.ts.map +0 -1
- package/dist/logger.js +0 -45
- 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
package/dist/src/config/warp.js
CHANGED
|
@@ -1,84 +1,77 @@
|
|
|
1
1
|
import { confirm, input } from '@inquirer/prompts';
|
|
2
2
|
import { ethers } from 'ethers';
|
|
3
|
-
import {
|
|
4
|
-
import {
|
|
5
|
-
import { errorRed, logBlue, logGreen } from '
|
|
3
|
+
import { TokenType, WarpCoreConfigSchema, WarpRouteDeployConfigSchema, } from '@hyperlane-xyz/sdk';
|
|
4
|
+
import { objFilter } from '@hyperlane-xyz/utils';
|
|
5
|
+
import { errorRed, logBlue, logGreen } from '../logger.js';
|
|
6
6
|
import { runMultiChainSelectionStep, runSingleChainSelectionStep, } from '../utils/chains.js';
|
|
7
7
|
import { readYamlOrJson, writeYamlOrJson } from '../utils/files.js';
|
|
8
|
-
|
|
9
|
-
const ConnectionConfigSchema = {
|
|
10
|
-
mailbox: z.string().optional(),
|
|
11
|
-
interchainGasPaymaster: z.string().optional(),
|
|
12
|
-
interchainSecurityModule: z.string().optional(),
|
|
13
|
-
foreignDeployment: z.string().optional(),
|
|
14
|
-
};
|
|
15
|
-
export const WarpRouteConfigSchema = z.object({
|
|
16
|
-
base: z.object({
|
|
17
|
-
type: z.literal(TokenType.native).or(z.literal(TokenType.collateral)),
|
|
18
|
-
chainName: z.string(),
|
|
19
|
-
address: z.string().optional(),
|
|
20
|
-
isNft: z.boolean().optional(),
|
|
21
|
-
name: z.string().optional(),
|
|
22
|
-
symbol: z.string().optional(),
|
|
23
|
-
decimals: z.number().optional(),
|
|
24
|
-
...ConnectionConfigSchema,
|
|
25
|
-
}),
|
|
26
|
-
synthetics: z
|
|
27
|
-
.array(z.object({
|
|
28
|
-
chainName: z.string(),
|
|
29
|
-
name: z.string().optional(),
|
|
30
|
-
symbol: z.string().optional(),
|
|
31
|
-
totalSupply: z.number().optional(),
|
|
32
|
-
...ConnectionConfigSchema,
|
|
33
|
-
}))
|
|
34
|
-
.nonempty(),
|
|
35
|
-
});
|
|
36
|
-
export function readWarpRouteConfig(filePath) {
|
|
8
|
+
export function readWarpRouteDeployConfig(filePath) {
|
|
37
9
|
const config = readYamlOrJson(filePath);
|
|
38
10
|
if (!config)
|
|
39
|
-
throw new Error(`No warp config found at ${filePath}`);
|
|
40
|
-
|
|
41
|
-
if (!result.success) {
|
|
42
|
-
const firstIssue = result.error.issues[0];
|
|
43
|
-
throw new Error(`Invalid warp config: ${firstIssue.path} => ${firstIssue.message}`);
|
|
44
|
-
}
|
|
45
|
-
return result.data;
|
|
11
|
+
throw new Error(`No warp route deploy config found at ${filePath}`);
|
|
12
|
+
return WarpRouteDeployConfigSchema.parse(config);
|
|
46
13
|
}
|
|
47
|
-
export function
|
|
48
|
-
return
|
|
14
|
+
export function isValidWarpRouteDeployConfig(config) {
|
|
15
|
+
return WarpRouteDeployConfigSchema.safeParse(config).success;
|
|
49
16
|
}
|
|
50
|
-
export async function
|
|
51
|
-
logBlue('Creating a new warp route config');
|
|
52
|
-
const
|
|
53
|
-
const baseChain = await runSingleChainSelectionStep(customChains, 'Select base chain with the original token to warp');
|
|
17
|
+
export async function createWarpRouteDeployConfig({ context, outPath, }) {
|
|
18
|
+
logBlue('Creating a new warp route deployment config');
|
|
19
|
+
const baseChain = await runSingleChainSelectionStep(context.chainMetadata, 'Select base chain with the original token to warp');
|
|
54
20
|
const isNative = await confirm({
|
|
55
21
|
message: 'Are you creating a route for the native token of the base chain (e.g. Ether on Ethereum)?',
|
|
56
22
|
});
|
|
57
|
-
const baseType = isNative ? TokenType.native : TokenType.collateral;
|
|
58
|
-
const baseAddress = isNative
|
|
59
|
-
? ethers.constants.AddressZero
|
|
60
|
-
: await input({ message: 'Enter the token address' });
|
|
61
23
|
const isNft = isNative
|
|
62
24
|
? false
|
|
63
25
|
: await confirm({ message: 'Is this an NFT (i.e. ERC-721)?' });
|
|
64
|
-
const
|
|
26
|
+
const isYieldBearing = isNative || isNft
|
|
27
|
+
? false
|
|
28
|
+
: await confirm({
|
|
29
|
+
message: 'Do you want this warp route to be yield-bearing (i.e. deposits into ERC-4626 vault)?',
|
|
30
|
+
});
|
|
31
|
+
const addressMessage = `Enter the ${isYieldBearing ? 'ERC-4626 vault' : 'collateral token'} address`;
|
|
32
|
+
const baseAddress = isNative
|
|
33
|
+
? ethers.constants.AddressZero
|
|
34
|
+
: await input({ message: addressMessage });
|
|
35
|
+
const metadataWithoutBase = objFilter(context.chainMetadata, (chain, _) => chain !== baseChain);
|
|
36
|
+
const syntheticChains = await runMultiChainSelectionStep(metadataWithoutBase, 'Select chains to which the base token will be connected');
|
|
65
37
|
// TODO add more prompts here to support customizing the token metadata
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
}
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
38
|
+
let result;
|
|
39
|
+
if (isNative) {
|
|
40
|
+
result = {
|
|
41
|
+
[baseChain]: {
|
|
42
|
+
type: TokenType.native,
|
|
43
|
+
},
|
|
44
|
+
};
|
|
45
|
+
}
|
|
46
|
+
else {
|
|
47
|
+
result = {
|
|
48
|
+
[baseChain]: {
|
|
49
|
+
type: isYieldBearing ? TokenType.collateralVault : TokenType.collateral,
|
|
50
|
+
token: baseAddress,
|
|
51
|
+
isNft,
|
|
52
|
+
},
|
|
53
|
+
};
|
|
54
|
+
}
|
|
55
|
+
syntheticChains.map((chain) => {
|
|
56
|
+
result[chain] = {
|
|
57
|
+
type: TokenType.synthetic,
|
|
58
|
+
};
|
|
59
|
+
});
|
|
60
|
+
if (isValidWarpRouteDeployConfig(result)) {
|
|
76
61
|
logGreen(`Warp Route config is valid, writing to file ${outPath}`);
|
|
77
|
-
writeYamlOrJson(outPath, result
|
|
62
|
+
writeYamlOrJson(outPath, result);
|
|
78
63
|
}
|
|
79
64
|
else {
|
|
80
|
-
errorRed(`Warp config is invalid, please see https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/typescript/cli/examples/warp-
|
|
65
|
+
errorRed(`Warp route deployment config is invalid, please see https://github.com/hyperlane-xyz/hyperlane-monorepo/blob/main/typescript/cli/examples/warp-route-deployment.yaml for an example`);
|
|
81
66
|
throw new Error('Invalid multisig config');
|
|
82
67
|
}
|
|
83
68
|
}
|
|
69
|
+
// Note, this is different than the function above which reads a config
|
|
70
|
+
// for a DEPLOYMENT. This gets a config for using a warp route (aka WarpCoreConfig)
|
|
71
|
+
export function readWarpRouteConfig(filePath) {
|
|
72
|
+
const config = readYamlOrJson(filePath);
|
|
73
|
+
if (!config)
|
|
74
|
+
throw new Error(`No warp route config found at ${filePath}`);
|
|
75
|
+
return WarpCoreConfigSchema.parse(config);
|
|
76
|
+
}
|
|
84
77
|
//# sourceMappingURL=warp.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"warp.js","sourceRoot":"","sources":["../../../src/config/warp.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AACnD,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"warp.js","sourceRoot":"","sources":["../../../src/config/warp.ts"],"names":[],"mappings":"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"}
|
package/dist/src/consts.d.ts
CHANGED
package/dist/src/consts.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AACxD,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AACxD,eAAO,MAAM,qBAAqB,QAAmB,CAAC"}
|
|
1
|
+
{"version":3,"file":"consts.d.ts","sourceRoot":"","sources":["../../src/consts.ts"],"names":[],"mappings":"AAAA,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AACxD,eAAO,MAAM,uBAAuB,QAAmB,CAAC;AACxD,eAAO,MAAM,qBAAqB,QAAmB,CAAC;AACtD,eAAO,MAAM,eAAe,QAAmB,CAAC"}
|
package/dist/src/consts.js
CHANGED
package/dist/src/consts.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/consts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC"}
|
|
1
|
+
{"version":3,"file":"consts.js","sourceRoot":"","sources":["../../src/consts.ts"],"names":[],"mappings":"AAAA,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxD,MAAM,CAAC,MAAM,uBAAuB,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AACxD,MAAM,CAAC,MAAM,qBAAqB,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC;AACtD,MAAM,CAAC,MAAM,eAAe,GAAG,CAAC,GAAG,CAAC,CAAC,QAAQ,EAAE,CAAC"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
import { ChainName } from '@hyperlane-xyz/sdk';
|
|
2
|
+
import { CommandContext, ContextSettings } from './types.js';
|
|
3
|
+
export declare function contextMiddleware(argv: Record<string, any>): Promise<void>;
|
|
4
|
+
/**
|
|
5
|
+
* Retrieves context for the user-selected command
|
|
6
|
+
* @returns context for the current command
|
|
7
|
+
*/
|
|
8
|
+
export declare function getContext({ registryUri, registryOverrideUri, key, requiresKey, skipConfirmation, }: ContextSettings): Promise<CommandContext>;
|
|
9
|
+
/**
|
|
10
|
+
* Retrieves dry-run context for the user-selected command
|
|
11
|
+
* @returns dry-run context for the current command
|
|
12
|
+
*/
|
|
13
|
+
export declare function getDryRunContext({ registryUri, registryOverrideUri, key, fromAddress, skipConfirmation, }: ContextSettings, chain?: ChainName): Promise<CommandContext>;
|
|
14
|
+
//# sourceMappingURL=context.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.d.ts","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"AAGA,OAAO,EAAE,SAAS,EAAiB,MAAM,oBAAoB,CAAC;AAU9D,OAAO,EACL,cAAc,EACd,eAAe,EAEhB,MAAM,YAAY,CAAC;AAEpB,wBAAsB,iBAAiB,CAAC,IAAI,EAAE,MAAM,CAAC,MAAM,EAAE,GAAG,CAAC,iBAmBhE;AAED;;;GAGG;AACH,wBAAsB,UAAU,CAAC,EAC/B,WAAW,EACX,mBAAmB,EACnB,GAAG,EACH,WAAW,EACX,gBAAgB,GACjB,EAAE,eAAe,GAAG,OAAO,CAAC,cAAc,CAAC,CAiB3C;AAED;;;GAGG;AACH,wBAAsB,gBAAgB,CACpC,EACE,WAAW,EACX,mBAAmB,EACnB,GAAG,EACH,WAAW,EACX,gBAAgB,GACjB,EAAE,eAAe,EAClB,KAAK,CAAC,EAAE,SAAS,GAChB,OAAO,CAAC,cAAc,CAAC,CAmCzB"}
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
import { MultiProvider } from '@hyperlane-xyz/sdk';
|
|
2
|
+
import { isNullish } from '@hyperlane-xyz/utils';
|
|
3
|
+
import { isSignCommand } from '../commands/signCommands.js';
|
|
4
|
+
import { forkNetworkToMultiProvider, verifyAnvil } from '../deploy/dry-run.js';
|
|
5
|
+
import { logBlue } from '../logger.js';
|
|
6
|
+
import { MergedRegistry } from '../registry/MergedRegistry.js';
|
|
7
|
+
import { runSingleChainSelectionStep } from '../utils/chains.js';
|
|
8
|
+
import { getImpersonatedSigner, getSigner } from '../utils/keys.js';
|
|
9
|
+
export async function contextMiddleware(argv) {
|
|
10
|
+
const isDryRun = !isNullish(argv.dryRun);
|
|
11
|
+
const requiresKey = isSignCommand(argv);
|
|
12
|
+
const settings = {
|
|
13
|
+
registryUri: argv.registry,
|
|
14
|
+
registryOverrideUri: argv.overrides,
|
|
15
|
+
key: argv.key,
|
|
16
|
+
fromAddress: argv.fromAddress,
|
|
17
|
+
requiresKey,
|
|
18
|
+
skipConfirmation: argv.yes,
|
|
19
|
+
};
|
|
20
|
+
if (!isDryRun && settings.fromAddress)
|
|
21
|
+
throw new Error("'--from-address' or '-f' should only be used for dry-runs");
|
|
22
|
+
const context = isDryRun
|
|
23
|
+
? await getDryRunContext(settings, argv.dryRun)
|
|
24
|
+
: await getContext(settings);
|
|
25
|
+
argv.context = context;
|
|
26
|
+
}
|
|
27
|
+
/**
|
|
28
|
+
* Retrieves context for the user-selected command
|
|
29
|
+
* @returns context for the current command
|
|
30
|
+
*/
|
|
31
|
+
export async function getContext({ registryUri, registryOverrideUri, key, requiresKey, skipConfirmation, }) {
|
|
32
|
+
const registry = getRegistry(registryUri, registryOverrideUri);
|
|
33
|
+
let signer = undefined;
|
|
34
|
+
if (requiresKey) {
|
|
35
|
+
({ key, signer } = await getSigner({ key, skipConfirmation }));
|
|
36
|
+
}
|
|
37
|
+
const multiProvider = await getMultiProvider(registry, signer);
|
|
38
|
+
return {
|
|
39
|
+
registry,
|
|
40
|
+
chainMetadata: multiProvider.metadata,
|
|
41
|
+
multiProvider,
|
|
42
|
+
key,
|
|
43
|
+
signer,
|
|
44
|
+
skipConfirmation: !!skipConfirmation,
|
|
45
|
+
};
|
|
46
|
+
}
|
|
47
|
+
/**
|
|
48
|
+
* Retrieves dry-run context for the user-selected command
|
|
49
|
+
* @returns dry-run context for the current command
|
|
50
|
+
*/
|
|
51
|
+
export async function getDryRunContext({ registryUri, registryOverrideUri, key, fromAddress, skipConfirmation, }, chain) {
|
|
52
|
+
const registry = getRegistry(registryUri, registryOverrideUri, true);
|
|
53
|
+
const chainMetadata = await registry.getMetadata();
|
|
54
|
+
if (!chain) {
|
|
55
|
+
if (skipConfirmation)
|
|
56
|
+
throw new Error('No chains provided');
|
|
57
|
+
chain = await runSingleChainSelectionStep(chainMetadata, 'Select chain to dry-run against:');
|
|
58
|
+
}
|
|
59
|
+
logBlue(`Dry-running against chain: ${chain}`);
|
|
60
|
+
await verifyAnvil();
|
|
61
|
+
const multiProvider = await getMultiProvider(registry);
|
|
62
|
+
await forkNetworkToMultiProvider(multiProvider, chain);
|
|
63
|
+
const { impersonatedKey, impersonatedSigner } = await getImpersonatedSigner({
|
|
64
|
+
fromAddress,
|
|
65
|
+
key,
|
|
66
|
+
skipConfirmation,
|
|
67
|
+
});
|
|
68
|
+
multiProvider.setSharedSigner(impersonatedSigner);
|
|
69
|
+
return {
|
|
70
|
+
registry,
|
|
71
|
+
chainMetadata: multiProvider.metadata,
|
|
72
|
+
key: impersonatedKey,
|
|
73
|
+
signer: impersonatedSigner,
|
|
74
|
+
multiProvider: multiProvider,
|
|
75
|
+
skipConfirmation: !!skipConfirmation,
|
|
76
|
+
isDryRun: true,
|
|
77
|
+
dryRunChain: chain,
|
|
78
|
+
};
|
|
79
|
+
}
|
|
80
|
+
/**
|
|
81
|
+
* Creates a new MergedRegistry using the provided URIs
|
|
82
|
+
* The intention of the MergedRegistry is to join the common data
|
|
83
|
+
* from a primary URI (such as the Hyperlane default Github repo)
|
|
84
|
+
* and an override one (such as a local directory)
|
|
85
|
+
* @returns a new MergedRegistry
|
|
86
|
+
*/
|
|
87
|
+
function getRegistry(primaryRegistryUri, overrideRegistryUri, isDryRun) {
|
|
88
|
+
const registryUris = [primaryRegistryUri, overrideRegistryUri]
|
|
89
|
+
.map((r) => r.trim())
|
|
90
|
+
.filter((r) => !!r);
|
|
91
|
+
return new MergedRegistry({
|
|
92
|
+
registryUris,
|
|
93
|
+
isDryRun,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
/**
|
|
97
|
+
* Retrieves a new MultiProvider based on all known chain metadata & custom user chains
|
|
98
|
+
* @param customChains Custom chains specified by the user
|
|
99
|
+
* @returns a new MultiProvider
|
|
100
|
+
*/
|
|
101
|
+
async function getMultiProvider(registry, signer) {
|
|
102
|
+
const chainMetadata = await registry.getMetadata();
|
|
103
|
+
const multiProvider = new MultiProvider(chainMetadata);
|
|
104
|
+
if (signer)
|
|
105
|
+
multiProvider.setSharedSigner(signer);
|
|
106
|
+
return multiProvider;
|
|
107
|
+
}
|
|
108
|
+
//# sourceMappingURL=context.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"context.js","sourceRoot":"","sources":["../../../src/context/context.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
import type { ethers } from 'ethers';
|
|
2
|
+
import type { CommandModule } from 'yargs';
|
|
3
|
+
import type { IRegistry } from '@hyperlane-xyz/registry';
|
|
4
|
+
import type { ChainMap, ChainMetadata, MultiProvider } from '@hyperlane-xyz/sdk';
|
|
5
|
+
export interface ContextSettings {
|
|
6
|
+
registryUri: string;
|
|
7
|
+
registryOverrideUri: string;
|
|
8
|
+
key?: string;
|
|
9
|
+
fromAddress?: string;
|
|
10
|
+
requiresKey?: boolean;
|
|
11
|
+
skipConfirmation?: boolean;
|
|
12
|
+
}
|
|
13
|
+
export interface CommandContext {
|
|
14
|
+
registry: IRegistry;
|
|
15
|
+
chainMetadata: ChainMap<ChainMetadata>;
|
|
16
|
+
multiProvider: MultiProvider;
|
|
17
|
+
skipConfirmation: boolean;
|
|
18
|
+
key?: string;
|
|
19
|
+
signer?: ethers.Signer;
|
|
20
|
+
}
|
|
21
|
+
export interface WriteCommandContext extends CommandContext {
|
|
22
|
+
key: string;
|
|
23
|
+
signer: ethers.Signer;
|
|
24
|
+
isDryRun?: boolean;
|
|
25
|
+
dryRunChain?: string;
|
|
26
|
+
}
|
|
27
|
+
export type CommandModuleWithContext<Args> = CommandModule<{}, Args & {
|
|
28
|
+
context: CommandContext;
|
|
29
|
+
}>;
|
|
30
|
+
export type CommandModuleWithWriteContext<Args> = CommandModule<{}, Args & {
|
|
31
|
+
context: WriteCommandContext;
|
|
32
|
+
}>;
|
|
33
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/context/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AACrC,OAAO,KAAK,EAAE,aAAa,EAAE,MAAM,OAAO,CAAC;AAE3C,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,yBAAyB,CAAC;AACzD,OAAO,KAAK,EACV,QAAQ,EACR,aAAa,EACb,aAAa,EACd,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,eAAe;IAC9B,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE,MAAM,CAAC;IAC5B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,OAAO,CAAC;IACtB,gBAAgB,CAAC,EAAE,OAAO,CAAC;CAC5B;AAED,MAAM,WAAW,cAAc;IAC7B,QAAQ,EAAE,SAAS,CAAC;IACpB,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,CAAC;IACvC,aAAa,EAAE,aAAa,CAAC;IAC7B,gBAAgB,EAAE,OAAO,CAAC;IAC1B,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,MAAM,CAAC,EAAE,MAAM,CAAC,MAAM,CAAC;CACxB;AAED,MAAM,WAAW,mBAAoB,SAAQ,cAAc;IACzD,GAAG,EAAE,MAAM,CAAC;IACZ,MAAM,EAAE,MAAM,CAAC,MAAM,CAAC;IACtB,QAAQ,CAAC,EAAE,OAAO,CAAC;IACnB,WAAW,CAAC,EAAE,MAAM,CAAC;CACtB;AAED,MAAM,MAAM,wBAAwB,CAAC,IAAI,IAAI,aAAa,CACxD,EAAE,EACF,IAAI,GAAG;IAAE,OAAO,EAAE,cAAc,CAAA;CAAE,CACnC,CAAC;AAEF,MAAM,MAAM,6BAA6B,CAAC,IAAI,IAAI,aAAa,CAC7D,EAAE,EACF,IAAI,GAAG;IAAE,OAAO,EAAE,mBAAmB,CAAA;CAAE,CACxC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/context/types.ts"],"names":[],"mappings":""}
|
|
@@ -1,6 +1,8 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { CommandContext } from '../context/types.js';
|
|
2
|
+
export declare function runKurtosisAgentDeploy({ context, originChain, relayChains, agentConfigurationPath, }: {
|
|
3
|
+
context: CommandContext;
|
|
4
|
+
originChain?: string;
|
|
5
|
+
relayChains?: string;
|
|
6
|
+
agentConfigurationPath?: string;
|
|
5
7
|
}): Promise<void>;
|
|
6
8
|
//# sourceMappingURL=agent.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/deploy/agent.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"agent.d.ts","sourceRoot":"","sources":["../../../src/deploy/agent.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAQrD,wBAAsB,sBAAsB,CAAC,EAC3C,OAAO,EACP,WAAW,EACX,WAAW,EACX,sBAAsB,GACvB,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,sBAAsB,CAAC,EAAE,MAAM,CAAC;CACjC,iBAyDA"}
|
package/dist/src/deploy/agent.js
CHANGED
|
@@ -1,20 +1,19 @@
|
|
|
1
|
-
import { input } from '@inquirer/prompts';
|
|
2
1
|
import terminalLink from 'terminal-link';
|
|
3
|
-
import {
|
|
2
|
+
import { toBase64 } from '@hyperlane-xyz/utils';
|
|
3
|
+
import { logBlue, logGreen } from '../logger.js';
|
|
4
|
+
import { runMultiChainSelectionStep, runSingleChainSelectionStep, } from '../utils/chains.js';
|
|
4
5
|
import { readJson, runFileSelectionStep } from '../utils/files.js';
|
|
5
|
-
export async function runKurtosisAgentDeploy({
|
|
6
|
+
export async function runKurtosisAgentDeploy({ context, originChain, relayChains, agentConfigurationPath, }) {
|
|
6
7
|
if (!originChain) {
|
|
7
|
-
originChain = await
|
|
8
|
+
originChain = await runSingleChainSelectionStep(context.chainMetadata, 'Select the origin chain');
|
|
8
9
|
}
|
|
9
10
|
if (!relayChains) {
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
});
|
|
13
|
-
relayChains = trimSpaces(relayChains);
|
|
11
|
+
const selectedRelayChains = await runMultiChainSelectionStep(context.chainMetadata, 'Select chains to relay between', true);
|
|
12
|
+
relayChains = selectedRelayChains.join(',');
|
|
14
13
|
}
|
|
15
14
|
if (!agentConfigurationPath) {
|
|
16
15
|
logBlue('\n', 'No agent config json was provided. Please specify the agent config json filepath.');
|
|
17
|
-
agentConfigurationPath = await runFileSelectionStep('./
|
|
16
|
+
agentConfigurationPath = await runFileSelectionStep('./configs', 'agent config json', 'agent-config');
|
|
18
17
|
}
|
|
19
18
|
const agentConfigObject = readJson(agentConfigurationPath);
|
|
20
19
|
const hyperlanePackageArgs = {
|
|
@@ -27,24 +26,11 @@ export async function runKurtosisAgentDeploy({ originChain, agentConfigurationPa
|
|
|
27
26
|
restartServices: true,
|
|
28
27
|
args: hyperlanePackageArgs,
|
|
29
28
|
};
|
|
30
|
-
const base64EncodedPackageConfig =
|
|
29
|
+
const base64EncodedPackageConfig = toBase64(kurtosisPackageConfig) || '';
|
|
31
30
|
const kurtosisCloudUrl = getKurtosisCloudUrl(base64EncodedPackageConfig);
|
|
32
|
-
const kurtosisCloudLink = terminalLink('
|
|
31
|
+
const kurtosisCloudLink = terminalLink('Kurtosis Cloud Link 🔗 (cmd+click or ctrl+click here)', kurtosisCloudUrl, { fallback: () => kurtosisCloudUrl });
|
|
33
32
|
logGreen('\n', 'Click the link below to deploy your validator and relayer with Kurtosis:', '\n', `${kurtosisCloudLink}`);
|
|
34
33
|
return;
|
|
35
34
|
}
|
|
36
35
|
const getKurtosisCloudUrl = (base64Params) => `https://cloud.kurtosis.com/enclave-manager?package-id=github.com%2Fkurtosis-tech%2Fhyperlane-package&package-args=${base64Params}`;
|
|
37
|
-
const trimSpaces = (a) => a
|
|
38
|
-
.split('')
|
|
39
|
-
.filter((char) => char !== ' ')
|
|
40
|
-
.join('');
|
|
41
|
-
function jsonToBase64(jsonData) {
|
|
42
|
-
try {
|
|
43
|
-
return btoa(JSON.stringify(jsonData));
|
|
44
|
-
}
|
|
45
|
-
catch (error) {
|
|
46
|
-
logRed('Error occurred creating kurtosis cloud url.');
|
|
47
|
-
return '';
|
|
48
|
-
}
|
|
49
|
-
}
|
|
50
36
|
//# sourceMappingURL=agent.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/deploy/agent.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"agent.js","sourceRoot":"","sources":["../../../src/deploy/agent.ts"],"names":[],"mappings":"AAAA,OAAO,YAAY,MAAM,eAAe,CAAC;AAEzC,OAAO,EAAE,QAAQ,EAAE,MAAM,sBAAsB,CAAC;AAGhD,OAAO,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACjD,OAAO,EACL,0BAA0B,EAC1B,2BAA2B,GAC5B,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,QAAQ,EAAE,oBAAoB,EAAE,MAAM,mBAAmB,CAAC;AAEnE,MAAM,CAAC,KAAK,UAAU,sBAAsB,CAAC,EAC3C,OAAO,EACP,WAAW,EACX,WAAW,EACX,sBAAsB,GAMvB;IACC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,MAAM,2BAA2B,CAC7C,OAAO,CAAC,aAAa,EACrB,yBAAyB,CAC1B,CAAC;IACJ,CAAC;IACD,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,MAAM,mBAAmB,GAAG,MAAM,0BAA0B,CAC1D,OAAO,CAAC,aAAa,EACrB,gCAAgC,EAChC,IAAI,CACL,CAAC;QACF,WAAW,GAAG,mBAAmB,CAAC,IAAI,CAAC,GAAG,CAAC,CAAC;IAC9C,CAAC;IAED,IAAI,CAAC,sBAAsB,EAAE,CAAC;QAC5B,OAAO,CACL,IAAI,EACJ,mFAAmF,CACpF,CAAC;QACF,sBAAsB,GAAG,MAAM,oBAAoB,CACjD,WAAW,EACX,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,QAAQ,CAAC,qBAAqB,CAAC,IAAI,EAAE,CAAC;IACzE,MAAM,gBAAgB,GAAG,mBAAmB,CAAC,0BAA0B,CAAC,CAAC;IAEzE,MAAM,iBAAiB,GAAG,YAAY,CACpC,uDAAuD,EACvD,gBAAgB,EAChB,EAAE,QAAQ,EAAE,GAAG,EAAE,CAAC,gBAAgB,EAAE,CACrC,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"}
|
|
@@ -1,12 +1,15 @@
|
|
|
1
|
-
import { ChainName } from '@hyperlane-xyz/sdk';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
1
|
+
import { ChainMap, ChainName, IgpConfig, MultisigConfig } from '@hyperlane-xyz/sdk';
|
|
2
|
+
import { Address } from '@hyperlane-xyz/utils';
|
|
3
|
+
import { WriteCommandContext } from '../context/types.js';
|
|
4
|
+
/**
|
|
5
|
+
* Executes the core deploy command.
|
|
6
|
+
*/
|
|
7
|
+
export declare function runCoreDeploy({ context, chains, ismConfigPath, hookConfigPath, agentOutPath, }: {
|
|
8
|
+
context: WriteCommandContext;
|
|
5
9
|
chains?: ChainName[];
|
|
6
10
|
ismConfigPath?: string;
|
|
7
11
|
hookConfigPath?: string;
|
|
8
|
-
|
|
9
|
-
outPath: string;
|
|
10
|
-
skipConfirmation: boolean;
|
|
12
|
+
agentOutPath: string;
|
|
11
13
|
}): Promise<void>;
|
|
14
|
+
export declare function buildIgpConfigMap(owner: Address, chains: ChainName[], multisigConfigs: ChainMap<MultisigConfig>): ChainMap<IgpConfig>;
|
|
12
15
|
//# sourceMappingURL=core.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"core.d.ts","sourceRoot":"","sources":["../../../src/deploy/core.ts"],"names":[],"mappings":"AAIA,OAAO,EACL,QAAQ,EACR,SAAS,EAUT,SAAS,EAGT,cAAc,EAOf,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,OAAO,EAA+B,MAAM,sBAAsB,CAAC;AAM5E,OAAO,EAAE,mBAAmB,EAAE,MAAM,qBAAqB,CAAC;AAsB1D;;GAEG;AACH,wBAAsB,aAAa,CAAC,EAClC,OAAO,EACP,MAAM,EACN,aAAa,EACb,cAAc,EACd,YAAY,GACb,EAAE;IACD,OAAO,EAAE,mBAAmB,CAAC;IAC7B,MAAM,CAAC,EAAE,SAAS,EAAE,CAAC;IACrB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,cAAc,CAAC,EAAE,MAAM,CAAC;IACxB,YAAY,EAAE,MAAM,CAAC;CACtB,iBA4CA;AAoPD,wBAAgB,iBAAiB,CAC/B,KAAK,EAAE,OAAO,EACd,MAAM,EAAE,SAAS,EAAE,EACnB,eAAe,EAAE,QAAQ,CAAC,cAAc,CAAC,GACxC,QAAQ,CAAC,SAAS,CAAC,CA6BrB"}
|