@hyperlane-xyz/sdk 1.4.2 → 1.4.3-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/agentStartBlocks.d.ts +3 -0
- package/dist/consts/agentStartBlocks.d.ts.map +1 -0
- package/dist/consts/agentStartBlocks.js +28 -0
- package/dist/consts/agentStartBlocks.js.map +1 -0
- package/dist/consts/bytecode.js +1 -1
- package/dist/consts/bytecode.js.map +1 -1
- package/dist/consts/chainMetadata.js +3 -3
- package/dist/consts/chains.d.ts +1 -1
- package/dist/consts/chains.d.ts.map +1 -1
- package/dist/consts/chains.js +2 -2
- package/dist/consts/chains.js.map +1 -1
- package/dist/consts/environments/index.d.ts +40 -2
- package/dist/consts/environments/index.d.ts.map +1 -1
- package/dist/consts/environments/index.js.map +1 -1
- package/dist/consts/environments/mainnet.json +27 -9
- package/dist/consts/environments/testnet.json +36 -18
- package/dist/contracts.d.ts +5 -5
- package/dist/contracts.d.ts.map +1 -1
- package/dist/contracts.js +12 -23
- package/dist/contracts.js.map +1 -1
- package/dist/core/CoreDeployer.hardhat-test.js +33 -42
- package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
- package/dist/core/HyperlaneCore.d.ts +1 -1
- package/dist/core/HyperlaneCore.d.ts.map +1 -1
- package/dist/core/HyperlaneCore.js +12 -25
- package/dist/core/HyperlaneCore.js.map +1 -1
- package/dist/core/HyperlaneCore.test.js +4 -13
- package/dist/core/HyperlaneCore.test.js.map +1 -1
- package/dist/core/HyperlaneCoreChecker.d.ts +0 -1
- package/dist/core/HyperlaneCoreChecker.d.ts.map +1 -1
- package/dist/core/HyperlaneCoreChecker.js +79 -137
- package/dist/core/HyperlaneCoreChecker.js.map +1 -1
- package/dist/core/HyperlaneCoreDeployer.d.ts +1 -2
- package/dist/core/HyperlaneCoreDeployer.d.ts.map +1 -1
- package/dist/core/HyperlaneCoreDeployer.js +45 -71
- package/dist/core/HyperlaneCoreDeployer.js.map +1 -1
- package/dist/core/TestCoreApp.js +35 -45
- package/dist/core/TestCoreApp.js.map +1 -1
- package/dist/core/TestCoreDeployer.js +14 -27
- package/dist/core/TestCoreDeployer.js.map +1 -1
- package/dist/core/contracts.d.ts +1 -1
- package/dist/core/contracts.d.ts.map +1 -1
- package/dist/core/events.d.ts +1 -1
- package/dist/core/events.d.ts.map +1 -1
- package/dist/core/testHyperlaneDeploy.hardhat-test.js +23 -32
- package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +1 -1
- package/dist/core/types.d.ts +4 -4
- package/dist/core/types.d.ts.map +1 -1
- package/dist/core/types.js +2 -3
- package/dist/core/types.js.map +1 -1
- package/dist/deploy/HyperlaneAppChecker.d.ts +3 -1
- package/dist/deploy/HyperlaneAppChecker.d.ts.map +1 -1
- package/dist/deploy/HyperlaneAppChecker.js +105 -83
- package/dist/deploy/HyperlaneAppChecker.js.map +1 -1
- package/dist/deploy/HyperlaneDeployer.d.ts +5 -1
- package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
- package/dist/deploy/HyperlaneDeployer.js +179 -183
- package/dist/deploy/HyperlaneDeployer.js.map +1 -1
- package/dist/deploy/proxy.d.ts +9 -0
- package/dist/deploy/proxy.d.ts.map +1 -1
- package/dist/deploy/proxy.js +11 -26
- package/dist/deploy/proxy.js.map +1 -1
- package/dist/deploy/types.d.ts +18 -2
- package/dist/deploy/types.d.ts.map +1 -1
- package/dist/deploy/types.js +3 -1
- package/dist/deploy/types.js.map +1 -1
- package/dist/deploy/verify/ContractVerifier.js +122 -131
- package/dist/deploy/verify/ContractVerifier.js.map +1 -1
- package/dist/deploy/verify/types.d.ts +3 -3
- package/dist/deploy/verify/types.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpChecker.d.ts +0 -4
- package/dist/gas/HyperlaneIgpChecker.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpChecker.js +101 -121
- package/dist/gas/HyperlaneIgpChecker.js.map +1 -1
- package/dist/gas/HyperlaneIgpDeployer.d.ts.map +1 -1
- package/dist/gas/HyperlaneIgpDeployer.js +74 -77
- package/dist/gas/HyperlaneIgpDeployer.js.map +1 -1
- package/dist/gas/contracts.d.ts +4 -3
- package/dist/gas/contracts.d.ts.map +1 -1
- package/dist/gas/contracts.js +2 -1
- package/dist/gas/contracts.js.map +1 -1
- package/dist/gas/token-prices.d.ts +5 -5
- package/dist/gas/token-prices.d.ts.map +1 -1
- package/dist/gas/token-prices.js +37 -54
- package/dist/gas/token-prices.js.map +1 -1
- package/dist/gas/token-prices.test.js +11 -20
- package/dist/gas/token-prices.test.js.map +1 -1
- package/dist/gas/types.d.ts +5 -2
- package/dist/gas/types.d.ts.map +1 -1
- package/dist/gas/types.js +2 -2
- package/dist/gas/types.js.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.js +69 -88
- package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
- package/dist/hook/contracts.d.ts +4 -4
- package/dist/hook/contracts.d.ts.map +1 -1
- package/dist/hook/contracts.js +5 -1
- package/dist/hook/contracts.js.map +1 -1
- package/dist/hook/types.d.ts +3 -3
- package/dist/hook/types.d.ts.map +1 -1
- package/dist/hook/types.js +1 -1
- package/dist/hook/types.js.map +1 -1
- package/dist/index.d.ts +3 -2
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +6 -2
- package/dist/index.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts +1 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +14 -23
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.js +215 -194
- package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactoryDeployer.js +18 -34
- package/dist/ism/HyperlaneIsmFactoryDeployer.js.map +1 -1
- package/dist/ism/contracts.d.ts +1 -1
- package/dist/ism/contracts.d.ts.map +1 -1
- package/dist/ism/types.d.ts +5 -5
- package/dist/ism/types.d.ts.map +1 -1
- package/dist/ism/types.js +1 -1
- package/dist/ism/types.js.map +1 -1
- package/dist/metadata/agentConfig.d.ts +9 -4
- package/dist/metadata/agentConfig.d.ts.map +1 -1
- package/dist/metadata/agentConfig.js +26 -8
- package/dist/metadata/agentConfig.js.map +1 -1
- package/dist/metadata/agentConfig.test.d.ts +2 -0
- package/dist/metadata/agentConfig.test.d.ts.map +1 -0
- package/dist/metadata/agentConfig.test.js +33 -0
- package/dist/metadata/agentConfig.test.js.map +1 -0
- package/dist/metadata/chainMetadata.test.js +27 -9
- package/dist/metadata/chainMetadata.test.js.map +1 -1
- package/dist/metadata/chainMetadataTypes.d.ts +3 -3
- package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
- package/dist/metadata/chainMetadataTypes.js +3 -4
- package/dist/metadata/chainMetadataTypes.js.map +1 -1
- package/dist/metadata/deploymentArtifacts.d.ts +2 -2
- package/dist/metadata/deploymentArtifacts.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccountChecker.js +4 -1
- package/dist/middleware/account/InterchainAccountChecker.js.map +1 -1
- package/dist/middleware/account/InterchainAccountDeployer.d.ts +12 -6
- package/dist/middleware/account/InterchainAccountDeployer.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccountDeployer.js +34 -63
- package/dist/middleware/account/InterchainAccountDeployer.js.map +1 -1
- package/dist/middleware/account/accounts.hardhat-test.js +21 -30
- package/dist/middleware/account/accounts.hardhat-test.js.map +1 -1
- package/dist/middleware/account/contracts.d.ts +4 -3
- package/dist/middleware/account/contracts.d.ts.map +1 -1
- package/dist/middleware/account/contracts.js +2 -1
- package/dist/middleware/account/contracts.js.map +1 -1
- package/dist/middleware/liquidity-layer/LiquidityLayerApp.js +129 -151
- package/dist/middleware/liquidity-layer/LiquidityLayerApp.js.map +1 -1
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts +2 -2
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts.map +1 -1
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js +85 -107
- package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js.map +1 -1
- package/dist/middleware/liquidity-layer/contracts.d.ts +4 -3
- package/dist/middleware/liquidity-layer/contracts.d.ts.map +1 -1
- package/dist/middleware/liquidity-layer/contracts.js +2 -1
- package/dist/middleware/liquidity-layer/contracts.js.map +1 -1
- package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js +41 -46
- package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js.map +1 -1
- package/dist/middleware/query/InterchainQueryDeployer.d.ts +1 -1
- package/dist/middleware/query/InterchainQueryDeployer.d.ts.map +1 -1
- package/dist/middleware/query/InterchainQueryDeployer.js +13 -24
- package/dist/middleware/query/InterchainQueryDeployer.js.map +1 -1
- package/dist/middleware/query/contracts.d.ts +4 -3
- package/dist/middleware/query/contracts.d.ts.map +1 -1
- package/dist/middleware/query/contracts.js +2 -1
- package/dist/middleware/query/contracts.js.map +1 -1
- package/dist/middleware/query/queries.hardhat-test.js +23 -32
- package/dist/middleware/query/queries.hardhat-test.js.map +1 -1
- package/dist/providers/MultiProvider.d.ts +2 -2
- package/dist/providers/MultiProvider.d.ts.map +1 -1
- package/dist/providers/MultiProvider.js +63 -84
- package/dist/providers/MultiProvider.js.map +1 -1
- package/dist/providers/RetryProvider.d.ts +1 -1
- package/dist/providers/RetryProvider.d.ts.map +1 -1
- package/dist/providers/RetryProvider.js +2 -16
- package/dist/providers/RetryProvider.js.map +1 -1
- package/dist/router/GasRouterDeployer.js +18 -32
- package/dist/router/GasRouterDeployer.js.map +1 -1
- package/dist/router/HyperlaneRouterChecker.d.ts +0 -1
- package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
- package/dist/router/HyperlaneRouterChecker.js +37 -51
- package/dist/router/HyperlaneRouterChecker.js.map +1 -1
- package/dist/router/HyperlaneRouterDeployer.d.ts.map +1 -1
- package/dist/router/HyperlaneRouterDeployer.js +89 -107
- package/dist/router/HyperlaneRouterDeployer.js.map +1 -1
- package/dist/router/ProxiedRouterChecker.d.ts +3 -2
- package/dist/router/ProxiedRouterChecker.d.ts.map +1 -1
- package/dist/router/ProxiedRouterChecker.js +15 -17
- package/dist/router/ProxiedRouterChecker.js.map +1 -1
- package/dist/router/ProxiedRouterDeployer.d.ts +2 -2
- package/dist/router/ProxiedRouterDeployer.d.ts.map +1 -1
- package/dist/router/ProxiedRouterDeployer.js +27 -28
- package/dist/router/ProxiedRouterDeployer.js.map +1 -1
- package/dist/router/RouterApps.d.ts.map +1 -1
- package/dist/router/RouterApps.js +4 -15
- package/dist/router/RouterApps.js.map +1 -1
- package/dist/router/types.d.ts +14 -9
- package/dist/router/types.d.ts.map +1 -1
- package/dist/router/types.js +7 -2
- package/dist/router/types.js.map +1 -1
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +21 -24
- package/dist/test/testUtils.js.map +1 -1
- package/dist/types.d.ts +5 -5
- package/dist/types.d.ts.map +1 -1
- package/dist/utils/MultiGeneric.js +2 -4
- package/dist/utils/MultiGeneric.js.map +1 -1
- package/dist/utils/fetch.js +8 -16
- package/dist/utils/fetch.js.map +1 -1
- package/dist/utils/number.js +2 -2
- package/dist/utils/number.js.map +1 -1
- package/dist/utils/objects.d.ts +2 -2
- package/dist/utils/objects.d.ts.map +1 -1
- package/dist/utils/wagmi.js +1 -2
- package/dist/utils/wagmi.js.map +1 -1
- package/package.json +10 -9
|
@@ -1,13 +1,4 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
-
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
-
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
-
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
-
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
-
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
-
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
-
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
-
});
|
|
10
|
-
};
|
|
11
2
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
3
|
exports.HyperlaneAppChecker = void 0;
|
|
13
4
|
const utils_1 = require("ethers/lib/utils");
|
|
@@ -23,46 +14,84 @@ class HyperlaneAppChecker {
|
|
|
23
14
|
this.violations = [];
|
|
24
15
|
this.configMap = configMap;
|
|
25
16
|
}
|
|
26
|
-
check() {
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
return Promise.all(this.app.chains().map((chain) => this.checkChain(chain)));
|
|
37
|
-
});
|
|
17
|
+
async check() {
|
|
18
|
+
Object.keys(this.configMap)
|
|
19
|
+
.filter((_) => !this.app.chains().includes(_))
|
|
20
|
+
.forEach((chain) => this.addViolation({
|
|
21
|
+
type: types_1.ViolationType.NotDeployed,
|
|
22
|
+
chain,
|
|
23
|
+
expected: '',
|
|
24
|
+
actual: '',
|
|
25
|
+
}));
|
|
26
|
+
return Promise.all(this.app.chains().map((chain) => this.checkChain(chain)));
|
|
38
27
|
}
|
|
39
28
|
addViolation(violation) {
|
|
40
29
|
this.violations.push(violation);
|
|
41
30
|
}
|
|
42
|
-
checkProxiedContracts(chain) {
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
});
|
|
62
|
-
}
|
|
31
|
+
async checkProxiedContracts(chain) {
|
|
32
|
+
const expectedAdmin = this.app.getContracts(chain).proxyAdmin.address;
|
|
33
|
+
if (!expectedAdmin) {
|
|
34
|
+
throw new Error(`Checking proxied contracts for ${chain} with no admin provided`);
|
|
35
|
+
}
|
|
36
|
+
const provider = this.multiProvider.getProvider(chain);
|
|
37
|
+
const contracts = this.app.getContracts(chain);
|
|
38
|
+
await (0, objects_1.promiseObjAll)((0, objects_1.objMap)(contracts, async (name, contract) => {
|
|
39
|
+
if (await (0, proxy_1.isProxy)(provider, contract.address)) {
|
|
40
|
+
// Check the ProxiedContract's admin matches expectation
|
|
41
|
+
const actualAdmin = await (0, proxy_1.proxyAdmin)(provider, contract.address);
|
|
42
|
+
if (!utils_2.utils.eqAddress(actualAdmin, expectedAdmin)) {
|
|
43
|
+
this.addViolation({
|
|
44
|
+
type: types_1.ViolationType.ProxyAdmin,
|
|
45
|
+
chain,
|
|
46
|
+
name,
|
|
47
|
+
expected: expectedAdmin,
|
|
48
|
+
actual: actualAdmin,
|
|
49
|
+
});
|
|
63
50
|
}
|
|
64
|
-
}
|
|
65
|
-
});
|
|
51
|
+
}
|
|
52
|
+
}));
|
|
53
|
+
}
|
|
54
|
+
async checkUpgrade(chain, upgradeConfig) {
|
|
55
|
+
const timelockController = this.app.getContracts(chain)
|
|
56
|
+
.timelockController;
|
|
57
|
+
if (!timelockController) {
|
|
58
|
+
throw new Error(`Checking upgrade config for ${chain} with no timelock provided`);
|
|
59
|
+
}
|
|
60
|
+
const minDelay = (await timelockController.getMinDelay()).toNumber();
|
|
61
|
+
if (minDelay !== upgradeConfig.timelock.delay) {
|
|
62
|
+
const violation = {
|
|
63
|
+
type: types_1.ViolationType.TimelockController,
|
|
64
|
+
chain,
|
|
65
|
+
actual: minDelay,
|
|
66
|
+
expected: upgradeConfig.timelock.delay,
|
|
67
|
+
contract: timelockController,
|
|
68
|
+
};
|
|
69
|
+
this.addViolation(violation);
|
|
70
|
+
}
|
|
71
|
+
const roleIds = {
|
|
72
|
+
executor: await timelockController.EXECUTOR_ROLE(),
|
|
73
|
+
proposer: await timelockController.PROPOSER_ROLE(),
|
|
74
|
+
canceller: await timelockController.CANCELLER_ROLE(),
|
|
75
|
+
admin: await timelockController.TIMELOCK_ADMIN_ROLE(),
|
|
76
|
+
};
|
|
77
|
+
const accountHasRole = await (0, objects_1.promiseObjAll)((0, objects_1.objMap)(upgradeConfig.timelock.roles, async (role, account) => ({
|
|
78
|
+
hasRole: await timelockController.hasRole(roleIds[role], account),
|
|
79
|
+
account,
|
|
80
|
+
})));
|
|
81
|
+
for (const [role, { hasRole, account }] of Object.entries(accountHasRole)) {
|
|
82
|
+
if (!hasRole) {
|
|
83
|
+
const violation = {
|
|
84
|
+
type: types_1.ViolationType.AccessControl,
|
|
85
|
+
chain,
|
|
86
|
+
account,
|
|
87
|
+
actual: false,
|
|
88
|
+
expected: true,
|
|
89
|
+
contract: timelockController,
|
|
90
|
+
role,
|
|
91
|
+
};
|
|
92
|
+
this.addViolation(violation);
|
|
93
|
+
}
|
|
94
|
+
}
|
|
66
95
|
}
|
|
67
96
|
removeBytecodeMetadata(bytecode) {
|
|
68
97
|
// https://docs.soliditylang.org/en/v0.8.17/metadata.html#encoding-of-the-metadata-hash-in-the-bytecode
|
|
@@ -70,48 +99,41 @@ class HyperlaneAppChecker {
|
|
|
70
99
|
return bytecode.substring(0, bytecode.length - 90);
|
|
71
100
|
}
|
|
72
101
|
// This method checks whether the bytecode of a contract matches the expected bytecode. It forces the deployer to explicitly acknowledge a change in bytecode. The violations can be remediated by updating the expected bytecode hash.
|
|
73
|
-
checkBytecode(chain, name, address, expectedBytecodeHashes, modifyBytecodePriorToHash = (_) => _) {
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
}
|
|
87
|
-
});
|
|
102
|
+
async checkBytecode(chain, name, address, expectedBytecodeHashes, modifyBytecodePriorToHash = (_) => _) {
|
|
103
|
+
const provider = this.multiProvider.getProvider(chain);
|
|
104
|
+
const bytecode = await provider.getCode(address);
|
|
105
|
+
const bytecodeHash = (0, utils_1.keccak256)(modifyBytecodePriorToHash(this.removeBytecodeMetadata(bytecode)));
|
|
106
|
+
if (!expectedBytecodeHashes.includes(bytecodeHash)) {
|
|
107
|
+
this.addViolation({
|
|
108
|
+
type: types_1.ViolationType.BytecodeMismatch,
|
|
109
|
+
chain,
|
|
110
|
+
expected: expectedBytecodeHashes,
|
|
111
|
+
actual: bytecodeHash,
|
|
112
|
+
name,
|
|
113
|
+
});
|
|
114
|
+
}
|
|
88
115
|
}
|
|
89
|
-
ownables(chain) {
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
return (0, contracts_1.filterOwnableContracts)(contracts);
|
|
93
|
-
});
|
|
116
|
+
async ownables(chain) {
|
|
117
|
+
const contracts = this.app.getContracts(chain);
|
|
118
|
+
return (0, contracts_1.filterOwnableContracts)(contracts);
|
|
94
119
|
}
|
|
95
|
-
checkOwnership(chain, owner, ownableOverrides) {
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
const
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
const
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
};
|
|
111
|
-
this.addViolation(violation);
|
|
112
|
-
}
|
|
120
|
+
async checkOwnership(chain, owner, ownableOverrides) {
|
|
121
|
+
const ownableContracts = await this.ownables(chain);
|
|
122
|
+
for (const [name, contract] of Object.entries(ownableContracts)) {
|
|
123
|
+
const expectedOwner = ownableOverrides?.[name] ?? owner;
|
|
124
|
+
const actual = await contract.owner();
|
|
125
|
+
if (!utils_2.utils.eqAddress(actual, expectedOwner)) {
|
|
126
|
+
const violation = {
|
|
127
|
+
chain,
|
|
128
|
+
name,
|
|
129
|
+
type: types_1.ViolationType.Owner,
|
|
130
|
+
actual,
|
|
131
|
+
expected: expectedOwner,
|
|
132
|
+
contract,
|
|
133
|
+
};
|
|
134
|
+
this.addViolation(violation);
|
|
113
135
|
}
|
|
114
|
-
}
|
|
136
|
+
}
|
|
115
137
|
}
|
|
116
138
|
expectViolations(violationCounts) {
|
|
117
139
|
// Every type should have exactly the number of expected matches.
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperlaneAppChecker.js","sourceRoot":"","sources":["../../src/deploy/HyperlaneAppChecker.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"HyperlaneAppChecker.js","sourceRoot":"","sources":["../../src/deploy/HyperlaneAppChecker.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,15 +1,18 @@
|
|
|
1
1
|
import { Debugger } from 'debug';
|
|
2
2
|
import { Contract, ethers } from 'ethers';
|
|
3
|
-
import { HyperlaneConnectionClient, Ownable, ProxyAdmin, TransparentUpgradeableProxy } from '@hyperlane-xyz/core';
|
|
3
|
+
import { HyperlaneConnectionClient, Ownable, ProxyAdmin, TimelockController, TransparentUpgradeableProxy } from '@hyperlane-xyz/core';
|
|
4
4
|
import { types } from '@hyperlane-xyz/utils';
|
|
5
5
|
import { HyperlaneAddressesMap, HyperlaneContracts, HyperlaneContractsMap, HyperlaneFactories } from '../contracts';
|
|
6
|
+
import { HyperlaneIsmFactory } from '../ism/HyperlaneIsmFactory';
|
|
6
7
|
import { MultiProvider } from '../providers/MultiProvider';
|
|
7
8
|
import { ConnectionClientConfig } from '../router/types';
|
|
8
9
|
import { ChainMap, ChainName } from '../types';
|
|
10
|
+
import { UpgradeConfig } from './proxy';
|
|
9
11
|
import { ContractVerificationInput } from './verify/types';
|
|
10
12
|
export interface DeployerOptions {
|
|
11
13
|
logger?: Debugger;
|
|
12
14
|
chainTimeoutMs?: number;
|
|
15
|
+
ismFactory?: HyperlaneIsmFactory;
|
|
13
16
|
}
|
|
14
17
|
export declare abstract class HyperlaneDeployer<Config, Factories extends HyperlaneFactories> {
|
|
15
18
|
protected readonly multiProvider: MultiProvider;
|
|
@@ -35,6 +38,7 @@ export declare abstract class HyperlaneDeployer<Config, Factories extends Hyperl
|
|
|
35
38
|
protected changeAdmin(chain: ChainName, proxy: TransparentUpgradeableProxy, admin: string): Promise<void>;
|
|
36
39
|
protected upgradeAndInitialize<C extends ethers.Contract>(chain: ChainName, proxy: TransparentUpgradeableProxy, implementation: C, initializeArgs: Parameters<C['initialize']>): Promise<void>;
|
|
37
40
|
protected deployProxy<C extends ethers.Contract>(chain: ChainName, implementation: C, proxyAdmin: string, initializeArgs?: Parameters<C['initialize']>): Promise<C>;
|
|
41
|
+
deployTimelock(chain: ChainName, timelockConfig: UpgradeConfig['timelock']): Promise<TimelockController>;
|
|
38
42
|
protected writeCache<K extends keyof Factories>(chain: ChainName, contractName: K, address: types.Address): void;
|
|
39
43
|
protected readCache<F extends ethers.ContractFactory>(chain: ChainName, factory: F, contractName: string): Awaited<ReturnType<F['deploy']>> | undefined;
|
|
40
44
|
/**
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"HyperlaneDeployer.d.ts","sourceRoot":"","sources":["../../src/deploy/HyperlaneDeployer.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAS,MAAM,OAAO,CAAC;AACxC,OAAO,EAAE,QAAQ,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE1C,OAAO,EACL,yBAAyB,
|
|
1
|
+
{"version":3,"file":"HyperlaneDeployer.d.ts","sourceRoot":"","sources":["../../src/deploy/HyperlaneDeployer.ts"],"names":[],"mappings":"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"}
|