@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,311 @@
|
|
|
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.HyperlaneMessage = exports.InboxMessageStatus = exports.MessageStatus = exports.resolveNetworks = exports.resolveId = exports.resolveDomain = void 0;
|
|
13
|
+
const ethers_1 = require("ethers");
|
|
14
|
+
const core_1 = require("@hyperlane-xyz/core");
|
|
15
|
+
const utils_1 = require("@hyperlane-xyz/utils");
|
|
16
|
+
const domains_1 = require("../domains");
|
|
17
|
+
const events_1 = require("../events");
|
|
18
|
+
const time_1 = require("../utils/time");
|
|
19
|
+
const resolveDomain = (nameOrDomain) => typeof nameOrDomain === 'number'
|
|
20
|
+
? domains_1.DomainIdToChainName[nameOrDomain]
|
|
21
|
+
: nameOrDomain;
|
|
22
|
+
exports.resolveDomain = resolveDomain;
|
|
23
|
+
const resolveId = (nameOrDomain) => typeof nameOrDomain === 'string'
|
|
24
|
+
? domains_1.ChainNameToDomainId[nameOrDomain]
|
|
25
|
+
: nameOrDomain;
|
|
26
|
+
exports.resolveId = resolveId;
|
|
27
|
+
const resolveNetworks = (message) => {
|
|
28
|
+
return {
|
|
29
|
+
origin: (0, exports.resolveDomain)(message.origin),
|
|
30
|
+
destination: (0, exports.resolveDomain)(message.destination),
|
|
31
|
+
};
|
|
32
|
+
};
|
|
33
|
+
exports.resolveNetworks = resolveNetworks;
|
|
34
|
+
var MessageStatus;
|
|
35
|
+
(function (MessageStatus) {
|
|
36
|
+
MessageStatus[MessageStatus["Dispatched"] = 0] = "Dispatched";
|
|
37
|
+
MessageStatus[MessageStatus["Included"] = 1] = "Included";
|
|
38
|
+
MessageStatus[MessageStatus["Relayed"] = 2] = "Relayed";
|
|
39
|
+
MessageStatus[MessageStatus["Processed"] = 3] = "Processed";
|
|
40
|
+
})(MessageStatus = exports.MessageStatus || (exports.MessageStatus = {}));
|
|
41
|
+
var InboxMessageStatus;
|
|
42
|
+
(function (InboxMessageStatus) {
|
|
43
|
+
InboxMessageStatus[InboxMessageStatus["None"] = 0] = "None";
|
|
44
|
+
InboxMessageStatus[InboxMessageStatus["Proven"] = 1] = "Proven";
|
|
45
|
+
InboxMessageStatus[InboxMessageStatus["Processed"] = 2] = "Processed";
|
|
46
|
+
})(InboxMessageStatus = exports.InboxMessageStatus || (exports.InboxMessageStatus = {}));
|
|
47
|
+
// TODO: move HyperlaneMessage into HyperlaneCore app
|
|
48
|
+
/**
|
|
49
|
+
* A deserialized Hyperlane message.
|
|
50
|
+
*/
|
|
51
|
+
class HyperlaneMessage {
|
|
52
|
+
constructor(multiProvider, core, dispatch) {
|
|
53
|
+
this.multiProvider = multiProvider;
|
|
54
|
+
this.core = core;
|
|
55
|
+
this.message = utils_1.utils.parseMessage(dispatch.event.args.message);
|
|
56
|
+
this.dispatch = dispatch;
|
|
57
|
+
const messageNetworks = (0, exports.resolveNetworks)(this.message);
|
|
58
|
+
const mailboxes = core.getMailboxPair(messageNetworks.origin, // TODO: Fix never type that results from Exclude<T, T>
|
|
59
|
+
messageNetworks.destination);
|
|
60
|
+
this.outbox = mailboxes.originOutbox;
|
|
61
|
+
this.inbox = mailboxes.destinationInbox;
|
|
62
|
+
this.cache = {};
|
|
63
|
+
}
|
|
64
|
+
/**
|
|
65
|
+
* The receipt of the TX that dispatched this message
|
|
66
|
+
*/
|
|
67
|
+
get receipt() {
|
|
68
|
+
return this.dispatch.receipt;
|
|
69
|
+
}
|
|
70
|
+
/**
|
|
71
|
+
* Instantiate one or more messages from a receipt.
|
|
72
|
+
*
|
|
73
|
+
* @param core the {@link HyperlaneCore} object to use
|
|
74
|
+
* @param nameOrDomain the domain on which the receipt was logged
|
|
75
|
+
* @param receipt the receipt
|
|
76
|
+
* @returns an array of {@link HyperlaneMessage} objects
|
|
77
|
+
*/
|
|
78
|
+
static fromReceipt(multiProvider, core, nameOrDomain, receipt) {
|
|
79
|
+
const messages = [];
|
|
80
|
+
const outbox = new core_1.Outbox__factory().interface;
|
|
81
|
+
const chain = (0, exports.resolveDomain)(nameOrDomain);
|
|
82
|
+
const provider = multiProvider.getChainConnection(chain).provider;
|
|
83
|
+
for (const log of receipt.logs) {
|
|
84
|
+
try {
|
|
85
|
+
const parsed = outbox.parseLog(log);
|
|
86
|
+
if (parsed.name === 'Dispatch') {
|
|
87
|
+
const dispatch = Object.assign(Object.assign({}, parsed), { getBlock: () => provider.getBlock(log.blockHash), getTransaction: () => provider.getTransaction(log.transactionHash), getTransactionReceipt: () => provider.getTransactionReceipt(log.transactionHash) });
|
|
88
|
+
const annotated = new events_1.Annotated((0, exports.resolveId)(nameOrDomain), receipt, dispatch, true);
|
|
89
|
+
annotated.event.blockNumber = annotated.receipt.blockNumber;
|
|
90
|
+
const message = new HyperlaneMessage(multiProvider, core, annotated);
|
|
91
|
+
messages.push(message);
|
|
92
|
+
}
|
|
93
|
+
}
|
|
94
|
+
catch (e) {
|
|
95
|
+
continue;
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
return messages;
|
|
99
|
+
}
|
|
100
|
+
/**
|
|
101
|
+
* Instantiate EXACTLY one message from a receipt.
|
|
102
|
+
*
|
|
103
|
+
* @param core the {@link HyperlaneCore} object to use
|
|
104
|
+
* @param nameOrDomain the domain on which the receipt was logged
|
|
105
|
+
* @param receipt the receipt
|
|
106
|
+
* @returns an array of {@link HyperlaneMessage} objects
|
|
107
|
+
* @throws if there is not EXACTLY 1 dispatch in the receipt
|
|
108
|
+
*/
|
|
109
|
+
static singleFromReceipt(multiProvider, core, nameOrDomain, receipt) {
|
|
110
|
+
const messages = HyperlaneMessage.fromReceipt(multiProvider, core, nameOrDomain, receipt);
|
|
111
|
+
if (messages.length !== 1) {
|
|
112
|
+
throw new Error('Expected single Dispatch in transaction');
|
|
113
|
+
}
|
|
114
|
+
return messages[0];
|
|
115
|
+
}
|
|
116
|
+
/**
|
|
117
|
+
* Instantiate one or more messages from a tx hash.
|
|
118
|
+
*
|
|
119
|
+
* @param core the {@link HyperlaneCore} object to use
|
|
120
|
+
* @param nameOrDomain the domain on which the receipt was logged
|
|
121
|
+
* @param receipt the receipt
|
|
122
|
+
* @returns an array of {@link HyperlaneMessage} objects
|
|
123
|
+
* @throws if there is no receipt for the TX
|
|
124
|
+
*/
|
|
125
|
+
static fromTransactionHash(multiProvider, core, nameOrDomain, transactionHash) {
|
|
126
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
127
|
+
const provider = multiProvider.getChainConnection((0, exports.resolveDomain)(nameOrDomain)).provider;
|
|
128
|
+
const receipt = yield provider.getTransactionReceipt(transactionHash);
|
|
129
|
+
if (!receipt) {
|
|
130
|
+
throw new Error(`No receipt for ${transactionHash} on ${nameOrDomain}`);
|
|
131
|
+
}
|
|
132
|
+
return HyperlaneMessage.fromReceipt(multiProvider, core, nameOrDomain, receipt);
|
|
133
|
+
});
|
|
134
|
+
}
|
|
135
|
+
/**
|
|
136
|
+
* Instantiate EXACTLY one message from a transaction has.
|
|
137
|
+
*
|
|
138
|
+
* @param core the {@link HyperlaneCore} object to use
|
|
139
|
+
* @param nameOrDomain the domain on which the receipt was logged
|
|
140
|
+
* @param receipt the receipt
|
|
141
|
+
* @returns an array of {@link HyperlaneMessage} objects
|
|
142
|
+
* @throws if there is no receipt for the TX, or if not EXACTLY 1 dispatch in
|
|
143
|
+
* the receipt
|
|
144
|
+
*/
|
|
145
|
+
static singleFromTransactionHash(multiProvider, core, nameOrDomain, transactionHash) {
|
|
146
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
147
|
+
const provider = multiProvider.getChainConnection((0, exports.resolveDomain)(nameOrDomain)).provider;
|
|
148
|
+
const receipt = yield provider.getTransactionReceipt(transactionHash);
|
|
149
|
+
if (!receipt) {
|
|
150
|
+
throw new Error(`No receipt for ${transactionHash} on ${nameOrDomain}`);
|
|
151
|
+
}
|
|
152
|
+
return HyperlaneMessage.singleFromReceipt(multiProvider, core, nameOrDomain, receipt);
|
|
153
|
+
});
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Get the Inbox `Process` event associated with this message (if any)
|
|
157
|
+
*
|
|
158
|
+
* @returns An {@link AnnotatedProcess} (if any)
|
|
159
|
+
*/
|
|
160
|
+
getProcess() {
|
|
161
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
162
|
+
// if we have already gotten the event,
|
|
163
|
+
// return it without re-querying
|
|
164
|
+
if (this.cache.process) {
|
|
165
|
+
return this.cache.process;
|
|
166
|
+
}
|
|
167
|
+
// if not, attempt to query the event
|
|
168
|
+
const processFilter = this.inbox.filters.Process(this.leaf);
|
|
169
|
+
const processLogs = yield (0, events_1.findAnnotatedSingleEvent)(this.multiProvider, this.destinationName, this.inbox, processFilter);
|
|
170
|
+
if (processLogs.length === 1) {
|
|
171
|
+
// if event is returned, store it to the object
|
|
172
|
+
this.cache.process = processLogs[0];
|
|
173
|
+
}
|
|
174
|
+
else if (processLogs.length > 1) {
|
|
175
|
+
throw new Error('multiple inbox process for same message');
|
|
176
|
+
}
|
|
177
|
+
// return the process or undefined if it doesn't exist
|
|
178
|
+
return this.cache.process;
|
|
179
|
+
});
|
|
180
|
+
}
|
|
181
|
+
/**
|
|
182
|
+
* Get all lifecycle events associated with this message
|
|
183
|
+
*
|
|
184
|
+
* @returns An array of {@link AnnotatedLifecycleEvent} objects
|
|
185
|
+
*/
|
|
186
|
+
events() {
|
|
187
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
188
|
+
const events = [this.dispatch];
|
|
189
|
+
// attempt to get Inbox process
|
|
190
|
+
const process = yield this.getProcess();
|
|
191
|
+
if (!process) {
|
|
192
|
+
// NOTE: when this is the status, you may way to
|
|
193
|
+
// query confirmAt() to check if challenge period
|
|
194
|
+
// on the Inbox has elapsed or not
|
|
195
|
+
return {
|
|
196
|
+
status: MessageStatus.Relayed,
|
|
197
|
+
events,
|
|
198
|
+
};
|
|
199
|
+
}
|
|
200
|
+
events.push(process);
|
|
201
|
+
return {
|
|
202
|
+
status: MessageStatus.Processed,
|
|
203
|
+
events,
|
|
204
|
+
};
|
|
205
|
+
});
|
|
206
|
+
}
|
|
207
|
+
/**
|
|
208
|
+
* Retrieve the inbox status of this message.
|
|
209
|
+
*
|
|
210
|
+
* @returns The {@link InboxMessageStatus} corresponding to the solidity
|
|
211
|
+
* status of the message.
|
|
212
|
+
*/
|
|
213
|
+
inboxStatus() {
|
|
214
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
215
|
+
return this.inbox.messages(this.leaf);
|
|
216
|
+
});
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Checks whether the message has been delivered.
|
|
220
|
+
*
|
|
221
|
+
* @returns true if processed, else false.
|
|
222
|
+
*/
|
|
223
|
+
delivered() {
|
|
224
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
225
|
+
const status = yield this.inboxStatus();
|
|
226
|
+
return status === InboxMessageStatus.Processed;
|
|
227
|
+
});
|
|
228
|
+
}
|
|
229
|
+
/**
|
|
230
|
+
* Returns a promise that resolves when the message has been delivered.
|
|
231
|
+
*
|
|
232
|
+
* WARNING: May never resolve. Oftern takes hours to resolve.
|
|
233
|
+
*
|
|
234
|
+
* @param opts Polling options.
|
|
235
|
+
*/
|
|
236
|
+
wait(opts) {
|
|
237
|
+
var _a;
|
|
238
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
239
|
+
const interval = (_a = opts === null || opts === void 0 ? void 0 : opts.pollTime) !== null && _a !== void 0 ? _a : 5000;
|
|
240
|
+
// sad spider face
|
|
241
|
+
for (;;) {
|
|
242
|
+
if (yield this.delivered()) {
|
|
243
|
+
return;
|
|
244
|
+
}
|
|
245
|
+
yield (0, time_1.delay)(interval);
|
|
246
|
+
}
|
|
247
|
+
});
|
|
248
|
+
}
|
|
249
|
+
/**
|
|
250
|
+
* The domain from which the message was sent.
|
|
251
|
+
*/
|
|
252
|
+
get origin() {
|
|
253
|
+
return this.message.origin;
|
|
254
|
+
}
|
|
255
|
+
get originName() {
|
|
256
|
+
return (0, exports.resolveDomain)(this.origin);
|
|
257
|
+
}
|
|
258
|
+
/**
|
|
259
|
+
* The identifier for the sender of this message
|
|
260
|
+
*/
|
|
261
|
+
get sender() {
|
|
262
|
+
return this.message.sender;
|
|
263
|
+
}
|
|
264
|
+
/**
|
|
265
|
+
* The destination domain for this message
|
|
266
|
+
*/
|
|
267
|
+
get destination() {
|
|
268
|
+
return this.message.destination;
|
|
269
|
+
}
|
|
270
|
+
get destinationName() {
|
|
271
|
+
return (0, exports.resolveDomain)(this.destination);
|
|
272
|
+
}
|
|
273
|
+
/**
|
|
274
|
+
* The identifer for the recipient for this message
|
|
275
|
+
*/
|
|
276
|
+
get recipient() {
|
|
277
|
+
return this.message.recipient;
|
|
278
|
+
}
|
|
279
|
+
/**
|
|
280
|
+
* The message body
|
|
281
|
+
*/
|
|
282
|
+
get body() {
|
|
283
|
+
return this.message.body;
|
|
284
|
+
}
|
|
285
|
+
/**
|
|
286
|
+
* The keccak256 hash of the message body
|
|
287
|
+
*/
|
|
288
|
+
get bodyHash() {
|
|
289
|
+
return ethers_1.utils.keccak256(this.body);
|
|
290
|
+
}
|
|
291
|
+
/**
|
|
292
|
+
* The hash of the transaction that dispatched this message
|
|
293
|
+
*/
|
|
294
|
+
get transactionHash() {
|
|
295
|
+
return this.dispatch.event.transactionHash;
|
|
296
|
+
}
|
|
297
|
+
/**
|
|
298
|
+
* The messageHash committed to the tree in the Outbox contract.
|
|
299
|
+
*/
|
|
300
|
+
get leaf() {
|
|
301
|
+
return utils_1.utils.messageHash(this.dispatch.event.args.message, this.dispatch.event.args.leafIndex.toNumber());
|
|
302
|
+
}
|
|
303
|
+
/**
|
|
304
|
+
* The index of the leaf in the contract.
|
|
305
|
+
*/
|
|
306
|
+
get leafIndex() {
|
|
307
|
+
return this.dispatch.event.args.leafIndex;
|
|
308
|
+
}
|
|
309
|
+
}
|
|
310
|
+
exports.HyperlaneMessage = HyperlaneMessage;
|
|
311
|
+
//# sourceMappingURL=message.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"message.js","sourceRoot":"","sources":["../../src/core/message.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testHyperlaneDeploy.hardhat-test.d.ts","sourceRoot":"","sources":["../../src/core/testHyperlaneDeploy.hardhat-test.ts"],"names":[],"mappings":"AAAA,OAAO,2BAA2B,CAAC;AACnC,OAAO,2BAA2B,CAAC"}
|
|
@@ -0,0 +1,66 @@
|
|
|
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
|
+
require("@nomiclabs/hardhat-ethers");
|
|
13
|
+
require("@nomiclabs/hardhat-waffle");
|
|
14
|
+
const chai_1 = require("chai");
|
|
15
|
+
const hardhat_1 = require("hardhat");
|
|
16
|
+
const core_1 = require("@hyperlane-xyz/core");
|
|
17
|
+
const utils_1 = require("@hyperlane-xyz/utils");
|
|
18
|
+
const chainMetadata_1 = require("../consts/chainMetadata");
|
|
19
|
+
const utils_2 = require("../deploy/utils");
|
|
20
|
+
const TestCoreDeployer_1 = require("./TestCoreDeployer");
|
|
21
|
+
const localChain = 'test1';
|
|
22
|
+
const localDomain = chainMetadata_1.chainMetadata[localChain].id;
|
|
23
|
+
const remoteChain = 'test2';
|
|
24
|
+
const remoteDomain = chainMetadata_1.chainMetadata[remoteChain].id;
|
|
25
|
+
const message = '0xdeadbeef';
|
|
26
|
+
describe('TestCoreDeployer', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
27
|
+
let testCoreApp, localOutbox, remoteOutbox, dispatchReceipt;
|
|
28
|
+
beforeEach(() => __awaiter(void 0, void 0, void 0, function* () {
|
|
29
|
+
const [signer] = yield hardhat_1.ethers.getSigners();
|
|
30
|
+
const multiProvider = (0, utils_2.getTestMultiProvider)(signer);
|
|
31
|
+
const deployer = new TestCoreDeployer_1.TestCoreDeployer(multiProvider);
|
|
32
|
+
testCoreApp = yield deployer.deployApp();
|
|
33
|
+
const recipient = yield new core_1.TestRecipient__factory(signer).deploy();
|
|
34
|
+
localOutbox = testCoreApp.getContracts(localChain).outbox.contract;
|
|
35
|
+
const dispatchResponse = localOutbox.dispatch(remoteDomain, utils_1.utils.addressToBytes32(recipient.address), message);
|
|
36
|
+
yield (0, chai_1.expect)(dispatchResponse).to.emit(localOutbox, 'Dispatch');
|
|
37
|
+
dispatchReceipt = yield testCoreApp.multiProvider
|
|
38
|
+
.getChainConnection(localChain)
|
|
39
|
+
.handleTx(dispatchResponse);
|
|
40
|
+
remoteOutbox = testCoreApp.getContracts(remoteChain).outbox.contract;
|
|
41
|
+
yield (0, chai_1.expect)(remoteOutbox.dispatch(localDomain, utils_1.utils.addressToBytes32(recipient.address), message)).to.emit(remoteOutbox, 'Dispatch');
|
|
42
|
+
}));
|
|
43
|
+
it('processes outbound messages for a single domain', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
44
|
+
const responses = yield testCoreApp.processOutboundMessages(localChain);
|
|
45
|
+
(0, chai_1.expect)(responses.get(remoteChain).length).to.equal(1);
|
|
46
|
+
}));
|
|
47
|
+
it('processes outbound messages for two domains', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
48
|
+
const localResponses = yield testCoreApp.processOutboundMessages(localChain);
|
|
49
|
+
(0, chai_1.expect)(localResponses.get(remoteChain).length).to.equal(1);
|
|
50
|
+
const remoteResponses = yield testCoreApp.processOutboundMessages(remoteChain);
|
|
51
|
+
(0, chai_1.expect)(remoteResponses.get(localChain).length).to.equal(1);
|
|
52
|
+
}));
|
|
53
|
+
it('processes all messages', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
54
|
+
const responses = yield testCoreApp.processMessages();
|
|
55
|
+
(0, chai_1.expect)(responses.get(localChain).get(remoteChain).length).to.equal(1);
|
|
56
|
+
(0, chai_1.expect)(responses.get(remoteChain).get(localChain).length).to.equal(1);
|
|
57
|
+
}));
|
|
58
|
+
it('waits on message processing receipts', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
59
|
+
const [receipts] = yield Promise.all([
|
|
60
|
+
testCoreApp.waitForMessageProcessing(dispatchReceipt),
|
|
61
|
+
testCoreApp.processOutboundMessages(localChain),
|
|
62
|
+
]);
|
|
63
|
+
(0, chai_1.expect)(receipts).to.have.length(1);
|
|
64
|
+
}));
|
|
65
|
+
}));
|
|
66
|
+
//# sourceMappingURL=testHyperlaneDeploy.hardhat-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"testHyperlaneDeploy.hardhat-test.js","sourceRoot":"","sources":["../../src/core/testHyperlaneDeploy.hardhat-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,22 @@
|
|
|
1
|
+
import { Ownable } from '@hyperlane-xyz/core';
|
|
2
|
+
import type { types } from '@hyperlane-xyz/utils';
|
|
3
|
+
import { HyperlaneApp } from '../HyperlaneApp';
|
|
4
|
+
import { MultiProvider } from '../providers/MultiProvider';
|
|
5
|
+
import { BeaconProxyAddresses } from '../proxy';
|
|
6
|
+
import { ChainMap, ChainName } from '../types';
|
|
7
|
+
import { CheckerViolation } from './types';
|
|
8
|
+
export declare abstract class HyperlaneAppChecker<Chain extends ChainName, App extends HyperlaneApp<any, Chain>, Config> {
|
|
9
|
+
readonly multiProvider: MultiProvider<Chain>;
|
|
10
|
+
readonly app: App;
|
|
11
|
+
readonly configMap: ChainMap<Chain, Config>;
|
|
12
|
+
readonly violations: CheckerViolation[];
|
|
13
|
+
constructor(multiProvider: MultiProvider<Chain>, app: App, configMap: ChainMap<Chain, Config>);
|
|
14
|
+
abstract checkChain(chain: Chain): Promise<void>;
|
|
15
|
+
check(): Promise<void[]>;
|
|
16
|
+
addViolation(violation: CheckerViolation): void;
|
|
17
|
+
checkUpgradeBeacon(chain: Chain, name: string, proxiedAddress: BeaconProxyAddresses): Promise<void>;
|
|
18
|
+
checkOwnership(chain: Chain, owner: types.Address, ownables: Ownable[]): Promise<void>;
|
|
19
|
+
expectViolations(types: string[], expectedMatches: number[]): void;
|
|
20
|
+
expectEmpty(): void;
|
|
21
|
+
}
|
|
22
|
+
//# sourceMappingURL=HyperlaneAppChecker.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HyperlaneAppChecker.d.ts","sourceRoot":"","sources":["../../src/deploy/HyperlaneAppChecker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAC/C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAG/C,OAAO,EAAE,gBAAgB,EAAiC,MAAM,SAAS,CAAC;AAE1E,8BAAsB,mBAAmB,CACvC,KAAK,SAAS,SAAS,EACvB,GAAG,SAAS,YAAY,CAAC,GAAG,EAAE,KAAK,CAAC,EACpC,MAAM;IAEN,QAAQ,CAAC,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,CAAC;IAC7C,QAAQ,CAAC,GAAG,EAAE,GAAG,CAAC;IAClB,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,CAAC;IAC5C,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE,CAAC;gBAGtC,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,GAAG,EAAE,GAAG,EACR,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC;IAQpC,QAAQ,CAAC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAE1C,KAAK,IAAI,OAAO,CAAC,IAAI,EAAE,CAAC;IAM9B,YAAY,CAAC,SAAS,EAAE,gBAAgB,GAAG,IAAI;IAIzC,kBAAkB,CACtB,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,oBAAoB,GACnC,OAAO,CAAC,IAAI,CAAC;IAaV,cAAc,CAClB,KAAK,EAAE,KAAK,EACZ,KAAK,EAAE,KAAK,CAAC,OAAO,EACpB,QAAQ,EAAE,OAAO,EAAE,GAClB,OAAO,CAAC,IAAI,CAAC;IAkBhB,gBAAgB,CAAC,KAAK,EAAE,MAAM,EAAE,EAAE,eAAe,EAAE,MAAM,EAAE,GAAG,IAAI;IAwBlE,WAAW,IAAI,IAAI;CAIpB"}
|
|
@@ -0,0 +1,76 @@
|
|
|
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.HyperlaneAppChecker = void 0;
|
|
13
|
+
const utils_1 = require("@hyperlane-xyz/utils");
|
|
14
|
+
const proxy_1 = require("./proxy");
|
|
15
|
+
const types_1 = require("./types");
|
|
16
|
+
class HyperlaneAppChecker {
|
|
17
|
+
constructor(multiProvider, app, configMap) {
|
|
18
|
+
this.multiProvider = multiProvider;
|
|
19
|
+
this.app = app;
|
|
20
|
+
this.violations = [];
|
|
21
|
+
this.configMap = configMap;
|
|
22
|
+
}
|
|
23
|
+
check() {
|
|
24
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
25
|
+
return Promise.all(this.app.chains().map((chain) => this.checkChain(chain)));
|
|
26
|
+
});
|
|
27
|
+
}
|
|
28
|
+
addViolation(violation) {
|
|
29
|
+
this.violations.push(violation);
|
|
30
|
+
}
|
|
31
|
+
checkUpgradeBeacon(chain, name, proxiedAddress) {
|
|
32
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
33
|
+
const dc = this.multiProvider.getChainConnection(chain);
|
|
34
|
+
const implementation = yield (0, proxy_1.upgradeBeaconImplementation)(dc.provider, proxiedAddress.beacon);
|
|
35
|
+
if (implementation !== proxiedAddress.implementation) {
|
|
36
|
+
this.addViolation((0, proxy_1.upgradeBeaconViolation)(chain, name, proxiedAddress, implementation));
|
|
37
|
+
}
|
|
38
|
+
});
|
|
39
|
+
}
|
|
40
|
+
checkOwnership(chain, owner, ownables) {
|
|
41
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
42
|
+
yield Promise.all(ownables.map((contract) => __awaiter(this, void 0, void 0, function* () {
|
|
43
|
+
const actual = yield contract.owner();
|
|
44
|
+
if (actual.toLowerCase() != owner.toLowerCase()) {
|
|
45
|
+
const violation = {
|
|
46
|
+
chain,
|
|
47
|
+
type: types_1.ViolationType.Owner,
|
|
48
|
+
actual,
|
|
49
|
+
expected: owner,
|
|
50
|
+
contract,
|
|
51
|
+
};
|
|
52
|
+
this.addViolation(violation);
|
|
53
|
+
}
|
|
54
|
+
})));
|
|
55
|
+
});
|
|
56
|
+
}
|
|
57
|
+
expectViolations(types, expectedMatches) {
|
|
58
|
+
// Every type should have exactly the number of expected matches.
|
|
59
|
+
const actualMatches = types.map((t) => this.violations.map((v) => v.type === t).filter(Boolean).length);
|
|
60
|
+
actualMatches.map((actual, index) => {
|
|
61
|
+
const expected = expectedMatches[index];
|
|
62
|
+
utils_1.utils.assert(actual == expected, `Expected ${expected} ${types[index]} violations, got ${actual}`);
|
|
63
|
+
});
|
|
64
|
+
// Every violation should be matched by at least one partial.
|
|
65
|
+
const unmatched = this.violations.map((v) => types.map((t) => v.type === t).filter(Boolean).length);
|
|
66
|
+
unmatched.map((count, index) => {
|
|
67
|
+
utils_1.utils.assert(count > 0, `Expected 0 ${this.violations[index].type} violations, got ${count}`);
|
|
68
|
+
});
|
|
69
|
+
}
|
|
70
|
+
expectEmpty() {
|
|
71
|
+
const count = this.violations.length;
|
|
72
|
+
utils_1.utils.assert(count === 0, `Found ${count} violations`);
|
|
73
|
+
}
|
|
74
|
+
}
|
|
75
|
+
exports.HyperlaneAppChecker = HyperlaneAppChecker;
|
|
76
|
+
//# sourceMappingURL=HyperlaneAppChecker.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HyperlaneAppChecker.js","sourceRoot":"","sources":["../../src/deploy/HyperlaneAppChecker.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,40 @@
|
|
|
1
|
+
import { Debugger } from 'debug';
|
|
2
|
+
import { ethers } from 'ethers';
|
|
3
|
+
import { Ownable } from '@hyperlane-xyz/core';
|
|
4
|
+
import type { types } from '@hyperlane-xyz/utils';
|
|
5
|
+
import { HyperlaneContracts, HyperlaneFactories } from '../contracts';
|
|
6
|
+
import { MultiProvider } from '../providers/MultiProvider';
|
|
7
|
+
import { BeaconProxyAddresses, ProxiedContract } from '../proxy';
|
|
8
|
+
import { ChainMap, ChainName } from '../types';
|
|
9
|
+
import { ContractVerificationInput } from './verify/types';
|
|
10
|
+
export interface DeployerOptions {
|
|
11
|
+
logger?: Debugger;
|
|
12
|
+
}
|
|
13
|
+
export declare abstract class HyperlaneDeployer<Chain extends ChainName, Config, Contracts extends HyperlaneContracts, Factories extends HyperlaneFactories> {
|
|
14
|
+
protected readonly multiProvider: MultiProvider<Chain>;
|
|
15
|
+
protected readonly configMap: ChainMap<Chain, Config>;
|
|
16
|
+
protected readonly factories: Factories;
|
|
17
|
+
protected readonly options?: DeployerOptions | undefined;
|
|
18
|
+
deployedContracts: Partial<Record<Chain, Partial<Contracts>>>;
|
|
19
|
+
verificationInputs: ChainMap<Chain, ContractVerificationInput[]>;
|
|
20
|
+
protected logger: Debugger;
|
|
21
|
+
constructor(multiProvider: MultiProvider<Chain>, configMap: ChainMap<Chain, Config>, factories: Factories, options?: DeployerOptions | undefined);
|
|
22
|
+
abstract deployContracts(chain: Chain, config: Config): Promise<Contracts>;
|
|
23
|
+
deploy(partialDeployment?: Partial<Record<Chain, Partial<Contracts>>>): Promise<Record<Chain, Contracts>>;
|
|
24
|
+
protected runIfOwner(chain: Chain, ownable: Ownable, fn: () => Promise<any>): Promise<void>;
|
|
25
|
+
protected deployContractFromFactory<F extends ethers.ContractFactory>(chain: Chain, factory: F, contractName: string, args: Parameters<F['deploy']>): Promise<ReturnType<F['deploy']>>;
|
|
26
|
+
deployContract<K extends keyof Factories>(chain: Chain, contractName: K, args: Parameters<Factories[K]['deploy']>): Promise<ReturnType<Factories[K]['deploy']>>;
|
|
27
|
+
protected deployProxy<C extends ethers.Contract>(chain: Chain, implementation: C, beaconAddress: string, initArgs: Parameters<C['initialize']>): Promise<ProxiedContract<C, BeaconProxyAddresses>>;
|
|
28
|
+
/**
|
|
29
|
+
* Deploys the UpgradeBeacon, Implementation and Proxy for a given contract
|
|
30
|
+
*
|
|
31
|
+
*/
|
|
32
|
+
deployProxiedContract<K extends keyof Factories, C extends Awaited<ReturnType<Factories[K]['deploy']>>>(chain: Chain, contractName: K, deployArgs: Parameters<Factories[K]['deploy']>, ubcAddress: types.Address, initArgs: Parameters<C['initialize']>): Promise<ProxiedContract<C, BeaconProxyAddresses>>;
|
|
33
|
+
/**
|
|
34
|
+
* Sets up a new proxy with the same beacon and implementation
|
|
35
|
+
*
|
|
36
|
+
*/
|
|
37
|
+
duplicateProxiedContract<C extends ethers.Contract>(chain: Chain, proxy: ProxiedContract<C, BeaconProxyAddresses>, initArgs: Parameters<C['initialize']>): Promise<ProxiedContract<C, BeaconProxyAddresses>>;
|
|
38
|
+
mergeWithExistingVerificationInputs(existingInputsMap: ChainMap<Chain, ContractVerificationInput[]>): ChainMap<Chain, ContractVerificationInput[]>;
|
|
39
|
+
}
|
|
40
|
+
//# sourceMappingURL=HyperlaneDeployer.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"HyperlaneDeployer.d.ts","sourceRoot":"","sources":["../../src/deploy/HyperlaneDeployer.ts"],"names":[],"mappings":"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"}
|