@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
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import { ChainName } from '@hyperlane-xyz/sdk';
|
|
2
|
-
|
|
3
|
-
|
|
4
|
-
|
|
5
|
-
messageId
|
|
6
|
-
destination
|
|
2
|
+
import { CommandContext } from '../context/types.js';
|
|
3
|
+
export declare function checkMessageStatus({ context, messageId, destination, origin, selfRelay, }: {
|
|
4
|
+
context: CommandContext;
|
|
5
|
+
messageId?: string;
|
|
6
|
+
destination?: ChainName;
|
|
7
|
+
origin?: ChainName;
|
|
8
|
+
selfRelay?: boolean;
|
|
7
9
|
}): Promise<void>;
|
|
8
10
|
//# sourceMappingURL=message.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/status/message.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"message.d.ts","sourceRoot":"","sources":["../../../src/status/message.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,SAAS,EAAiB,MAAM,oBAAoB,CAAC;AAE9D,OAAO,EAAE,cAAc,EAAE,MAAM,qBAAqB,CAAC;AAIrD,wBAAsB,kBAAkB,CAAC,EACvC,OAAO,EACP,SAAS,EACT,WAAW,EACX,MAAM,EACN,SAAS,GACV,EAAE;IACD,OAAO,EAAE,cAAc,CAAC;IACxB,SAAS,CAAC,EAAE,MAAM,CAAC;IACnB,WAAW,CAAC,EAAE,SAAS,CAAC;IACxB,MAAM,CAAC,EAAE,SAAS,CAAC;IACnB,SAAS,CAAC,EAAE,OAAO,CAAC;CACrB,iBA0CA"}
|
|
@@ -1,22 +1,35 @@
|
|
|
1
|
+
import { input } from '@inquirer/prompts';
|
|
1
2
|
import { HyperlaneCore } from '@hyperlane-xyz/sdk';
|
|
2
|
-
import { log, logBlue, logGreen } from '
|
|
3
|
-
import {
|
|
4
|
-
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
3
|
+
import { log, logBlue, logGreen } from '../logger.js';
|
|
4
|
+
import { runSingleChainSelectionStep } from '../utils/chains.js';
|
|
5
|
+
export async function checkMessageStatus({ context, messageId, destination, origin, selfRelay, }) {
|
|
6
|
+
if (!destination) {
|
|
7
|
+
destination = await runSingleChainSelectionStep(context.chainMetadata, 'Select the destination chain');
|
|
8
|
+
}
|
|
9
|
+
if (!messageId) {
|
|
10
|
+
messageId = await input({
|
|
11
|
+
message: 'Please specify the message id',
|
|
12
|
+
});
|
|
13
|
+
}
|
|
14
|
+
const chainAddresses = await context.registry.getAddresses();
|
|
15
|
+
const core = HyperlaneCore.fromAddressesMap(chainAddresses, context.multiProvider);
|
|
12
16
|
const mailbox = core.getContracts(destination).mailbox;
|
|
13
17
|
log(`Checking status of message ${messageId} on ${destination}`);
|
|
14
18
|
const delivered = await mailbox.delivered(messageId);
|
|
15
19
|
if (delivered) {
|
|
16
20
|
logGreen(`Message ${messageId} was delivered`);
|
|
21
|
+
return;
|
|
17
22
|
}
|
|
18
|
-
|
|
19
|
-
|
|
23
|
+
logBlue(`Message ${messageId} was not yet delivered`);
|
|
24
|
+
if (selfRelay) {
|
|
25
|
+
// TODO: implement option for tx receipt input
|
|
26
|
+
if (!origin) {
|
|
27
|
+
origin = await runSingleChainSelectionStep(context.chainMetadata, 'Select the origin chain');
|
|
28
|
+
}
|
|
29
|
+
const receipt = await core.getDispatchTx(origin, messageId);
|
|
30
|
+
const messages = core.getDispatchedMessages(receipt);
|
|
31
|
+
await core.relayMessage(messages[0]);
|
|
32
|
+
logGreen(`Message ${messageId} was self-relayed!`);
|
|
20
33
|
}
|
|
21
34
|
}
|
|
22
35
|
//# sourceMappingURL=message.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/status/message.ts"],"names":[],"mappings":"AAAA,OAAO,
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../../src/status/message.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,EAAE,MAAM,mBAAmB,CAAC;AAE1C,OAAO,EAAa,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAG9D,OAAO,EAAE,GAAG,EAAE,OAAO,EAAE,QAAQ,EAAE,MAAM,cAAc,CAAC;AACtD,OAAO,EAAE,2BAA2B,EAAE,MAAM,oBAAoB,CAAC;AAEjE,MAAM,CAAC,KAAK,UAAU,kBAAkB,CAAC,EACvC,OAAO,EACP,SAAS,EACT,WAAW,EACX,MAAM,EACN,SAAS,GAOV;IACC,IAAI,CAAC,WAAW,EAAE,CAAC;QACjB,WAAW,GAAG,MAAM,2BAA2B,CAC7C,OAAO,CAAC,aAAa,EACrB,8BAA8B,CAC/B,CAAC;IACJ,CAAC;IAED,IAAI,CAAC,SAAS,EAAE,CAAC;QACf,SAAS,GAAG,MAAM,KAAK,CAAC;YACtB,OAAO,EAAE,+BAA+B;SACzC,CAAC,CAAC;IACL,CAAC;IAED,MAAM,cAAc,GAAG,MAAM,OAAO,CAAC,QAAQ,CAAC,YAAY,EAAE,CAAC;IAC7D,MAAM,IAAI,GAAG,aAAa,CAAC,gBAAgB,CACzC,cAAc,EACd,OAAO,CAAC,aAAa,CACtB,CAAC;IACF,MAAM,OAAO,GAAG,IAAI,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,OAAO,CAAC;IACvD,GAAG,CAAC,8BAA8B,SAAS,OAAO,WAAW,EAAE,CAAC,CAAC;IACjE,MAAM,SAAS,GAAG,MAAM,OAAO,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;IACrD,IAAI,SAAS,EAAE,CAAC;QACd,QAAQ,CAAC,WAAW,SAAS,gBAAgB,CAAC,CAAC;QAC/C,OAAO;IACT,CAAC;IACD,OAAO,CAAC,WAAW,SAAS,wBAAwB,CAAC,CAAC;IAEtD,IAAI,SAAS,EAAE,CAAC;QACd,8CAA8C;QAC9C,IAAI,CAAC,MAAM,EAAE,CAAC;YACZ,MAAM,GAAG,MAAM,2BAA2B,CACxC,OAAO,CAAC,aAAa,EACrB,yBAAyB,CAC1B,CAAC;QACJ,CAAC;QAED,MAAM,OAAO,GAAG,MAAM,IAAI,CAAC,aAAa,CAAC,MAAM,EAAE,SAAS,CAAC,CAAC;QAC5D,MAAM,QAAQ,GAAG,IAAI,CAAC,qBAAqB,CAAC,OAAO,CAAC,CAAC;QACrD,MAAM,IAAI,CAAC,YAAY,CAAC,QAAQ,CAAC,CAAC,CAAC,CAAC,CAAC;QACrC,QAAQ,CAAC,WAAW,SAAS,oBAAoB,CAAC,CAAC;IACrD,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,5 @@
|
|
|
1
|
+
import { TxSubmitterBuilder } from '@hyperlane-xyz/sdk';
|
|
2
|
+
import { ProtocolType } from '@hyperlane-xyz/utils';
|
|
3
|
+
import { SubmitterBuilderSettings } from './types.js';
|
|
4
|
+
export declare function getSubmitterBuilder<TProtocol extends ProtocolType>({ submitterMetadata, transformersMetadata, multiProvider, }: SubmitterBuilderSettings): Promise<TxSubmitterBuilder<TProtocol>>;
|
|
5
|
+
//# sourceMappingURL=submit.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit.d.ts","sourceRoot":"","sources":["../../../src/submit/submit.ts"],"names":[],"mappings":"AAAA,OAAO,EAQL,kBAAkB,EAKnB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EACL,wBAAwB,EAGzB,MAAM,YAAY,CAAC;AAEpB,wBAAsB,mBAAmB,CAAC,SAAS,SAAS,YAAY,EAAE,EACxE,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,GACd,EAAE,wBAAwB,GAAG,OAAO,CAAC,kBAAkB,CAAC,SAAS,CAAC,CAAC,CAWnE"}
|
|
@@ -0,0 +1,30 @@
|
|
|
1
|
+
import { EV5GnosisSafeTxSubmitter, EV5ImpersonatedAccountTxSubmitter, EV5InterchainAccountTxTransformer, EV5JsonRpcTxSubmitter, TxSubmitterBuilder, TxSubmitterType, TxTransformerType, } from '@hyperlane-xyz/sdk';
|
|
2
|
+
export async function getSubmitterBuilder({ submitterMetadata, transformersMetadata, multiProvider, }) {
|
|
3
|
+
const submitter = await getSubmitter(multiProvider, submitterMetadata);
|
|
4
|
+
const transformers = await getTransformers(multiProvider, transformersMetadata);
|
|
5
|
+
return new TxSubmitterBuilder(submitter, transformers);
|
|
6
|
+
}
|
|
7
|
+
async function getSubmitter(multiProvider, submitterMetadata) {
|
|
8
|
+
switch (submitterMetadata.type) {
|
|
9
|
+
case TxSubmitterType.JSON_RPC:
|
|
10
|
+
return new EV5JsonRpcTxSubmitter(multiProvider);
|
|
11
|
+
case TxSubmitterType.IMPERSONATED_ACCOUNT:
|
|
12
|
+
return new EV5ImpersonatedAccountTxSubmitter(multiProvider, submitterMetadata.props);
|
|
13
|
+
case TxSubmitterType.GNOSIS_SAFE:
|
|
14
|
+
return new EV5GnosisSafeTxSubmitter(multiProvider, submitterMetadata.props);
|
|
15
|
+
default:
|
|
16
|
+
throw new Error(`Invalid TxSubmitterType: ${submitterMetadata.type}`);
|
|
17
|
+
}
|
|
18
|
+
}
|
|
19
|
+
async function getTransformers(multiProvider, metadata) {
|
|
20
|
+
return Promise.all(metadata.map(({ type, props: settings }) => getTransformer(multiProvider, { type, props: settings })));
|
|
21
|
+
}
|
|
22
|
+
async function getTransformer(multiProvider, transformerMetadata) {
|
|
23
|
+
switch (transformerMetadata.type) {
|
|
24
|
+
case TxTransformerType.ICA:
|
|
25
|
+
return new EV5InterchainAccountTxTransformer(multiProvider, transformerMetadata.props);
|
|
26
|
+
default:
|
|
27
|
+
throw new Error(`Invalid TxTransformerType: ${transformerMetadata.type}`);
|
|
28
|
+
}
|
|
29
|
+
}
|
|
30
|
+
//# sourceMappingURL=submit.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"submit.js","sourceRoot":"","sources":["../../../src/submit/submit.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,wBAAwB,EAExB,iCAAiC,EAEjC,iCAAiC,EACjC,qBAAqB,EAErB,kBAAkB,EAElB,eAAe,EAEf,iBAAiB,GAClB,MAAM,oBAAoB,CAAC;AAS5B,MAAM,CAAC,KAAK,UAAU,mBAAmB,CAAiC,EACxE,iBAAiB,EACjB,oBAAoB,EACpB,aAAa,GACY;IACzB,MAAM,SAAS,GAAG,MAAM,YAAY,CAClC,aAAa,EACb,iBAAiB,CAClB,CAAC;IACF,MAAM,YAAY,GAAG,MAAM,eAAe,CACxC,aAAa,EACb,oBAAoB,CACrB,CAAC;IAEF,OAAO,IAAI,kBAAkB,CAAY,SAAS,EAAE,YAAY,CAAC,CAAC;AACpE,CAAC;AAED,KAAK,UAAU,YAAY,CACzB,aAA4B,EAC5B,iBAAoC;IAEpC,QAAQ,iBAAiB,CAAC,IAAI,EAAE,CAAC;QAC/B,KAAK,eAAe,CAAC,QAAQ;YAC3B,OAAO,IAAI,qBAAqB,CAAC,aAAa,CAAC,CAAC;QAClD,KAAK,eAAe,CAAC,oBAAoB;YACvC,OAAO,IAAI,iCAAiC,CAC1C,aAAa,EACb,iBAAiB,CAAC,KAA+C,CAClE,CAAC;QACJ,KAAK,eAAe,CAAC,WAAW;YAC9B,OAAO,IAAI,wBAAwB,CACjC,aAAa,EACb,iBAAiB,CAAC,KAAsC,CACzD,CAAC;QACJ;YACE,MAAM,IAAI,KAAK,CAAC,4BAA4B,iBAAiB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC1E,CAAC;AACH,CAAC;AAED,KAAK,UAAU,eAAe,CAC5B,aAA4B,EAC5B,QAA+B;IAE/B,OAAO,OAAO,CAAC,GAAG,CAChB,QAAQ,CAAC,GAAG,CAAC,CAAC,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE,CACzC,cAAc,CAAY,aAAa,EAAE,EAAE,IAAI,EAAE,KAAK,EAAE,QAAQ,EAAE,CAAC,CACpE,CACF,CAAC;AACJ,CAAC;AAED,KAAK,UAAU,cAAc,CAC3B,aAA4B,EAC5B,mBAAwC;IAExC,QAAQ,mBAAmB,CAAC,IAAI,EAAE,CAAC;QACjC,KAAK,iBAAiB,CAAC,GAAG;YACxB,OAAO,IAAI,iCAAiC,CAC1C,aAAa,EACb,mBAAmB,CAAC,KAAK,CAC1B,CAAC;QACJ;YACE,MAAM,IAAI,KAAK,CAAC,8BAA8B,mBAAmB,CAAC,IAAI,EAAE,CAAC,CAAC;IAC9E,CAAC;AACH,CAAC"}
|
|
@@ -0,0 +1,18 @@
|
|
|
1
|
+
import type { EV5GnosisSafeTxSubmitterProps, EV5ImpersonatedAccountTxSubmitterProps, EV5InterchainAccountTxTransformerProps, MultiProvider, TxSubmitterType, TxTransformerType } from '@hyperlane-xyz/sdk';
|
|
2
|
+
export interface SubmitterBuilderSettings {
|
|
3
|
+
submitterMetadata: SubmitterMetadata;
|
|
4
|
+
transformersMetadata: TransformerMetadata[];
|
|
5
|
+
multiProvider: MultiProvider;
|
|
6
|
+
}
|
|
7
|
+
export interface SubmitterMetadata {
|
|
8
|
+
type: TxSubmitterType;
|
|
9
|
+
props: SubmitterProps;
|
|
10
|
+
}
|
|
11
|
+
export interface TransformerMetadata {
|
|
12
|
+
type: TxTransformerType;
|
|
13
|
+
props: TransformerProps;
|
|
14
|
+
}
|
|
15
|
+
type SubmitterProps = EV5ImpersonatedAccountTxSubmitterProps | EV5GnosisSafeTxSubmitterProps;
|
|
16
|
+
type TransformerProps = EV5InterchainAccountTxTransformerProps;
|
|
17
|
+
export {};
|
|
18
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/submit/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACV,6BAA6B,EAC7B,sCAAsC,EACtC,sCAAsC,EACtC,aAAa,EACb,eAAe,EACf,iBAAiB,EAClB,MAAM,oBAAoB,CAAC;AAE5B,MAAM,WAAW,wBAAwB;IACvC,iBAAiB,EAAE,iBAAiB,CAAC;IACrC,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;IAC5C,aAAa,EAAE,aAAa,CAAC;CAC9B;AACD,MAAM,WAAW,iBAAiB;IAChC,IAAI,EAAE,eAAe,CAAC;IACtB,KAAK,EAAE,cAAc,CAAC;CACvB;AACD,MAAM,WAAW,mBAAmB;IAClC,IAAI,EAAE,iBAAiB,CAAC;IACxB,KAAK,EAAE,gBAAgB,CAAC;CACzB;AAED,KAAK,cAAc,GACf,sCAAsC,GACtC,6BAA6B,CAAC;AAClC,KAAK,gBAAgB,GAAG,sCAAsC,CAAC"}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/submit/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployTestErc20.d.ts","sourceRoot":"","sources":["../../../src/tests/deployTestErc20.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
import { Wallet, providers } from 'ethers';
|
|
2
|
+
import fs from 'fs';
|
|
3
|
+
import { ERC20Test__factory } from '@hyperlane-xyz/core';
|
|
4
|
+
import { TokenType } from '@hyperlane-xyz/sdk';
|
|
5
|
+
async function deployERC20() {
|
|
6
|
+
const [rpcUrl, chain1, chain2, privateKey, outPath] = process.argv.slice(2);
|
|
7
|
+
console.log('Deploying Test ERC20 contract to local node');
|
|
8
|
+
const provider = new providers.JsonRpcProvider(rpcUrl);
|
|
9
|
+
const signer = new Wallet(privateKey, provider);
|
|
10
|
+
const factory = new ERC20Test__factory(signer);
|
|
11
|
+
const contract = await factory.deploy('fake', 'FAKE', '100000000000000000000', 18);
|
|
12
|
+
await contract.deployed();
|
|
13
|
+
console.log('Test ERC20 contract deployed', contract.address);
|
|
14
|
+
const warpDeploymentConfig = {
|
|
15
|
+
[chain1]: {
|
|
16
|
+
type: TokenType.collateral,
|
|
17
|
+
token: contract.address,
|
|
18
|
+
isNft: false,
|
|
19
|
+
},
|
|
20
|
+
[chain2]: { type: TokenType.synthetic },
|
|
21
|
+
};
|
|
22
|
+
console.log('Writing deployment config to', outPath);
|
|
23
|
+
fs.writeFileSync(outPath, JSON.stringify(warpDeploymentConfig, null, 2));
|
|
24
|
+
}
|
|
25
|
+
deployERC20().catch(console.error);
|
|
26
|
+
//# sourceMappingURL=deployTestErc20.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"deployTestErc20.js","sourceRoot":"","sources":["../../../src/tests/deployTestErc20.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAC3C,OAAO,EAAE,MAAM,IAAI,CAAC;AAEpB,OAAO,EAAE,kBAAkB,EAAE,MAAM,qBAAqB,CAAC;AACzD,OAAO,EAAE,SAAS,EAAyB,MAAM,oBAAoB,CAAC;AAEtE,KAAK,UAAU,WAAW;IACxB,MAAM,CAAC,MAAM,EAAE,MAAM,EAAE,MAAM,EAAE,UAAU,EAAE,OAAO,CAAC,GAAG,OAAO,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CAAC;IAC5E,OAAO,CAAC,GAAG,CAAC,6CAA6C,CAAC,CAAC;IAC3D,MAAM,QAAQ,GAAG,IAAI,SAAS,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,MAAM,GAAG,IAAI,MAAM,CAAC,UAAU,EAAE,QAAQ,CAAC,CAAC;IAChD,MAAM,OAAO,GAAG,IAAI,kBAAkB,CAAC,MAAM,CAAC,CAAC;IAC/C,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC,MAAM,CACnC,MAAM,EACN,MAAM,EACN,uBAAuB,EACvB,EAAE,CACH,CAAC;IACF,MAAM,QAAQ,CAAC,QAAQ,EAAE,CAAC;IAC1B,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,QAAQ,CAAC,OAAO,CAAC,CAAC;IAE9D,MAAM,oBAAoB,GAA0B;QAClD,CAAC,MAAM,CAAC,EAAE;YACR,IAAI,EAAE,SAAS,CAAC,UAAU;YAC1B,KAAK,EAAE,QAAQ,CAAC,OAAO;YACvB,KAAK,EAAE,KAAK;SACb;QACD,CAAC,MAAM,CAAC,EAAE,EAAE,IAAI,EAAE,SAAS,CAAC,SAAS,EAAE;KACxC,CAAC;IAEF,OAAO,CAAC,GAAG,CAAC,8BAA8B,EAAE,OAAO,CAAC,CAAC;IACrD,EAAE,CAAC,aAAa,CAAC,OAAO,EAAE,IAAI,CAAC,SAAS,CAAC,oBAAoB,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC,CAAC;AAC3E,CAAC;AAED,WAAW,EAAE,CAAC,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.test.d.ts","sourceRoot":"","sources":["../../../src/tests/hooks.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,83 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { GasOracleContractType, HookType, } from '@hyperlane-xyz/sdk';
|
|
3
|
+
import { readHooksConfigMap } from '../config/hooks.js';
|
|
4
|
+
describe('readHooksConfigMap', () => {
|
|
5
|
+
it('parses and validates example correctly', () => {
|
|
6
|
+
const hooks = readHooksConfigMap('examples/hooks.yaml');
|
|
7
|
+
const exampleHooksConfig = {
|
|
8
|
+
anvil1: {
|
|
9
|
+
required: {
|
|
10
|
+
type: HookType.PROTOCOL_FEE,
|
|
11
|
+
owner: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
12
|
+
beneficiary: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
13
|
+
maxProtocolFee: '1000000000000000000',
|
|
14
|
+
protocolFee: '200000000000000',
|
|
15
|
+
},
|
|
16
|
+
default: {
|
|
17
|
+
type: HookType.ROUTING,
|
|
18
|
+
owner: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
19
|
+
domains: {
|
|
20
|
+
anvil2: {
|
|
21
|
+
type: HookType.AGGREGATION,
|
|
22
|
+
hooks: [
|
|
23
|
+
{
|
|
24
|
+
type: HookType.MERKLE_TREE,
|
|
25
|
+
},
|
|
26
|
+
{
|
|
27
|
+
type: HookType.INTERCHAIN_GAS_PAYMASTER,
|
|
28
|
+
beneficiary: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
29
|
+
owner: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
30
|
+
oracleKey: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
31
|
+
gasOracleType: {
|
|
32
|
+
anvil2: GasOracleContractType.StorageGasOracle,
|
|
33
|
+
},
|
|
34
|
+
overhead: { anvil2: 50000 },
|
|
35
|
+
},
|
|
36
|
+
],
|
|
37
|
+
},
|
|
38
|
+
},
|
|
39
|
+
},
|
|
40
|
+
},
|
|
41
|
+
anvil2: {
|
|
42
|
+
required: {
|
|
43
|
+
type: HookType.PROTOCOL_FEE,
|
|
44
|
+
owner: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
45
|
+
beneficiary: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
46
|
+
maxProtocolFee: '1000000000000000000',
|
|
47
|
+
protocolFee: '200000000000000',
|
|
48
|
+
},
|
|
49
|
+
default: {
|
|
50
|
+
type: HookType.ROUTING,
|
|
51
|
+
owner: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
52
|
+
domains: {
|
|
53
|
+
anvil1: {
|
|
54
|
+
type: HookType.AGGREGATION,
|
|
55
|
+
hooks: [
|
|
56
|
+
{
|
|
57
|
+
type: HookType.MERKLE_TREE,
|
|
58
|
+
},
|
|
59
|
+
{
|
|
60
|
+
type: HookType.INTERCHAIN_GAS_PAYMASTER,
|
|
61
|
+
beneficiary: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
62
|
+
owner: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
63
|
+
oracleKey: '0xf39Fd6e51aad88F6F4ce6aB8827279cffFb92266',
|
|
64
|
+
gasOracleType: {
|
|
65
|
+
anvil1: GasOracleContractType.StorageGasOracle,
|
|
66
|
+
},
|
|
67
|
+
overhead: { anvil1: 50000 },
|
|
68
|
+
},
|
|
69
|
+
],
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
},
|
|
73
|
+
},
|
|
74
|
+
};
|
|
75
|
+
expect(hooks).to.deep.equal(exampleHooksConfig);
|
|
76
|
+
});
|
|
77
|
+
it('parsing failure, missing internal key "overhead"', () => {
|
|
78
|
+
expect(() => {
|
|
79
|
+
readHooksConfigMap('src/tests/hooks/safe-parse-fail.yaml');
|
|
80
|
+
}).to.throw('Invalid hook config: anvil2,default => Invalid input');
|
|
81
|
+
});
|
|
82
|
+
});
|
|
83
|
+
//# sourceMappingURL=hooks.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"hooks.test.js","sourceRoot":"","sources":["../../../src/tests/hooks.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAEL,qBAAqB,EACrB,QAAQ,GAET,MAAM,oBAAoB,CAAC;AAE5B,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAExD,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,KAAK,GAAG,kBAAkB,CAAC,qBAAqB,CAAC,CAAC;QAExD,MAAM,kBAAkB,GAA0B;YAChD,MAAM,EAAE;gBACN,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ,CAAC,YAAY;oBAC3B,KAAK,EAAE,4CAA4C;oBACnD,WAAW,EAAE,4CAA4C;oBACzD,cAAc,EAAE,qBAAqB;oBACrC,WAAW,EAAE,iBAAiB;iBAC/B;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ,CAAC,OAAO;oBACtB,KAAK,EAAE,4CAA4C;oBACnD,OAAO,EAAE;wBACP,MAAM,EAAE;4BACN,IAAI,EAAE,QAAQ,CAAC,WAAW;4BAC1B,KAAK,EAAE;gCACL;oCACE,IAAI,EAAE,QAAQ,CAAC,WAAW;iCAC3B;gCACD;oCACE,IAAI,EAAE,QAAQ,CAAC,wBAAwB;oCACvC,WAAW,EAAE,4CAA4C;oCACzD,KAAK,EAAE,4CAA4C;oCACnD,SAAS,EAAE,4CAA4C;oCACvD,aAAa,EAAE;wCACb,MAAM,EAAE,qBAAqB,CAAC,gBAAgB;qCAC/C;oCACD,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;iCAC5B;6BACF;yBACF;qBACF;iBACF;aACF;YACD,MAAM,EAAE;gBACN,QAAQ,EAAE;oBACR,IAAI,EAAE,QAAQ,CAAC,YAAY;oBAC3B,KAAK,EAAE,4CAA4C;oBACnD,WAAW,EAAE,4CAA4C;oBACzD,cAAc,EAAE,qBAAqB;oBACrC,WAAW,EAAE,iBAAiB;iBAC/B;gBACD,OAAO,EAAE;oBACP,IAAI,EAAE,QAAQ,CAAC,OAAO;oBACtB,KAAK,EAAE,4CAA4C;oBACnD,OAAO,EAAE;wBACP,MAAM,EAAE;4BACN,IAAI,EAAE,QAAQ,CAAC,WAAW;4BAC1B,KAAK,EAAE;gCACL;oCACE,IAAI,EAAE,QAAQ,CAAC,WAAW;iCAC3B;gCACD;oCACE,IAAI,EAAE,QAAQ,CAAC,wBAAwB;oCACvC,WAAW,EAAE,4CAA4C;oCACzD,KAAK,EAAE,4CAA4C;oCACnD,SAAS,EAAE,4CAA4C;oCACvD,aAAa,EAAE;wCACb,MAAM,EAAE,qBAAqB,CAAC,gBAAgB;qCAC/C;oCACD,QAAQ,EAAE,EAAE,MAAM,EAAE,KAAK,EAAE;iCAC5B;6BACF;yBACF;qBACF;iBACF;aACF;SACF,CAAC;QACF,MAAM,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,kBAAkB,CAAC,CAAC;IAClD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,kDAAkD,EAAE,GAAG,EAAE;QAC1D,MAAM,CAAC,GAAG,EAAE;YACV,kBAAkB,CAAC,sCAAsC,CAAC,CAAC;QAC7D,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,sDAAsD,CAAC,CAAC;IACtE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ism.test.d.ts","sourceRoot":"","sources":["../../../src/tests/ism.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,76 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { IsmType } from '@hyperlane-xyz/sdk';
|
|
3
|
+
import { readIsmConfig } from '../config/ism.js';
|
|
4
|
+
describe('readIsmConfig', () => {
|
|
5
|
+
it('parses and validates example correctly', () => {
|
|
6
|
+
const ism = readIsmConfig('examples/ism-advanced.yaml');
|
|
7
|
+
const exampleIsmConfig = {
|
|
8
|
+
anvil1: {
|
|
9
|
+
type: IsmType.FALLBACK_ROUTING,
|
|
10
|
+
owner: '0xa0ee7a142d267c1f36714e4a8f75612f20a79720',
|
|
11
|
+
domains: {
|
|
12
|
+
anvil2: {
|
|
13
|
+
type: IsmType.AGGREGATION,
|
|
14
|
+
modules: [
|
|
15
|
+
{
|
|
16
|
+
type: IsmType.MESSAGE_ID_MULTISIG,
|
|
17
|
+
threshold: 1,
|
|
18
|
+
validators: ['0xa0ee7a142d267c1f36714e4a8f75612f20a79720'],
|
|
19
|
+
},
|
|
20
|
+
{
|
|
21
|
+
type: IsmType.MERKLE_ROOT_MULTISIG,
|
|
22
|
+
threshold: 1,
|
|
23
|
+
validators: ['0xa0ee7a142d267c1f36714e4a8f75612f20a79720'],
|
|
24
|
+
},
|
|
25
|
+
],
|
|
26
|
+
threshold: 1,
|
|
27
|
+
},
|
|
28
|
+
},
|
|
29
|
+
},
|
|
30
|
+
anvil2: {
|
|
31
|
+
type: IsmType.ROUTING,
|
|
32
|
+
owner: '0xa0ee7a142d267c1f36714e4a8f75612f20a79720',
|
|
33
|
+
domains: {
|
|
34
|
+
anvil1: {
|
|
35
|
+
type: IsmType.AGGREGATION,
|
|
36
|
+
modules: [
|
|
37
|
+
{
|
|
38
|
+
type: IsmType.MESSAGE_ID_MULTISIG,
|
|
39
|
+
threshold: 1,
|
|
40
|
+
validators: ['0xa0ee7a142d267c1f36714e4a8f75612f20a79720'],
|
|
41
|
+
},
|
|
42
|
+
{
|
|
43
|
+
type: IsmType.MERKLE_ROOT_MULTISIG,
|
|
44
|
+
threshold: 1,
|
|
45
|
+
validators: ['0xa0ee7a142d267c1f36714e4a8f75612f20a79720'],
|
|
46
|
+
},
|
|
47
|
+
],
|
|
48
|
+
threshold: 1,
|
|
49
|
+
},
|
|
50
|
+
},
|
|
51
|
+
},
|
|
52
|
+
};
|
|
53
|
+
expect(ism).to.deep.equal(exampleIsmConfig);
|
|
54
|
+
});
|
|
55
|
+
it('parsing failure, missing internal key "threshold"', () => {
|
|
56
|
+
expect(function () {
|
|
57
|
+
readIsmConfig('src/tests/ism/safe-parse-fail.yaml');
|
|
58
|
+
}).to.throw();
|
|
59
|
+
});
|
|
60
|
+
it('parsing failure, routingIsm.domains includes destination domain', () => {
|
|
61
|
+
expect(function () {
|
|
62
|
+
readIsmConfig('src/tests/ism/routing-same-chain-fail.yaml');
|
|
63
|
+
}).to.throw('Cannot set RoutingIsm.domain to the same chain you are configuring');
|
|
64
|
+
});
|
|
65
|
+
it('parsing failure, wrong ism type', () => {
|
|
66
|
+
expect(function () {
|
|
67
|
+
readIsmConfig('src/tests/ism/wrong-ism-type-fail.yaml');
|
|
68
|
+
}).to.throw('Invalid ISM config: anvil2 => Invalid input');
|
|
69
|
+
});
|
|
70
|
+
it('parsing failure, threshold > modules.length', () => {
|
|
71
|
+
expect(function () {
|
|
72
|
+
readIsmConfig('src/tests/ism/threshold-gt-modules-length-fail.yaml');
|
|
73
|
+
}).to.throw('Threshold cannot be greater than number of modules');
|
|
74
|
+
});
|
|
75
|
+
});
|
|
76
|
+
//# sourceMappingURL=ism.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ism.test.js","sourceRoot":"","sources":["../../../src/tests/ism.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAE9B,OAAO,EAAuB,OAAO,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,EAAE,aAAa,EAAE,MAAM,kBAAkB,CAAC;AAEjD,QAAQ,CAAC,eAAe,EAAE,GAAG,EAAE;IAC7B,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,GAAG,GAAG,aAAa,CAAC,4BAA4B,CAAC,CAAC;QAExD,MAAM,gBAAgB,GAAwB;YAC5C,MAAM,EAAE;gBACN,IAAI,EAAE,OAAO,CAAC,gBAAgB;gBAC9B,KAAK,EAAE,4CAA4C;gBACnD,OAAO,EAAE;oBACP,MAAM,EAAE;wBACN,IAAI,EAAE,OAAO,CAAC,WAAW;wBACzB,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,OAAO,CAAC,mBAAmB;gCACjC,SAAS,EAAE,CAAC;gCACZ,UAAU,EAAE,CAAC,4CAA4C,CAAC;6BAC3D;4BACD;gCACE,IAAI,EAAE,OAAO,CAAC,oBAAoB;gCAClC,SAAS,EAAE,CAAC;gCACZ,UAAU,EAAE,CAAC,4CAA4C,CAAC;6BAC3D;yBACF;wBACD,SAAS,EAAE,CAAC;qBACb;iBACF;aACF;YACD,MAAM,EAAE;gBACN,IAAI,EAAE,OAAO,CAAC,OAAO;gBACrB,KAAK,EAAE,4CAA4C;gBACnD,OAAO,EAAE;oBACP,MAAM,EAAE;wBACN,IAAI,EAAE,OAAO,CAAC,WAAW;wBACzB,OAAO,EAAE;4BACP;gCACE,IAAI,EAAE,OAAO,CAAC,mBAAmB;gCACjC,SAAS,EAAE,CAAC;gCACZ,UAAU,EAAE,CAAC,4CAA4C,CAAC;6BAC3D;4BACD;gCACE,IAAI,EAAE,OAAO,CAAC,oBAAoB;gCAClC,SAAS,EAAE,CAAC;gCACZ,UAAU,EAAE,CAAC,4CAA4C,CAAC;6BAC3D;yBACF;wBACD,SAAS,EAAE,CAAC;qBACb;iBACF;aACF;SACF,CAAC;QACF,MAAM,CAAC,GAAG,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,gBAAgB,CAAC,CAAC;IAC9C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,mDAAmD,EAAE,GAAG,EAAE;QAC3D,MAAM,CAAC;YACL,aAAa,CAAC,oCAAoC,CAAC,CAAC;QACtD,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,EAAE,CAAC;IAChB,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iEAAiE,EAAE,GAAG,EAAE;QACzE,MAAM,CAAC;YACL,aAAa,CAAC,4CAA4C,CAAC,CAAC;QAC9D,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CACT,oEAAoE,CACrE,CAAC;IACJ,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iCAAiC,EAAE,GAAG,EAAE;QACzC,MAAM,CAAC;YACL,aAAa,CAAC,wCAAwC,CAAC,CAAC;QAC1D,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,6CAA6C,CAAC,CAAC;IAC7D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,6CAA6C,EAAE,GAAG,EAAE;QACrD,MAAM,CAAC;YACL,aAAa,CAAC,qDAAqD,CAAC,CAAC;QACvE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,oDAAoD,CAAC,CAAC;IACpE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multisig.test.d.ts","sourceRoot":"","sources":["../../../src/tests/multisig.test.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,34 @@
|
|
|
1
|
+
import { expect } from 'chai';
|
|
2
|
+
import { readMultisigConfig } from '../config/multisig.js';
|
|
3
|
+
describe('readMultisigConfig', () => {
|
|
4
|
+
it('parses and validates example correctly', () => {
|
|
5
|
+
const multisig = readMultisigConfig('examples/ism.yaml');
|
|
6
|
+
const exampleMultisigConfig = {
|
|
7
|
+
anvil1: {
|
|
8
|
+
threshold: 1,
|
|
9
|
+
validators: ['0xa0Ee7A142d267C1f36714E4a8F75612F20a79720'],
|
|
10
|
+
},
|
|
11
|
+
anvil2: {
|
|
12
|
+
threshold: 1,
|
|
13
|
+
validators: ['0xa0Ee7A142d267C1f36714E4a8F75612F20a79720'],
|
|
14
|
+
},
|
|
15
|
+
};
|
|
16
|
+
expect(multisig).to.deep.equal(exampleMultisigConfig);
|
|
17
|
+
});
|
|
18
|
+
it('parsing failure', () => {
|
|
19
|
+
expect(function () {
|
|
20
|
+
readMultisigConfig('src/tests/multisig/safe-parse-fail.yaml');
|
|
21
|
+
}).to.throw('Invalid multisig config: anvil2,validators => Required');
|
|
22
|
+
});
|
|
23
|
+
it('threshold cannot be greater than the # of validators', () => {
|
|
24
|
+
expect(function () {
|
|
25
|
+
readMultisigConfig('src/tests/multisig/threshold-gt-fail.yaml');
|
|
26
|
+
}).to.throw('Threshold cannot be greater than number of validators');
|
|
27
|
+
});
|
|
28
|
+
it('invalid address', () => {
|
|
29
|
+
expect(function () {
|
|
30
|
+
readMultisigConfig('src/tests/multisig/invalid-address-fail.yaml');
|
|
31
|
+
}).to.throw('Invalid multisig config: anvil2,validators,0 => Invalid');
|
|
32
|
+
});
|
|
33
|
+
});
|
|
34
|
+
//# sourceMappingURL=multisig.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"multisig.test.js","sourceRoot":"","sources":["../../../src/tests/multisig.test.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,MAAM,CAAC;AAI9B,OAAO,EAAE,kBAAkB,EAAE,MAAM,uBAAuB,CAAC;AAE3D,QAAQ,CAAC,oBAAoB,EAAE,GAAG,EAAE;IAClC,EAAE,CAAC,wCAAwC,EAAE,GAAG,EAAE;QAChD,MAAM,QAAQ,GAAG,kBAAkB,CAAC,mBAAmB,CAAC,CAAC;QAEzD,MAAM,qBAAqB,GAA6B;YACtD,MAAM,EAAE;gBACN,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC,4CAA4C,CAAC;aAC3D;YACD,MAAM,EAAE;gBACN,SAAS,EAAE,CAAC;gBACZ,UAAU,EAAE,CAAC,4CAA4C,CAAC;aAC3D;SACF,CAAC;QACF,MAAM,CAAC,QAAQ,CAAC,CAAC,EAAE,CAAC,IAAI,CAAC,KAAK,CAAC,qBAAqB,CAAC,CAAC;IACxD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,CAAC;YACL,kBAAkB,CAAC,yCAAyC,CAAC,CAAC;QAChE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,wDAAwD,CAAC,CAAC;IACxE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,sDAAsD,EAAE,GAAG,EAAE;QAC9D,MAAM,CAAC;YACL,kBAAkB,CAAC,2CAA2C,CAAC,CAAC;QAClE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,uDAAuD,CAAC,CAAC;IACvE,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,iBAAiB,EAAE,GAAG,EAAE;QACzB,MAAM,CAAC;YACL,kBAAkB,CAAC,8CAA8C,CAAC,CAAC;QACrE,CAAC,CAAC,CAAC,EAAE,CAAC,KAAK,CAAC,yDAAyD,CAAC,CAAC;IACzE,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,7 +1,5 @@
|
|
|
1
1
|
import { ethers } from 'ethers';
|
|
2
2
|
import { ChainName, MultiProvider } from '@hyperlane-xyz/sdk';
|
|
3
|
-
|
|
4
|
-
export declare function
|
|
5
|
-
export declare function assertGasBalances(multiProvider: MultiProvider, signer: ethers.Signer, chains: ChainName[], minGas: string): Promise<void>;
|
|
6
|
-
export declare function assertTokenBalance(multiProvider: MultiProvider, signer: ethers.Signer, chain: ChainName, token: Address, minBalanceWei: string): Promise<void>;
|
|
3
|
+
export declare function nativeBalancesAreSufficient(multiProvider: MultiProvider, signer: ethers.Signer, chains: ChainName[], minBalanceWei: string): Promise<boolean>;
|
|
4
|
+
export declare function gasBalancesAreSufficient(multiProvider: MultiProvider, signer: ethers.Signer, chains: ChainName[], minGas: string): Promise<boolean>;
|
|
7
5
|
//# sourceMappingURL=balances.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balances.d.ts","sourceRoot":"","sources":["../../../src/utils/balances.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"balances.d.ts","sourceRoot":"","sources":["../../../src/utils/balances.ts"],"names":[],"mappings":"AACA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAE9D,wBAAsB,2BAA2B,CAC/C,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EACrB,MAAM,EAAE,SAAS,EAAE,EACnB,aAAa,EAAE,MAAM,GACpB,OAAO,CAAC,OAAO,CAAC,CAuBlB;AAED,wBAAsB,wBAAwB,CAC5C,aAAa,EAAE,aAAa,EAC5B,MAAM,EAAE,MAAM,CAAC,MAAM,EACrB,MAAM,EAAE,SAAS,EAAE,EACnB,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,OAAO,CAAC,CAgBlB"}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
import { confirm } from '@inquirer/prompts';
|
|
2
2
|
import { ethers } from 'ethers';
|
|
3
|
-
|
|
4
|
-
export async function assertNativeBalances(multiProvider, signer, chains, minBalanceWei) {
|
|
3
|
+
export async function nativeBalancesAreSufficient(multiProvider, signer, chains, minBalanceWei) {
|
|
5
4
|
const address = await signer.getAddress();
|
|
6
5
|
const minBalance = ethers.utils.formatEther(minBalanceWei.toString());
|
|
6
|
+
let sufficient = true;
|
|
7
7
|
await Promise.all(chains.map(async (chain) => {
|
|
8
8
|
const balanceWei = await multiProvider
|
|
9
9
|
.getProvider(chain)
|
|
@@ -17,23 +17,19 @@ export async function assertNativeBalances(multiProvider, signer, chains, minBal
|
|
|
17
17
|
});
|
|
18
18
|
if (!isResume)
|
|
19
19
|
throw new Error(error);
|
|
20
|
+
sufficient = false;
|
|
20
21
|
}
|
|
21
22
|
}));
|
|
23
|
+
return sufficient;
|
|
22
24
|
}
|
|
23
|
-
export async function
|
|
25
|
+
export async function gasBalancesAreSufficient(multiProvider, signer, chains, minGas) {
|
|
26
|
+
let sufficient = true;
|
|
24
27
|
await Promise.all(chains.map(async (chain) => {
|
|
25
28
|
const provider = multiProvider.getProvider(chain);
|
|
26
29
|
const gasPrice = await provider.getGasPrice();
|
|
27
30
|
const minBalanceWei = gasPrice.mul(minGas).toString();
|
|
28
|
-
await
|
|
31
|
+
sufficient = await nativeBalancesAreSufficient(multiProvider, signer, [chain], minBalanceWei);
|
|
29
32
|
}));
|
|
30
|
-
|
|
31
|
-
export async function assertTokenBalance(multiProvider, signer, chain, token, minBalanceWei) {
|
|
32
|
-
const address = await signer.getAddress();
|
|
33
|
-
const provider = multiProvider.getProvider(chain);
|
|
34
|
-
const tokenContract = ERC20__factory.connect(token, provider);
|
|
35
|
-
const balanceWei = await tokenContract.balanceOf(address);
|
|
36
|
-
if (balanceWei.lt(minBalanceWei))
|
|
37
|
-
throw new Error(`${address} has insufficient balance on ${chain} for token ${token}. At least ${minBalanceWei} wei required but found ${balanceWei.toString()} wei`);
|
|
33
|
+
return sufficient;
|
|
38
34
|
}
|
|
39
35
|
//# sourceMappingURL=balances.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"balances.js","sourceRoot":"","sources":["../../../src/utils/balances.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"balances.js","sourceRoot":"","sources":["../../../src/utils/balances.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,mBAAmB,CAAC;AAC5C,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAIhC,MAAM,CAAC,KAAK,UAAU,2BAA2B,CAC/C,aAA4B,EAC5B,MAAqB,EACrB,MAAmB,EACnB,aAAqB;IAErB,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,UAAU,EAAE,CAAC;IAC1C,MAAM,UAAU,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC,CAAC;IACtE,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACzB,MAAM,UAAU,GAAG,MAAM,aAAa;aACnC,WAAW,CAAC,KAAK,CAAC;aAClB,UAAU,CAAC,OAAO,CAAC,CAAC;QACvB,MAAM,OAAO,GAAG,MAAM,CAAC,KAAK,CAAC,WAAW,CAAC,UAAU,CAAC,CAAC;QACrD,IAAI,UAAU,CAAC,EAAE,CAAC,aAAa,CAAC,EAAE,CAAC;YACjC,MAAM,MAAM,GACV,aAAa,CAAC,gBAAgB,CAAC,KAAK,CAAC,CAAC,WAAW,EAAE,MAAM,IAAI,KAAK,CAAC;YACrE,MAAM,KAAK,GAAG,GAAG,OAAO,uBAAuB,KAAK,cAAc,UAAU,0BAA0B,OAAO,CAAC,QAAQ,EAAE,IAAI,MAAM,EAAE,CAAC;YACrI,MAAM,QAAQ,GAAG,MAAM,OAAO,CAAC;gBAC7B,OAAO,EAAE,YAAY,KAAK,YAAY;aACvC,CAAC,CAAC;YACH,IAAI,CAAC,QAAQ;gBAAE,MAAM,IAAI,KAAK,CAAC,KAAK,CAAC,CAAC;YACtC,UAAU,GAAG,KAAK,CAAC;QACrB,CAAC;IACH,CAAC,CAAC,CACH,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC;AAED,MAAM,CAAC,KAAK,UAAU,wBAAwB,CAC5C,aAA4B,EAC5B,MAAqB,EACrB,MAAmB,EACnB,MAAc;IAEd,IAAI,UAAU,GAAG,IAAI,CAAC;IACtB,MAAM,OAAO,CAAC,GAAG,CACf,MAAM,CAAC,GAAG,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE;QACzB,MAAM,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,KAAK,CAAC,CAAC;QAClD,MAAM,QAAQ,GAAG,MAAM,QAAQ,CAAC,WAAW,EAAE,CAAC;QAC9C,MAAM,aAAa,GAAG,QAAQ,CAAC,GAAG,CAAC,MAAM,CAAC,CAAC,QAAQ,EAAE,CAAC;QACtD,UAAU,GAAG,MAAM,2BAA2B,CAC5C,aAAa,EACb,MAAM,EACN,CAAC,KAAK,CAAC,EACP,aAAa,CACd,CAAC;IACJ,CAAC,CAAC,CACH,CAAC;IACF,OAAO,UAAU,CAAC;AACpB,CAAC"}
|
|
@@ -1,4 +1,5 @@
|
|
|
1
1
|
import { ChainMap, ChainMetadata } from '@hyperlane-xyz/sdk';
|
|
2
|
-
export declare function runSingleChainSelectionStep(
|
|
3
|
-
export declare function runMultiChainSelectionStep(
|
|
2
|
+
export declare function runSingleChainSelectionStep(chainMetadata: ChainMap<ChainMetadata>, message?: string): Promise<string>;
|
|
3
|
+
export declare function runMultiChainSelectionStep(chainMetadata: ChainMap<ChainMetadata>, message?: string, requireMultiple?: boolean): Promise<string[]>;
|
|
4
|
+
export declare function detectAndConfirmOrPrompt(detect: () => Promise<string>, label: string, prompt: string): Promise<string>;
|
|
4
5
|
//# sourceMappingURL=chains.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../src/utils/chains.ts"],"names":[],"mappings":"AAIA,OAAO,
|
|
1
|
+
{"version":3,"file":"chains.d.ts","sourceRoot":"","sources":["../../../src/utils/chains.ts"],"names":[],"mappings":"AAIA,OAAO,EAAE,QAAQ,EAAE,aAAa,EAAE,MAAM,oBAAoB,CAAC;AAQ7D,wBAAsB,2BAA2B,CAC/C,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,EACtC,OAAO,SAAiB,mBAUzB;AAED,wBAAsB,0BAA0B,CAC9C,aAAa,EAAE,QAAQ,CAAC,aAAa,CAAC,EACtC,OAAO,SAAkB,EACzB,eAAe,UAAQ,qBAiBxB;AA8BD,wBAAsB,wBAAwB,CAC5C,MAAM,EAAE,MAAM,OAAO,CAAC,MAAM,CAAC,EAC7B,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,MAAM,GACb,OAAO,CAAC,MAAM,CAAC,CAajB"}
|