@hyperlane-xyz/helloworld 1.4.3-beta1 → 1.4.3-beta2
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/src/app/app.d.ts +1 -1
- package/dist/src/app/app.d.ts.map +1 -1
- package/dist/src/app/app.js +35 -53
- package/dist/src/app/app.js.map +1 -1
- package/dist/src/app/contracts.d.ts +1 -1
- package/dist/src/app/contracts.d.ts.map +1 -1
- package/dist/src/deploy/config.d.ts +2 -56
- package/dist/src/deploy/config.d.ts.map +1 -1
- package/dist/src/deploy/deploy.js +8 -19
- package/dist/src/deploy/deploy.js.map +1 -1
- package/dist/src/scripts/check.js +12 -23
- package/dist/src/scripts/check.js.map +1 -1
- package/dist/src/scripts/deploy.js +14 -25
- package/dist/src/scripts/deploy.js.map +1 -1
- package/dist/src/test/deploy.test.js +16 -25
- package/dist/src/test/deploy.test.js.map +1 -1
- package/dist/src/test/helloworld.test.js +35 -46
- package/dist/src/test/helloworld.test.js.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/HyperlaneConnectionClient.d.ts +12 -12
- package/dist/src/types/@hyperlane-xyz/core/contracts/HyperlaneConnectionClient.d.ts.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/HyperlaneConnectionClient.js +0 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/HyperlaneConnectionClient.js.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/Router.d.ts +14 -14
- package/dist/src/types/@hyperlane-xyz/core/contracts/Router.d.ts.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/Router.js +0 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/Router.js.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/index.d.ts.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/index.js +0 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/index.js.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IHyperlaneConnectionClient.d.ts +2 -2
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IHyperlaneConnectionClient.d.ts.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IHyperlaneConnectionClient.js +0 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IHyperlaneConnectionClient.js.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IInterchainGasPaymaster.d.ts +4 -4
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IInterchainGasPaymaster.d.ts.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IInterchainGasPaymaster.js +0 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IInterchainGasPaymaster.js.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule.d.ts +2 -2
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule.d.ts.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule.js +0 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule.js.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.d.ts +2 -2
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.d.ts.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.js +0 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule.js.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IMailbox.d.ts +10 -10
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IMailbox.d.ts.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IMailbox.js +0 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IMailbox.js.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IMessageRecipient.d.ts +2 -2
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IMessageRecipient.d.ts.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IMessageRecipient.js +0 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/IMessageRecipient.js.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/index.d.ts.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/index.js +0 -1
- package/dist/src/types/@hyperlane-xyz/core/contracts/interfaces/index.js.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/index.d.ts.map +1 -1
- package/dist/src/types/@hyperlane-xyz/core/index.js +0 -1
- package/dist/src/types/@hyperlane-xyz/core/index.js.map +1 -1
- package/dist/src/types/@hyperlane-xyz/index.d.ts.map +1 -1
- package/dist/src/types/@hyperlane-xyz/index.js +0 -1
- package/dist/src/types/@hyperlane-xyz/index.js.map +1 -1
- package/dist/src/types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.d.ts +6 -6
- package/dist/src/types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.d.ts.map +1 -1
- package/dist/src/types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.js +0 -1
- package/dist/src/types/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable.js.map +1 -1
- package/dist/src/types/@openzeppelin/contracts-upgradeable/index.d.ts +2 -2
- package/dist/src/types/@openzeppelin/contracts-upgradeable/index.d.ts.map +1 -1
- package/dist/src/types/@openzeppelin/contracts-upgradeable/index.js +0 -1
- package/dist/src/types/@openzeppelin/contracts-upgradeable/index.js.map +1 -1
- package/dist/src/types/@openzeppelin/contracts-upgradeable/proxy/index.d.ts.map +1 -1
- package/dist/src/types/@openzeppelin/contracts-upgradeable/proxy/index.js +0 -1
- package/dist/src/types/@openzeppelin/contracts-upgradeable/proxy/index.js.map +1 -1
- package/dist/src/types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.d.ts +4 -4
- package/dist/src/types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.d.ts.map +1 -1
- package/dist/src/types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.js +0 -1
- package/dist/src/types/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable.js.map +1 -1
- package/dist/src/types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.d.ts +4 -4
- package/dist/src/types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.d.ts.map +1 -1
- package/dist/src/types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.js +0 -1
- package/dist/src/types/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable.js.map +1 -1
- package/dist/src/types/@openzeppelin/index.d.ts.map +1 -1
- package/dist/src/types/@openzeppelin/index.js +0 -1
- package/dist/src/types/@openzeppelin/index.js.map +1 -1
- package/dist/src/types/common.d.ts +4 -4
- package/dist/src/types/common.d.ts.map +1 -1
- package/dist/src/types/common.js +0 -1
- package/dist/src/types/common.js.map +1 -1
- package/dist/src/types/contracts/HelloWorld.d.ts +20 -20
- package/dist/src/types/contracts/HelloWorld.d.ts.map +1 -1
- package/dist/src/types/contracts/HelloWorld.js +0 -1
- package/dist/src/types/contracts/HelloWorld.js.map +1 -1
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/HyperlaneConnectionClient__factory.d.ts +2 -2
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/HyperlaneConnectionClient__factory.d.ts.map +1 -1
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/HyperlaneConnectionClient__factory.js +2 -0
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/HyperlaneConnectionClient__factory.js.map +1 -1
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/Router__factory.d.ts +2 -2
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/Router__factory.d.ts.map +1 -1
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/Router__factory.js +2 -0
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/Router__factory.js.map +1 -1
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IHyperlaneConnectionClient__factory.d.ts +2 -2
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IHyperlaneConnectionClient__factory.d.ts.map +1 -1
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IHyperlaneConnectionClient__factory.js +2 -0
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IHyperlaneConnectionClient__factory.js.map +1 -1
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IInterchainGasPaymaster__factory.d.ts +2 -2
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IInterchainGasPaymaster__factory.d.ts.map +1 -1
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IInterchainGasPaymaster__factory.js +2 -0
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IInterchainGasPaymaster__factory.js.map +1 -1
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.d.ts +2 -2
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.d.ts.map +1 -1
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.js +2 -0
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol/IInterchainSecurityModule__factory.js.map +1 -1
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.d.ts +2 -2
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.d.ts.map +1 -1
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.js +2 -0
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IInterchainSecurityModule.sol/ISpecifiesInterchainSecurityModule__factory.js.map +1 -1
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IMailbox__factory.d.ts +2 -2
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IMailbox__factory.d.ts.map +1 -1
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IMailbox__factory.js +2 -0
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IMailbox__factory.js.map +1 -1
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IMessageRecipient__factory.d.ts +2 -2
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IMessageRecipient__factory.d.ts.map +1 -1
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IMessageRecipient__factory.js +2 -0
- package/dist/src/types/factories/@hyperlane-xyz/core/contracts/interfaces/IMessageRecipient__factory.js.map +1 -1
- package/dist/src/types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.d.ts +2 -2
- package/dist/src/types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.d.ts.map +1 -1
- package/dist/src/types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.js +2 -0
- package/dist/src/types/factories/@openzeppelin/contracts-upgradeable/access/OwnableUpgradeable__factory.js.map +1 -1
- package/dist/src/types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.d.ts +2 -2
- package/dist/src/types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.d.ts.map +1 -1
- package/dist/src/types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.js +2 -0
- package/dist/src/types/factories/@openzeppelin/contracts-upgradeable/proxy/utils/Initializable__factory.js.map +1 -1
- package/dist/src/types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.d.ts +2 -2
- package/dist/src/types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.d.ts.map +1 -1
- package/dist/src/types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.js +2 -0
- package/dist/src/types/factories/@openzeppelin/contracts-upgradeable/utils/ContextUpgradeable__factory.js.map +1 -1
- package/dist/src/types/factories/contracts/HelloWorld__factory.d.ts +3 -3
- package/dist/src/types/factories/contracts/HelloWorld__factory.d.ts.map +1 -1
- package/dist/src/types/factories/contracts/HelloWorld__factory.js +3 -1
- package/dist/src/types/factories/contracts/HelloWorld__factory.js.map +1 -1
- package/dist/src/types/index.d.ts +2 -2
- package/dist/src/types/index.d.ts.map +1 -1
- package/dist/src/types/index.js +0 -1
- package/dist/src/types/index.js.map +1 -1
- package/package.json +12 -12
package/dist/src/app/app.d.ts
CHANGED
|
@@ -2,7 +2,7 @@ import { BigNumber, ethers } from 'ethers';
|
|
|
2
2
|
import { ChainMap, ChainName, HyperlaneContracts, HyperlaneContractsMap, HyperlaneCore, MultiProvider, RouterApp } from '@hyperlane-xyz/sdk';
|
|
3
3
|
import { HelloWorld } from '../types';
|
|
4
4
|
import { HelloWorldFactories } from './contracts';
|
|
5
|
-
|
|
5
|
+
type Counts = {
|
|
6
6
|
sent: number;
|
|
7
7
|
received: number;
|
|
8
8
|
};
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/app/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE3C,OAAO,EACL,QAAQ,EACR,SAAS,EACT,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,SAAS,EACV,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,
|
|
1
|
+
{"version":3,"file":"app.d.ts","sourceRoot":"","sources":["../../../src/app/app.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,SAAS,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAE3C,OAAO,EACL,QAAQ,EACR,SAAS,EACT,kBAAkB,EAClB,qBAAqB,EACrB,aAAa,EACb,aAAa,EACb,SAAS,EACV,MAAM,oBAAoB,CAAC;AAG5B,OAAO,EAAE,UAAU,EAAE,MAAM,UAAU,CAAC;AAEtC,OAAO,EAAE,mBAAmB,EAAE,MAAM,aAAa,CAAC;AAElD,KAAK,MAAM,GAAG;IACZ,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,MAAM,CAAC;CAClB,CAAC;AAEF,qBAAa,aAAc,SAAQ,SAAS,CAAC,mBAAmB,CAAC;aAE7C,IAAI,EAAE,aAAa;gBAAnB,IAAI,EAAE,aAAa,EACnC,YAAY,EAAE,qBAAqB,CAAC,mBAAmB,CAAC,EACxD,aAAa,EAAE,aAAa;IAK9B,MAAM,CAAC,SAAS,EAAE,kBAAkB,CAAC,mBAAmB,CAAC,GAAG,UAAU;IAIhE,cAAc,CAClB,IAAI,EAAE,SAAS,EACf,EAAE,EAAE,SAAS,EACb,OAAO,EAAE,MAAM,EACf,KAAK,EAAE,SAAS,GACf,OAAO,CAAC,MAAM,CAAC,eAAe,CAAC;IA4B5B,qBAAqB,CACzB,OAAO,EAAE,MAAM,CAAC,eAAe,GAC9B,OAAO,CAAC,MAAM,CAAC,eAAe,EAAE,CAAC;IAI9B,uBAAuB,CAC3B,OAAO,EAAE,MAAM,CAAC,eAAe,GAC9B,OAAO,CAAC,IAAI,CAAC;IAIV,YAAY,CAAC,IAAI,EAAE,SAAS,EAAE,EAAE,EAAE,SAAS,GAAG,OAAO,CAAC,MAAM,CAAC;IAW7D,KAAK,IAAI,OAAO,CAAC,QAAQ,CAAC,QAAQ,CAAC,MAAM,CAAC,CAAC,CAAC;CAcnD"}
|
package/dist/src/app/app.js
CHANGED
|
@@ -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.HelloWorldApp = void 0;
|
|
13
4
|
const sdk_1 = require("@hyperlane-xyz/sdk");
|
|
@@ -20,55 +11,46 @@ class HelloWorldApp extends sdk_1.RouterApp {
|
|
|
20
11
|
router(contracts) {
|
|
21
12
|
return contracts.router;
|
|
22
13
|
}
|
|
23
|
-
sendHelloWorld(from, to, message, value) {
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
from,
|
|
35
|
-
to,
|
|
36
|
-
message,
|
|
37
|
-
tx,
|
|
38
|
-
});
|
|
39
|
-
return tx.wait((blocks === null || blocks === void 0 ? void 0 : blocks.confirmations) || 1);
|
|
14
|
+
async sendHelloWorld(from, to, message, value) {
|
|
15
|
+
const sender = this.getContracts(from).router;
|
|
16
|
+
const toDomain = this.multiProvider.getDomainId(to);
|
|
17
|
+
const { blocks, transactionOverrides } = this.multiProvider.getChainMetadata(from);
|
|
18
|
+
// apply gas buffer due to https://github.com/hyperlane-xyz/hyperlane-monorepo/issues/634
|
|
19
|
+
const estimated = await sender.estimateGas.sendHelloWorld(toDomain, message, { ...transactionOverrides, value });
|
|
20
|
+
const gasLimit = estimated.mul(12).div(10);
|
|
21
|
+
const tx = await sender.sendHelloWorld(toDomain, message, {
|
|
22
|
+
...transactionOverrides,
|
|
23
|
+
gasLimit,
|
|
24
|
+
value,
|
|
40
25
|
});
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
26
|
+
(0, utils_1.debug)('Sending hello message', {
|
|
27
|
+
from,
|
|
28
|
+
to,
|
|
29
|
+
message,
|
|
30
|
+
tx,
|
|
45
31
|
});
|
|
32
|
+
return tx.wait(blocks?.confirmations || 1);
|
|
46
33
|
}
|
|
47
|
-
|
|
48
|
-
return
|
|
49
|
-
return this.core.waitForMessageProcessed(receipt);
|
|
50
|
-
});
|
|
34
|
+
async waitForMessageReceipt(receipt) {
|
|
35
|
+
return this.core.waitForMessageProcessing(receipt);
|
|
51
36
|
}
|
|
52
|
-
|
|
53
|
-
return
|
|
54
|
-
const sent = yield this.getContracts(from).router.sentTo(this.multiProvider.getDomainId(to));
|
|
55
|
-
const received = yield this.getContracts(to).router.receivedFrom(this.multiProvider.getDomainId(from));
|
|
56
|
-
return { sent: sent.toNumber(), received: received.toNumber() };
|
|
57
|
-
});
|
|
37
|
+
async waitForMessageProcessed(receipt) {
|
|
38
|
+
return this.core.waitForMessageProcessed(receipt);
|
|
58
39
|
}
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
return Object.fromEntries(
|
|
71
|
-
});
|
|
40
|
+
async channelStats(from, to) {
|
|
41
|
+
const sent = await this.getContracts(from).router.sentTo(this.multiProvider.getDomainId(to));
|
|
42
|
+
const received = await this.getContracts(to).router.receivedFrom(this.multiProvider.getDomainId(from));
|
|
43
|
+
return { sent: sent.toNumber(), received: received.toNumber() };
|
|
44
|
+
}
|
|
45
|
+
async stats() {
|
|
46
|
+
const entries = await Promise.all(this.chains().map(async (source) => {
|
|
47
|
+
const destinationEntries = await Promise.all(this.remoteChains(source).map(async (destination) => [
|
|
48
|
+
destination,
|
|
49
|
+
await this.channelStats(source, destination),
|
|
50
|
+
]));
|
|
51
|
+
return [source, Object.fromEntries(destinationEntries)];
|
|
52
|
+
}));
|
|
53
|
+
return Object.fromEntries(entries);
|
|
72
54
|
}
|
|
73
55
|
}
|
|
74
56
|
exports.HelloWorldApp = HelloWorldApp;
|
package/dist/src/app/app.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/app/app.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"app.js","sourceRoot":"","sources":["../../../src/app/app.ts"],"names":[],"mappings":"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"}
|
|
@@ -2,5 +2,5 @@ import { HelloWorld__factory } from '../types';
|
|
|
2
2
|
export declare const helloWorldFactories: {
|
|
3
3
|
router: HelloWorld__factory;
|
|
4
4
|
};
|
|
5
|
-
export
|
|
5
|
+
export type HelloWorldFactories = typeof helloWorldFactories;
|
|
6
6
|
//# sourceMappingURL=contracts.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/app/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,
|
|
1
|
+
{"version":3,"file":"contracts.d.ts","sourceRoot":"","sources":["../../../src/app/contracts.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,mBAAmB,EAAE,MAAM,UAAU,CAAC;AAE/C,eAAO,MAAM,mBAAmB;;CAE/B,CAAC;AAEF,MAAM,MAAM,mBAAmB,GAAG,OAAO,mBAAmB,CAAC"}
|
|
@@ -1,60 +1,6 @@
|
|
|
1
1
|
import { RouterConfig } from '@hyperlane-xyz/sdk';
|
|
2
|
-
export
|
|
2
|
+
export type HelloWorldConfig = RouterConfig;
|
|
3
3
|
export declare const prodConfigs: {
|
|
4
|
-
alfajores:
|
|
5
|
-
name: string;
|
|
6
|
-
chainId: number;
|
|
7
|
-
protocol: import("@hyperlane-xyz/utils").ProtocolType;
|
|
8
|
-
rpcUrls: [{
|
|
9
|
-
http: string;
|
|
10
|
-
webSocket?: string | undefined;
|
|
11
|
-
pagination?: {
|
|
12
|
-
maxBlockRange?: number | undefined;
|
|
13
|
-
minBlockNumber?: number | undefined;
|
|
14
|
-
maxBlockAge?: number | undefined;
|
|
15
|
-
} | undefined;
|
|
16
|
-
retry?: {
|
|
17
|
-
maxRequests: number;
|
|
18
|
-
baseRetryMs: number;
|
|
19
|
-
} | undefined;
|
|
20
|
-
}, ...{
|
|
21
|
-
http: string;
|
|
22
|
-
webSocket?: string | undefined;
|
|
23
|
-
pagination?: {
|
|
24
|
-
maxBlockRange?: number | undefined;
|
|
25
|
-
minBlockNumber?: number | undefined;
|
|
26
|
-
maxBlockAge?: number | undefined;
|
|
27
|
-
} | undefined;
|
|
28
|
-
retry?: {
|
|
29
|
-
maxRequests: number;
|
|
30
|
-
baseRetryMs: number;
|
|
31
|
-
} | undefined;
|
|
32
|
-
}[]];
|
|
33
|
-
domainId?: number | undefined;
|
|
34
|
-
displayName?: string | undefined;
|
|
35
|
-
displayNameShort?: string | undefined;
|
|
36
|
-
logoURI?: string | undefined;
|
|
37
|
-
nativeToken?: {
|
|
38
|
-
symbol: string;
|
|
39
|
-
name: string;
|
|
40
|
-
decimals: number;
|
|
41
|
-
} | undefined;
|
|
42
|
-
blockExplorers?: {
|
|
43
|
-
url: string;
|
|
44
|
-
name: string;
|
|
45
|
-
apiUrl: string;
|
|
46
|
-
apiKey?: string | undefined;
|
|
47
|
-
family?: import("@hyperlane-xyz/sdk").ExplorerFamily | undefined;
|
|
48
|
-
}[] | undefined;
|
|
49
|
-
blocks?: {
|
|
50
|
-
confirmations: number;
|
|
51
|
-
reorgPeriod?: number | undefined;
|
|
52
|
-
estimateBlockTime?: number | undefined;
|
|
53
|
-
} | undefined;
|
|
54
|
-
transactionOverrides?: {} | undefined;
|
|
55
|
-
gasCurrencyCoinGeckoId?: string | undefined;
|
|
56
|
-
gnosisSafeTransactionServiceUrl?: string | undefined;
|
|
57
|
-
isTestnet?: boolean | undefined;
|
|
58
|
-
};
|
|
4
|
+
alfajores: import("@hyperlane-xyz/sdk").ChainMetadata;
|
|
59
5
|
};
|
|
60
6
|
//# sourceMappingURL=config.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/deploy/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAiB,MAAM,oBAAoB,CAAC;AAEjE,
|
|
1
|
+
{"version":3,"file":"config.d.ts","sourceRoot":"","sources":["../../../src/deploy/config.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,YAAY,EAAiB,MAAM,oBAAoB,CAAC;AAEjE,MAAM,MAAM,gBAAgB,GAAG,YAAY,CAAC;AAG5C,eAAO,MAAM,WAAW;;CAEvB,CAAC"}
|
|
@@ -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.HelloWorldDeployer = void 0;
|
|
13
4
|
const sdk_1 = require("@hyperlane-xyz/sdk");
|
|
@@ -22,16 +13,14 @@ class HelloWorldDeployer extends sdk_1.HyperlaneRouterDeployer {
|
|
|
22
13
|
}
|
|
23
14
|
// Custom contract deployment logic can go here
|
|
24
15
|
// If no custom logic is needed, call deployContract for the router
|
|
25
|
-
deployContracts(chain, config) {
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
};
|
|
34
|
-
});
|
|
16
|
+
async deployContracts(chain, config) {
|
|
17
|
+
const router = await this.deployContract(chain, 'router', [
|
|
18
|
+
config.mailbox,
|
|
19
|
+
config.interchainGasPaymaster,
|
|
20
|
+
]);
|
|
21
|
+
return {
|
|
22
|
+
router,
|
|
23
|
+
};
|
|
35
24
|
}
|
|
36
25
|
}
|
|
37
26
|
exports.HelloWorldDeployer = HelloWorldDeployer;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/deploy/deploy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/deploy/deploy.ts"],"names":[],"mappings":";;;AAAA,4CAM4B;AAE5B,gDAA4E;AAK5E,MAAa,kBAAmB,SAAQ,6BAGvC;IACC,YACE,aAA4B,EACnB,UAAgC;QAEzC,KAAK,CAAC,aAAa,EAAE,+BAAmB,EAAE,EAAE,UAAU,EAAE,CAAC,CAAC;QAFjD,eAAU,GAAV,UAAU,CAAsB;IAG3C,CAAC;IAED,MAAM,CAAC,SAAkD;QACvD,OAAO,SAAS,CAAC,MAAM,CAAC;IAC1B,CAAC;IAED,+CAA+C;IAC/C,mEAAmE;IACnE,KAAK,CAAC,eAAe,CAAC,KAAgB,EAAE,MAAwB;QAC9D,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE;YACxD,MAAM,CAAC,OAAO;YACd,MAAM,CAAC,sBAAsB;SAC9B,CAAC,CAAC;QACH,OAAO;YACL,MAAM;SACP,CAAC;IACJ,CAAC;CACF;AA1BD,gDA0BC"}
|
|
@@ -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
|
const sdk_1 = require("@hyperlane-xyz/sdk");
|
|
13
4
|
const app_1 = require("../app/app");
|
|
@@ -18,20 +9,18 @@ const config_1 = require("../deploy/config");
|
|
|
18
9
|
const deploymentAddresses = {};
|
|
19
10
|
// SET CONTRACT OWNER ADDRESS HERE
|
|
20
11
|
const ownerAddress = '0x123...';
|
|
21
|
-
function check() {
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
helloWorldChecker.expectEmpty();
|
|
34
|
-
});
|
|
12
|
+
async function check() {
|
|
13
|
+
console.info('Preparing utilities');
|
|
14
|
+
const multiProvider = new sdk_1.MultiProvider(config_1.prodConfigs);
|
|
15
|
+
const contractsMap = (0, sdk_1.attachContractsMap)(deploymentAddresses, contracts_1.helloWorldFactories);
|
|
16
|
+
const core = sdk_1.HyperlaneCore.fromEnvironment('testnet', multiProvider);
|
|
17
|
+
const igp = sdk_1.HyperlaneIgp.fromEnvironment('testnet', multiProvider);
|
|
18
|
+
const app = new app_1.HelloWorldApp(core, contractsMap, multiProvider);
|
|
19
|
+
const config = (0, sdk_1.createRouterConfigMap)(ownerAddress, core.contractsMap, igp.contractsMap);
|
|
20
|
+
console.info('Starting check');
|
|
21
|
+
const helloWorldChecker = new check_1.HelloWorldChecker(multiProvider, app, config);
|
|
22
|
+
await helloWorldChecker.check();
|
|
23
|
+
helloWorldChecker.expectEmpty();
|
|
35
24
|
}
|
|
36
25
|
check()
|
|
37
26
|
.then(() => console.info('Check complete'))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/scripts/check.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"check.js","sourceRoot":"","sources":["../../../src/scripts/check.ts"],"names":[],"mappings":";;AAAA,4CAM4B;AAE5B,oCAA2C;AAC3C,gDAAuD;AACvD,2CAAoD;AACpD,6CAA+C;AAE/C,iEAAiE;AACjE,MAAM,mBAAmB,GAAG,EAAE,CAAC;AAE/B,kCAAkC;AAClC,MAAM,YAAY,GAAG,UAAU,CAAC;AAEhC,KAAK,UAAU,KAAK;IAClB,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,IAAI,mBAAa,CAAC,oBAAW,CAAC,CAAC;IAErD,MAAM,YAAY,GAAG,IAAA,wBAAkB,EACrC,mBAAmB,EACnB,+BAAmB,CACpB,CAAC;IAEF,MAAM,IAAI,GAAG,mBAAa,CAAC,eAAe,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,kBAAY,CAAC,eAAe,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACnE,MAAM,GAAG,GAAG,IAAI,mBAAa,CAAC,IAAI,EAAE,YAAY,EAAE,aAAa,CAAC,CAAC;IACjE,MAAM,MAAM,GAAG,IAAA,2BAAqB,EAClC,YAAY,EACZ,IAAI,CAAC,YAAY,EACjB,GAAG,CAAC,YAAY,CACjB,CAAC;IAEF,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/B,MAAM,iBAAiB,GAAG,IAAI,yBAAiB,CAAC,aAAa,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;IAC5E,MAAM,iBAAiB,CAAC,KAAK,EAAE,CAAC;IAChC,iBAAiB,CAAC,WAAW,EAAE,CAAC;AAClC,CAAC;AAED,KAAK,EAAE;KACJ,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;KAC1C,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -1,34 +1,23 @@
|
|
|
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
|
const ethers_1 = require("ethers");
|
|
13
4
|
const sdk_1 = require("@hyperlane-xyz/sdk");
|
|
14
5
|
const config_1 = require("../deploy/config");
|
|
15
6
|
const deploy_1 = require("../deploy/deploy");
|
|
16
|
-
function main() {
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
console.info(JSON.stringify(addresses));
|
|
31
|
-
});
|
|
7
|
+
async function main() {
|
|
8
|
+
console.info('Getting signer');
|
|
9
|
+
const signer = new ethers_1.Wallet('SET KEY HERE OR CREATE YOUR OWN SIGNER');
|
|
10
|
+
console.info('Preparing utilities');
|
|
11
|
+
const multiProvider = new sdk_1.MultiProvider(config_1.prodConfigs);
|
|
12
|
+
multiProvider.setSharedSigner(signer);
|
|
13
|
+
const core = sdk_1.HyperlaneCore.fromEnvironment('testnet', multiProvider);
|
|
14
|
+
const igp = sdk_1.HyperlaneIgp.fromEnvironment('testnet', multiProvider);
|
|
15
|
+
const config = (0, sdk_1.createRouterConfigMap)(signer.address, core.contractsMap, igp.contractsMap);
|
|
16
|
+
const deployer = new deploy_1.HelloWorldDeployer(multiProvider);
|
|
17
|
+
const chainToContracts = await deployer.deploy(config);
|
|
18
|
+
const addresses = (0, sdk_1.serializeContractsMap)(chainToContracts);
|
|
19
|
+
console.info('===Contract Addresses===');
|
|
20
|
+
console.info(JSON.stringify(addresses));
|
|
32
21
|
}
|
|
33
22
|
main()
|
|
34
23
|
.then(() => console.info('Deploy complete'))
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/scripts/deploy.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/scripts/deploy.ts"],"names":[],"mappings":";;AAAA,mCAAgC;AAEhC,4CAM4B;AAE5B,6CAA+C;AAC/C,6CAAsD;AAEtD,KAAK,UAAU,IAAI;IACjB,OAAO,CAAC,IAAI,CAAC,gBAAgB,CAAC,CAAC;IAC/B,MAAM,MAAM,GAAG,IAAI,eAAM,CAAC,wCAAwC,CAAC,CAAC;IAEpE,OAAO,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC;IACpC,MAAM,aAAa,GAAG,IAAI,mBAAa,CAAC,oBAAW,CAAC,CAAC;IACrD,aAAa,CAAC,eAAe,CAAC,MAAM,CAAC,CAAC;IAEtC,MAAM,IAAI,GAAG,mBAAa,CAAC,eAAe,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACrE,MAAM,GAAG,GAAG,kBAAY,CAAC,eAAe,CAAC,SAAS,EAAE,aAAa,CAAC,CAAC;IACnE,MAAM,MAAM,GAAG,IAAA,2BAAqB,EAClC,MAAM,CAAC,OAAO,EACd,IAAI,CAAC,YAAY,EACjB,GAAG,CAAC,YAAY,CACjB,CAAC;IAEF,MAAM,QAAQ,GAAG,IAAI,2BAAkB,CAAC,aAAa,CAAC,CAAC;IACvD,MAAM,gBAAgB,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IACvD,MAAM,SAAS,GAAG,IAAA,2BAAqB,EAAC,gBAAgB,CAAC,CAAC;IAC1D,OAAO,CAAC,IAAI,CAAC,0BAA0B,CAAC,CAAC;IACzC,OAAO,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC,CAAC;AAC1C,CAAC;AAED,IAAI,EAAE;KACH,IAAI,CAAC,GAAG,EAAE,CAAC,OAAO,CAAC,IAAI,CAAC,iBAAiB,CAAC,CAAC;KAC3C,KAAK,CAAC,OAAO,CAAC,KAAK,CAAC,CAAC"}
|
|
@@ -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
|
require("@nomiclabs/hardhat-waffle");
|
|
13
4
|
const hardhat_1 = require("hardhat");
|
|
@@ -15,32 +6,32 @@ const sdk_1 = require("@hyperlane-xyz/sdk");
|
|
|
15
6
|
const app_1 = require("../app/app");
|
|
16
7
|
const check_1 = require("../deploy/check");
|
|
17
8
|
const deploy_1 = require("../deploy/deploy");
|
|
18
|
-
describe('deploy', () =>
|
|
9
|
+
describe('deploy', async () => {
|
|
19
10
|
let multiProvider;
|
|
20
11
|
let core;
|
|
21
12
|
let config;
|
|
22
13
|
let deployer;
|
|
23
14
|
let contracts;
|
|
24
15
|
let app;
|
|
25
|
-
before(() =>
|
|
26
|
-
const [signer] =
|
|
16
|
+
before(async () => {
|
|
17
|
+
const [signer] = await hardhat_1.ethers.getSigners();
|
|
27
18
|
multiProvider = sdk_1.MultiProvider.createTestMultiProvider({ signer });
|
|
28
19
|
const coreDeployer = new sdk_1.TestCoreDeployer(multiProvider);
|
|
29
|
-
core =
|
|
30
|
-
config =
|
|
20
|
+
core = await coreDeployer.deployApp();
|
|
21
|
+
config = await (0, sdk_1.deployTestIgpsAndGetRouterConfig)(multiProvider, signer.address, core.contractsMap);
|
|
31
22
|
deployer = new deploy_1.HelloWorldDeployer(multiProvider);
|
|
32
|
-
})
|
|
33
|
-
it('deploys', () =>
|
|
34
|
-
contracts =
|
|
35
|
-
})
|
|
36
|
-
it('builds app', () =>
|
|
37
|
-
contracts =
|
|
23
|
+
});
|
|
24
|
+
it('deploys', async () => {
|
|
25
|
+
contracts = await deployer.deploy(config);
|
|
26
|
+
});
|
|
27
|
+
it('builds app', async () => {
|
|
28
|
+
contracts = await deployer.deploy(config);
|
|
38
29
|
app = new app_1.HelloWorldApp(core, contracts, multiProvider);
|
|
39
|
-
})
|
|
40
|
-
it('checks', () =>
|
|
30
|
+
});
|
|
31
|
+
it('checks', async () => {
|
|
41
32
|
const checker = new check_1.HelloWorldChecker(multiProvider, app, config);
|
|
42
|
-
|
|
33
|
+
await checker.check();
|
|
43
34
|
checker.expectEmpty();
|
|
44
|
-
})
|
|
45
|
-
})
|
|
35
|
+
});
|
|
36
|
+
});
|
|
46
37
|
//# sourceMappingURL=deploy.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"deploy.test.js","sourceRoot":"","sources":["../../../src/test/deploy.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"deploy.test.js","sourceRoot":"","sources":["../../../src/test/deploy.test.ts"],"names":[],"mappings":";;AAAA,qCAAmC;AACnC,qCAAiC;AAEjC,4CAO4B;AAE5B,oCAA2C;AAE3C,2CAAoD;AAEpD,6CAAsD;AAEtD,QAAQ,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;IAC5B,IAAI,aAA4B,CAAC;IACjC,IAAI,IAAiB,CAAC;IACtB,IAAI,MAAkC,CAAC;IACvC,IAAI,QAA4B,CAAC;IACjC,IAAI,SAAqD,CAAC;IAC1D,IAAI,GAAkB,CAAC;IAEvB,MAAM,CAAC,KAAK,IAAI,EAAE;QAChB,MAAM,CAAC,MAAM,CAAC,GAAG,MAAM,gBAAM,CAAC,UAAU,EAAE,CAAC;QAC3C,aAAa,GAAG,mBAAa,CAAC,uBAAuB,CAAC,EAAE,MAAM,EAAE,CAAC,CAAC;QAElE,MAAM,YAAY,GAAG,IAAI,sBAAgB,CAAC,aAAa,CAAC,CAAC;QACzD,IAAI,GAAG,MAAM,YAAY,CAAC,SAAS,EAAE,CAAC;QACtC,MAAM,GAAG,MAAM,IAAA,sCAAgC,EAC7C,aAAa,EACb,MAAM,CAAC,OAAO,EACd,IAAI,CAAC,YAAY,CAClB,CAAC;QACF,QAAQ,GAAG,IAAI,2BAAkB,CAAC,aAAa,CAAC,CAAC;IACnD,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,SAAS,EAAE,KAAK,IAAI,EAAE;QACvB,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;IAC5C,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,YAAY,EAAE,KAAK,IAAI,EAAE;QAC1B,SAAS,GAAG,MAAM,QAAQ,CAAC,MAAM,CAAC,MAAM,CAAC,CAAC;QAC1C,GAAG,GAAG,IAAI,mBAAa,CAAC,IAAI,EAAE,SAAS,EAAE,aAAa,CAAC,CAAC;IAC1D,CAAC,CAAC,CAAC;IAEH,EAAE,CAAC,QAAQ,EAAE,KAAK,IAAI,EAAE;QACtB,MAAM,OAAO,GAAG,IAAI,yBAAiB,CAAC,aAAa,EAAE,GAAG,EAAE,MAAM,CAAC,CAAC;QAClE,MAAM,OAAO,CAAC,KAAK,EAAE,CAAC;QACtB,OAAO,CAAC,WAAW,EAAE,CAAC;IACxB,CAAC,CAAC,CAAC;AACL,CAAC,CAAC,CAAC"}
|
|
@@ -1,20 +1,11 @@
|
|
|
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
|
const chai_1 = require("chai");
|
|
13
4
|
const hardhat_1 = require("hardhat");
|
|
14
5
|
const sdk_1 = require("@hyperlane-xyz/sdk");
|
|
15
6
|
const deploy_1 = require("../deploy/deploy");
|
|
16
7
|
const types_1 = require("../types");
|
|
17
|
-
describe('HelloWorld', () =>
|
|
8
|
+
describe('HelloWorld', async () => {
|
|
18
9
|
const localChain = sdk_1.Chains.test1;
|
|
19
10
|
const remoteChain = sdk_1.Chains.test2;
|
|
20
11
|
let localDomain;
|
|
@@ -26,60 +17,58 @@ describe('HelloWorld', () => __awaiter(void 0, void 0, void 0, function* () {
|
|
|
26
17
|
let multiProvider;
|
|
27
18
|
let coreApp;
|
|
28
19
|
let config;
|
|
29
|
-
before(() =>
|
|
30
|
-
[signer] =
|
|
20
|
+
before(async () => {
|
|
21
|
+
[signer] = await hardhat_1.ethers.getSigners();
|
|
31
22
|
multiProvider = sdk_1.MultiProvider.createTestMultiProvider({ signer });
|
|
32
23
|
localDomain = multiProvider.getDomainId(localChain);
|
|
33
24
|
remoteDomain = multiProvider.getDomainId(remoteChain);
|
|
34
25
|
const coreDeployer = new sdk_1.TestCoreDeployer(multiProvider);
|
|
35
|
-
const coreContractsMaps =
|
|
26
|
+
const coreContractsMaps = await coreDeployer.deploy();
|
|
36
27
|
coreApp = new sdk_1.TestCoreApp(coreContractsMaps, multiProvider);
|
|
37
|
-
config =
|
|
38
|
-
})
|
|
39
|
-
beforeEach(() =>
|
|
28
|
+
config = await (0, sdk_1.deployTestIgpsAndGetRouterConfig)(multiProvider, signer.address, coreContractsMaps);
|
|
29
|
+
});
|
|
30
|
+
beforeEach(async () => {
|
|
40
31
|
const helloWorld = new deploy_1.HelloWorldDeployer(multiProvider);
|
|
41
|
-
const contracts =
|
|
32
|
+
const contracts = await helloWorld.deploy(config);
|
|
42
33
|
local = contracts[localChain].router;
|
|
43
34
|
remote = contracts[remoteChain].router;
|
|
44
35
|
localIgp = types_1.IInterchainGasPaymaster__factory.connect(config[localChain].interchainGasPaymaster, multiProvider.getProvider(localChain));
|
|
45
36
|
// The all counts start empty
|
|
46
|
-
(0, chai_1.expect)(
|
|
47
|
-
(0, chai_1.expect)(
|
|
48
|
-
(0, chai_1.expect)(
|
|
49
|
-
(0, chai_1.expect)(
|
|
50
|
-
})
|
|
51
|
-
function quoteGasPayment(fromRouter, destinationDomain, igp) {
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
return igp.quoteGasPayment(destinationDomain, handleGasAmount);
|
|
55
|
-
});
|
|
37
|
+
(0, chai_1.expect)(await local.sent()).to.equal(0);
|
|
38
|
+
(0, chai_1.expect)(await local.received()).to.equal(0);
|
|
39
|
+
(0, chai_1.expect)(await remote.sent()).to.equal(0);
|
|
40
|
+
(0, chai_1.expect)(await remote.received()).to.equal(0);
|
|
41
|
+
});
|
|
42
|
+
async function quoteGasPayment(fromRouter, destinationDomain, igp) {
|
|
43
|
+
const handleGasAmount = await fromRouter.HANDLE_GAS_AMOUNT();
|
|
44
|
+
return igp.quoteGasPayment(destinationDomain, handleGasAmount);
|
|
56
45
|
}
|
|
57
|
-
it('sends a message', () =>
|
|
58
|
-
|
|
59
|
-
value:
|
|
46
|
+
it('sends a message', async () => {
|
|
47
|
+
await (0, chai_1.expect)(local.sendHelloWorld(remoteDomain, 'Hello', {
|
|
48
|
+
value: await quoteGasPayment(local, remoteDomain, localIgp),
|
|
60
49
|
})).to.emit(local, 'SentHelloWorld');
|
|
61
50
|
// The sent counts are correct
|
|
62
|
-
(0, chai_1.expect)(
|
|
63
|
-
(0, chai_1.expect)(
|
|
51
|
+
(0, chai_1.expect)(await local.sent()).to.equal(1);
|
|
52
|
+
(0, chai_1.expect)(await local.sentTo(remoteDomain)).to.equal(1);
|
|
64
53
|
// The received counts are correct
|
|
65
|
-
(0, chai_1.expect)(
|
|
66
|
-
})
|
|
67
|
-
it('reverts if there is insufficient payment', () =>
|
|
68
|
-
|
|
54
|
+
(0, chai_1.expect)(await local.received()).to.equal(0);
|
|
55
|
+
});
|
|
56
|
+
it('reverts if there is insufficient payment', async () => {
|
|
57
|
+
await (0, chai_1.expect)(local.sendHelloWorld(remoteDomain, 'Hello', {
|
|
69
58
|
value: 0,
|
|
70
59
|
})).to.be.revertedWith('insufficient interchain gas payment');
|
|
71
|
-
})
|
|
72
|
-
it('handles a message', () =>
|
|
73
|
-
|
|
74
|
-
value:
|
|
60
|
+
});
|
|
61
|
+
it('handles a message', async () => {
|
|
62
|
+
await local.sendHelloWorld(remoteDomain, 'World', {
|
|
63
|
+
value: await quoteGasPayment(local, remoteDomain, localIgp),
|
|
75
64
|
});
|
|
76
65
|
// Mock processing of the message by Hyperlane
|
|
77
|
-
|
|
66
|
+
await coreApp.processOutboundMessages(localChain);
|
|
78
67
|
// The initial message has been dispatched.
|
|
79
|
-
(0, chai_1.expect)(
|
|
68
|
+
(0, chai_1.expect)(await local.sent()).to.equal(1);
|
|
80
69
|
// The initial message has been processed.
|
|
81
|
-
(0, chai_1.expect)(
|
|
82
|
-
(0, chai_1.expect)(
|
|
83
|
-
})
|
|
84
|
-
})
|
|
70
|
+
(0, chai_1.expect)(await remote.received()).to.equal(1);
|
|
71
|
+
(0, chai_1.expect)(await remote.receivedFrom(localDomain)).to.equal(1);
|
|
72
|
+
});
|
|
73
|
+
});
|
|
85
74
|
//# sourceMappingURL=helloworld.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helloworld.test.js","sourceRoot":"","sources":["../../../src/test/helloworld.test.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"helloworld.test.js","sourceRoot":"","sources":["../../../src/test/helloworld.test.ts"],"names":[],"mappings":"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"}
|