@hyperlane-xyz/sdk 0.5.0-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/README.md +5 -0
- package/dist/HyperlaneApp.d.ts +13 -0
- package/dist/HyperlaneApp.d.ts.map +1 -0
- package/dist/HyperlaneApp.js +25 -0
- package/dist/HyperlaneApp.js.map +1 -0
- package/dist/consts/chainConnectionConfigs.d.ts +28 -0
- package/dist/consts/chainConnectionConfigs.d.ts.map +1 -0
- package/dist/consts/chainConnectionConfigs.js +130 -0
- package/dist/consts/chainConnectionConfigs.js.map +1 -0
- package/dist/consts/chainMetadata.d.ts +43 -0
- package/dist/consts/chainMetadata.d.ts.map +1 -0
- package/dist/consts/chainMetadata.js +139 -0
- package/dist/consts/chainMetadata.js.map +1 -0
- package/dist/consts/chains.d.ts +28 -0
- package/dist/consts/chains.d.ts.map +1 -0
- package/dist/consts/chains.js +40 -0
- package/dist/consts/chains.js.map +1 -0
- package/dist/consts/environments/index.d.ts +1450 -0
- package/dist/consts/environments/index.d.ts.map +1 -0
- package/dist/consts/environments/index.js +15 -0
- package/dist/consts/environments/index.js.map +1 -0
- package/dist/consts/environments/mainnet.json +513 -0
- package/dist/consts/environments/test.json +113 -0
- package/dist/consts/environments/testnet2.json +821 -0
- package/dist/consts/metamask.d.ts +17 -0
- package/dist/consts/metamask.d.ts.map +1 -0
- package/dist/consts/metamask.js +50 -0
- package/dist/consts/metamask.js.map +1 -0
- package/dist/contracts.d.ts +17 -0
- package/dist/contracts.d.ts.map +1 -0
- package/dist/contracts.js +61 -0
- package/dist/contracts.js.map +1 -0
- package/dist/core/HyperlaneCore.d.ts +1491 -0
- package/dist/core/HyperlaneCore.d.ts.map +1 -0
- package/dist/core/HyperlaneCore.js +103 -0
- package/dist/core/HyperlaneCore.js.map +1 -0
- package/dist/core/TestCoreApp.d.ts +27 -0
- package/dist/core/TestCoreApp.d.ts.map +1 -0
- package/dist/core/TestCoreApp.js +63 -0
- package/dist/core/TestCoreApp.js.map +1 -0
- package/dist/core/TestCoreDeployer.d.ts +13 -0
- package/dist/core/TestCoreDeployer.d.ts.map +1 -0
- package/dist/core/TestCoreDeployer.js +85 -0
- package/dist/core/TestCoreDeployer.js.map +1 -0
- package/dist/core/contracts.d.ts +30 -0
- package/dist/core/contracts.d.ts.map +1 -0
- package/dist/core/contracts.js +14 -0
- package/dist/core/contracts.js.map +1 -0
- package/dist/core/events.d.ts +9 -0
- package/dist/core/events.d.ts.map +1 -0
- package/dist/core/events.js +3 -0
- package/dist/core/events.js.map +1 -0
- package/dist/core/message.d.ts +162 -0
- package/dist/core/message.d.ts.map +1 -0
- package/dist/core/message.js +311 -0
- package/dist/core/message.js.map +1 -0
- package/dist/core/testHyperlaneDeploy.hardhat-test.d.ts +3 -0
- package/dist/core/testHyperlaneDeploy.hardhat-test.d.ts.map +1 -0
- package/dist/core/testHyperlaneDeploy.hardhat-test.js +66 -0
- package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +1 -0
- package/dist/deploy/HyperlaneAppChecker.d.ts +22 -0
- package/dist/deploy/HyperlaneAppChecker.d.ts.map +1 -0
- package/dist/deploy/HyperlaneAppChecker.js +76 -0
- package/dist/deploy/HyperlaneAppChecker.js.map +1 -0
- package/dist/deploy/HyperlaneDeployer.d.ts +40 -0
- package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -0
- package/dist/deploy/HyperlaneDeployer.js +153 -0
- package/dist/deploy/HyperlaneDeployer.js.map +1 -0
- package/dist/deploy/core/HyperlaneCoreChecker.d.ts +17 -0
- package/dist/deploy/core/HyperlaneCoreChecker.d.ts.map +1 -0
- package/dist/deploy/core/HyperlaneCoreChecker.js +210 -0
- package/dist/deploy/core/HyperlaneCoreChecker.js.map +1 -0
- package/dist/deploy/core/HyperlaneCoreDeployer.d.ts +30 -0
- package/dist/deploy/core/HyperlaneCoreDeployer.d.ts.map +1 -0
- package/dist/deploy/core/HyperlaneCoreDeployer.js +134 -0
- package/dist/deploy/core/HyperlaneCoreDeployer.js.map +1 -0
- package/dist/deploy/core/types.d.ts +64 -0
- package/dist/deploy/core/types.d.ts.map +1 -0
- package/dist/deploy/core/types.js +23 -0
- package/dist/deploy/core/types.js.map +1 -0
- package/dist/deploy/proxy.d.ts +17 -0
- package/dist/deploy/proxy.d.ts.map +1 -0
- package/dist/deploy/proxy.js +35 -0
- package/dist/deploy/proxy.js.map +1 -0
- package/dist/deploy/router/HyperlaneRouterChecker.d.ts +13 -0
- package/dist/deploy/router/HyperlaneRouterChecker.d.ts.map +1 -0
- package/dist/deploy/router/HyperlaneRouterChecker.js +44 -0
- package/dist/deploy/router/HyperlaneRouterChecker.js.map +1 -0
- package/dist/deploy/router/HyperlaneRouterDeployer.d.ts +13 -0
- package/dist/deploy/router/HyperlaneRouterDeployer.d.ts.map +1 -0
- package/dist/deploy/router/HyperlaneRouterDeployer.js +103 -0
- package/dist/deploy/router/HyperlaneRouterDeployer.js.map +1 -0
- package/dist/deploy/router/types.d.ts +7 -0
- package/dist/deploy/router/types.d.ts.map +1 -0
- package/dist/deploy/router/types.js +3 -0
- package/dist/deploy/router/types.js.map +1 -0
- package/dist/deploy/types.d.ts +19 -0
- package/dist/deploy/types.d.ts.map +1 -0
- package/dist/deploy/types.js +8 -0
- package/dist/deploy/types.js.map +1 -0
- package/dist/deploy/utils.d.ts +10 -0
- package/dist/deploy/utils.d.ts.map +1 -0
- package/dist/deploy/utils.js +38 -0
- package/dist/deploy/utils.js.map +1 -0
- package/dist/deploy/verify/ContractVerifier.d.ts +19 -0
- package/dist/deploy/verify/ContractVerifier.d.ts.map +1 -0
- package/dist/deploy/verify/ContractVerifier.js +129 -0
- package/dist/deploy/verify/ContractVerifier.js.map +1 -0
- package/dist/deploy/verify/types.d.ts +14 -0
- package/dist/deploy/verify/types.d.ts.map +1 -0
- package/dist/deploy/verify/types.js +3 -0
- package/dist/deploy/verify/types.js.map +1 -0
- package/dist/deploy/verify/utils.d.ts +6 -0
- package/dist/deploy/verify/utils.d.ts.map +1 -0
- package/dist/deploy/verify/utils.js +25 -0
- package/dist/deploy/verify/utils.js.map +1 -0
- package/dist/domains.d.ts +4 -0
- package/dist/domains.d.ts.map +1 -0
- package/dist/domains.js +8 -0
- package/dist/domains.js.map +1 -0
- package/dist/events.d.ts +25 -0
- package/dist/events.d.ts.map +1 -0
- package/dist/events.js +161 -0
- package/dist/events.js.map +1 -0
- package/dist/gas/calculator.d.ts +134 -0
- package/dist/gas/calculator.d.ts.map +1 -0
- package/dist/gas/calculator.js +235 -0
- package/dist/gas/calculator.js.map +1 -0
- package/dist/gas/calculator.test.d.ts +2 -0
- package/dist/gas/calculator.test.d.ts.map +1 -0
- package/dist/gas/calculator.test.js +211 -0
- package/dist/gas/calculator.test.js.map +1 -0
- package/dist/gas/token-prices.d.ts +18 -0
- package/dist/gas/token-prices.d.ts.map +1 -0
- package/dist/gas/token-prices.js +63 -0
- package/dist/gas/token-prices.js.map +1 -0
- package/dist/gas/token-prices.test.d.ts +2 -0
- package/dist/gas/token-prices.test.d.ts.map +1 -0
- package/dist/gas/token-prices.test.js +40 -0
- package/dist/gas/token-prices.test.js.map +1 -0
- package/dist/index.d.ts +42 -0
- package/dist/index.d.ts.map +1 -0
- package/dist/index.js +119 -0
- package/dist/index.js.map +1 -0
- package/dist/providers/ChainConnection.d.ts +22 -0
- package/dist/providers/ChainConnection.d.ts.map +1 -0
- package/dist/providers/ChainConnection.js +67 -0
- package/dist/providers/ChainConnection.js.map +1 -0
- package/dist/providers/MultiProvider.d.ts +55 -0
- package/dist/providers/MultiProvider.d.ts.map +1 -0
- package/dist/providers/MultiProvider.js +106 -0
- package/dist/providers/MultiProvider.js.map +1 -0
- package/dist/providers/RetryProvider.d.ts +18 -0
- package/dist/providers/RetryProvider.d.ts.map +1 -0
- package/dist/providers/RetryProvider.js +49 -0
- package/dist/providers/RetryProvider.js.map +1 -0
- package/dist/proxy.d.ts +23 -0
- package/dist/proxy.d.ts.map +1 -0
- package/dist/proxy.js +30 -0
- package/dist/proxy.js.map +1 -0
- package/dist/router.d.ts +19 -0
- package/dist/router.d.ts.map +1 -0
- package/dist/router.js +3 -0
- package/dist/router.js.map +1 -0
- package/dist/test/envSubsetDeployer/app.d.ts +36 -0
- package/dist/test/envSubsetDeployer/app.d.ts.map +1 -0
- package/dist/test/envSubsetDeployer/app.js +77 -0
- package/dist/test/envSubsetDeployer/app.js.map +1 -0
- package/dist/test/envSubsetDeployer/check-single-chain.d.ts +2 -0
- package/dist/test/envSubsetDeployer/check-single-chain.d.ts.map +1 -0
- package/dist/test/envSubsetDeployer/check-single-chain.js +49 -0
- package/dist/test/envSubsetDeployer/check-single-chain.js.map +1 -0
- package/dist/test/envSubsetDeployer/deploy-single-chain.d.ts +2 -0
- package/dist/test/envSubsetDeployer/deploy-single-chain.d.ts.map +1 -0
- package/dist/test/envSubsetDeployer/deploy-single-chain.js +42 -0
- package/dist/test/envSubsetDeployer/deploy-single-chain.js.map +1 -0
- package/dist/test/envSubsetDeployer/deploy.hardhat-test.d.ts +2 -0
- package/dist/test/envSubsetDeployer/deploy.hardhat-test.d.ts.map +1 -0
- package/dist/test/envSubsetDeployer/deploy.hardhat-test.js +80 -0
- package/dist/test/envSubsetDeployer/deploy.hardhat-test.js.map +1 -0
- package/dist/test/envSubsetDeployer/utils.d.ts +7 -0
- package/dist/test/envSubsetDeployer/utils.d.ts.map +1 -0
- package/dist/test/envSubsetDeployer/utils.js +25 -0
- package/dist/test/envSubsetDeployer/utils.js.map +1 -0
- package/dist/test/testUtils.d.ts +29 -0
- package/dist/test/testUtils.d.ts.map +1 -0
- package/dist/test/testUtils.js +98 -0
- package/dist/test/testUtils.js.map +1 -0
- package/dist/types.d.ts +20 -0
- package/dist/types.d.ts.map +1 -0
- package/dist/types.js +3 -0
- package/dist/types.js.map +1 -0
- package/dist/utils/MultiGeneric.d.ts +27 -0
- package/dist/utils/MultiGeneric.d.ts.map +1 -0
- package/dist/utils/MultiGeneric.js +70 -0
- package/dist/utils/MultiGeneric.js.map +1 -0
- package/dist/utils/ids.d.ts +20 -0
- package/dist/utils/ids.d.ts.map +1 -0
- package/dist/utils/ids.js +47 -0
- package/dist/utils/ids.js.map +1 -0
- package/dist/utils/number.d.ts +32 -0
- package/dist/utils/number.d.ts.map +1 -0
- package/dist/utils/number.js +59 -0
- package/dist/utils/number.js.map +1 -0
- package/dist/utils/objects.d.ts +7 -0
- package/dist/utils/objects.d.ts.map +1 -0
- package/dist/utils/objects.js +29 -0
- package/dist/utils/objects.js.map +1 -0
- package/dist/utils/time.d.ts +8 -0
- package/dist/utils/time.d.ts.map +1 -0
- package/dist/utils/time.js +15 -0
- package/dist/utils/time.js.map +1 -0
- package/dist/utils/utils.test.d.ts +2 -0
- package/dist/utils/utils.test.d.ts.map +1 -0
- package/dist/utils/utils.test.js +41 -0
- package/dist/utils/utils.test.js.map +1 -0
- package/package.json +55 -0
|
@@ -0,0 +1,129 @@
|
|
|
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
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
12
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
13
|
+
};
|
|
14
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
15
|
+
exports.ContractVerifier = void 0;
|
|
16
|
+
const cross_fetch_1 = __importDefault(require("cross-fetch"));
|
|
17
|
+
const debug_1 = require("debug");
|
|
18
|
+
const ethers_1 = require("ethers");
|
|
19
|
+
const utils_1 = require("@hyperlane-xyz/utils");
|
|
20
|
+
const MultiGeneric_1 = require("../../utils/MultiGeneric");
|
|
21
|
+
var ExplorerApiActions;
|
|
22
|
+
(function (ExplorerApiActions) {
|
|
23
|
+
ExplorerApiActions["VERIFY_IMPLEMENTATION"] = "verifysourcecode";
|
|
24
|
+
ExplorerApiActions["MARK_PROXY"] = "verifyproxycontract";
|
|
25
|
+
ExplorerApiActions["CHECK_STATUS"] = "checkverifystatus";
|
|
26
|
+
ExplorerApiActions["CHECK_PROXY_STATUS"] = "checkproxyverification";
|
|
27
|
+
})(ExplorerApiActions || (ExplorerApiActions = {}));
|
|
28
|
+
var ExplorerApiErrors;
|
|
29
|
+
(function (ExplorerApiErrors) {
|
|
30
|
+
ExplorerApiErrors["ALREADY_VERIFIED"] = "Contract source code already verified";
|
|
31
|
+
ExplorerApiErrors["VERIFICATION_PENDING"] = "Pending in queue";
|
|
32
|
+
ExplorerApiErrors["PROXY_FAILED"] = "A corresponding implementation contract was unfortunately not detected for the proxy address.";
|
|
33
|
+
})(ExplorerApiErrors || (ExplorerApiErrors = {}));
|
|
34
|
+
class ContractVerifier extends MultiGeneric_1.MultiGeneric {
|
|
35
|
+
constructor(verificationInputs, multiProvider, apiKeys, flattenedSource, // flattened source code from eg `hardhat flatten`
|
|
36
|
+
compilerOptions) {
|
|
37
|
+
super(verificationInputs);
|
|
38
|
+
this.multiProvider = multiProvider;
|
|
39
|
+
this.apiKeys = apiKeys;
|
|
40
|
+
this.flattenedSource = flattenedSource;
|
|
41
|
+
this.compilerOptions = compilerOptions;
|
|
42
|
+
this.logger = (0, debug_1.debug)('hyperlane:ContractVerifier');
|
|
43
|
+
}
|
|
44
|
+
verify() {
|
|
45
|
+
return Promise.allSettled(this.chains().map((chain) => this.verifyChain(chain, this.get(chain))));
|
|
46
|
+
}
|
|
47
|
+
verifyChain(chain, inputs) {
|
|
48
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
49
|
+
this.logger(`Verifying ${chain}...`);
|
|
50
|
+
const chainLogger = this.logger.extend(chain);
|
|
51
|
+
for (const input of inputs) {
|
|
52
|
+
yield this.verifyContract(chain, input, chainLogger);
|
|
53
|
+
}
|
|
54
|
+
});
|
|
55
|
+
}
|
|
56
|
+
submitForm(chain, action, options) {
|
|
57
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
58
|
+
const chainConnection = this.multiProvider.getChainConnection(chain);
|
|
59
|
+
const apiUrl = chainConnection.getApiUrl();
|
|
60
|
+
const params = new URLSearchParams(Object.assign({ apikey: this.apiKeys[chain], module: 'contract', action }, options));
|
|
61
|
+
let response;
|
|
62
|
+
if (action === ExplorerApiActions.CHECK_STATUS ||
|
|
63
|
+
action === ExplorerApiActions.CHECK_PROXY_STATUS) {
|
|
64
|
+
response = yield (0, cross_fetch_1.default)(`${apiUrl}?${params}`);
|
|
65
|
+
}
|
|
66
|
+
else {
|
|
67
|
+
response = yield (0, cross_fetch_1.default)(apiUrl, {
|
|
68
|
+
method: 'POST',
|
|
69
|
+
headers: {
|
|
70
|
+
'Content-Type': 'application/x-www-form-urlencoded',
|
|
71
|
+
},
|
|
72
|
+
body: params,
|
|
73
|
+
});
|
|
74
|
+
}
|
|
75
|
+
// avoid rate limiting (5 requests per second)
|
|
76
|
+
yield utils_1.utils.sleep(1000 / 5);
|
|
77
|
+
const result = JSON.parse(yield response.text());
|
|
78
|
+
if (result.message === 'NOTOK') {
|
|
79
|
+
switch (result.result) {
|
|
80
|
+
case ExplorerApiErrors.VERIFICATION_PENDING:
|
|
81
|
+
yield utils_1.utils.sleep(5000);
|
|
82
|
+
return this.submitForm(chain, action, options);
|
|
83
|
+
case ExplorerApiErrors.ALREADY_VERIFIED:
|
|
84
|
+
return;
|
|
85
|
+
case ExplorerApiErrors.PROXY_FAILED:
|
|
86
|
+
default:
|
|
87
|
+
throw new Error(`Verification failed: ${result.result}`);
|
|
88
|
+
}
|
|
89
|
+
}
|
|
90
|
+
return result.result;
|
|
91
|
+
});
|
|
92
|
+
}
|
|
93
|
+
verifyContract(chain, input, logger = this.logger) {
|
|
94
|
+
var _a;
|
|
95
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
96
|
+
if (input.address === ethers_1.ethers.constants.AddressZero) {
|
|
97
|
+
return;
|
|
98
|
+
}
|
|
99
|
+
logger(`Checking ${input.address} (${input.name})...`);
|
|
100
|
+
const data = Object.assign({ sourceCode: this.flattenedSource, contractname: input.name, contractaddress: input.address,
|
|
101
|
+
// TYPO IS ENFORCED BY API
|
|
102
|
+
constructorArguements: utils_1.utils.strip0x((_a = input.constructorArguments) !== null && _a !== void 0 ? _a : '') }, this.compilerOptions);
|
|
103
|
+
const guid = yield this.submitForm(chain, ExplorerApiActions.VERIFY_IMPLEMENTATION, data);
|
|
104
|
+
const addressUrl = yield this.multiProvider
|
|
105
|
+
.getChainConnection(chain)
|
|
106
|
+
.getAddressUrl(input.address);
|
|
107
|
+
// poll for verified status
|
|
108
|
+
if (guid) {
|
|
109
|
+
yield this.submitForm(chain, ExplorerApiActions.CHECK_STATUS, { guid });
|
|
110
|
+
}
|
|
111
|
+
logger(`Already verified at ${addressUrl}#code`);
|
|
112
|
+
// mark as proxy (if applicable)
|
|
113
|
+
if (input.isProxy) {
|
|
114
|
+
const proxyGuid = yield this.submitForm(chain, ExplorerApiActions.MARK_PROXY, {
|
|
115
|
+
address: input.address,
|
|
116
|
+
});
|
|
117
|
+
// poll for verified proxy status
|
|
118
|
+
if (proxyGuid) {
|
|
119
|
+
yield this.submitForm(chain, ExplorerApiActions.CHECK_PROXY_STATUS, {
|
|
120
|
+
guid: proxyGuid,
|
|
121
|
+
});
|
|
122
|
+
}
|
|
123
|
+
logger(`Already verified at ${addressUrl}#readProxyContract`);
|
|
124
|
+
}
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
}
|
|
128
|
+
exports.ContractVerifier = ContractVerifier;
|
|
129
|
+
//# sourceMappingURL=ContractVerifier.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"ContractVerifier.js","sourceRoot":"","sources":["../../../src/deploy/verify/ContractVerifier.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
export declare type ContractVerificationInput = {
|
|
2
|
+
name: string;
|
|
3
|
+
address: string;
|
|
4
|
+
constructorArguments?: string;
|
|
5
|
+
isProxy?: boolean;
|
|
6
|
+
};
|
|
7
|
+
export declare type VerificationInput = ContractVerificationInput[];
|
|
8
|
+
export declare type CompilerOptions = {
|
|
9
|
+
codeformat: 'solidity-single-file' | 'solidity-standard-json-input';
|
|
10
|
+
compilerversion: string;
|
|
11
|
+
optimizationUsed: '0' | '1';
|
|
12
|
+
runs: string;
|
|
13
|
+
};
|
|
14
|
+
//# sourceMappingURL=types.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/deploy/verify/types.ts"],"names":[],"mappings":"AAAA,oBAAY,yBAAyB,GAAG;IACtC,IAAI,EAAE,MAAM,CAAC;IACb,OAAO,EAAE,MAAM,CAAC;IAChB,oBAAoB,CAAC,EAAE,MAAM,CAAC;IAC9B,OAAO,CAAC,EAAE,OAAO,CAAC;CACnB,CAAC;AAEF,oBAAY,iBAAiB,GAAG,yBAAyB,EAAE,CAAC;AAE5D,oBAAY,eAAe,GAAG;IAC5B,UAAU,EAAE,sBAAsB,GAAG,8BAA8B,CAAC;IACpE,eAAe,EAAE,MAAM,CAAC;IACxB,gBAAgB,EAAE,GAAG,GAAG,GAAG,CAAC;IAC5B,IAAI,EAAE,MAAM,CAAC;CACd,CAAC"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/deploy/verify/types.ts"],"names":[],"mappings":""}
|
|
@@ -0,0 +1,6 @@
|
|
|
1
|
+
import { ethers, utils } from 'ethers';
|
|
2
|
+
import { ContractVerificationInput } from './types';
|
|
3
|
+
export declare function formatFunctionArguments(fragment: utils.Fragment, args: any[]): any;
|
|
4
|
+
export declare function getConstructorArguments(contract: ethers.Contract, bytecode: string): any;
|
|
5
|
+
export declare function getContractVerificationInput(name: string, contract: ethers.Contract, bytecode: string, isProxy?: boolean): ContractVerificationInput;
|
|
6
|
+
//# sourceMappingURL=utils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../../src/deploy/verify/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,KAAK,EAAE,MAAM,QAAQ,CAAC;AAEvC,OAAO,EAAE,yBAAyB,EAAE,MAAM,SAAS,CAAC;AAEpD,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,KAAK,CAAC,QAAQ,EACxB,IAAI,EAAE,GAAG,EAAE,GACV,GAAG,CAKL;AAED,wBAAgB,uBAAuB,CACrC,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,QAAQ,EAAE,MAAM,GACf,GAAG,CAIL;AAED,wBAAgB,4BAA4B,CAC1C,IAAI,EAAE,MAAM,EACZ,QAAQ,EAAE,MAAM,CAAC,QAAQ,EACzB,QAAQ,EAAE,MAAM,EAChB,OAAO,GAAE,OAAgC,GACxC,yBAAyB,CAO3B"}
|
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.getContractVerificationInput = exports.getConstructorArguments = exports.formatFunctionArguments = void 0;
|
|
4
|
+
function formatFunctionArguments(fragment, args) {
|
|
5
|
+
const params = Object.fromEntries(fragment.inputs.map((input, index) => [input.name, args[index]]));
|
|
6
|
+
return JSON.stringify(params, null, 2);
|
|
7
|
+
}
|
|
8
|
+
exports.formatFunctionArguments = formatFunctionArguments;
|
|
9
|
+
function getConstructorArguments(contract, bytecode) {
|
|
10
|
+
const tx = contract.deployTransaction;
|
|
11
|
+
if (tx === undefined)
|
|
12
|
+
throw new Error('deploy transaction not found');
|
|
13
|
+
return tx.data.replace(bytecode, '');
|
|
14
|
+
}
|
|
15
|
+
exports.getConstructorArguments = getConstructorArguments;
|
|
16
|
+
function getContractVerificationInput(name, contract, bytecode, isProxy = name.endsWith('Proxy')) {
|
|
17
|
+
return {
|
|
18
|
+
name,
|
|
19
|
+
address: contract.address,
|
|
20
|
+
constructorArguments: getConstructorArguments(contract, bytecode),
|
|
21
|
+
isProxy,
|
|
22
|
+
};
|
|
23
|
+
}
|
|
24
|
+
exports.getContractVerificationInput = getContractVerificationInput;
|
|
25
|
+
//# sourceMappingURL=utils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"utils.js","sourceRoot":"","sources":["../../../src/deploy/verify/utils.ts"],"names":[],"mappings":";;;AAIA,SAAgB,uBAAuB,CACrC,QAAwB,EACxB,IAAW;IAEX,MAAM,MAAM,GAAG,MAAM,CAAC,WAAW,CAC/B,QAAQ,CAAC,MAAM,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,CAAC,IAAI,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC,CAAC,CACjE,CAAC;IACF,OAAO,IAAI,CAAC,SAAS,CAAC,MAAM,EAAE,IAAI,EAAE,CAAC,CAAC,CAAC;AACzC,CAAC;AARD,0DAQC;AAED,SAAgB,uBAAuB,CACrC,QAAyB,EACzB,QAAgB;IAEhB,MAAM,EAAE,GAAG,QAAQ,CAAC,iBAAiB,CAAC;IACtC,IAAI,EAAE,KAAK,SAAS;QAAE,MAAM,IAAI,KAAK,CAAC,8BAA8B,CAAC,CAAC;IACtE,OAAO,EAAE,CAAC,IAAI,CAAC,OAAO,CAAC,QAAQ,EAAE,EAAE,CAAC,CAAC;AACvC,CAAC;AAPD,0DAOC;AAED,SAAgB,4BAA4B,CAC1C,IAAY,EACZ,QAAyB,EACzB,QAAgB,EAChB,UAAmB,IAAI,CAAC,QAAQ,CAAC,OAAO,CAAC;IAEzC,OAAO;QACL,IAAI;QACJ,OAAO,EAAE,QAAQ,CAAC,OAAO;QACzB,oBAAoB,EAAE,uBAAuB,CAAC,QAAQ,EAAE,QAAQ,CAAC;QACjE,OAAO;KACR,CAAC;AACJ,CAAC;AAZD,oEAYC"}
|
|
@@ -0,0 +1,4 @@
|
|
|
1
|
+
import { CompleteChainMap } from './types';
|
|
2
|
+
export declare const DomainIdToChainName: Record<number, "polygon" | "arbitrum" | "alfajores" | "bsc" | "mumbai" | "kovan" | "goerli" | "fuji" | "celo" | "ethereum" | "avalanche" | "optimism" | "bsctestnet" | "arbitrumrinkeby" | "optimismkovan" | "auroratestnet" | "moonbasealpha" | "test1" | "test2" | "test3">;
|
|
3
|
+
export declare const ChainNameToDomainId: CompleteChainMap<number>;
|
|
4
|
+
//# sourceMappingURL=domains.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domains.d.ts","sourceRoot":"","sources":["../src/domains.ts"],"names":[],"mappings":"AAEA,OAAO,EAAa,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAEtD,eAAO,MAAM,mBAAmB,+QAEF,CAAC;AAE/B,eAAO,MAAM,mBAAmB,0BAEH,CAAC"}
|
package/dist/domains.js
ADDED
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.ChainNameToDomainId = exports.DomainIdToChainName = void 0;
|
|
4
|
+
const chainMetadata_1 = require("./consts/chainMetadata");
|
|
5
|
+
const chains_1 = require("./consts/chains");
|
|
6
|
+
exports.DomainIdToChainName = Object.fromEntries(chains_1.AllChains.map((chain) => [chainMetadata_1.chainMetadata[chain].id, chain]));
|
|
7
|
+
exports.ChainNameToDomainId = Object.fromEntries(chains_1.AllChains.map((chain) => [chain, chainMetadata_1.chainMetadata[chain].id]));
|
|
8
|
+
//# sourceMappingURL=domains.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"domains.js","sourceRoot":"","sources":["../src/domains.ts"],"names":[],"mappings":";;;AAAA,0DAAuD;AACvD,4CAA4C;AAG/B,QAAA,mBAAmB,GAAG,MAAM,CAAC,WAAW,CACnD,kBAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,6BAAa,CAAC,KAAK,CAAC,CAAC,EAAE,EAAE,KAAK,CAAC,CAAC,CAC9B,CAAC;AAElB,QAAA,mBAAmB,GAAG,MAAM,CAAC,WAAW,CACnD,kBAAS,CAAC,GAAG,CAAC,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC,KAAK,EAAE,6BAAa,CAAC,KAAK,CAAC,CAAC,EAAE,CAAC,CAAC,CAC/B,CAAC"}
|
package/dist/events.d.ts
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
import { providers } from 'ethers';
|
|
2
|
+
import type { TypedEvent, TypedEventFilter } from '@hyperlane-xyz/core/dist/common';
|
|
3
|
+
import { MultiProvider } from './providers/MultiProvider';
|
|
4
|
+
import { ChainName } from './types';
|
|
5
|
+
export declare class Annotated<T extends TypedEvent> {
|
|
6
|
+
readonly domain: number;
|
|
7
|
+
readonly eventName?: string;
|
|
8
|
+
readonly event: T;
|
|
9
|
+
readonly receipt: providers.TransactionReceipt;
|
|
10
|
+
constructor(domain: number, receipt: providers.TransactionReceipt, event: T, callerKnowsWhatTheyAreDoing?: boolean);
|
|
11
|
+
static fromEvent<T extends TypedEvent>(domain: number, event: T): Promise<Annotated<T>>;
|
|
12
|
+
static fromEvents<T extends TypedEvent>(domain: number, events: T[]): Promise<Annotated<T>[]>;
|
|
13
|
+
get contractAddress(): string;
|
|
14
|
+
get transactionHash(): string;
|
|
15
|
+
get blockNumber(): number;
|
|
16
|
+
get blockHash(): string;
|
|
17
|
+
}
|
|
18
|
+
export interface TSContract<T extends TypedEvent> {
|
|
19
|
+
queryFilter(event: TypedEventFilter<T>, fromBlockOrBlockhash?: number | undefined, toBlock?: number | undefined): Promise<Array<T>>;
|
|
20
|
+
}
|
|
21
|
+
export declare function queryAnnotatedEvents<T extends TypedEvent>(multiprovider: MultiProvider<any>, chain: ChainName, contract: TSContract<T>, filter: TypedEventFilter<T>, startBlock?: number, endBlock?: number): Promise<Array<Annotated<T>>>;
|
|
22
|
+
export declare function findAnnotatedSingleEvent<T extends TypedEvent>(multiprovider: MultiProvider<any>, chain: ChainName, contract: TSContract<T>, filter: TypedEventFilter<T>, startBlock?: number): Promise<Array<Annotated<T>>>;
|
|
23
|
+
export declare function getEvents<T extends TypedEvent>(multiprovider: MultiProvider<any>, chain: ChainName, contract: TSContract<T>, filter: TypedEventFilter<T>, startBlock?: number, endBlock?: number): Promise<Array<T>>;
|
|
24
|
+
export declare function findEvent<T extends TypedEvent>(multiprovider: MultiProvider<any>, chain: ChainName, contract: TSContract<T>, filter: TypedEventFilter<T>, startBlock?: number): Promise<Array<T>>;
|
|
25
|
+
//# sourceMappingURL=events.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.d.ts","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
package/dist/events.js
ADDED
|
@@ -0,0 +1,161 @@
|
|
|
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
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
exports.findEvent = exports.getEvents = exports.findAnnotatedSingleEvent = exports.queryAnnotatedEvents = exports.Annotated = void 0;
|
|
13
|
+
const chainMetadata_1 = require("./consts/chainMetadata");
|
|
14
|
+
class Annotated {
|
|
15
|
+
constructor(domain, receipt, event, callerKnowsWhatTheyAreDoing = false) {
|
|
16
|
+
var _a;
|
|
17
|
+
if (!callerKnowsWhatTheyAreDoing) {
|
|
18
|
+
throw new Error('Please instantiate using fromEvent or fromEvents');
|
|
19
|
+
}
|
|
20
|
+
this.domain = domain;
|
|
21
|
+
this.receipt = receipt;
|
|
22
|
+
this.eventName = (_a = event.eventSignature) === null || _a === void 0 ? void 0 : _a.split('(')[0];
|
|
23
|
+
this.event = event;
|
|
24
|
+
}
|
|
25
|
+
static fromEvent(domain, event) {
|
|
26
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
27
|
+
const receipt = yield event.getTransactionReceipt();
|
|
28
|
+
return new Annotated(domain, receipt, event, true);
|
|
29
|
+
});
|
|
30
|
+
}
|
|
31
|
+
static fromEvents(domain, events) {
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
return Promise.all(events.map((event) => __awaiter(this, void 0, void 0, function* () { return Annotated.fromEvent(domain, event); })));
|
|
34
|
+
});
|
|
35
|
+
}
|
|
36
|
+
get contractAddress() {
|
|
37
|
+
var _a;
|
|
38
|
+
// ok to use ! assertion here as we assume that the event is in the receipt
|
|
39
|
+
const address = (_a = this.receipt.logs.find((log) => log.logIndex === this.event.logIndex)) === null || _a === void 0 ? void 0 : _a.address;
|
|
40
|
+
if (!address)
|
|
41
|
+
throw new Error('Missing receipt. Class is in an inconsistent state');
|
|
42
|
+
return address;
|
|
43
|
+
}
|
|
44
|
+
get transactionHash() {
|
|
45
|
+
return this.receipt.transactionHash;
|
|
46
|
+
}
|
|
47
|
+
get blockNumber() {
|
|
48
|
+
return this.receipt.blockNumber;
|
|
49
|
+
}
|
|
50
|
+
get blockHash() {
|
|
51
|
+
return this.receipt.blockHash;
|
|
52
|
+
}
|
|
53
|
+
}
|
|
54
|
+
exports.Annotated = Annotated;
|
|
55
|
+
function queryAnnotatedEvents(multiprovider, chain, contract, filter, startBlock, endBlock) {
|
|
56
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
57
|
+
const events = yield getEvents(multiprovider, chain, contract, filter, startBlock, endBlock);
|
|
58
|
+
return Annotated.fromEvents(chainMetadata_1.chainMetadata[chain].id, events);
|
|
59
|
+
});
|
|
60
|
+
}
|
|
61
|
+
exports.queryAnnotatedEvents = queryAnnotatedEvents;
|
|
62
|
+
function findAnnotatedSingleEvent(multiprovider, chain, contract, filter, startBlock) {
|
|
63
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
64
|
+
const events = yield findEvent(multiprovider, chain, contract, filter, startBlock);
|
|
65
|
+
return Annotated.fromEvents(chainMetadata_1.chainMetadata[chain].id, events);
|
|
66
|
+
});
|
|
67
|
+
}
|
|
68
|
+
exports.findAnnotatedSingleEvent = findAnnotatedSingleEvent;
|
|
69
|
+
function getEvents(multiprovider, chain, contract, filter, startBlock, endBlock) {
|
|
70
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
71
|
+
const domain = chainMetadata_1.chainMetadata[chain];
|
|
72
|
+
if (domain.paginate) {
|
|
73
|
+
return getPaginatedEvents(multiprovider, chain, contract, filter, startBlock, endBlock);
|
|
74
|
+
}
|
|
75
|
+
return contract.queryFilter(filter, startBlock, endBlock);
|
|
76
|
+
});
|
|
77
|
+
}
|
|
78
|
+
exports.getEvents = getEvents;
|
|
79
|
+
function findEvent(multiprovider, chain, contract, filter, startBlock) {
|
|
80
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
81
|
+
const domain = chainMetadata_1.chainMetadata[chain];
|
|
82
|
+
if (domain.paginate) {
|
|
83
|
+
return findFromPaginatedEvents(multiprovider, chain, contract, filter, startBlock);
|
|
84
|
+
}
|
|
85
|
+
return contract.queryFilter(filter, startBlock);
|
|
86
|
+
});
|
|
87
|
+
}
|
|
88
|
+
exports.findEvent = findEvent;
|
|
89
|
+
function getPaginatedEvents(multiprovider, chain, contract, filter, startBlock, endBlock) {
|
|
90
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
91
|
+
const domain = chainMetadata_1.chainMetadata[chain];
|
|
92
|
+
if (!domain.paginate) {
|
|
93
|
+
throw new Error('Domain need not be paginated');
|
|
94
|
+
}
|
|
95
|
+
// get the first block by params
|
|
96
|
+
// or domain deployment block
|
|
97
|
+
const firstBlock = startBlock
|
|
98
|
+
? Math.max(startBlock, domain.paginate.from)
|
|
99
|
+
: domain.paginate.from;
|
|
100
|
+
// get the last block by params
|
|
101
|
+
// or current block number
|
|
102
|
+
let lastBlock;
|
|
103
|
+
if (!endBlock) {
|
|
104
|
+
const provider = multiprovider.getChainConnection(chain).provider;
|
|
105
|
+
lastBlock = yield provider.getBlockNumber();
|
|
106
|
+
}
|
|
107
|
+
else {
|
|
108
|
+
lastBlock = endBlock;
|
|
109
|
+
}
|
|
110
|
+
// query domain pagination limit at a time, concurrently
|
|
111
|
+
const eventArrayPromises = [];
|
|
112
|
+
for (let from = firstBlock; from <= lastBlock; from += domain.paginate.blocks) {
|
|
113
|
+
const nextFrom = from + domain.paginate.blocks;
|
|
114
|
+
const to = Math.min(nextFrom, lastBlock);
|
|
115
|
+
const eventArrayPromise = contract.queryFilter(filter, from, to);
|
|
116
|
+
eventArrayPromises.push(eventArrayPromise);
|
|
117
|
+
}
|
|
118
|
+
// await promises & concatenate results
|
|
119
|
+
const eventArrays = yield Promise.all(eventArrayPromises);
|
|
120
|
+
let events = [];
|
|
121
|
+
for (const eventArray of eventArrays) {
|
|
122
|
+
events = events.concat(eventArray);
|
|
123
|
+
}
|
|
124
|
+
return events;
|
|
125
|
+
});
|
|
126
|
+
}
|
|
127
|
+
function findFromPaginatedEvents(multiprovider, chain, contract, filter, startBlock, endBlock) {
|
|
128
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
129
|
+
const domain = chainMetadata_1.chainMetadata[chain];
|
|
130
|
+
if (!domain.paginate) {
|
|
131
|
+
throw new Error('Domain need not be paginated');
|
|
132
|
+
}
|
|
133
|
+
// get the first block by params
|
|
134
|
+
// or domain deployment block
|
|
135
|
+
const firstBlock = startBlock
|
|
136
|
+
? Math.max(startBlock, domain.paginate.from)
|
|
137
|
+
: domain.paginate.from;
|
|
138
|
+
// get the last block by params
|
|
139
|
+
// or current block number
|
|
140
|
+
let lastBlock;
|
|
141
|
+
if (!endBlock) {
|
|
142
|
+
const provider = multiprovider.getChainConnection(chain).provider;
|
|
143
|
+
lastBlock = yield provider.getBlockNumber();
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
lastBlock = endBlock;
|
|
147
|
+
}
|
|
148
|
+
// query domain pagination limit at a time, concurrently
|
|
149
|
+
// eslint-disable-next-line for-direction
|
|
150
|
+
for (let end = lastBlock; end > firstBlock; end -= domain.paginate.blocks) {
|
|
151
|
+
const nextEnd = end - domain.paginate.blocks;
|
|
152
|
+
const from = Math.max(nextEnd, firstBlock);
|
|
153
|
+
const queriedEvents = yield contract.queryFilter(filter, from, end);
|
|
154
|
+
if (queriedEvents.length > 0) {
|
|
155
|
+
return queriedEvents;
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
return [];
|
|
159
|
+
});
|
|
160
|
+
}
|
|
161
|
+
//# sourceMappingURL=events.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"events.js","sourceRoot":"","sources":["../src/events.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,134 @@
|
|
|
1
|
+
import { BigNumber } from 'ethers';
|
|
2
|
+
import { CoreEnvironment, CoreEnvironmentChain, HyperlaneCore } from '../core/HyperlaneCore';
|
|
3
|
+
import { MultiProvider } from '../providers/MultiProvider';
|
|
4
|
+
import { ChainName, Remotes } from '../types';
|
|
5
|
+
import { TokenPriceGetter } from './token-prices';
|
|
6
|
+
export interface InterchainGasCalculatorConfig {
|
|
7
|
+
/**
|
|
8
|
+
* A multiplier applied to the estimated origin token payment amount.
|
|
9
|
+
* This should be high enough to account for movements in token exchange
|
|
10
|
+
* rates and gas prices.
|
|
11
|
+
* @defaultValue 1.25
|
|
12
|
+
*/
|
|
13
|
+
paymentEstimateMultiplier?: string;
|
|
14
|
+
/**
|
|
15
|
+
* An amount of additional gas to add to the estimated gas of processing a message.
|
|
16
|
+
* Only used when estimating a payment from a message.
|
|
17
|
+
* @defaultValue 50,000
|
|
18
|
+
*/
|
|
19
|
+
messageGasEstimateBuffer?: string;
|
|
20
|
+
/**
|
|
21
|
+
* Used to get the native token prices of the origin and destination chains.
|
|
22
|
+
* @defaultValue An instance of DefaultTokenPriceGetter.
|
|
23
|
+
*/
|
|
24
|
+
tokenPriceGetter?: TokenPriceGetter;
|
|
25
|
+
}
|
|
26
|
+
export declare type ParsedMessage<Chain extends ChainName, Destination extends Chain> = {
|
|
27
|
+
origin: Exclude<Chain, Destination>;
|
|
28
|
+
sender: string;
|
|
29
|
+
destination: Destination;
|
|
30
|
+
recipient: string;
|
|
31
|
+
body: string;
|
|
32
|
+
};
|
|
33
|
+
/**
|
|
34
|
+
* Calculates interchain gas payments.
|
|
35
|
+
*/
|
|
36
|
+
export declare class InterchainGasCalculator<Chain extends ChainName> {
|
|
37
|
+
private core;
|
|
38
|
+
private multiProvider;
|
|
39
|
+
private tokenPriceGetter;
|
|
40
|
+
private paymentEstimateMultiplier;
|
|
41
|
+
private messageGasEstimateBuffer;
|
|
42
|
+
static fromEnvironment<Env extends CoreEnvironment>(env: Env, multiProvider: MultiProvider<CoreEnvironmentChain<Env>>, config?: InterchainGasCalculatorConfig): InterchainGasCalculator<CoreEnvironmentChain<Env>>;
|
|
43
|
+
constructor(multiProvider: MultiProvider<Chain>, core: HyperlaneCore<Chain>, config?: InterchainGasCalculatorConfig);
|
|
44
|
+
/**
|
|
45
|
+
* Given an amount of gas to consume on the destination chain, calculates the
|
|
46
|
+
* estimated payment denominated in the native token of the origin chain.
|
|
47
|
+
* Considers the exchange rate between the native tokens of the origin and
|
|
48
|
+
* destination chains and the suggested gas price of the destination chain.
|
|
49
|
+
* @param origin The name of the origin chain.
|
|
50
|
+
* @param destination The name of the destination chain.
|
|
51
|
+
* @param gas The amount of gas to pay for on the destination chain.
|
|
52
|
+
* @returns An estimated amount of origin chain tokens to cover gas costs on the
|
|
53
|
+
* destination chain.
|
|
54
|
+
*/
|
|
55
|
+
estimatePaymentForGas<Destination extends Chain>(origin: Exclude<Chain, Destination>, destination: Destination, gas: BigNumber): Promise<BigNumber>;
|
|
56
|
+
/**
|
|
57
|
+
* Given an amount of gas the message's recipient `handle` function is expected
|
|
58
|
+
* to use, calculates the estimated payment denominated in the native
|
|
59
|
+
* token of the origin chain. Considers the exchange rate between the native
|
|
60
|
+
* tokens of the origin and destination chains, the suggested gas price on
|
|
61
|
+
* the destination chain, gas costs incurred by a relayer when submitting a signed
|
|
62
|
+
* checkpoint to the destination chain, and the overhead gas cost in Inbox of processing
|
|
63
|
+
* a message.
|
|
64
|
+
* @param origin The name of the origin chain.
|
|
65
|
+
* @param destination The name of the destination chain.
|
|
66
|
+
* @param handleGas The amount of gas the recipient `handle` function
|
|
67
|
+
* is estimated to use.
|
|
68
|
+
* @returns An estimated amount of origin chain tokens to cover gas costs of the
|
|
69
|
+
* message on the destination chain.
|
|
70
|
+
*/
|
|
71
|
+
estimatePaymentForHandleGas<Destination extends Chain>(origin: Exclude<Chain, Destination>, destination: Destination, handleGas: BigNumber): Promise<BigNumber>;
|
|
72
|
+
/**
|
|
73
|
+
* Calculates the estimated payment to process the message on its destination chain,
|
|
74
|
+
* denominated in the native token of the origin chain. The gas used by the message's
|
|
75
|
+
* recipient handler function is estimated in an eth_estimateGas call to the
|
|
76
|
+
* destination chain, and is then used to calculate the payment using
|
|
77
|
+
* Currently made private as it does not work properly for Arbitrum.
|
|
78
|
+
* {@link estimatePaymentForHandleGasAmount}.
|
|
79
|
+
* @param message The parsed message to estimate payment for.
|
|
80
|
+
* @returns An estimated amount of origin chain tokens to cover gas costs of the
|
|
81
|
+
* message on the destination chain.
|
|
82
|
+
*/
|
|
83
|
+
protected estimatePaymentForMessage<Destination extends Chain>(message: ParsedMessage<Chain, Destination>): Promise<BigNumber>;
|
|
84
|
+
/**
|
|
85
|
+
* Using the exchange rates provided by tokenPriceGetter, returns the amount of
|
|
86
|
+
* `toChain` native tokens equivalent in value to the provided `fromAmount` of
|
|
87
|
+
* `fromChain` native tokens. Accounts for differences in the decimals of the tokens.
|
|
88
|
+
* @param fromChain The chain whose native token is being converted from.
|
|
89
|
+
* @param toChain The chain whose native token is being converted into.
|
|
90
|
+
* @param fromAmount The amount of `fromChain` native tokens to convert from.
|
|
91
|
+
* @returns The amount of `toChain` native tokens whose value is equivalent to
|
|
92
|
+
* `fromAmount` of `fromChain` native tokens.
|
|
93
|
+
*/
|
|
94
|
+
protected convertBetweenTokens(fromChain: Chain, toChain: Chain, value: BigNumber): Promise<BigNumber>;
|
|
95
|
+
/**
|
|
96
|
+
* Gets a suggested gas price for a chain.
|
|
97
|
+
* @param chainName The name of the chain to get the gas price for
|
|
98
|
+
* @returns The suggested gas price in wei on the destination chain.
|
|
99
|
+
*/
|
|
100
|
+
protected getGasPrice(chain: Chain): Promise<BigNumber>;
|
|
101
|
+
/**
|
|
102
|
+
* Gets the number of decimals of the provided chain's native token.
|
|
103
|
+
* @param chain The chain.
|
|
104
|
+
* @returns The number of decimals of `chain`'s native token.
|
|
105
|
+
*/
|
|
106
|
+
protected tokenDecimals(chain: Chain): number;
|
|
107
|
+
/**
|
|
108
|
+
* Estimates the amount of gas used by message's recipient `handle` function
|
|
109
|
+
* on its destination chain. This does not assume the Inbox of the destination
|
|
110
|
+
* chain has a checkpoint that the message is included in, and does not
|
|
111
|
+
* consider intrinsic gas or any "overhead" gas incurred by Inbox.process.
|
|
112
|
+
* The estimated gas returned is the sum of:
|
|
113
|
+
* 1. The estimated gas consumption of a direct call to the `handle`
|
|
114
|
+
* function of the recipient address using the correct parameters and
|
|
115
|
+
* setting the `from` address of the transaction to the address of the inbox.
|
|
116
|
+
* 2. A buffer to account for inaccuracies in the above estimation.
|
|
117
|
+
* @param message The message to estimate recipient `handle` gas usage for.
|
|
118
|
+
* @returns The estimated gas required by the message's recipient handle function
|
|
119
|
+
* on the destination chain.
|
|
120
|
+
*/
|
|
121
|
+
protected estimateGasForHandle<LocalChain extends Chain>(message: ParsedMessage<Chain, LocalChain>): Promise<BigNumber>;
|
|
122
|
+
/**
|
|
123
|
+
* @returns A generous estimation of the gas consumption of all process
|
|
124
|
+
* operations within Inbox.sol, including intrinsic gas. Does not include any gas
|
|
125
|
+
* consumed within a message's recipient `handle` function.
|
|
126
|
+
*/
|
|
127
|
+
protected estimateGasForProcess<Destination extends Chain>(origin: Remotes<Chain, Destination>, destination: Destination): Promise<BigNumber>;
|
|
128
|
+
/**
|
|
129
|
+
* @returns The intrinsic gas of a basic transaction. Note this does not consider calldata
|
|
130
|
+
* costs or potentially different intrinsic gas costs for different chains.
|
|
131
|
+
*/
|
|
132
|
+
protected intrinsicGas(): BigNumber;
|
|
133
|
+
}
|
|
134
|
+
//# sourceMappingURL=calculator.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"calculator.d.ts","sourceRoot":"","sources":["../../src/gas/calculator.ts"],"names":[],"mappings":"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"}
|