@hyperlane-xyz/sdk 1.5.3 → 1.5.5-beta0
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/dist/consts/chainMetadata.d.ts +5 -0
- package/dist/consts/chainMetadata.d.ts.map +1 -1
- package/dist/consts/chainMetadata.js +133 -5
- package/dist/consts/chainMetadata.js.map +1 -1
- package/dist/consts/chains.d.ts +11 -6
- package/dist/consts/chains.d.ts.map +1 -1
- package/dist/consts/chains.js +15 -7
- package/dist/consts/chains.js.map +1 -1
- package/dist/consts/environments/index.d.ts +387 -61
- package/dist/consts/environments/index.d.ts.map +1 -1
- package/dist/consts/environments/index.js +7 -3
- package/dist/consts/environments/index.js.map +1 -1
- package/dist/consts/environments/mainnet.json +0 -17
- package/dist/consts/environments/testnet-sealevel.json +19 -0
- package/dist/consts/environments/testnet.json +181 -167
- package/dist/consts/multisigIsm.d.ts +2 -2
- package/dist/consts/multisigIsm.d.ts.map +1 -1
- package/dist/consts/multisigIsm.js +61 -58
- package/dist/consts/multisigIsm.js.map +1 -1
- package/dist/contracts/contracts.d.ts +2 -7
- package/dist/contracts/contracts.d.ts.map +1 -1
- package/dist/contracts/contracts.js +7 -31
- package/dist/contracts/contracts.js.map +1 -1
- package/dist/core/CoreDeployer.hardhat-test.js +4 -4
- package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
- package/dist/core/HyperlaneCore.d.ts +5 -1
- package/dist/core/HyperlaneCore.d.ts.map +1 -1
- package/dist/core/HyperlaneCore.js +13 -0
- package/dist/core/HyperlaneCore.js.map +1 -1
- package/dist/core/HyperlaneCoreChecker.d.ts.map +1 -1
- package/dist/core/HyperlaneCoreChecker.js +3 -3
- package/dist/core/HyperlaneCoreChecker.js.map +1 -1
- package/dist/core/HyperlaneCoreDeployer.d.ts +7 -2
- package/dist/core/HyperlaneCoreDeployer.d.ts.map +1 -1
- package/dist/core/HyperlaneCoreDeployer.js +47 -27
- package/dist/core/HyperlaneCoreDeployer.js.map +1 -1
- package/dist/core/MultiProtocolCore.d.ts.map +1 -1
- package/dist/core/MultiProtocolCore.js +1 -0
- package/dist/core/MultiProtocolCore.js.map +1 -1
- package/dist/core/TestCoreApp.d.ts +0 -1
- package/dist/core/TestCoreApp.d.ts.map +1 -1
- package/dist/core/contracts.d.ts +3 -9
- package/dist/core/contracts.d.ts.map +1 -1
- package/dist/core/contracts.js +0 -1
- package/dist/core/contracts.js.map +1 -1
- package/dist/core/testHyperlaneDeploy.hardhat-test.js +3 -2
- package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +1 -1
- package/dist/core/types.d.ts +4 -1
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js.map +1 -1
- package/dist/deploy/HyperlaneAppChecker.d.ts +0 -1
- package/dist/deploy/HyperlaneAppChecker.d.ts.map +1 -1
- package/dist/deploy/HyperlaneAppChecker.js +5 -30
- package/dist/deploy/HyperlaneAppChecker.js.map +1 -1
- package/dist/deploy/HyperlaneDeployer.d.ts +7 -5
- package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
- package/dist/deploy/HyperlaneDeployer.js +28 -25
- package/dist/deploy/HyperlaneDeployer.js.map +1 -1
- package/dist/deploy/HyperlaneProxyFactoryDeployer.d.ts +10 -0
- package/dist/deploy/HyperlaneProxyFactoryDeployer.d.ts.map +1 -0
- package/dist/deploy/HyperlaneProxyFactoryDeployer.js +30 -0
- package/dist/deploy/HyperlaneProxyFactoryDeployer.js.map +1 -0
- package/dist/deploy/contracts.d.ts +13 -0
- package/dist/deploy/contracts.d.ts.map +1 -0
- package/dist/deploy/contracts.js +20 -0
- package/dist/deploy/contracts.js.map +1 -0
- package/dist/gas/HyperlaneIgp.js +1 -1
- package/dist/gas/HyperlaneIgp.js.map +1 -1
- package/dist/gas/HyperlaneIgpChecker.d.ts +2 -2
- package/dist/gas/HyperlaneIgpChecker.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpChecker.js +10 -27
- package/dist/gas/HyperlaneIgpChecker.js.map +1 -1
- package/dist/gas/HyperlaneIgpDeployer.d.ts +4 -6
- package/dist/gas/HyperlaneIgpDeployer.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpDeployer.js +12 -43
- package/dist/gas/HyperlaneIgpDeployer.js.map +1 -1
- package/dist/gas/contracts.d.ts +2 -4
- package/dist/gas/contracts.d.ts.map +1 -1
- package/dist/gas/contracts.js +1 -3
- package/dist/gas/contracts.js.map +1 -1
- package/dist/gas/types.d.ts +2 -6
- package/dist/gas/types.d.ts.map +1 -1
- package/dist/gas/types.js.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.d.ts +28 -10
- package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.js +51 -70
- package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
- package/dist/hook/contracts.d.ts +6 -17
- package/dist/hook/contracts.d.ts.map +1 -1
- package/dist/hook/contracts.js +6 -13
- package/dist/hook/contracts.js.map +1 -1
- package/dist/hook/types.d.ts +24 -13
- package/dist/hook/types.d.ts.map +1 -1
- package/dist/hook/types.js +8 -6
- package/dist/hook/types.js.map +1 -1
- package/dist/index.d.ts +18 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +37 -21
- package/dist/index.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts +5 -4
- package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +3 -3
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.js +18 -59
- package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
- package/dist/ism/contracts.d.ts +4 -3
- package/dist/ism/contracts.d.ts.map +1 -1
- package/dist/ism/contracts.js +3 -2
- package/dist/ism/contracts.js.map +1 -1
- package/dist/ism/types.d.ts +6 -4
- package/dist/ism/types.d.ts.map +1 -1
- package/dist/ism/types.js.map +1 -1
- package/dist/metadata/ChainMetadataManager.d.ts +0 -10
- package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
- package/dist/metadata/ChainMetadataManager.js +2 -14
- package/dist/metadata/ChainMetadataManager.js.map +1 -1
- package/dist/metadata/agentConfig.d.ts +523 -1348
- package/dist/metadata/agentConfig.d.ts.map +1 -1
- package/dist/metadata/agentConfig.js +61 -94
- package/dist/metadata/agentConfig.js.map +1 -1
- package/dist/metadata/agentConfig.test.js +9 -9
- package/dist/metadata/agentConfig.test.js.map +1 -1
- package/dist/metadata/chainMetadataTypes.d.ts +1 -1
- package/dist/metadata/chainMetadataTypes.js +4 -4
- package/dist/metadata/chainMetadataTypes.js.map +1 -1
- package/dist/metadata/deploymentArtifacts.d.ts +5 -2
- package/dist/metadata/deploymentArtifacts.d.ts.map +1 -1
- package/dist/metadata/deploymentArtifacts.js +1 -0
- package/dist/metadata/deploymentArtifacts.js.map +1 -1
- package/dist/metadata/matchingList.d.ts +1 -1
- package/dist/metadata/matchingList.d.ts.map +1 -1
- package/dist/metadata/matchingList.js +1 -1
- package/dist/metadata/matchingList.js.map +1 -1
- package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccount.js +1 -4
- package/dist/middleware/account/InterchainAccount.js.map +1 -1
- package/dist/middleware/account/InterchainAccountDeployer.d.ts +2 -7
- package/dist/middleware/account/InterchainAccountDeployer.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccountDeployer.js +4 -9
- package/dist/middleware/account/InterchainAccountDeployer.js.map +1 -1
- package/dist/middleware/account/accounts.hardhat-test.js +3 -5
- package/dist/middleware/account/accounts.hardhat-test.js.map +1 -1
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts +2 -7
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts.map +1 -1
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js +7 -11
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js.map +1 -1
- package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js +3 -7
- package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js.map +1 -1
- package/dist/middleware/query/InterchainQueryDeployer.d.ts +2 -7
- package/dist/middleware/query/InterchainQueryDeployer.d.ts.map +1 -1
- package/dist/middleware/query/InterchainQueryDeployer.js +3 -4
- package/dist/middleware/query/InterchainQueryDeployer.js.map +1 -1
- package/dist/middleware/query/queries.hardhat-test.js +4 -9
- package/dist/middleware/query/queries.hardhat-test.js.map +1 -1
- package/dist/providers/MultiProvider.d.ts +6 -1
- package/dist/providers/MultiProvider.d.ts.map +1 -1
- package/dist/providers/MultiProvider.js +11 -0
- package/dist/providers/MultiProvider.js.map +1 -1
- package/dist/router/GasRouterDeployer.d.ts.map +1 -1
- package/dist/router/GasRouterDeployer.js +1 -1
- package/dist/router/GasRouterDeployer.js.map +1 -1
- package/dist/router/HyperlaneRouterChecker.d.ts +2 -6
- package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
- package/dist/router/HyperlaneRouterChecker.js +12 -47
- package/dist/router/HyperlaneRouterChecker.js.map +1 -1
- package/dist/router/HyperlaneRouterDeployer.d.ts +1 -1
- package/dist/router/HyperlaneRouterDeployer.d.ts.map +1 -1
- package/dist/router/HyperlaneRouterDeployer.js +15 -18
- package/dist/router/HyperlaneRouterDeployer.js.map +1 -1
- package/dist/router/ProxiedRouterChecker.js +1 -1
- package/dist/router/ProxiedRouterChecker.js.map +1 -1
- package/dist/router/RouterApps.d.ts +1 -7
- package/dist/router/RouterApps.d.ts.map +1 -1
- package/dist/router/RouterApps.js +0 -17
- package/dist/router/RouterApps.js.map +1 -1
- package/dist/router/types.d.ts +14 -23
- package/dist/router/types.d.ts.map +1 -1
- package/dist/router/types.js +7 -11
- package/dist/router/types.js.map +1 -1
- package/dist/test/testUtils.d.ts +0 -2
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +15 -20
- package/dist/test/testUtils.js.map +1 -1
- package/dist/token/adapters/EvmTokenAdapter.d.ts +65 -0
- package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -0
- package/dist/token/adapters/EvmTokenAdapter.js +119 -0
- package/dist/token/adapters/EvmTokenAdapter.js.map +1 -0
- package/dist/token/adapters/ITokenAdapter.d.ts +30 -0
- package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -0
- package/dist/token/adapters/ITokenAdapter.js +3 -0
- package/dist/token/adapters/ITokenAdapter.js.map +1 -0
- package/dist/token/adapters/SealevelTokenAdapter.d.ts +117 -0
- package/dist/token/adapters/SealevelTokenAdapter.d.ts.map +1 -0
- package/dist/token/adapters/SealevelTokenAdapter.js +423 -0
- package/dist/token/adapters/SealevelTokenAdapter.js.map +1 -0
- package/dist/token/adapters/serialization.d.ts +50 -0
- package/dist/token/adapters/serialization.d.ts.map +1 -0
- package/dist/token/adapters/serialization.js +117 -0
- package/dist/token/adapters/serialization.js.map +1 -0
- package/dist/token/config.d.ts +45 -0
- package/dist/token/config.d.ts.map +1 -0
- package/dist/token/config.js +26 -0
- package/dist/token/config.js.map +1 -0
- package/dist/token/contracts.d.ts +9 -0
- package/dist/token/contracts.d.ts.map +1 -0
- package/dist/token/contracts.js +3 -0
- package/dist/token/contracts.js.map +1 -0
- package/dist/token/deploy.d.ts +40 -0
- package/dist/token/deploy.d.ts.map +1 -0
- package/dist/token/deploy.js +243 -0
- package/dist/token/deploy.js.map +1 -0
- package/package.json +9 -7
- package/dist/consts/agentStartBlocks.d.ts +0 -3
- package/dist/consts/agentStartBlocks.d.ts.map +0 -1
- package/dist/consts/agentStartBlocks.js +0 -28
- package/dist/consts/agentStartBlocks.js.map +0 -1
- package/dist/consts/environments/test.json +0 -41
- package/dist/hook/config.d.ts +0 -4
- package/dist/hook/config.d.ts.map +0 -1
- package/dist/hook/config.js +0 -9
- package/dist/hook/config.js.map +0 -1
- package/dist/ism/HyperlaneIsmFactoryDeployer.d.ts +0 -11
- package/dist/ism/HyperlaneIsmFactoryDeployer.d.ts.map +0 -1
- package/dist/ism/HyperlaneIsmFactoryDeployer.js +0 -39
- package/dist/ism/HyperlaneIsmFactoryDeployer.js.map +0 -1
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
3
|
exports.HyperlaneRouterDeployer = void 0;
|
|
4
|
-
const ethers_1 = require("ethers");
|
|
5
4
|
const core_1 = require("@hyperlane-xyz/core");
|
|
6
5
|
const utils_1 = require("@hyperlane-xyz/utils");
|
|
7
6
|
const contracts_1 = require("../contracts/contracts");
|
|
@@ -15,43 +14,41 @@ class HyperlaneRouterDeployer extends HyperlaneDeployer_1.HyperlaneDeployer {
|
|
|
15
14
|
for (const [local, config] of Object.entries(configMap)) {
|
|
16
15
|
this.logger(`Checking config for ${local}...`);
|
|
17
16
|
const signerOrProvider = this.multiProvider.getSignerOrProvider(local);
|
|
18
|
-
const localIgp = core_1.IInterchainGasPaymaster__factory.connect(config.interchainGasPaymaster, signerOrProvider);
|
|
19
17
|
const localMailbox = core_1.Mailbox__factory.connect(config.mailbox, signerOrProvider);
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
config.interchainSecurityModule === ethers_1.ethers.constants.AddressZero) {
|
|
23
|
-
localIsm = await localMailbox.defaultIsm();
|
|
24
|
-
}
|
|
25
|
-
else {
|
|
26
|
-
localIsm = config.interchainSecurityModule;
|
|
27
|
-
}
|
|
18
|
+
const localHook = core_1.IPostDispatchHook__factory.connect(config.hook ?? (await localMailbox.defaultHook()), signerOrProvider);
|
|
19
|
+
const deployer = await this.multiProvider.getSignerAddress(local);
|
|
28
20
|
const remotes = Object.keys(configMap).filter((c) => c !== local);
|
|
29
21
|
for (const remote of remotes) {
|
|
30
|
-
this.
|
|
31
|
-
|
|
22
|
+
const origin = this.multiProvider.getDomainId(local);
|
|
23
|
+
const destination = this.multiProvider.getDomainId(remote);
|
|
24
|
+
const message = (0, utils_1.formatMessage)(0, 0, origin, deployer, destination, deployer, '');
|
|
25
|
+
// Try to confirm that the hook supports delivery to all remotes
|
|
26
|
+
this.logger(`Checking ${local} => ${remote} hook...`);
|
|
32
27
|
try {
|
|
33
|
-
await
|
|
28
|
+
await localHook.quoteDispatch('', message);
|
|
34
29
|
}
|
|
35
30
|
catch (e) {
|
|
36
|
-
throw new Error(`The specified or default
|
|
31
|
+
throw new Error(`The specified or default hook with address ${localHook.address} on ` +
|
|
37
32
|
`${local} is not configured to deliver messages to ${remote}, ` +
|
|
38
33
|
`did you mean to specify a different one?`);
|
|
39
34
|
}
|
|
35
|
+
const localIsm = config.interchainSecurityModule ?? (await localMailbox.defaultIsm());
|
|
40
36
|
// Try to confirm that the specified or default ISM can verify messages to all remotes
|
|
41
37
|
const canVerify = await (0, HyperlaneIsmFactory_1.moduleCanCertainlyVerify)(localIsm, this.multiProvider, remote, local);
|
|
42
38
|
if (!canVerify) {
|
|
43
|
-
|
|
39
|
+
const ismString = JSON.stringify(localIsm);
|
|
40
|
+
throw new Error(`The specified or default ISM ${ismString} on ${local} ` +
|
|
44
41
|
`cannot verify messages from ${remote}, did you forget to ` +
|
|
45
42
|
`specify an ISM, or mean to specify a different one?`);
|
|
46
43
|
}
|
|
47
44
|
}
|
|
48
45
|
}
|
|
49
46
|
}
|
|
50
|
-
async
|
|
47
|
+
async initMailboxClients(contractsMap, configMap) {
|
|
51
48
|
for (const chain of Object.keys(contractsMap)) {
|
|
52
49
|
const contracts = contractsMap[chain];
|
|
53
50
|
const config = configMap[chain];
|
|
54
|
-
await super.
|
|
51
|
+
await super.initMailboxClient(chain, this.router(contracts), config);
|
|
55
52
|
}
|
|
56
53
|
}
|
|
57
54
|
async enrollRemoteRouters(deployedContractsMap, _, foreignRouters = {}) {
|
|
@@ -102,7 +99,7 @@ class HyperlaneRouterDeployer extends HyperlaneDeployer_1.HyperlaneDeployer {
|
|
|
102
99
|
const foreignDeployments = (0, utils_1.objFilter)((0, utils_1.objMap)(configMap, (_, config) => config.foreignDeployment), (_chainName, foreignDeployment) => foreignDeployment !== undefined);
|
|
103
100
|
const deployedContractsMap = await super.deploy(configMapToDeploy);
|
|
104
101
|
await this.enrollRemoteRouters(deployedContractsMap, configMap, foreignDeployments);
|
|
105
|
-
await this.
|
|
102
|
+
await this.initMailboxClients(deployedContractsMap, configMap);
|
|
106
103
|
await this.transferOwnership(deployedContractsMap, configMap);
|
|
107
104
|
this.logger(`Finished deploying router contracts for all chains.`);
|
|
108
105
|
return deployedContractsMap;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperlaneRouterDeployer.js","sourceRoot":"","sources":["../../src/router/HyperlaneRouterDeployer.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"HyperlaneRouterDeployer.js","sourceRoot":"","sources":["../../src/router/HyperlaneRouterDeployer.ts"],"names":[],"mappings":"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"}
|
|
@@ -14,7 +14,7 @@ class ProxiedRouterChecker extends HyperlaneRouterChecker_1.HyperlaneRouterCheck
|
|
|
14
14
|
return super.checkOwnership(chain, config.owner, ownableOverrides);
|
|
15
15
|
}
|
|
16
16
|
async checkChain(chain) {
|
|
17
|
-
await super.
|
|
17
|
+
await super.checkMailboxClient(chain);
|
|
18
18
|
await super.checkEnrolledRouters(chain);
|
|
19
19
|
await this.checkProxiedContracts(chain);
|
|
20
20
|
await this.checkOwnership(chain);
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ProxiedRouterChecker.js","sourceRoot":"","sources":["../../src/router/ProxiedRouterChecker.ts"],"names":[],"mappings":";;;AAEA,qEAAkE;AAIlE,MAAsB,oBAIpB,SAAQ,+CAA8C;IACtD,KAAK,CAAC,cAAc,CAAC,KAAgB;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAC1B,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,gBAAgB,GAAG;gBACjB,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,kBAAkB;aAC5D,CAAC;SACH;QAED,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAgB;QAC/B,MAAM,KAAK,CAAC,
|
|
1
|
+
{"version":3,"file":"ProxiedRouterChecker.js","sourceRoot":"","sources":["../../src/router/ProxiedRouterChecker.ts"],"names":[],"mappings":";;;AAEA,qEAAkE;AAIlE,MAAsB,oBAIpB,SAAQ,+CAA8C;IACtD,KAAK,CAAC,cAAc,CAAC,KAAgB;QACnC,MAAM,MAAM,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC;QACrC,IAAI,gBAAgB,GAAG,EAAE,CAAC;QAC1B,IAAI,MAAM,CAAC,QAAQ,EAAE;YACnB,gBAAgB,GAAG;gBACjB,UAAU,EAAE,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,kBAAkB;aAC5D,CAAC;SACH;QAED,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,MAAM,CAAC,KAAK,EAAE,gBAAgB,CAAC,CAAC;IACrE,CAAC;IAED,KAAK,CAAC,UAAU,CAAC,KAAgB;QAC/B,MAAM,KAAK,CAAC,kBAAkB,CAAC,KAAK,CAAC,CAAC;QACtC,MAAM,KAAK,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,qBAAqB,CAAC,KAAK,CAAC,CAAC;QACxC,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;IACnC,CAAC;CACF;AAvBD,oDAuBC"}
|
|
@@ -1,18 +1,12 @@
|
|
|
1
|
-
import debug from 'debug';
|
|
2
1
|
import type { BigNumber } from 'ethers';
|
|
3
2
|
import { GasRouter, Router } from '@hyperlane-xyz/core';
|
|
4
3
|
import { Address } from '@hyperlane-xyz/utils';
|
|
5
4
|
import { HyperlaneApp } from '../app/HyperlaneApp';
|
|
6
|
-
import { HyperlaneContracts,
|
|
7
|
-
import { MultiProvider } from '../providers/MultiProvider';
|
|
5
|
+
import { HyperlaneContracts, HyperlaneFactories } from '../contracts/types';
|
|
8
6
|
import { ChainMap, ChainName } from '../types';
|
|
9
7
|
export { Router } from '@hyperlane-xyz/core';
|
|
10
8
|
export declare abstract class RouterApp<Factories extends HyperlaneFactories> extends HyperlaneApp<Factories> {
|
|
11
|
-
readonly foreignDeployments: ChainMap<Address>;
|
|
12
|
-
constructor(contractsMap: HyperlaneContractsMap<Factories>, multiProvider: MultiProvider, logger?: debug.Debugger, foreignDeployments?: ChainMap<Address>);
|
|
13
9
|
abstract router(contracts: HyperlaneContracts<Factories>): Router;
|
|
14
|
-
routerAddress(chainName: string): Address;
|
|
15
|
-
remoteChains(chainName: string): string[];
|
|
16
10
|
getSecurityModules(): Promise<ChainMap<Address>>;
|
|
17
11
|
getOwners(): Promise<ChainMap<Address>>;
|
|
18
12
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouterApps.d.ts","sourceRoot":"","sources":["../../src/router/RouterApps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,
|
|
1
|
+
{"version":3,"file":"RouterApps.d.ts","sourceRoot":"","sources":["../../src/router/RouterApps.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAExC,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,OAAO,EAAyB,MAAM,sBAAsB,CAAC;AAEtE,OAAO,EAAE,YAAY,EAAE,MAAM,qBAAqB,CAAC;AACnD,OAAO,EAAE,kBAAkB,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AAC5E,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/C,OAAO,EAAE,MAAM,EAAE,MAAM,qBAAqB,CAAC;AAE7C,8BAAsB,SAAS,CAC7B,SAAS,SAAS,kBAAkB,CACpC,SAAQ,YAAY,CAAC,SAAS,CAAC;IAC/B,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,MAAM;IAEjE,kBAAkB,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;IAQhD,SAAS,IAAI,OAAO,CAAC,QAAQ,CAAC,OAAO,CAAC,CAAC;CAKxC;AAED,8BAAsB,YAAY,CAChC,SAAS,SAAS,kBAAkB,EACpC,CAAC,SAAS,SAAS,CACnB,SAAQ,SAAS,CAAC,SAAS,CAAC;IAC5B,QAAQ,CAAC,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,SAAS,CAAC,GAAG,CAAC;IAEtD,eAAe,CACnB,MAAM,EAAE,SAAS,EACjB,WAAW,EAAE,SAAS,GACrB,OAAO,CAAC,SAAS,CAAC;CAKtB"}
|
|
@@ -4,23 +4,6 @@ exports.GasRouterApp = exports.RouterApp = void 0;
|
|
|
4
4
|
const utils_1 = require("@hyperlane-xyz/utils");
|
|
5
5
|
const HyperlaneApp_1 = require("../app/HyperlaneApp");
|
|
6
6
|
class RouterApp extends HyperlaneApp_1.HyperlaneApp {
|
|
7
|
-
constructor(contractsMap, multiProvider, logger, foreignDeployments = {}) {
|
|
8
|
-
super(contractsMap, multiProvider, logger);
|
|
9
|
-
this.foreignDeployments = foreignDeployments;
|
|
10
|
-
}
|
|
11
|
-
routerAddress(chainName) {
|
|
12
|
-
if (this.multiProvider.getChainMetadata(chainName).protocol ===
|
|
13
|
-
utils_1.ProtocolType.Ethereum) {
|
|
14
|
-
return this.router(this.contractsMap[chainName]).address;
|
|
15
|
-
}
|
|
16
|
-
return this.foreignDeployments[chainName];
|
|
17
|
-
}
|
|
18
|
-
remoteChains(chainName) {
|
|
19
|
-
return [
|
|
20
|
-
...super.remoteChains(chainName),
|
|
21
|
-
...Object.keys(this.foreignDeployments),
|
|
22
|
-
].filter((chain) => chain !== chainName);
|
|
23
|
-
}
|
|
24
7
|
getSecurityModules() {
|
|
25
8
|
return (0, utils_1.promiseObjAll)((0, utils_1.objMap)(this.chainMap, (_, contracts) => this.router(contracts).interchainSecurityModule()));
|
|
26
9
|
}
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"RouterApps.js","sourceRoot":"","sources":["../../src/router/RouterApps.ts"],"names":[],"mappings":";;;
|
|
1
|
+
{"version":3,"file":"RouterApps.js","sourceRoot":"","sources":["../../src/router/RouterApps.ts"],"names":[],"mappings":";;;AAGA,gDAAsE;AAEtE,sDAAmD;AAMnD,MAAsB,SAEpB,SAAQ,2BAAuB;IAG/B,kBAAkB;QAChB,OAAO,IAAA,qBAAa,EAClB,IAAA,cAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CACrC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,wBAAwB,EAAE,CAClD,CACF,CAAC;IACJ,CAAC;IAED,SAAS;QACP,OAAO,IAAA,qBAAa,EAClB,IAAA,cAAM,EAAC,IAAI,CAAC,QAAQ,EAAE,CAAC,CAAC,EAAE,SAAS,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC,KAAK,EAAE,CAAC,CACxE,CAAC;IACJ,CAAC;CACF;AAlBD,8BAkBC;AAED,MAAsB,YAGpB,SAAQ,SAAoB;IAG5B,KAAK,CAAC,eAAe,CACnB,MAAiB,EACjB,WAAsB;QAEtB,OAAO,IAAI,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,MAAM,CAAC,eAAe,CACrD,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,WAAW,CAAC,CAC5C,CAAC;IACJ,CAAC;CACF;AAdD,oCAcC"}
|
package/dist/router/types.d.ts
CHANGED
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { MailboxClient, ProxyAdmin__factory, TimelockController__factory } from '@hyperlane-xyz/core';
|
|
2
2
|
import type { Address } from '@hyperlane-xyz/utils';
|
|
3
3
|
import { HyperlaneFactories } from '../contracts/types';
|
|
4
4
|
import { UpgradeConfig } from '../deploy/proxy';
|
|
@@ -13,7 +13,7 @@ export type OwnableConfig = {
|
|
|
13
13
|
export type ForeignDeploymentConfig = {
|
|
14
14
|
foreignDeployment?: Address;
|
|
15
15
|
};
|
|
16
|
-
export type RouterConfig =
|
|
16
|
+
export type RouterConfig = MailboxClientConfig & OwnableConfig & ForeignDeploymentConfig;
|
|
17
17
|
export type ProxiedRouterConfig = RouterConfig & Partial<UpgradeConfig>;
|
|
18
18
|
export type GasConfig = {
|
|
19
19
|
gas: number;
|
|
@@ -24,31 +24,22 @@ export type ProxiedFactories = HyperlaneFactories & {
|
|
|
24
24
|
timelockController: TimelockController__factory;
|
|
25
25
|
};
|
|
26
26
|
export declare const proxiedFactories: ProxiedFactories;
|
|
27
|
-
|
|
27
|
+
type HookConfig = Address;
|
|
28
|
+
export type MailboxClientConfig = {
|
|
28
29
|
mailbox: Address;
|
|
29
|
-
|
|
30
|
-
interchainSecurityModule?:
|
|
30
|
+
hook?: HookConfig;
|
|
31
|
+
interchainSecurityModule?: IsmConfig;
|
|
31
32
|
};
|
|
32
|
-
export declare enum
|
|
33
|
-
InterchainSecurityModule = "
|
|
34
|
-
Mailbox = "
|
|
35
|
-
|
|
33
|
+
export declare enum ClientViolationType {
|
|
34
|
+
InterchainSecurityModule = "ClientIsm",
|
|
35
|
+
Mailbox = "ClientMailbox",
|
|
36
|
+
Hook = "ClientHook"
|
|
36
37
|
}
|
|
37
|
-
export interface
|
|
38
|
-
type:
|
|
39
|
-
contract:
|
|
40
|
-
actual: string;
|
|
41
|
-
expected: string;
|
|
42
|
-
description?: string;
|
|
43
|
-
}
|
|
44
|
-
export declare enum RouterViolationType {
|
|
45
|
-
EnrolledRouter = "EnrolledRouter"
|
|
46
|
-
}
|
|
47
|
-
export interface RouterViolation extends CheckerViolation {
|
|
48
|
-
type: RouterViolationType.EnrolledRouter;
|
|
49
|
-
remoteChain: string;
|
|
50
|
-
contract: Router;
|
|
38
|
+
export interface ClientViolation extends CheckerViolation {
|
|
39
|
+
type: ClientViolationType;
|
|
40
|
+
contract: MailboxClient;
|
|
51
41
|
actual: string;
|
|
52
42
|
expected: string;
|
|
53
43
|
}
|
|
44
|
+
export {};
|
|
54
45
|
//# sourceMappingURL=types.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,aAAa,EACb,mBAAmB,EACnB,2BAA2B,EAC5B,MAAM,qBAAqB,CAAC;AAC7B,OAAO,KAAK,EAAE,OAAO,EAAE,MAAM,sBAAsB,CAAC;AAEpD,OAAO,EAAE,kBAAkB,EAAE,MAAM,oBAAoB,CAAC;AACxD,OAAO,EAAE,aAAa,EAAE,MAAM,iBAAiB,CAAC;AAChD,OAAO,EAAE,gBAAgB,EAAE,MAAM,iBAAiB,CAAC;AACnD,OAAO,EAAE,SAAS,EAAE,MAAM,cAAc,CAAC;AAEzC,MAAM,MAAM,aAAa,GAAG;IAC1B,MAAM,EAAE,OAAO,CAAC;CACjB,CAAC;AAEF,MAAM,MAAM,aAAa,GAAG;IAC1B,KAAK,EAAE,OAAO,CAAC;CAChB,CAAC;AAEF,MAAM,MAAM,uBAAuB,GAAG;IACpC,iBAAiB,CAAC,EAAE,OAAO,CAAC;CAC7B,CAAC;AAEF,MAAM,MAAM,YAAY,GAAG,mBAAmB,GAC5C,aAAa,GACb,uBAAuB,CAAC;AAE1B,MAAM,MAAM,mBAAmB,GAAG,YAAY,GAAG,OAAO,CAAC,aAAa,CAAC,CAAC;AAExE,MAAM,MAAM,SAAS,GAAG;IACtB,GAAG,EAAE,MAAM,CAAC;CACb,CAAC;AAEF,MAAM,MAAM,eAAe,GAAG,YAAY,GAAG,SAAS,CAAC;AAEvD,MAAM,MAAM,gBAAgB,GAAG,kBAAkB,GAAG;IAClD,UAAU,EAAE,mBAAmB,CAAC;IAChC,kBAAkB,EAAE,2BAA2B,CAAC;CACjD,CAAC;AAEF,eAAO,MAAM,gBAAgB,EAAE,gBAG9B,CAAC;AAGF,KAAK,UAAU,GAAG,OAAO,CAAC;AAE1B,MAAM,MAAM,mBAAmB,GAAG;IAChC,OAAO,EAAE,OAAO,CAAC;IACjB,IAAI,CAAC,EAAE,UAAU,CAAC;IAClB,wBAAwB,CAAC,EAAE,SAAS,CAAC;CACtC,CAAC;AAEF,oBAAY,mBAAmB;IAC7B,wBAAwB,cAAc;IACtC,OAAO,kBAAkB;IACzB,IAAI,eAAe;CACpB;AAED,MAAM,WAAW,eAAgB,SAAQ,gBAAgB;IACvD,IAAI,EAAE,mBAAmB,CAAC;IAC1B,QAAQ,EAAE,aAAa,CAAC;IACxB,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB"}
|
package/dist/router/types.js
CHANGED
|
@@ -1,19 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.
|
|
3
|
+
exports.ClientViolationType = exports.proxiedFactories = void 0;
|
|
4
4
|
const core_1 = require("@hyperlane-xyz/core");
|
|
5
5
|
exports.proxiedFactories = {
|
|
6
6
|
proxyAdmin: new core_1.ProxyAdmin__factory(),
|
|
7
7
|
timelockController: new core_1.TimelockController__factory(),
|
|
8
8
|
};
|
|
9
|
-
var
|
|
10
|
-
(function (
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
})(
|
|
15
|
-
var RouterViolationType;
|
|
16
|
-
(function (RouterViolationType) {
|
|
17
|
-
RouterViolationType["EnrolledRouter"] = "EnrolledRouter";
|
|
18
|
-
})(RouterViolationType || (exports.RouterViolationType = RouterViolationType = {}));
|
|
9
|
+
var ClientViolationType;
|
|
10
|
+
(function (ClientViolationType) {
|
|
11
|
+
ClientViolationType["InterchainSecurityModule"] = "ClientIsm";
|
|
12
|
+
ClientViolationType["Mailbox"] = "ClientMailbox";
|
|
13
|
+
ClientViolationType["Hook"] = "ClientHook";
|
|
14
|
+
})(ClientViolationType || (exports.ClientViolationType = ClientViolationType = {}));
|
|
19
15
|
//# sourceMappingURL=types.js.map
|
package/dist/router/types.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/router/types.ts"],"names":[],"mappings":";;;AAAA,8CAI6B;AAqChB,QAAA,gBAAgB,GAAqB;IAChD,UAAU,EAAE,IAAI,0BAAmB,EAAE;IACrC,kBAAkB,EAAE,IAAI,kCAA2B,EAAE;CACtD,CAAC;AAWF,IAAY,mBAIX;AAJD,WAAY,mBAAmB;IAC7B,6DAAsC,CAAA;IACtC,gDAAyB,CAAA;IACzB,0CAAmB,CAAA;AACrB,CAAC,EAJW,mBAAmB,mCAAnB,mBAAmB,QAI9B"}
|
package/dist/test/testUtils.d.ts
CHANGED
|
@@ -4,13 +4,11 @@ import { CoreFactories } from '../core/contracts';
|
|
|
4
4
|
import { CoreConfig } from '../core/types';
|
|
5
5
|
import { IgpFactories } from '../gas/contracts';
|
|
6
6
|
import { CoinGeckoInterface, CoinGeckoResponse, CoinGeckoSimpleInterface, CoinGeckoSimplePriceParams } from '../gas/token-prices';
|
|
7
|
-
import { MultiProvider } from '../providers/MultiProvider';
|
|
8
7
|
import { RouterConfig } from '../router/types';
|
|
9
8
|
import { ChainMap, ChainName } from '../types';
|
|
10
9
|
export declare function randomInt(max: number, min?: number): number;
|
|
11
10
|
export declare function randomAddress(): Address;
|
|
12
11
|
export declare function createRouterConfigMap(owner: Address, coreContracts: HyperlaneContractsMap<CoreFactories>, igpContracts: HyperlaneContractsMap<IgpFactories>): ChainMap<RouterConfig>;
|
|
13
|
-
export declare function deployTestIgpsAndGetRouterConfig(multiProvider: MultiProvider, owner: Address, coreContracts: HyperlaneContractsMap<CoreFactories>): Promise<ChainMap<RouterConfig>>;
|
|
14
12
|
export declare function testCoreConfig(chains: ChainName[]): ChainMap<CoreConfig>;
|
|
15
13
|
export declare class MockCoinGecko implements CoinGeckoInterface {
|
|
16
14
|
private tokenPrices;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../src/test/testUtils.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"testUtils.d.ts","sourceRoot":"","sources":["../../src/test/testUtils.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,OAAO,EAAU,MAAM,sBAAsB,CAAC;AAGvD,OAAO,EAAE,qBAAqB,EAAE,MAAM,oBAAoB,CAAC;AAC3D,OAAO,EAAE,aAAa,EAAE,MAAM,mBAAmB,CAAC;AAClD,OAAO,EAAE,UAAU,EAAE,MAAM,eAAe,CAAC;AAC3C,OAAO,EAAE,YAAY,EAAE,MAAM,kBAAkB,CAAC;AAChD,OAAO,EACL,kBAAkB,EAClB,iBAAiB,EACjB,wBAAwB,EACxB,0BAA0B,EAC3B,MAAM,qBAAqB,CAAC;AAG7B,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAE/C,wBAAgB,SAAS,CAAC,GAAG,EAAE,MAAM,EAAE,GAAG,SAAI,GAAG,MAAM,CAEtD;AAED,wBAAgB,aAAa,IAAI,OAAO,CAEvC;AAED,wBAAgB,qBAAqB,CACnC,KAAK,EAAE,OAAO,EACd,aAAa,EAAE,qBAAqB,CAAC,aAAa,CAAC,EACnD,YAAY,EAAE,qBAAqB,CAAC,YAAY,CAAC,GAChD,QAAQ,CAAC,YAAY,CAAC,CASxB;AAKD,wBAAgB,cAAc,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,QAAQ,CAAC,UAAU,CAAC,CA+CxE;AAGD,qBAAa,aAAc,YAAW,kBAAkB;IAEtD,OAAO,CAAC,WAAW,CAAyB;IAE5C,OAAO,CAAC,IAAI,CAA0B;;IAOtC,KAAK,CAAC,MAAM,EAAE,0BAA0B,GAAG,iBAAiB;IAkB5D,IAAI,MAAM,IAAI,wBAAwB,CAErC;IAED,aAAa,CAAC,KAAK,EAAE,SAAS,EAAE,KAAK,EAAE,MAAM,GAAG,IAAI;IAKpD,OAAO,CAAC,KAAK,EAAE,SAAS,EAAE,IAAI,EAAE,OAAO,GAAG,IAAI;CAI/C"}
|
package/dist/test/testUtils.js
CHANGED
|
@@ -1,11 +1,11 @@
|
|
|
1
1
|
"use strict";
|
|
2
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
-
exports.MockCoinGecko = exports.testCoreConfig = exports.
|
|
3
|
+
exports.MockCoinGecko = exports.testCoreConfig = exports.createRouterConfigMap = exports.randomAddress = exports.randomInt = void 0;
|
|
4
4
|
const ethers_1 = require("ethers");
|
|
5
|
-
const core_1 = require("@hyperlane-xyz/core");
|
|
6
5
|
const utils_1 = require("@hyperlane-xyz/utils");
|
|
7
6
|
const chainMetadata_1 = require("../consts/chainMetadata");
|
|
8
|
-
const types_1 = require("../
|
|
7
|
+
const types_1 = require("../hook/types");
|
|
8
|
+
const types_2 = require("../ism/types");
|
|
9
9
|
function randomInt(max, min = 0) {
|
|
10
10
|
return Math.floor(Math.random() * (max - min)) + min;
|
|
11
11
|
}
|
|
@@ -24,26 +24,11 @@ function createRouterConfigMap(owner, coreContracts, igpContracts) {
|
|
|
24
24
|
});
|
|
25
25
|
}
|
|
26
26
|
exports.createRouterConfigMap = createRouterConfigMap;
|
|
27
|
-
async function deployTestIgpsAndGetRouterConfig(multiProvider, owner, coreContracts) {
|
|
28
|
-
const igps = {};
|
|
29
|
-
for (const chain of multiProvider.getKnownChainNames()) {
|
|
30
|
-
const factory = new core_1.TestInterchainGasPaymaster__factory(multiProvider.getSigner(chain));
|
|
31
|
-
igps[chain] = await factory.deploy(owner);
|
|
32
|
-
}
|
|
33
|
-
return (0, utils_1.objMap)(coreContracts, (chain, contracts) => {
|
|
34
|
-
return {
|
|
35
|
-
owner,
|
|
36
|
-
mailbox: contracts.mailbox.address,
|
|
37
|
-
interchainGasPaymaster: igps[chain].address,
|
|
38
|
-
};
|
|
39
|
-
});
|
|
40
|
-
}
|
|
41
|
-
exports.deployTestIgpsAndGetRouterConfig = deployTestIgpsAndGetRouterConfig;
|
|
42
27
|
const nonZeroAddress = ethers_1.ethers.constants.AddressZero.replace('00', '01');
|
|
43
28
|
// dummy config as TestInbox and TestOutbox do not use deployed ISM
|
|
44
29
|
function testCoreConfig(chains) {
|
|
45
30
|
const multisigIsm = {
|
|
46
|
-
type:
|
|
31
|
+
type: types_2.ModuleType.MERKLE_ROOT_MULTISIG,
|
|
47
32
|
validators: [nonZeroAddress],
|
|
48
33
|
threshold: 1,
|
|
49
34
|
};
|
|
@@ -52,12 +37,22 @@ function testCoreConfig(chains) {
|
|
|
52
37
|
{
|
|
53
38
|
owner: nonZeroAddress,
|
|
54
39
|
defaultIsm: {
|
|
55
|
-
type:
|
|
40
|
+
type: types_2.ModuleType.ROUTING,
|
|
56
41
|
owner: nonZeroAddress,
|
|
57
42
|
domains: Object.fromEntries(chains
|
|
58
43
|
.filter((c) => c !== local)
|
|
59
44
|
.map((remote) => [remote, multisigIsm])),
|
|
60
45
|
},
|
|
46
|
+
defaultHook: {
|
|
47
|
+
type: types_1.HookType.MERKLE_TREE,
|
|
48
|
+
},
|
|
49
|
+
requiredHook: {
|
|
50
|
+
type: types_1.HookType.PROTOCOL_FEE,
|
|
51
|
+
maxProtocolFee: ethers_1.ethers.utils.parseUnits('1', 'gwei'),
|
|
52
|
+
protocolFee: ethers_1.BigNumber.from(1),
|
|
53
|
+
beneficiary: nonZeroAddress,
|
|
54
|
+
owner: nonZeroAddress,
|
|
55
|
+
},
|
|
61
56
|
},
|
|
62
57
|
]));
|
|
63
58
|
// test partial timelock config
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../../src/test/testUtils.ts"],"names":[],"mappings":";;;AAAA,
|
|
1
|
+
{"version":3,"file":"testUtils.js","sourceRoot":"","sources":["../../src/test/testUtils.ts"],"names":[],"mappings":";;;AAAA,mCAA2C;AAE3C,gDAAuD;AAEvD,2DAAwD;AAWxD,yCAAyC;AACzC,wCAA6D;AAI7D,SAAgB,SAAS,CAAC,GAAW,EAAE,GAAG,GAAG,CAAC;IAC5C,OAAO,IAAI,CAAC,KAAK,CAAC,IAAI,CAAC,MAAM,EAAE,GAAG,CAAC,GAAG,GAAG,GAAG,CAAC,CAAC,GAAG,GAAG,CAAC;AACvD,CAAC;AAFD,8BAEC;AAED,SAAgB,aAAa;IAC3B,OAAO,eAAM,CAAC,KAAK,CAAC,OAAO,CAAC,eAAM,CAAC,KAAK,CAAC,WAAW,CAAC,EAAE,CAAC,CAAC,CAAC;AAC5D,CAAC;AAFD,sCAEC;AAED,SAAgB,qBAAqB,CACnC,KAAc,EACd,aAAmD,EACnD,YAAiD;IAEjD,OAAO,IAAA,cAAM,EAAC,aAAa,EAAE,CAAC,KAAK,EAAE,SAAS,EAAE,EAAE;QAChD,OAAO;YACL,KAAK;YACL,OAAO,EAAE,SAAS,CAAC,OAAO,CAAC,OAAO;YAClC,sBAAsB,EACpB,YAAY,CAAC,KAAK,CAAC,CAAC,sBAAsB,CAAC,OAAO;SACrD,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AAbD,sDAaC;AAED,MAAM,cAAc,GAAG,eAAM,CAAC,SAAS,CAAC,WAAW,CAAC,OAAO,CAAC,IAAI,EAAE,IAAI,CAAC,CAAC;AAExE,mEAAmE;AACnE,SAAgB,cAAc,CAAC,MAAmB;IAChD,MAAM,WAAW,GAAsB;QACrC,IAAI,EAAE,kBAAU,CAAC,oBAAoB;QACrC,UAAU,EAAE,CAAC,cAAc,CAAC;QAC5B,SAAS,EAAE,CAAC;KACb,CAAC;IAEF,MAAM,MAAM,GAAyB,MAAM,CAAC,WAAW,CACrD,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC;QACpB,KAAK;QACL;YACE,KAAK,EAAE,cAAc;YACrB,UAAU,EAAE;gBACV,IAAI,EAAE,kBAAU,CAAC,OAAO;gBACxB,KAAK,EAAE,cAAc;gBACrB,OAAO,EAAE,MAAM,CAAC,WAAW,CACzB,MAAM;qBACH,MAAM,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,CAAC,KAAK,KAAK,CAAC;qBAC1B,GAAG,CAAC,CAAC,MAAM,EAAE,EAAE,CAAC,CAAC,MAAM,EAAE,WAAW,CAAC,CAAC,CAC1C;aACF;YACD,WAAW,EAAE;gBACX,IAAI,EAAE,gBAAQ,CAAC,WAAW;aAC3B;YACD,YAAY,EAAE;gBACZ,IAAI,EAAE,gBAAQ,CAAC,YAAY;gBAC3B,cAAc,EAAE,eAAM,CAAC,KAAK,CAAC,UAAU,CAAC,GAAG,EAAE,MAAM,CAAC;gBACpD,WAAW,EAAE,kBAAS,CAAC,IAAI,CAAC,CAAC,CAAC;gBAC9B,WAAW,EAAE,cAAc;gBAC3B,KAAK,EAAE,cAAc;aACtB;SACF;KACF,CAAC,CACH,CAAC;IAEF,+BAA+B;IAC/B,MAAM,CAAC,KAAK,CAAC,OAAO,GAAG;QACrB,QAAQ,EAAE;YACR,KAAK,EAAE,GAAG;YACV,KAAK,EAAE;gBACL,QAAQ,EAAE,cAAc;gBACxB,QAAQ,EAAE,cAAc;aACzB;SACF;KACF,CAAC;IAEF,OAAO,MAAM,CAAC;AAChB,CAAC;AA/CD,wCA+CC;AAED,gDAAgD;AAChD,MAAa,aAAa;IAMxB;QACE,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACtB,IAAI,CAAC,IAAI,GAAG,EAAE,CAAC;IACjB,CAAC;IAED,KAAK,CAAC,MAAkC;QACtC,MAAM,IAAI,GAAQ,EAAE,CAAC;QACrB,KAAK,MAAM,EAAE,IAAI,MAAM,CAAC,GAAG,EAAE;YAC3B,IAAI,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,EAAE;gBACjB,OAAO,OAAO,CAAC,MAAM,CAAC,6BAA6B,EAAE,EAAE,CAAC,CAAC;aAC1D;YACD,IAAI,CAAC,EAAE,CAAC,GAAG;gBACT,GAAG,EAAE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC;aAC1B,CAAC;SACH;QACD,OAAO,OAAO,CAAC,OAAO,CAAC;YACrB,OAAO,EAAE,IAAI;YACb,OAAO,EAAE,EAAE;YACX,IAAI,EAAE,GAAG;YACT,IAAI;SACL,CAAC,CAAC;IACL,CAAC;IAED,IAAI,MAAM;QACR,OAAO,IAAI,CAAC;IACd,CAAC;IAED,aAAa,CAAC,KAAgB,EAAE,KAAa;QAC3C,MAAM,EAAE,GAAG,6BAAa,CAAC,KAAK,CAAC,CAAC,sBAAsB,IAAI,KAAK,CAAC;QAChE,IAAI,CAAC,WAAW,CAAC,EAAE,CAAC,GAAG,KAAK,CAAC;IAC/B,CAAC;IAED,OAAO,CAAC,KAAgB,EAAE,IAAa;QACrC,MAAM,EAAE,GAAG,6BAAa,CAAC,KAAK,CAAC,CAAC,sBAAsB,IAAI,KAAK,CAAC;QAChE,IAAI,CAAC,IAAI,CAAC,EAAE,CAAC,GAAG,IAAI,CAAC;IACvB,CAAC;CACF;AA1CD,sCA0CC"}
|
|
@@ -0,0 +1,65 @@
|
|
|
1
|
+
/// <reference types="node" />
|
|
2
|
+
import { PopulatedTransaction } from 'ethers';
|
|
3
|
+
import { ERC20, HypERC20 } from '@hyperlane-xyz/core';
|
|
4
|
+
import { Address, Domain } from '@hyperlane-xyz/utils';
|
|
5
|
+
import { BaseEvmAdapter } from '../../app/MultiProtocolApp';
|
|
6
|
+
import { MultiProtocolProvider } from '../../providers/MultiProtocolProvider';
|
|
7
|
+
import { ChainName } from '../../types';
|
|
8
|
+
import { MinimalTokenMetadata } from '../config';
|
|
9
|
+
import { IHypTokenAdapter, ITokenAdapter, TransferParams, TransferRemoteParams } from './ITokenAdapter';
|
|
10
|
+
export declare class EvmNativeTokenAdapter extends BaseEvmAdapter implements ITokenAdapter {
|
|
11
|
+
getBalance(address: Address): Promise<string>;
|
|
12
|
+
getMetadata(): Promise<MinimalTokenMetadata>;
|
|
13
|
+
populateApproveTx(_params: TransferParams): Promise<PopulatedTransaction>;
|
|
14
|
+
populateTransferTx({ weiAmountOrId, recipient, }: TransferParams): Promise<PopulatedTransaction>;
|
|
15
|
+
}
|
|
16
|
+
export declare class EvmTokenAdapter<T extends ERC20 = ERC20> extends EvmNativeTokenAdapter implements ITokenAdapter {
|
|
17
|
+
readonly chainName: ChainName;
|
|
18
|
+
readonly multiProvider: MultiProtocolProvider;
|
|
19
|
+
readonly addresses: {
|
|
20
|
+
token: Address;
|
|
21
|
+
};
|
|
22
|
+
readonly contractFactory: any;
|
|
23
|
+
readonly contract: T;
|
|
24
|
+
constructor(chainName: ChainName, multiProvider: MultiProtocolProvider, addresses: {
|
|
25
|
+
token: Address;
|
|
26
|
+
}, contractFactory?: any);
|
|
27
|
+
getBalance(address: Address): Promise<string>;
|
|
28
|
+
getMetadata(isNft?: boolean): Promise<MinimalTokenMetadata>;
|
|
29
|
+
populateApproveTx({ weiAmountOrId, recipient, }: TransferParams): Promise<PopulatedTransaction>;
|
|
30
|
+
populateTransferTx({ weiAmountOrId, recipient, }: TransferParams): Promise<PopulatedTransaction>;
|
|
31
|
+
}
|
|
32
|
+
export declare class EvmHypSyntheticAdapter<T extends HypERC20 = HypERC20> extends EvmTokenAdapter<T> implements IHypTokenAdapter {
|
|
33
|
+
readonly chainName: ChainName;
|
|
34
|
+
readonly multiProvider: MultiProtocolProvider;
|
|
35
|
+
readonly addresses: {
|
|
36
|
+
token: Address;
|
|
37
|
+
};
|
|
38
|
+
readonly contractFactory: any;
|
|
39
|
+
constructor(chainName: ChainName, multiProvider: MultiProtocolProvider, addresses: {
|
|
40
|
+
token: Address;
|
|
41
|
+
}, contractFactory?: any);
|
|
42
|
+
getDomains(): Promise<Domain[]>;
|
|
43
|
+
getRouterAddress(domain: Domain): Promise<Buffer>;
|
|
44
|
+
getAllRouters(): Promise<Array<{
|
|
45
|
+
domain: Domain;
|
|
46
|
+
address: Buffer;
|
|
47
|
+
}>>;
|
|
48
|
+
quoteGasPayment(destination: Domain): Promise<string>;
|
|
49
|
+
populateTransferRemoteTx({ weiAmountOrId, destination, recipient, txValue, }: TransferRemoteParams): Promise<PopulatedTransaction>;
|
|
50
|
+
}
|
|
51
|
+
export declare class EvmHypCollateralAdapter extends EvmHypSyntheticAdapter implements IHypTokenAdapter {
|
|
52
|
+
readonly chainName: ChainName;
|
|
53
|
+
readonly multiProvider: MultiProtocolProvider;
|
|
54
|
+
readonly addresses: {
|
|
55
|
+
token: Address;
|
|
56
|
+
};
|
|
57
|
+
readonly contractFactory: any;
|
|
58
|
+
constructor(chainName: ChainName, multiProvider: MultiProtocolProvider, addresses: {
|
|
59
|
+
token: Address;
|
|
60
|
+
}, contractFactory?: any);
|
|
61
|
+
getMetadata(): Promise<MinimalTokenMetadata>;
|
|
62
|
+
populateApproveTx(_params: TransferParams): Promise<PopulatedTransaction>;
|
|
63
|
+
populateTransferTx(_params: TransferParams): Promise<PopulatedTransaction>;
|
|
64
|
+
}
|
|
65
|
+
//# sourceMappingURL=EvmTokenAdapter.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EvmTokenAdapter.d.ts","sourceRoot":"","sources":["../../../src/token/adapters/EvmTokenAdapter.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,119 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.EvmHypCollateralAdapter = exports.EvmHypSyntheticAdapter = exports.EvmTokenAdapter = exports.EvmNativeTokenAdapter = void 0;
|
|
4
|
+
const ethers_1 = require("ethers");
|
|
5
|
+
const core_1 = require("@hyperlane-xyz/core");
|
|
6
|
+
const utils_1 = require("@hyperlane-xyz/utils");
|
|
7
|
+
const MultiProtocolApp_1 = require("../../app/MultiProtocolApp");
|
|
8
|
+
// Interacts with native currencies
|
|
9
|
+
class EvmNativeTokenAdapter extends MultiProtocolApp_1.BaseEvmAdapter {
|
|
10
|
+
async getBalance(address) {
|
|
11
|
+
const balance = await this.getProvider().getBalance(address);
|
|
12
|
+
return balance.toString();
|
|
13
|
+
}
|
|
14
|
+
async getMetadata() {
|
|
15
|
+
// TODO get metadata from chainMetadata config
|
|
16
|
+
throw new Error('Metadata not available to native tokens');
|
|
17
|
+
}
|
|
18
|
+
async populateApproveTx(_params) {
|
|
19
|
+
throw new Error('Approve not required for native tokens');
|
|
20
|
+
}
|
|
21
|
+
async populateTransferTx({ weiAmountOrId, recipient, }) {
|
|
22
|
+
const value = ethers_1.BigNumber.from(weiAmountOrId);
|
|
23
|
+
return { value, to: recipient };
|
|
24
|
+
}
|
|
25
|
+
}
|
|
26
|
+
exports.EvmNativeTokenAdapter = EvmNativeTokenAdapter;
|
|
27
|
+
// Interacts with ERC20/721 contracts
|
|
28
|
+
class EvmTokenAdapter extends EvmNativeTokenAdapter {
|
|
29
|
+
constructor(chainName, multiProvider, addresses, contractFactory = core_1.ERC20__factory) {
|
|
30
|
+
super(chainName, multiProvider, addresses);
|
|
31
|
+
this.chainName = chainName;
|
|
32
|
+
this.multiProvider = multiProvider;
|
|
33
|
+
this.addresses = addresses;
|
|
34
|
+
this.contractFactory = contractFactory;
|
|
35
|
+
this.contract = contractFactory.connect(addresses.token, this.getProvider());
|
|
36
|
+
}
|
|
37
|
+
async getBalance(address) {
|
|
38
|
+
const balance = await this.contract.balanceOf(address);
|
|
39
|
+
return balance.toString();
|
|
40
|
+
}
|
|
41
|
+
async getMetadata(isNft) {
|
|
42
|
+
const [decimals, symbol, name] = await Promise.all([
|
|
43
|
+
isNft ? 0 : this.contract.decimals(),
|
|
44
|
+
this.contract.symbol(),
|
|
45
|
+
this.contract.name(),
|
|
46
|
+
]);
|
|
47
|
+
return { decimals, symbol, name };
|
|
48
|
+
}
|
|
49
|
+
populateApproveTx({ weiAmountOrId, recipient, }) {
|
|
50
|
+
return this.contract.populateTransaction.approve(recipient, weiAmountOrId);
|
|
51
|
+
}
|
|
52
|
+
populateTransferTx({ weiAmountOrId, recipient, }) {
|
|
53
|
+
return this.contract.populateTransaction.transfer(recipient, weiAmountOrId);
|
|
54
|
+
}
|
|
55
|
+
}
|
|
56
|
+
exports.EvmTokenAdapter = EvmTokenAdapter;
|
|
57
|
+
// Interacts with Hyp Synthetic token contracts (aka 'HypTokens')
|
|
58
|
+
class EvmHypSyntheticAdapter extends EvmTokenAdapter {
|
|
59
|
+
constructor(chainName, multiProvider, addresses, contractFactory = core_1.HypERC20__factory) {
|
|
60
|
+
super(chainName, multiProvider, addresses, contractFactory);
|
|
61
|
+
this.chainName = chainName;
|
|
62
|
+
this.multiProvider = multiProvider;
|
|
63
|
+
this.addresses = addresses;
|
|
64
|
+
this.contractFactory = contractFactory;
|
|
65
|
+
}
|
|
66
|
+
getDomains() {
|
|
67
|
+
return this.contract.domains();
|
|
68
|
+
}
|
|
69
|
+
async getRouterAddress(domain) {
|
|
70
|
+
const routerAddressesAsBytes32 = await this.contract.routers(domain);
|
|
71
|
+
// Evm addresses will be padded with 12 bytes
|
|
72
|
+
if (routerAddressesAsBytes32.startsWith('0x000000000000000000000000')) {
|
|
73
|
+
return Buffer.from((0, utils_1.strip0x)((0, utils_1.bytes32ToAddress)(routerAddressesAsBytes32)), 'hex');
|
|
74
|
+
// Otherwise leave the address unchanged
|
|
75
|
+
}
|
|
76
|
+
else {
|
|
77
|
+
return Buffer.from((0, utils_1.strip0x)(routerAddressesAsBytes32), 'hex');
|
|
78
|
+
}
|
|
79
|
+
}
|
|
80
|
+
async getAllRouters() {
|
|
81
|
+
const domains = await this.getDomains();
|
|
82
|
+
const routers = await Promise.all(domains.map((d) => this.getRouterAddress(d)));
|
|
83
|
+
return domains.map((d, i) => ({ domain: d, address: routers[i] }));
|
|
84
|
+
}
|
|
85
|
+
async quoteGasPayment(destination) {
|
|
86
|
+
const gasPayment = await this.contract.quoteGasPayment(destination);
|
|
87
|
+
return gasPayment.toString();
|
|
88
|
+
}
|
|
89
|
+
populateTransferRemoteTx({ weiAmountOrId, destination, recipient, txValue, }) {
|
|
90
|
+
const recipBytes32 = (0, utils_1.addressToBytes32)((0, utils_1.addressToByteHexString)(recipient));
|
|
91
|
+
return this.contract.populateTransaction.transferRemote(destination, recipBytes32, weiAmountOrId, {
|
|
92
|
+
// Note, typically the value is the gas payment as quoted by IGP
|
|
93
|
+
value: txValue,
|
|
94
|
+
});
|
|
95
|
+
}
|
|
96
|
+
}
|
|
97
|
+
exports.EvmHypSyntheticAdapter = EvmHypSyntheticAdapter;
|
|
98
|
+
// Interacts with HypCollateral and HypNative contracts
|
|
99
|
+
class EvmHypCollateralAdapter extends EvmHypSyntheticAdapter {
|
|
100
|
+
constructor(chainName, multiProvider, addresses, contractFactory = core_1.HypERC20Collateral__factory) {
|
|
101
|
+
super(chainName, multiProvider, addresses, contractFactory);
|
|
102
|
+
this.chainName = chainName;
|
|
103
|
+
this.multiProvider = multiProvider;
|
|
104
|
+
this.addresses = addresses;
|
|
105
|
+
this.contractFactory = contractFactory;
|
|
106
|
+
}
|
|
107
|
+
getMetadata() {
|
|
108
|
+
// TODO pass through metadata from wrapped token or chainMetadata config
|
|
109
|
+
throw new Error('Metadata not available for HypCollateral/HypNative contract.');
|
|
110
|
+
}
|
|
111
|
+
populateApproveTx(_params) {
|
|
112
|
+
throw new Error('Approve not applicable to HypCollateral/HypNative contract.');
|
|
113
|
+
}
|
|
114
|
+
populateTransferTx(_params) {
|
|
115
|
+
throw new Error('Local transfer not supported for HypCollateral/HypNative contract.');
|
|
116
|
+
}
|
|
117
|
+
}
|
|
118
|
+
exports.EvmHypCollateralAdapter = EvmHypCollateralAdapter;
|
|
119
|
+
//# sourceMappingURL=EvmTokenAdapter.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EvmTokenAdapter.js","sourceRoot":"","sources":["../../../src/token/adapters/EvmTokenAdapter.ts"],"names":[],"mappings":"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"}
|