@hyperlane-xyz/sdk 1.0.0-beta2 → 1.0.0-beta4

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.
Files changed (161) hide show
  1. package/dist/consts/chainConnectionConfigs.d.ts +24 -13
  2. package/dist/consts/chainConnectionConfigs.d.ts.map +1 -1
  3. package/dist/consts/chainConnectionConfigs.js +139 -26
  4. package/dist/consts/chainConnectionConfigs.js.map +1 -1
  5. package/dist/consts/chainMetadata.d.ts +26 -80
  6. package/dist/consts/chainMetadata.d.ts.map +1 -1
  7. package/dist/consts/chainMetadata.js +97 -481
  8. package/dist/consts/chainMetadata.js.map +1 -1
  9. package/dist/consts/chains.d.ts +16 -18
  10. package/dist/consts/chains.d.ts.map +1 -1
  11. package/dist/consts/chains.js +15 -29
  12. package/dist/consts/chains.js.map +1 -1
  13. package/dist/consts/environments/index.d.ts +1221 -177
  14. package/dist/consts/environments/index.d.ts.map +1 -1
  15. package/dist/consts/environments/index.js +10 -4
  16. package/dist/consts/environments/index.js.map +1 -1
  17. package/dist/consts/environments/mainnet.json +600 -56
  18. package/dist/consts/environments/test.json +96 -27
  19. package/dist/consts/environments/testnet2.json +610 -66
  20. package/dist/consts/metamask.d.ts +17 -0
  21. package/dist/consts/metamask.d.ts.map +1 -0
  22. package/dist/consts/metamask.js +50 -0
  23. package/dist/consts/metamask.js.map +1 -0
  24. package/dist/contracts.d.ts +1 -2
  25. package/dist/contracts.d.ts.map +1 -1
  26. package/dist/contracts.js.map +1 -1
  27. package/dist/core/HyperlaneCore.d.ts +1232 -182
  28. package/dist/core/HyperlaneCore.d.ts.map +1 -1
  29. package/dist/core/HyperlaneCore.js +30 -20
  30. package/dist/core/HyperlaneCore.js.map +1 -1
  31. package/dist/core/TestCoreApp.d.ts +12 -6
  32. package/dist/core/TestCoreApp.d.ts.map +1 -1
  33. package/dist/core/TestCoreApp.js +9 -7
  34. package/dist/core/TestCoreApp.js.map +1 -1
  35. package/dist/core/TestCoreDeployer.d.ts +5 -5
  36. package/dist/core/TestCoreDeployer.d.ts.map +1 -1
  37. package/dist/core/TestCoreDeployer.js +44 -12
  38. package/dist/core/TestCoreDeployer.js.map +1 -1
  39. package/dist/core/contracts.d.ts +22 -10
  40. package/dist/core/contracts.d.ts.map +1 -1
  41. package/dist/core/contracts.js +8 -8
  42. package/dist/core/contracts.js.map +1 -1
  43. package/dist/core/events.d.ts +2 -1
  44. package/dist/core/events.d.ts.map +1 -1
  45. package/dist/core/message.d.ts +21 -6
  46. package/dist/core/message.d.ts.map +1 -1
  47. package/dist/core/message.js +34 -9
  48. package/dist/core/message.js.map +1 -1
  49. package/dist/core/testHyperlaneDeploy.hardhat-test.js +6 -6
  50. package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +1 -1
  51. package/dist/deploy/HyperlaneAppChecker.d.ts +2 -2
  52. package/dist/deploy/HyperlaneAppChecker.d.ts.map +1 -1
  53. package/dist/deploy/HyperlaneAppChecker.js +3 -7
  54. package/dist/deploy/HyperlaneAppChecker.js.map +1 -1
  55. package/dist/deploy/HyperlaneDeployer.d.ts +12 -7
  56. package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
  57. package/dist/deploy/HyperlaneDeployer.js +40 -65
  58. package/dist/deploy/HyperlaneDeployer.js.map +1 -1
  59. package/dist/deploy/core/HyperlaneCoreChecker.d.ts +7 -3
  60. package/dist/deploy/core/HyperlaneCoreChecker.d.ts.map +1 -1
  61. package/dist/deploy/core/HyperlaneCoreChecker.js +127 -41
  62. package/dist/deploy/core/HyperlaneCoreChecker.js.map +1 -1
  63. package/dist/deploy/core/HyperlaneCoreDeployer.d.ts +19 -16
  64. package/dist/deploy/core/HyperlaneCoreDeployer.d.ts.map +1 -1
  65. package/dist/deploy/core/HyperlaneCoreDeployer.js +71 -50
  66. package/dist/deploy/core/HyperlaneCoreDeployer.js.map +1 -1
  67. package/dist/deploy/core/types.d.ts +28 -15
  68. package/dist/deploy/core/types.d.ts.map +1 -1
  69. package/dist/deploy/core/types.js +12 -8
  70. package/dist/deploy/core/types.js.map +1 -1
  71. package/dist/deploy/middleware/LiquidityLayerApp.d.ts +12 -4
  72. package/dist/deploy/middleware/LiquidityLayerApp.d.ts.map +1 -1
  73. package/dist/deploy/middleware/LiquidityLayerApp.js +87 -14
  74. package/dist/deploy/middleware/LiquidityLayerApp.js.map +1 -1
  75. package/dist/deploy/middleware/LiquidityLayerRouterDeployer.d.ts +17 -6
  76. package/dist/deploy/middleware/LiquidityLayerRouterDeployer.d.ts.map +1 -1
  77. package/dist/deploy/middleware/LiquidityLayerRouterDeployer.js +50 -20
  78. package/dist/deploy/middleware/LiquidityLayerRouterDeployer.js.map +1 -1
  79. package/dist/deploy/middleware/TokenBridgeApp.d.ts +26 -0
  80. package/dist/deploy/middleware/TokenBridgeApp.d.ts.map +1 -0
  81. package/dist/deploy/middleware/TokenBridgeApp.js +115 -0
  82. package/dist/deploy/middleware/TokenBridgeApp.js.map +1 -0
  83. package/dist/deploy/middleware/TokenBridgeRouterDeployer.d.ts +33 -0
  84. package/dist/deploy/middleware/TokenBridgeRouterDeployer.d.ts.map +1 -0
  85. package/dist/deploy/middleware/TokenBridgeRouterDeployer.js +93 -0
  86. package/dist/deploy/middleware/TokenBridgeRouterDeployer.js.map +1 -0
  87. package/dist/deploy/middleware/V2CompatibilityMiddlewareDeployer.d.ts +17 -0
  88. package/dist/deploy/middleware/V2CompatibilityMiddlewareDeployer.d.ts.map +1 -0
  89. package/dist/deploy/middleware/V2CompatibilityMiddlewareDeployer.js +42 -0
  90. package/dist/deploy/middleware/V2CompatibilityMiddlewareDeployer.js.map +1 -0
  91. package/dist/deploy/middleware/deploy.d.ts.map +1 -1
  92. package/dist/deploy/middleware/deploy.js +2 -10
  93. package/dist/deploy/middleware/deploy.js.map +1 -1
  94. package/dist/deploy/proxy.d.ts +6 -7
  95. package/dist/deploy/proxy.d.ts.map +1 -1
  96. package/dist/deploy/proxy.js +10 -18
  97. package/dist/deploy/proxy.js.map +1 -1
  98. package/dist/deploy/router/HyperlaneRouterChecker.d.ts +1 -0
  99. package/dist/deploy/router/HyperlaneRouterChecker.d.ts.map +1 -1
  100. package/dist/deploy/router/HyperlaneRouterChecker.js +9 -0
  101. package/dist/deploy/router/HyperlaneRouterChecker.js.map +1 -1
  102. package/dist/deploy/router/HyperlaneRouterDeployer.d.ts.map +1 -1
  103. package/dist/deploy/router/HyperlaneRouterDeployer.js +15 -17
  104. package/dist/deploy/router/HyperlaneRouterDeployer.js.map +1 -1
  105. package/dist/domains.d.ts +1 -1
  106. package/dist/domains.d.ts.map +1 -1
  107. package/dist/events.js +16 -16
  108. package/dist/events.js.map +1 -1
  109. package/dist/gas/calculator.d.ts.map +1 -1
  110. package/dist/gas/calculator.js +6 -11
  111. package/dist/gas/calculator.js.map +1 -1
  112. package/dist/gas/calculator.test.js +9 -6
  113. package/dist/gas/calculator.test.js.map +1 -1
  114. package/dist/index.d.ts +11 -10
  115. package/dist/index.d.ts.map +1 -1
  116. package/dist/index.js +8 -11
  117. package/dist/index.js.map +1 -1
  118. package/dist/middleware/accounts.test.d.ts +2 -0
  119. package/dist/middleware/accounts.test.d.ts.map +1 -0
  120. package/dist/middleware/accounts.test.js +61 -0
  121. package/dist/middleware/accounts.test.js.map +1 -0
  122. package/dist/middleware/liquidity-layer.hardhat-test.js +47 -20
  123. package/dist/middleware/liquidity-layer.hardhat-test.js.map +1 -1
  124. package/dist/middleware/queries.test.d.ts +2 -0
  125. package/dist/middleware/queries.test.d.ts.map +1 -0
  126. package/dist/middleware/queries.test.js +69 -0
  127. package/dist/middleware/queries.test.js.map +1 -0
  128. package/dist/middleware/tokenbridge.hardhat-test.d.ts +2 -0
  129. package/dist/middleware/tokenbridge.hardhat-test.d.ts.map +1 -0
  130. package/dist/middleware/tokenbridge.hardhat-test.js +89 -0
  131. package/dist/middleware/tokenbridge.hardhat-test.js.map +1 -0
  132. package/dist/middleware.d.ts +6 -1
  133. package/dist/middleware.d.ts.map +1 -1
  134. package/dist/middleware.js +5 -1
  135. package/dist/middleware.js.map +1 -1
  136. package/dist/providers/ChainConnection.d.ts +1 -1
  137. package/dist/providers/ChainConnection.d.ts.map +1 -1
  138. package/dist/providers/ChainConnection.js +3 -2
  139. package/dist/providers/ChainConnection.js.map +1 -1
  140. package/dist/providers/MultiProvider.d.ts.map +1 -1
  141. package/dist/providers/MultiProvider.js +1 -1
  142. package/dist/providers/MultiProvider.js.map +1 -1
  143. package/dist/proxy.d.ts +4 -2
  144. package/dist/proxy.d.ts.map +1 -1
  145. package/dist/proxy.js +1 -1
  146. package/dist/proxy.js.map +1 -1
  147. package/dist/router.d.ts +1 -2
  148. package/dist/router.d.ts.map +1 -1
  149. package/dist/test/envSubsetDeployer/app.js +2 -2
  150. package/dist/test/envSubsetDeployer/app.js.map +1 -1
  151. package/dist/tokenBridge.d.ts +10 -0
  152. package/dist/tokenBridge.d.ts.map +1 -0
  153. package/dist/tokenBridge.js +9 -0
  154. package/dist/tokenBridge.js.map +1 -0
  155. package/dist/types.d.ts +3 -3
  156. package/dist/types.d.ts.map +1 -1
  157. package/dist/utils/objects.d.ts +1 -0
  158. package/dist/utils/objects.d.ts.map +1 -1
  159. package/dist/utils/objects.js +5 -1
  160. package/dist/utils/objects.js.map +1 -1
  161. package/package.json +7 -6
@@ -0,0 +1,115 @@
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.TokenBridgeApp = void 0;
16
+ const cross_fetch_1 = __importDefault(require("cross-fetch"));
17
+ const ethers_1 = require("ethers");
18
+ const core_1 = require("@hyperlane-xyz/core");
19
+ const HyperlaneApp_1 = require("../../HyperlaneApp");
20
+ const chains_1 = require("../../consts/chains");
21
+ const objects_1 = require("../../utils/objects");
22
+ const TokenBridgeRouterDeployer_1 = require("./TokenBridgeRouterDeployer");
23
+ const CircleBridgeInterface = core_1.ICircleBridge__factory.createInterface();
24
+ const CircleBridgeAdapterInterface = core_1.CircleBridgeAdapter__factory.createInterface();
25
+ const BridgedTokenTopic = CircleBridgeAdapterInterface.getEventTopic(CircleBridgeAdapterInterface.getEvent('BridgedToken'));
26
+ class TokenBridgeApp extends HyperlaneApp_1.HyperlaneApp {
27
+ constructor(contractsMap, multiProvider, bridgeAdapterConfigs) {
28
+ super(contractsMap, multiProvider);
29
+ this.contractsMap = contractsMap;
30
+ this.multiProvider = multiProvider;
31
+ this.bridgeAdapterConfigs = bridgeAdapterConfigs;
32
+ }
33
+ circleBridgeAdapterConfig() {
34
+ return (0, objects_1.objMap)(this.bridgeAdapterConfigs, (_chain, config) => config.find((_) => _.type === TokenBridgeRouterDeployer_1.BridgeAdapterType.Circle));
35
+ }
36
+ fetchCircleMessageTransactions(chain) {
37
+ return __awaiter(this, void 0, void 0, function* () {
38
+ const cc = this.multiProvider.getChainConnection(chain);
39
+ const params = new URLSearchParams({
40
+ module: 'logs',
41
+ action: 'getLogs',
42
+ address: this.getContracts(chain).circleBridgeAdapter.address,
43
+ topic0: BridgedTokenTopic,
44
+ });
45
+ const req = yield (0, cross_fetch_1.default)(`${cc.getApiUrl()}?${params}`);
46
+ const response = yield req.json();
47
+ return response.result.map((_) => _.transactionHash).flat();
48
+ });
49
+ }
50
+ parseCircleMessages(chain, txHash) {
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ const connection = this.multiProvider.getChainConnection(chain);
53
+ const receipt = yield connection.provider.getTransactionReceipt(txHash);
54
+ const matchingLogs = receipt.logs
55
+ .map((_) => {
56
+ try {
57
+ return [CircleBridgeInterface.parseLog(_)];
58
+ }
59
+ catch (_a) {
60
+ try {
61
+ return [CircleBridgeAdapterInterface.parseLog(_)];
62
+ }
63
+ catch (_b) {
64
+ return [];
65
+ }
66
+ }
67
+ })
68
+ .flat();
69
+ if (matchingLogs.length == 0)
70
+ return [];
71
+ const message = matchingLogs.find((_) => _.name === 'MessageSent').args
72
+ .message;
73
+ const nonce = matchingLogs.find((_) => _.name === 'BridgedToken').args
74
+ .nonce;
75
+ const remoteChain = message.chain === chains_1.Chains.fuji ? chains_1.Chains.goerli : chains_1.Chains.fuji;
76
+ return [
77
+ {
78
+ chain,
79
+ // @ts-ignore
80
+ remoteChain,
81
+ txHash,
82
+ message,
83
+ nonce,
84
+ domain: 0,
85
+ nonceHash: ethers_1.ethers.utils.solidityKeccak256(['uint32', 'uint256'], [0, nonce]),
86
+ },
87
+ ];
88
+ });
89
+ }
90
+ attemptCircleAttestationSubmission(message) {
91
+ return __awaiter(this, void 0, void 0, function* () {
92
+ const connection = this.multiProvider.getChainConnection(message.remoteChain);
93
+ const transmitter = core_1.ICircleMessageTransmitter__factory.connect(this.circleBridgeAdapterConfig()[message.remoteChain]
94
+ .messageTransmitterAddress, connection.signer);
95
+ const alreadyProcessed = yield transmitter.usedNonces(message.nonceHash);
96
+ if (alreadyProcessed) {
97
+ console.log(`Message sent on ${message.txHash} was already processed`);
98
+ return;
99
+ }
100
+ const messageHash = ethers_1.ethers.utils.keccak256(message.message);
101
+ const attestationsB = yield (0, cross_fetch_1.default)(`https://iris-api-sandbox.circle.com/attestations/${messageHash}`);
102
+ const attestations = yield attestationsB.json();
103
+ if (attestations.status !== 'complete') {
104
+ console.log(`Attestations not available for message nonce ${message.nonce} on ${message.txHash}`);
105
+ return;
106
+ }
107
+ console.log(`Ready to submit attestations for message ${message.nonce}`);
108
+ const tx = yield transmitter.receiveMessage(message.message, attestations.attestation);
109
+ console.log(`Submitted attestations in ${yield connection.getTxUrl(tx)}`);
110
+ yield connection.handleTx(tx);
111
+ });
112
+ }
113
+ }
114
+ exports.TokenBridgeApp = TokenBridgeApp;
115
+ //# sourceMappingURL=TokenBridgeApp.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenBridgeApp.js","sourceRoot":"","sources":["../../../src/deploy/middleware/TokenBridgeApp.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,33 @@
1
+ import { CircleBridgeAdapter, TokenBridgeRouter } from '@hyperlane-xyz/core';
2
+ import { HyperlaneCore } from '../../core/HyperlaneCore';
3
+ import { TokenBridgeContracts, TokenBridgeFactories } from '../../middleware';
4
+ import { MultiProvider } from '../../providers/MultiProvider';
5
+ import { ChainMap, ChainName } from '../../types';
6
+ import { HyperlaneRouterDeployer } from '../router/HyperlaneRouterDeployer';
7
+ import { RouterConfig } from '../router/types';
8
+ export declare enum BridgeAdapterType {
9
+ Circle = "Circle"
10
+ }
11
+ export interface CircleBridgeAdapterConfig {
12
+ type: BridgeAdapterType.Circle;
13
+ circleBridgeAddress: string;
14
+ messageTransmitterAddress: string;
15
+ usdcAddress: string;
16
+ circleDomainMapping: {
17
+ hyperlaneDomain: number;
18
+ circleDomain: number;
19
+ }[];
20
+ }
21
+ export declare type BridgeAdapterConfig = CircleBridgeAdapterConfig;
22
+ export declare type TokenBridgeConfig = RouterConfig & {
23
+ bridgeAdapterConfigs: BridgeAdapterConfig[];
24
+ };
25
+ export declare class TokenBridgeDeployer<Chain extends ChainName> extends HyperlaneRouterDeployer<Chain, TokenBridgeConfig, TokenBridgeContracts, TokenBridgeFactories> {
26
+ protected core: HyperlaneCore<Chain>;
27
+ protected create2salt: string;
28
+ constructor(multiProvider: MultiProvider<Chain>, configMap: ChainMap<Chain, TokenBridgeConfig>, core: HyperlaneCore<Chain>, create2salt?: string);
29
+ enrollRemoteRouters(contractsMap: ChainMap<Chain, TokenBridgeContracts>): Promise<void>;
30
+ deployContracts(chain: Chain, config: TokenBridgeConfig): Promise<TokenBridgeContracts>;
31
+ deployCircleBridgeAdapter(chain: Chain, adapterConfig: CircleBridgeAdapterConfig, owner: string, router: TokenBridgeRouter): Promise<CircleBridgeAdapter>;
32
+ }
33
+ //# sourceMappingURL=TokenBridgeRouterDeployer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenBridgeRouterDeployer.d.ts","sourceRoot":"","sources":["../../../src/deploy/middleware/TokenBridgeRouterDeployer.ts"],"names":[],"mappings":"AAEA,OAAO,EACL,mBAAmB,EAEnB,iBAAiB,EAElB,MAAM,qBAAqB,CAAC;AAE7B,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,oBAAoB,EACpB,oBAAoB,EAErB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,oBAAY,iBAAiB;IAC3B,MAAM,WAAW;CAClB;AAED,MAAM,WAAW,yBAAyB;IACxC,IAAI,EAAE,iBAAiB,CAAC,MAAM,CAAC;IAC/B,mBAAmB,EAAE,MAAM,CAAC;IAC5B,yBAAyB,EAAE,MAAM,CAAC;IAClC,WAAW,EAAE,MAAM,CAAC;IACpB,mBAAmB,EAAE;QACnB,eAAe,EAAE,MAAM,CAAC;QACxB,YAAY,EAAE,MAAM,CAAC;KACtB,EAAE,CAAC;CACL;AAED,oBAAY,mBAAmB,GAAG,yBAAyB,CAAC;AAE5D,oBAAY,iBAAiB,GAAG,YAAY,GAAG;IAC7C,oBAAoB,EAAE,mBAAmB,EAAE,CAAC;CAC7C,CAAC;AAEF,qBAAa,mBAAmB,CAC9B,KAAK,SAAS,SAAS,CACvB,SAAQ,uBAAuB,CAC/B,KAAK,EACL,iBAAiB,EACjB,oBAAoB,EACpB,oBAAoB,CACrB;IAIG,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;IACpC,SAAS,CAAC,WAAW;gBAHrB,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,iBAAiB,CAAC,EACnC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,EAC1B,WAAW,SAA4B;IAK7C,mBAAmB,CACvB,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,oBAAoB,CAAC,GAClD,OAAO,CAAC,IAAI,CAAC;IAcV,eAAe,CACnB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,oBAAoB,CAAC;IA+B1B,yBAAyB,CAC7B,KAAK,EAAE,KAAK,EACZ,aAAa,EAAE,yBAAyB,EACxC,KAAK,EAAE,MAAM,EACb,MAAM,EAAE,iBAAiB,GACxB,OAAO,CAAC,mBAAmB,CAAC;CA2DhC"}
@@ -0,0 +1,93 @@
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.TokenBridgeDeployer = exports.BridgeAdapterType = void 0;
13
+ const ethers_1 = require("ethers");
14
+ const core_1 = require("@hyperlane-xyz/core");
15
+ const middleware_1 = require("../../middleware");
16
+ const objects_1 = require("../../utils/objects");
17
+ const HyperlaneRouterDeployer_1 = require("../router/HyperlaneRouterDeployer");
18
+ var BridgeAdapterType;
19
+ (function (BridgeAdapterType) {
20
+ BridgeAdapterType["Circle"] = "Circle";
21
+ })(BridgeAdapterType = exports.BridgeAdapterType || (exports.BridgeAdapterType = {}));
22
+ class TokenBridgeDeployer extends HyperlaneRouterDeployer_1.HyperlaneRouterDeployer {
23
+ constructor(multiProvider, configMap, core, create2salt = 'TokenBridgeDeployerSalt') {
24
+ super(multiProvider, configMap, middleware_1.tokenBridgeFactories, {});
25
+ this.core = core;
26
+ this.create2salt = create2salt;
27
+ }
28
+ enrollRemoteRouters(contractsMap) {
29
+ const _super = Object.create(null, {
30
+ enrollRemoteRouters: { get: () => super.enrollRemoteRouters }
31
+ });
32
+ return __awaiter(this, void 0, void 0, function* () {
33
+ // Enroll the TokenBridgeRouter with each other
34
+ yield _super.enrollRemoteRouters.call(this, contractsMap);
35
+ // Enroll the circle adapters with each other
36
+ yield _super.enrollRemoteRouters.call(this, (0, objects_1.objMap)(contractsMap, (_chain, contracts) => ({
37
+ router: contracts.circleBridgeAdapter,
38
+ })));
39
+ });
40
+ }
41
+ // Custom contract deployment logic can go here
42
+ // If no custom logic is needed, call deployContract for the router
43
+ deployContracts(chain, config) {
44
+ return __awaiter(this, void 0, void 0, function* () {
45
+ const initCalldata = core_1.TokenBridgeRouter__factory.createInterface().encodeFunctionData('initialize', [config.owner, config.connectionManager, config.interchainGasPaymaster]);
46
+ const router = yield this.deployContract(chain, 'router', [], {
47
+ create2Salt: this.create2salt,
48
+ initCalldata,
49
+ });
50
+ const bridgeAdapters = {};
51
+ for (const adapterConfig of config.bridgeAdapterConfigs) {
52
+ if (adapterConfig.type === BridgeAdapterType.Circle) {
53
+ bridgeAdapters.circleBridgeAdapter =
54
+ yield this.deployCircleBridgeAdapter(chain, adapterConfig, config.owner, router);
55
+ }
56
+ }
57
+ return Object.assign(Object.assign({}, bridgeAdapters), { router });
58
+ });
59
+ }
60
+ deployCircleBridgeAdapter(chain, adapterConfig, owner, router) {
61
+ return __awaiter(this, void 0, void 0, function* () {
62
+ const cc = this.multiProvider.getChainConnection(chain);
63
+ const initCalldata = core_1.CircleBridgeAdapter__factory.createInterface().encodeFunctionData('initialize', [
64
+ owner,
65
+ adapterConfig.circleBridgeAddress,
66
+ adapterConfig.messageTransmitterAddress,
67
+ router.address,
68
+ ]);
69
+ const circleBridgeAdapter = yield this.deployContract(chain, 'circleBridgeAdapter', [], {
70
+ create2Salt: this.create2salt,
71
+ initCalldata,
72
+ });
73
+ if ((yield circleBridgeAdapter.tokenSymbolToAddress('USDC')) ===
74
+ ethers_1.ethers.constants.AddressZero) {
75
+ this.logger(`Set USDC token contract`);
76
+ yield cc.handleTx(circleBridgeAdapter.addToken(adapterConfig.usdcAddress, 'USDC'));
77
+ }
78
+ // Set domain mappings
79
+ for (const { circleDomain, hyperlaneDomain, } of adapterConfig.circleDomainMapping) {
80
+ const expectedCircleDomain = yield circleBridgeAdapter.hyperlaneDomainToCircleDomain(hyperlaneDomain);
81
+ if (expectedCircleDomain === circleDomain)
82
+ continue;
83
+ this.logger(`Set circle domain ${circleDomain} for hyperlane domain ${hyperlaneDomain}`);
84
+ yield cc.handleTx(circleBridgeAdapter.addDomain(hyperlaneDomain, circleDomain));
85
+ }
86
+ this.logger('Set CircleTokenBridgeAdapter on Router');
87
+ yield cc.handleTx(router.setTokenBridgeAdapter(adapterConfig.type, circleBridgeAdapter.address));
88
+ return circleBridgeAdapter;
89
+ });
90
+ }
91
+ }
92
+ exports.TokenBridgeDeployer = TokenBridgeDeployer;
93
+ //# sourceMappingURL=TokenBridgeRouterDeployer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"TokenBridgeRouterDeployer.js","sourceRoot":"","sources":["../../../src/deploy/middleware/TokenBridgeRouterDeployer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,17 @@
1
+ import { HyperlaneCore } from '../../core/HyperlaneCore';
2
+ import { V2CompatibilityContracts, V2CompatibilityFactories } from '../../middleware';
3
+ import { MultiProvider } from '../../providers/MultiProvider';
4
+ import { ChainMap, ChainName } from '../../types';
5
+ import { HyperlaneRouterDeployer } from '../router/HyperlaneRouterDeployer';
6
+ import { RouterConfig } from '../router/types';
7
+ export declare type V2CompatibilityConfig = RouterConfig & {
8
+ v1Domains: number[];
9
+ v2Domains: number[];
10
+ };
11
+ export declare class V2CompatibilityRouterDeployer<Chain extends ChainName> extends HyperlaneRouterDeployer<Chain, V2CompatibilityConfig, V2CompatibilityContracts, V2CompatibilityFactories> {
12
+ protected core: HyperlaneCore<Chain>;
13
+ protected create2salt: string;
14
+ constructor(multiProvider: MultiProvider<Chain>, configMap: ChainMap<Chain, V2CompatibilityConfig>, core: HyperlaneCore<Chain>, create2salt?: string);
15
+ deployContracts(chain: Chain, config: V2CompatibilityConfig): Promise<V2CompatibilityContracts>;
16
+ }
17
+ //# sourceMappingURL=V2CompatibilityMiddlewareDeployer.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"V2CompatibilityMiddlewareDeployer.d.ts","sourceRoot":"","sources":["../../../src/deploy/middleware/V2CompatibilityMiddlewareDeployer.ts"],"names":[],"mappings":"AAEA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,wBAAwB,EACxB,wBAAwB,EAEzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,oBAAY,qBAAqB,GAAG,YAAY,GAAG;IACjD,SAAS,EAAE,MAAM,EAAE,CAAC;IACpB,SAAS,EAAE,MAAM,EAAE,CAAC;CACrB,CAAC;AAEF,qBAAa,6BAA6B,CACxC,KAAK,SAAS,SAAS,CACvB,SAAQ,uBAAuB,CAC/B,KAAK,EACL,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,CACzB;IAIG,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;IACpC,SAAS,CAAC,WAAW;gBAHrB,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,EACvC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,EAC1B,WAAW,SAAa;IAO9B,eAAe,CACnB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,wBAAwB,CAAC;CAoBrC"}
@@ -0,0 +1,42 @@
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.V2CompatibilityRouterDeployer = void 0;
13
+ const core_1 = require("@hyperlane-xyz/core");
14
+ const middleware_1 = require("../../middleware");
15
+ const HyperlaneRouterDeployer_1 = require("../router/HyperlaneRouterDeployer");
16
+ class V2CompatibilityRouterDeployer extends HyperlaneRouterDeployer_1.HyperlaneRouterDeployer {
17
+ constructor(multiProvider, configMap, core, create2salt = 'asdasdsd') {
18
+ super(multiProvider, configMap, middleware_1.v2CompatibilityFactories, {});
19
+ this.core = core;
20
+ this.create2salt = create2salt;
21
+ }
22
+ // Custom contract deployment logic can go here
23
+ // If no custom logic is needed, call deployContract for the router
24
+ deployContracts(chain, config) {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ const initCalldata = core_1.V2CompatibilityRouter__factory.createInterface().encodeFunctionData('initialize', [config.owner, config.connectionManager, config.interchainGasPaymaster]);
27
+ const router = yield this.deployContract(chain, 'router', [], {
28
+ create2Salt: this.create2salt + 'router',
29
+ initCalldata,
30
+ });
31
+ this.logger(`Set domain mapping`, config.v1Domains, config.v2Domains);
32
+ yield this.multiProvider
33
+ .getChainConnection(chain)
34
+ .handleTx(router.mapDomains(config.v1Domains, config.v2Domains));
35
+ return {
36
+ router,
37
+ };
38
+ });
39
+ }
40
+ }
41
+ exports.V2CompatibilityRouterDeployer = V2CompatibilityRouterDeployer;
42
+ //# sourceMappingURL=V2CompatibilityMiddlewareDeployer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"V2CompatibilityMiddlewareDeployer.js","sourceRoot":"","sources":["../../../src/deploy/middleware/V2CompatibilityMiddlewareDeployer.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAAqE;AAGrE,iDAI0B;AAG1B,+EAA4E;AAQ5E,MAAa,6BAEX,SAAQ,iDAKT;IACC,YACE,aAAmC,EACnC,SAAiD,EACvC,IAA0B,EAC1B,cAAc,UAAU;QAElC,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,qCAAwB,EAAE,EAAE,CAAC,CAAC;QAHpD,SAAI,GAAJ,IAAI,CAAsB;QAC1B,gBAAW,GAAX,WAAW,CAAa;IAGpC,CAAC;IAED,+CAA+C;IAC/C,mEAAmE;IAC7D,eAAe,CACnB,KAAY,EACZ,MAA6B;;YAE7B,MAAM,YAAY,GAChB,qCAA8B,CAAC,eAAe,EAAE,CAAC,kBAAkB,CACjE,YAAY,EACZ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,sBAAsB,CAAC,CACxE,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAC5D,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,QAAQ;gBACxC,YAAY;aACb,CAAC,CAAC;YAEH,IAAI,CAAC,MAAM,CAAC,oBAAoB,EAAE,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC;YACtE,MAAM,IAAI,CAAC,aAAa;iBACrB,kBAAkB,CAAC,KAAK,CAAC;iBACzB,QAAQ,CAAC,MAAM,CAAC,UAAU,CAAC,MAAM,CAAC,SAAS,EAAE,MAAM,CAAC,SAAS,CAAC,CAAC,CAAC;YAEnE,OAAO;gBACL,MAAM;aACP,CAAC;QACJ,CAAC;KAAA;CACF;AA1CD,sEA0CC"}
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/deploy/middleware/deploy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EAGzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,oBAAY,uBAAuB,GAAG,YAAY,CAAC;AAEnD,qBAAa,yBAAyB,CACpC,KAAK,SAAS,SAAS,CACvB,SAAQ,uBAAuB,CAC/B,KAAK,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,CAC3B;IAIG,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;IACpC,SAAS,CAAC,WAAW;gBAHrB,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,EACzC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,EAC1B,WAAW,SAAa;IAO9B,eAAe,CACnB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,0BAA0B,CAAC;CAkBvC;AAED,oBAAY,qBAAqB,GAAG,YAAY,CAAC;AAEjD,qBAAa,uBAAuB,CAClC,KAAK,SAAS,SAAS,CACvB,SAAQ,uBAAuB,CAC/B,KAAK,EACL,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,CACzB;IAIG,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;IAEpC,SAAS,CAAC,WAAW;gBAJrB,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,EACvC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,EAE1B,WAAW,SAAa;IAO9B,eAAe,CACnB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,wBAAwB,CAAC;CAkBrC"}
1
+ {"version":3,"file":"deploy.d.ts","sourceRoot":"","sources":["../../../src/deploy/middleware/deploy.ts"],"names":[],"mappings":"AAKA,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EACL,0BAA0B,EAC1B,0BAA0B,EAC1B,wBAAwB,EACxB,wBAAwB,EAGzB,MAAM,kBAAkB,CAAC;AAC1B,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAClD,OAAO,EAAE,uBAAuB,EAAE,MAAM,mCAAmC,CAAC;AAC5E,OAAO,EAAE,YAAY,EAAE,MAAM,iBAAiB,CAAC;AAE/C,oBAAY,uBAAuB,GAAG,YAAY,CAAC;AAEnD,qBAAa,yBAAyB,CACpC,KAAK,SAAS,SAAS,CACvB,SAAQ,uBAAuB,CAC/B,KAAK,EACL,uBAAuB,EACvB,0BAA0B,EAC1B,0BAA0B,CAC3B;IAIG,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;IACpC,SAAS,CAAC,WAAW;gBAHrB,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,uBAAuB,CAAC,EACzC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,EAC1B,WAAW,SAAa;IAO9B,eAAe,CACnB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,uBAAuB,GAC9B,OAAO,CAAC,0BAA0B,CAAC;CAcvC;AAED,oBAAY,qBAAqB,GAAG,YAAY,CAAC;AAEjD,qBAAa,uBAAuB,CAClC,KAAK,SAAS,SAAS,CACvB,SAAQ,uBAAuB,CAC/B,KAAK,EACL,qBAAqB,EACrB,wBAAwB,EACxB,wBAAwB,CACzB;IAIG,SAAS,CAAC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;IAEpC,SAAS,CAAC,WAAW;gBAJrB,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,qBAAqB,CAAC,EACvC,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC,EAE1B,WAAW,SAAa;IAO9B,eAAe,CACnB,KAAK,EAAE,KAAK,EACZ,MAAM,EAAE,qBAAqB,GAC5B,OAAO,CAAC,wBAAwB,CAAC;CAcrC"}
@@ -23,11 +23,7 @@ class InterchainAccountDeployer extends HyperlaneRouterDeployer_1.HyperlaneRoute
23
23
  // If no custom logic is needed, call deployContract for the router
24
24
  deployContracts(chain, config) {
25
25
  return __awaiter(this, void 0, void 0, function* () {
26
- const initCalldata = core_1.InterchainAccountRouter__factory.createInterface().encodeFunctionData('initialize', [
27
- config.mailbox,
28
- config.interchainGasPaymaster,
29
- config.interchainSecurityModule,
30
- ]);
26
+ const initCalldata = core_1.InterchainAccountRouter__factory.createInterface().encodeFunctionData('initialize', [config.owner, config.connectionManager, config.interchainGasPaymaster]);
31
27
  const router = yield this.deployContract(chain, 'router', [], {
32
28
  create2Salt: this.create2salt + 'router',
33
29
  initCalldata,
@@ -51,11 +47,7 @@ class InterchainQueryDeployer extends HyperlaneRouterDeployer_1.HyperlaneRouterD
51
47
  // If no custom logic is needed, call deployContract for the router
52
48
  deployContracts(chain, config) {
53
49
  return __awaiter(this, void 0, void 0, function* () {
54
- const initCalldata = core_1.InterchainQueryRouter__factory.createInterface().encodeFunctionData('initialize(address,address,address)', [
55
- config.mailbox,
56
- config.interchainGasPaymaster,
57
- config.interchainSecurityModule,
58
- ]);
50
+ const initCalldata = core_1.InterchainQueryRouter__factory.createInterface().encodeFunctionData('initialize', [config.owner, config.connectionManager, config.interchainGasPaymaster]);
59
51
  const router = yield this.deployContract(chain, 'router', [], {
60
52
  create2Salt: this.create2salt + 'router',
61
53
  initCalldata,
@@ -1 +1 @@
1
- {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/deploy/middleware/deploy.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAG6B;AAG7B,iDAO0B;AAG1B,+EAA4E;AAK5E,MAAa,yBAEX,SAAQ,iDAKT;IACC,YACE,aAAmC,EACnC,SAAmD,EACzC,IAA0B,EAC1B,cAAc,UAAU;QAElC,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,uCAA0B,EAAE,EAAE,CAAC,CAAC;QAHtD,SAAI,GAAJ,IAAI,CAAsB;QAC1B,gBAAW,GAAX,WAAW,CAAa;IAGpC,CAAC;IAED,+CAA+C;IAC/C,mEAAmE;IAC7D,eAAe,CACnB,KAAY,EACZ,MAA+B;;YAE/B,MAAM,YAAY,GAChB,uCAAgC,CAAC,eAAe,EAAE,CAAC,kBAAkB,CACnE,YAAY,EACZ;gBACE,MAAM,CAAC,OAAO;gBACd,MAAM,CAAC,sBAAsB;gBAC7B,MAAM,CAAC,wBAAwB;aAChC,CACF,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAC5D,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,QAAQ;gBACxC,YAAY;aACb,CAAC,CAAC;YACH,OAAO;gBACL,MAAM;aACP,CAAC;QACJ,CAAC;KAAA;CACF;AAxCD,8DAwCC;AAID,MAAa,uBAEX,SAAQ,iDAKT;IACC,YACE,aAAmC,EACnC,SAAiD,EACvC,IAA0B;IACpC,0DAA0D;IAChD,cAAc,UAAU;QAElC,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,qCAAwB,EAAE,EAAE,CAAC,CAAC;QAJpD,SAAI,GAAJ,IAAI,CAAsB;QAE1B,gBAAW,GAAX,WAAW,CAAa;IAGpC,CAAC;IAED,+CAA+C;IAC/C,mEAAmE;IAC7D,eAAe,CACnB,KAAY,EACZ,MAA6B;;YAE7B,MAAM,YAAY,GAChB,qCAA8B,CAAC,eAAe,EAAE,CAAC,kBAAkB,CACjE,qCAAqC,EACrC;gBACE,MAAM,CAAC,OAAO;gBACd,MAAM,CAAC,sBAAsB;gBAC7B,MAAM,CAAC,wBAAwB;aAChC,CACF,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAC5D,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,QAAQ;gBACxC,YAAY;aACb,CAAC,CAAC;YACH,OAAO;gBACL,MAAM;aACP,CAAC;QACJ,CAAC;KAAA;CACF;AAzCD,0DAyCC"}
1
+ {"version":3,"file":"deploy.js","sourceRoot":"","sources":["../../../src/deploy/middleware/deploy.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,8CAG6B;AAG7B,iDAO0B;AAG1B,+EAA4E;AAK5E,MAAa,yBAEX,SAAQ,iDAKT;IACC,YACE,aAAmC,EACnC,SAAmD,EACzC,IAA0B,EAC1B,cAAc,UAAU;QAElC,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,uCAA0B,EAAE,EAAE,CAAC,CAAC;QAHtD,SAAI,GAAJ,IAAI,CAAsB;QAC1B,gBAAW,GAAX,WAAW,CAAa;IAGpC,CAAC;IAED,+CAA+C;IAC/C,mEAAmE;IAC7D,eAAe,CACnB,KAAY,EACZ,MAA+B;;YAE/B,MAAM,YAAY,GAChB,uCAAgC,CAAC,eAAe,EAAE,CAAC,kBAAkB,CACnE,YAAY,EACZ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,sBAAsB,CAAC,CACxE,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAC5D,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,QAAQ;gBACxC,YAAY;aACb,CAAC,CAAC;YACH,OAAO;gBACL,MAAM;aACP,CAAC;QACJ,CAAC;KAAA;CACF;AApCD,8DAoCC;AAID,MAAa,uBAEX,SAAQ,iDAKT;IACC,YACE,aAAmC,EACnC,SAAiD,EACvC,IAA0B;IACpC,0DAA0D;IAChD,cAAc,UAAU;QAElC,KAAK,CAAC,aAAa,EAAE,SAAS,EAAE,qCAAwB,EAAE,EAAE,CAAC,CAAC;QAJpD,SAAI,GAAJ,IAAI,CAAsB;QAE1B,gBAAW,GAAX,WAAW,CAAa;IAGpC,CAAC;IAED,+CAA+C;IAC/C,mEAAmE;IAC7D,eAAe,CACnB,KAAY,EACZ,MAA6B;;YAE7B,MAAM,YAAY,GAChB,qCAA8B,CAAC,eAAe,EAAE,CAAC,kBAAkB,CACjE,YAAY,EACZ,CAAC,MAAM,CAAC,KAAK,EAAE,MAAM,CAAC,iBAAiB,EAAE,MAAM,CAAC,sBAAsB,CAAC,CACxE,CAAC;YACJ,MAAM,MAAM,GAAG,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,EAAE,QAAQ,EAAE,EAAE,EAAE;gBAC5D,WAAW,EAAE,IAAI,CAAC,WAAW,GAAG,QAAQ;gBACxC,YAAY;aACb,CAAC,CAAC;YACH,OAAO;gBACL,MAAM;aACP,CAAC;QACJ,CAAC;KAAA;CACF;AArCD,0DAqCC"}
@@ -1,18 +1,17 @@
1
1
  import { ethers } from 'ethers';
2
2
  import type { types } from '@hyperlane-xyz/utils';
3
- import { TransparentProxyAddresses } from '../proxy';
3
+ import { BeaconProxyAddresses } from '../proxy';
4
4
  import { ChainName } from '../types';
5
5
  import { CheckerViolation } from './types';
6
- export interface ProxyViolation extends CheckerViolation {
7
- type: TransparentProxyAddresses['kind'];
6
+ export interface UpgradeBeaconViolation extends CheckerViolation {
7
+ type: BeaconProxyAddresses['kind'];
8
8
  data: {
9
- proxyAddresses: TransparentProxyAddresses;
9
+ proxiedAddress: BeaconProxyAddresses;
10
10
  name: string;
11
11
  };
12
12
  actual: string;
13
13
  expected: string;
14
14
  }
15
- export declare function proxyImplementation(provider: ethers.providers.Provider, proxy: types.Address): Promise<types.Address>;
16
- export declare function proxyAdmin(provider: ethers.providers.Provider, proxy: types.Address): Promise<types.Address>;
17
- export declare function proxyViolation<Chain extends ChainName>(chain: Chain, name: string, proxyAddresses: TransparentProxyAddresses, actual: types.Address): ProxyViolation;
15
+ export declare function upgradeBeaconImplementation(provider: ethers.providers.Provider, beacon: types.Address): Promise<types.Address>;
16
+ export declare function upgradeBeaconViolation<Chain extends ChainName>(chain: Chain, name: string, proxiedAddress: BeaconProxyAddresses, actual: types.Address): UpgradeBeaconViolation;
18
17
  //# sourceMappingURL=proxy.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/deploy/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,yBAAyB,EAAE,MAAM,UAAU,CAAC;AACrD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,IAAI,EAAE,yBAAyB,CAAC,MAAM,CAAC,CAAC;IACxC,IAAI,EAAE;QACJ,cAAc,EAAE,yBAAyB,CAAC;QAC1C,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,mBAAmB,CACvC,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,KAAK,EAAE,KAAK,CAAC,OAAO,GACnB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAOxB;AAED,wBAAsB,UAAU,CAC9B,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,KAAK,EAAE,KAAK,CAAC,OAAO,GACnB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAOxB;AAED,wBAAgB,cAAc,CAAC,KAAK,SAAS,SAAS,EACpD,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,yBAAyB,EACzC,MAAM,EAAE,KAAK,CAAC,OAAO,GACpB,cAAc,CAWhB"}
1
+ {"version":3,"file":"proxy.d.ts","sourceRoot":"","sources":["../../src/deploy/proxy.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,MAAM,QAAQ,CAAC;AAEhC,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,EAAE,oBAAoB,EAAE,MAAM,UAAU,CAAC;AAChD,OAAO,EAAE,SAAS,EAAE,MAAM,UAAU,CAAC;AAErC,OAAO,EAAE,gBAAgB,EAAE,MAAM,SAAS,CAAC;AAE3C,MAAM,WAAW,sBAAuB,SAAQ,gBAAgB;IAC9D,IAAI,EAAE,oBAAoB,CAAC,MAAM,CAAC,CAAC;IACnC,IAAI,EAAE;QACJ,cAAc,EAAE,oBAAoB,CAAC;QACrC,IAAI,EAAE,MAAM,CAAC;KACd,CAAC;IACF,MAAM,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;CAClB;AAED,wBAAsB,2BAA2B,CAC/C,QAAQ,EAAE,MAAM,CAAC,SAAS,CAAC,QAAQ,EACnC,MAAM,EAAE,KAAK,CAAC,OAAO,GACpB,OAAO,CAAC,KAAK,CAAC,OAAO,CAAC,CAIxB;AAED,wBAAgB,sBAAsB,CAAC,KAAK,SAAS,SAAS,EAC5D,KAAK,EAAE,KAAK,EACZ,IAAI,EAAE,MAAM,EACZ,cAAc,EAAE,oBAAoB,EACpC,MAAM,EAAE,KAAK,CAAC,OAAO,GACpB,sBAAsB,CAWxB"}
@@ -9,35 +9,27 @@ var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, ge
9
9
  });
10
10
  };
11
11
  Object.defineProperty(exports, "__esModule", { value: true });
12
- exports.proxyViolation = exports.proxyAdmin = exports.proxyImplementation = void 0;
12
+ exports.upgradeBeaconViolation = exports.upgradeBeaconImplementation = void 0;
13
13
  const ethers_1 = require("ethers");
14
- function proxyImplementation(provider, proxy) {
14
+ function upgradeBeaconImplementation(provider, beacon) {
15
15
  return __awaiter(this, void 0, void 0, function* () {
16
- // Hardcoded storage slot for implementation per EIP-1967
17
- const storageValue = yield provider.getStorageAt(proxy, '0x360894a13ba1a3210667c828492db98dca3e2076cc3735a920a3ca505d382bbc');
16
+ // TODO: This should check the correct upgrade beacon controller
17
+ const storageValue = yield provider.getStorageAt(beacon, 0);
18
18
  return ethers_1.ethers.utils.getAddress(storageValue.slice(26));
19
19
  });
20
20
  }
21
- exports.proxyImplementation = proxyImplementation;
22
- function proxyAdmin(provider, proxy) {
23
- return __awaiter(this, void 0, void 0, function* () {
24
- // Hardcoded storage slot for admin per EIP-1967
25
- const storageValue = yield provider.getStorageAt(proxy, '0xb53127684a568b3173ae13b9f8a6016e243e63b6e8ee1178d6a717850b5d6103');
26
- return ethers_1.ethers.utils.getAddress(storageValue.slice(26));
27
- });
28
- }
29
- exports.proxyAdmin = proxyAdmin;
30
- function proxyViolation(chain, name, proxyAddresses, actual) {
21
+ exports.upgradeBeaconImplementation = upgradeBeaconImplementation;
22
+ function upgradeBeaconViolation(chain, name, proxiedAddress, actual) {
31
23
  return {
32
24
  chain,
33
- type: proxyAddresses.kind,
25
+ type: proxiedAddress.kind,
34
26
  actual,
35
- expected: proxyAddresses.implementation,
27
+ expected: proxiedAddress.implementation,
36
28
  data: {
37
29
  name,
38
- proxyAddresses,
30
+ proxiedAddress,
39
31
  },
40
32
  };
41
33
  }
42
- exports.proxyViolation = proxyViolation;
34
+ exports.upgradeBeaconViolation = upgradeBeaconViolation;
43
35
  //# sourceMappingURL=proxy.js.map
@@ -1 +1 @@
1
- {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/deploy/proxy.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAAgC;AAmBhC,SAAsB,mBAAmB,CACvC,QAAmC,EACnC,KAAoB;;QAEpB,yDAAyD;QACzD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,YAAY,CAC9C,KAAK,EACL,oEAAoE,CACrE,CAAC;QACF,OAAO,eAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;CAAA;AAVD,kDAUC;AAED,SAAsB,UAAU,CAC9B,QAAmC,EACnC,KAAoB;;QAEpB,gDAAgD;QAChD,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,YAAY,CAC9C,KAAK,EACL,oEAAoE,CACrE,CAAC;QACF,OAAO,eAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;CAAA;AAVD,gCAUC;AAED,SAAgB,cAAc,CAC5B,KAAY,EACZ,IAAY,EACZ,cAAyC,EACzC,MAAqB;IAErB,OAAO;QACL,KAAK;QACL,IAAI,EAAE,cAAc,CAAC,IAAI;QACzB,MAAM;QACN,QAAQ,EAAE,cAAc,CAAC,cAAc;QACvC,IAAI,EAAE;YACJ,IAAI;YACJ,cAAc;SACf;KACF,CAAC;AACJ,CAAC;AAhBD,wCAgBC"}
1
+ {"version":3,"file":"proxy.js","sourceRoot":"","sources":["../../src/deploy/proxy.ts"],"names":[],"mappings":";;;;;;;;;;;;AAAA,mCAAgC;AAmBhC,SAAsB,2BAA2B,CAC/C,QAAmC,EACnC,MAAqB;;QAErB,gEAAgE;QAChE,MAAM,YAAY,GAAG,MAAM,QAAQ,CAAC,YAAY,CAAC,MAAM,EAAE,CAAC,CAAC,CAAC;QAC5D,OAAO,eAAM,CAAC,KAAK,CAAC,UAAU,CAAC,YAAY,CAAC,KAAK,CAAC,EAAE,CAAC,CAAC,CAAC;IACzD,CAAC;CAAA;AAPD,kEAOC;AAED,SAAgB,sBAAsB,CACpC,KAAY,EACZ,IAAY,EACZ,cAAoC,EACpC,MAAqB;IAErB,OAAO;QACL,KAAK;QACL,IAAI,EAAE,cAAc,CAAC,IAAI;QACzB,MAAM;QACN,QAAQ,EAAE,cAAc,CAAC,cAAc;QACvC,IAAI,EAAE;YACJ,IAAI;YACJ,cAAc;SACf;KACF,CAAC;AACJ,CAAC;AAhBD,wDAgBC"}
@@ -8,6 +8,7 @@ export declare class HyperlaneRouterChecker<Chain extends ChainName, App extends
8
8
  checkOwnership(chain: Chain): Promise<void>;
9
9
  checkChain(chain: Chain): Promise<void>;
10
10
  checkEnrolledRouters(chain: Chain): Promise<void>;
11
+ checkConnectionManager(chain: Chain): Promise<void>;
11
12
  ownables(chain: Chain): Ownable[];
12
13
  }
13
14
  //# sourceMappingURL=HyperlaneRouterChecker.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"HyperlaneRouterChecker.d.ts","sourceRoot":"","sources":["../../../src/deploy/router/HyperlaneRouterChecker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,qBAAa,sBAAsB,CACjC,KAAK,SAAS,SAAS,EACvB,GAAG,SAAS,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,EAC1C,MAAM,SAAS,YAAY,EAC3B,SAAS,SAAS,eAAe,CACjC,SAAQ,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC;IAC/C,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAKvC,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAavD,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE;CAGlC"}
1
+ {"version":3,"file":"HyperlaneRouterChecker.d.ts","sourceRoot":"","sources":["../../../src/deploy/router/HyperlaneRouterChecker.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAG9C,OAAO,EAAE,YAAY,EAAE,MAAM,oBAAoB,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAC/C,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AACxC,OAAO,EAAE,mBAAmB,EAAE,MAAM,wBAAwB,CAAC;AAE7D,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,qBAAa,sBAAsB,CACjC,KAAK,SAAS,SAAS,EACvB,GAAG,SAAS,YAAY,CAAC,SAAS,EAAE,KAAK,CAAC,EAC1C,MAAM,SAAS,YAAY,EAC3B,SAAS,SAAS,eAAe,CACjC,SAAQ,mBAAmB,CAAC,KAAK,EAAE,GAAG,EAAE,MAAM,CAAC;IAC/C,cAAc,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAMrC,UAAU,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAMvC,oBAAoB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAajD,sBAAsB,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,CAAC,IAAI,CAAC;IAYzD,QAAQ,CAAC,KAAK,EAAE,KAAK,GAAG,OAAO,EAAE;CAGlC"}
@@ -23,6 +23,7 @@ class HyperlaneRouterChecker extends HyperlaneAppChecker_1.HyperlaneAppChecker {
23
23
  return __awaiter(this, void 0, void 0, function* () {
24
24
  yield this.checkEnrolledRouters(chain);
25
25
  yield this.checkOwnership(chain);
26
+ yield this.checkConnectionManager(chain);
26
27
  });
27
28
  }
28
29
  checkEnrolledRouters(chain) {
@@ -36,6 +37,14 @@ class HyperlaneRouterChecker extends HyperlaneAppChecker_1.HyperlaneAppChecker {
36
37
  })));
37
38
  });
38
39
  }
40
+ checkConnectionManager(chain) {
41
+ return __awaiter(this, void 0, void 0, function* () {
42
+ const router = this.app.getContracts(chain).router;
43
+ const expectedConnectionManager = this.configMap[chain].connectionManager;
44
+ const routerConnectionManager = yield router.abacusConnectionManager();
45
+ utils_1.utils.assert(expectedConnectionManager === routerConnectionManager, `Incorrect ConnectionManager for ${chain}. Expected ${expectedConnectionManager}, found ${routerConnectionManager}`);
46
+ });
47
+ }
39
48
  ownables(chain) {
40
49
  return [this.app.getContracts(chain).router];
41
50
  }
@@ -1 +1 @@
1
- {"version":3,"file":"HyperlaneRouterChecker.js","sourceRoot":"","sources":["../../../src/deploy/router/HyperlaneRouterChecker.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gDAA6C;AAG7C,8DAA2D;AAG3D,gEAA6D;AAI7D,MAAa,sBAKX,SAAQ,yCAAuC;IAC/C,cAAc,CAAC,KAAY;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAEK,UAAU,CAAC,KAAY;;YAC3B,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;QACnC,CAAC;KAAA;IAEK,oBAAoB,CAAC,KAAY;;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YAEnD,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAO,WAAW,EAAE,EAAE;gBACrD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;gBAC/D,MAAM,aAAa,GAAG,6BAAa,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;gBACpD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBACpD,aAAK,CAAC,MAAM,CAAC,OAAO,KAAK,aAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YACzE,CAAC,CAAA,CAAC,CACH,CAAC;QACJ,CAAC;KAAA;IAED,QAAQ,CAAC,KAAY;QACnB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;CACF;AAjCD,wDAiCC"}
1
+ {"version":3,"file":"HyperlaneRouterChecker.js","sourceRoot":"","sources":["../../../src/deploy/router/HyperlaneRouterChecker.ts"],"names":[],"mappings":";;;;;;;;;;;;AACA,gDAA6C;AAG7C,8DAA2D;AAG3D,gEAA6D;AAI7D,MAAa,sBAKX,SAAQ,yCAAuC;IAC/C,cAAc,CAAC,KAAY;QACzB,MAAM,KAAK,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,KAAK,CAAC;QAC1C,MAAM,QAAQ,GAAG,IAAI,CAAC,QAAQ,CAAC,KAAK,CAAC,CAAC;QACtC,OAAO,KAAK,CAAC,cAAc,CAAC,KAAK,EAAE,KAAK,EAAE,QAAQ,CAAC,CAAC;IACtD,CAAC;IAEK,UAAU,CAAC,KAAY;;YAC3B,MAAM,IAAI,CAAC,oBAAoB,CAAC,KAAK,CAAC,CAAC;YACvC,MAAM,IAAI,CAAC,cAAc,CAAC,KAAK,CAAC,CAAC;YACjC,MAAM,IAAI,CAAC,sBAAsB,CAAC,KAAK,CAAC,CAAC;QAC3C,CAAC;KAAA;IAEK,oBAAoB,CAAC,KAAY;;YACrC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YAEnD,MAAM,OAAO,CAAC,GAAG,CACf,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,GAAG,CAAC,CAAO,WAAW,EAAE,EAAE;gBACrD,MAAM,YAAY,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,WAAW,CAAC,CAAC,MAAM,CAAC;gBAC/D,MAAM,aAAa,GAAG,6BAAa,CAAC,WAAW,CAAC,CAAC,EAAE,CAAC;gBACpD,MAAM,OAAO,GAAG,MAAM,MAAM,CAAC,OAAO,CAAC,aAAa,CAAC,CAAC;gBACpD,aAAK,CAAC,MAAM,CAAC,OAAO,KAAK,aAAK,CAAC,gBAAgB,CAAC,YAAY,CAAC,OAAO,CAAC,CAAC,CAAC;YACzE,CAAC,CAAA,CAAC,CACH,CAAC;QACJ,CAAC;KAAA;IAEK,sBAAsB,CAAC,KAAY;;YACvC,MAAM,MAAM,GAAG,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC;YACnD,MAAM,yBAAyB,GAAG,IAAI,CAAC,SAAS,CAAC,KAAK,CAAC,CAAC,iBAAiB,CAAC;YAE1E,MAAM,uBAAuB,GAAG,MAAM,MAAM,CAAC,uBAAuB,EAAE,CAAC;YAEvE,aAAK,CAAC,MAAM,CACV,yBAAyB,KAAK,uBAAuB,EACrD,mCAAmC,KAAK,cAAc,yBAAyB,WAAW,uBAAuB,EAAE,CACpH,CAAC;QACJ,CAAC;KAAA;IAED,QAAQ,CAAC,KAAY;QACnB,OAAO,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC,MAAM,CAAC,CAAC;IAC/C,CAAC;CACF;AA9CD,wDA8CC"}
@@ -1 +1 @@
1
- {"version":3,"file":"HyperlaneRouterDeployer.d.ts","sourceRoot":"","sources":["../../../src/deploy/router/HyperlaneRouterDeployer.ts"],"names":[],"mappings":"AAOA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,8BAAsB,uBAAuB,CAC3C,KAAK,SAAS,SAAS,EACvB,MAAM,SAAS,YAAY,EAC3B,SAAS,SAAS,eAAe,EACjC,SAAS,SAAS,eAAe,CACjC,SAAQ,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;gBAE5D,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,EAClC,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,eAAe;IAQrB,oBAAoB,CACxB,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC;IAgCV,mBAAmB,CACvB,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,GAC7C,OAAO,CAAC,IAAI,CAAC;IAiDV,iBAAiB,CACrB,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC;IAsBV,MAAM,CACV,iBAAiB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,GACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;CASvC"}
1
+ {"version":3,"file":"HyperlaneRouterDeployer.d.ts","sourceRoot":"","sources":["../../../src/deploy/router/HyperlaneRouterDeployer.ts"],"names":[],"mappings":"AAMA,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,eAAe,EAAE,MAAM,cAAc,CAAC;AAChE,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,MAAM,aAAa,CAAC;AAElD,OAAO,EAAE,eAAe,EAAE,iBAAiB,EAAE,MAAM,sBAAsB,CAAC;AAE1E,OAAO,EAAE,YAAY,EAAE,MAAM,SAAS,CAAC;AAEvC,8BAAsB,uBAAuB,CAC3C,KAAK,SAAS,SAAS,EACvB,MAAM,SAAS,YAAY,EAC3B,SAAS,SAAS,eAAe,EACjC,SAAS,SAAS,eAAe,CACjC,SAAQ,iBAAiB,CAAC,KAAK,EAAE,MAAM,EAAE,SAAS,EAAE,SAAS,CAAC;gBAE5D,aAAa,EAAE,aAAa,CAAC,KAAK,CAAC,EACnC,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,MAAM,CAAC,EAClC,SAAS,EAAE,SAAS,EACpB,OAAO,CAAC,EAAE,eAAe;IAQrB,oBAAoB,CACxB,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC;IAmCV,mBAAmB,CACvB,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,eAAe,CAAC,GAC7C,OAAO,CAAC,IAAI,CAAC;IA+CV,iBAAiB,CACrB,YAAY,EAAE,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,GACvC,OAAO,CAAC,IAAI,CAAC;IAsBV,MAAM,CACV,iBAAiB,CAAC,EAAE,OAAO,CAAC,MAAM,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC,GACpD,OAAO,CAAC,QAAQ,CAAC,KAAK,EAAE,SAAS,CAAC,CAAC;CASvC"}
@@ -14,7 +14,6 @@ const debug_1 = require("debug");
14
14
  const ethers_1 = require("ethers");
15
15
  const utils_1 = require("@hyperlane-xyz/utils");
16
16
  const chainMetadata_1 = require("../../consts/chainMetadata");
17
- const domains_1 = require("../../domains");
18
17
  const objects_1 = require("../../utils/objects");
19
18
  const HyperlaneDeployer_1 = require("../HyperlaneDeployer");
20
19
  class HyperlaneRouterDeployer extends HyperlaneDeployer_1.HyperlaneDeployer {
@@ -26,12 +25,13 @@ class HyperlaneRouterDeployer extends HyperlaneDeployer_1.HyperlaneDeployer {
26
25
  this.logger(`Initializing connection clients (if not already)...`);
27
26
  yield (0, objects_1.promiseObjAll)((0, objects_1.objMap)(contractsMap, (local, contracts) => __awaiter(this, void 0, void 0, function* () {
28
27
  const chainConnection = this.multiProvider.getChainConnection(local);
29
- // set mailbox if not already set (and configured)
30
- const mailbox = this.configMap[local].mailbox;
31
- if (mailbox &&
32
- (yield contracts.router.mailbox()) === ethers_1.ethers.constants.AddressZero) {
33
- this.logger(`Set mailbox on ${local}`);
34
- yield chainConnection.handleTx(contracts.router.setMailbox(mailbox));
28
+ // set hyperlane connection manager if not already set
29
+ if (
30
+ // TODO rename ACM methods in router contract
31
+ (yield contracts.router.abacusConnectionManager()) ===
32
+ ethers_1.ethers.constants.AddressZero) {
33
+ this.logger(`Set abacus connection manager on ${local}`);
34
+ yield chainConnection.handleTx(contracts.router.setAbacusConnectionManager(this.configMap[local].connectionManager));
35
35
  }
36
36
  // set interchain gas paymaster if not already set (and configured)
37
37
  const interchainGasPaymaster = this.configMap[local].interchainGasPaymaster;
@@ -54,28 +54,26 @@ class HyperlaneRouterDeployer extends HyperlaneDeployer_1.HyperlaneDeployer {
54
54
  const deployedChains = Object.keys(contractsMap);
55
55
  for (const [chain, contracts] of Object.entries(contractsMap)) {
56
56
  const local = chain;
57
- this.logger({ local });
58
57
  const chainConnection = this.multiProvider.getChainConnection(local);
59
58
  // only enroll chains which are deployed
60
59
  const deployedRemoteChains = this.multiProvider
61
60
  .remoteChains(local)
62
61
  .filter((c) => deployedChains.includes(c));
63
- this.logger({ deployedRemoteChains });
64
62
  const enrollEntries = yield Promise.all(deployedRemoteChains.map((remote) => __awaiter(this, void 0, void 0, function* () {
65
63
  const remoteDomain = chainMetadata_1.chainMetadata[remote].id;
66
64
  const current = yield contracts.router.routers(remoteDomain);
67
65
  const expected = utils_1.utils.addressToBytes32(contractsMap[remote].router.address);
68
- return current !== expected ? [remoteDomain, expected] : undefined;
66
+ return current !== expected ? [remote, expected] : undefined;
69
67
  })));
70
68
  const entries = enrollEntries.filter((entry) => entry !== undefined);
71
- this.logger({ entries });
72
- const domains = entries.map(([id]) => id);
69
+ const domains = entries.map(([chain]) => chainMetadata_1.chainMetadata[chain].id);
73
70
  const addresses = entries.map(([, address]) => address);
74
- yield _super.runIfOwner.call(this, local, contracts.router, () => __awaiter(this, void 0, void 0, function* () {
75
- const chains = domains.map((id) => domains_1.DomainIdToChainName[id]);
76
- this.logger(`Enroll remote (${chains}) routers on ${local}`);
77
- yield chainConnection.handleTx(contracts.router.enrollRemoteRouters(domains, addresses, chainConnection.overrides));
78
- }));
71
+ if (domains.length > 0) {
72
+ yield _super.runIfOwner.call(this, local, contracts.router, () => __awaiter(this, void 0, void 0, function* () {
73
+ this.logger(`Enroll remote (${domains}) routers on ${local}`);
74
+ yield chainConnection.handleTx(contracts.router.enrollRemoteRouters(domains, addresses, chainConnection.overrides));
75
+ }));
76
+ }
79
77
  }
80
78
  });
81
79
  }