@hyperlane-xyz/sdk 1.0.0-beta0 → 1.0.0-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.
Files changed (265) hide show
  1. package/README.md +30 -3
  2. package/dist/HyperlaneApp.d.ts +13 -0
  3. package/dist/HyperlaneApp.d.ts.map +1 -0
  4. package/dist/HyperlaneApp.js +25 -0
  5. package/dist/HyperlaneApp.js.map +1 -0
  6. package/dist/consts/chainConnectionConfigs.d.ts +18 -0
  7. package/dist/consts/chainConnectionConfigs.d.ts.map +1 -0
  8. package/dist/consts/chainConnectionConfigs.js +33 -0
  9. package/dist/consts/chainConnectionConfigs.js.map +1 -0
  10. package/dist/consts/chainMetadata.d.ts +98 -0
  11. package/dist/consts/chainMetadata.d.ts.map +1 -0
  12. package/dist/consts/chainMetadata.js +529 -0
  13. package/dist/consts/chainMetadata.js.map +1 -0
  14. package/dist/consts/chains.d.ts +40 -0
  15. package/dist/consts/chains.d.ts.map +1 -0
  16. package/dist/consts/chains.js +66 -0
  17. package/dist/consts/chains.js.map +1 -0
  18. package/dist/consts/environments/index.d.ts +449 -0
  19. package/dist/consts/environments/index.d.ts.map +1 -0
  20. package/dist/consts/environments/index.js +22 -0
  21. package/dist/consts/environments/index.js.map +1 -0
  22. package/dist/consts/environments/mainnet.json +138 -0
  23. package/dist/consts/environments/test.json +44 -0
  24. package/dist/consts/environments/testnet2.json +138 -0
  25. package/dist/consts/environments/testnet3.json +114 -0
  26. package/dist/contracts.d.ts +18 -0
  27. package/dist/contracts.d.ts.map +1 -0
  28. package/dist/contracts.js +61 -0
  29. package/dist/contracts.js.map +1 -0
  30. package/dist/core/HyperlaneCore.d.ts +473 -0
  31. package/dist/core/HyperlaneCore.d.ts.map +1 -0
  32. package/dist/core/HyperlaneCore.js +122 -0
  33. package/dist/core/HyperlaneCore.js.map +1 -0
  34. package/dist/core/HyperlaneCore.test.d.ts +2 -0
  35. package/dist/core/HyperlaneCore.test.d.ts.map +1 -0
  36. package/dist/core/HyperlaneCore.test.js +27 -0
  37. package/dist/core/HyperlaneCore.test.js.map +1 -0
  38. package/dist/core/TestCoreApp.d.ts +21 -0
  39. package/dist/core/TestCoreApp.d.ts.map +1 -0
  40. package/dist/core/TestCoreApp.js +61 -0
  41. package/dist/core/TestCoreApp.js.map +1 -0
  42. package/dist/core/TestCoreDeployer.d.ts +13 -0
  43. package/dist/core/TestCoreDeployer.d.ts.map +1 -0
  44. package/dist/core/TestCoreDeployer.js +53 -0
  45. package/dist/core/TestCoreDeployer.js.map +1 -0
  46. package/dist/core/contracts.d.ts +21 -0
  47. package/dist/core/contracts.d.ts.map +1 -0
  48. package/dist/core/contracts.js +14 -0
  49. package/dist/core/contracts.js.map +1 -0
  50. package/dist/core/events.d.ts +8 -0
  51. package/dist/core/events.d.ts.map +1 -0
  52. package/dist/core/events.js +3 -0
  53. package/dist/core/events.js.map +1 -0
  54. package/dist/core/message.d.ts +146 -0
  55. package/dist/core/message.d.ts.map +1 -0
  56. package/dist/core/message.js +285 -0
  57. package/dist/core/message.js.map +1 -0
  58. package/dist/core/testHyperlaneDeploy.hardhat-test.d.ts +3 -0
  59. package/dist/core/testHyperlaneDeploy.hardhat-test.d.ts.map +1 -0
  60. package/dist/core/testHyperlaneDeploy.hardhat-test.js +66 -0
  61. package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +1 -0
  62. package/dist/deploy/HyperlaneAppChecker.d.ts +22 -0
  63. package/dist/deploy/HyperlaneAppChecker.d.ts.map +1 -0
  64. package/dist/deploy/HyperlaneAppChecker.js +88 -0
  65. package/dist/deploy/HyperlaneAppChecker.js.map +1 -0
  66. package/dist/deploy/HyperlaneDeployer.d.ts +40 -0
  67. package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -0
  68. package/dist/deploy/HyperlaneDeployer.js +212 -0
  69. package/dist/deploy/HyperlaneDeployer.js.map +1 -0
  70. package/dist/deploy/core/HyperlaneCoreChecker.d.ts +13 -0
  71. package/dist/deploy/core/HyperlaneCoreChecker.d.ts.map +1 -0
  72. package/dist/deploy/core/HyperlaneCoreChecker.js +122 -0
  73. package/dist/deploy/core/HyperlaneCoreChecker.js.map +1 -0
  74. package/dist/deploy/core/HyperlaneCoreDeployer.d.ts +30 -0
  75. package/dist/deploy/core/HyperlaneCoreDeployer.d.ts.map +1 -0
  76. package/dist/deploy/core/HyperlaneCoreDeployer.js +114 -0
  77. package/dist/deploy/core/HyperlaneCoreDeployer.js.map +1 -0
  78. package/dist/deploy/core/types.d.ts +51 -0
  79. package/dist/deploy/core/types.d.ts.map +1 -0
  80. package/dist/deploy/core/types.js +19 -0
  81. package/dist/deploy/core/types.js.map +1 -0
  82. package/dist/deploy/middleware/LiquidityLayerApp.d.ts +26 -0
  83. package/dist/deploy/middleware/LiquidityLayerApp.d.ts.map +1 -0
  84. package/dist/deploy/middleware/LiquidityLayerApp.js +115 -0
  85. package/dist/deploy/middleware/LiquidityLayerApp.js.map +1 -0
  86. package/dist/deploy/middleware/LiquidityLayerRouterDeployer.d.ts +33 -0
  87. package/dist/deploy/middleware/LiquidityLayerRouterDeployer.d.ts.map +1 -0
  88. package/dist/deploy/middleware/LiquidityLayerRouterDeployer.js +97 -0
  89. package/dist/deploy/middleware/LiquidityLayerRouterDeployer.js.map +1 -0
  90. package/dist/deploy/middleware/deploy.d.ts +21 -0
  91. package/dist/deploy/middleware/deploy.d.ts.map +1 -0
  92. package/dist/deploy/middleware/deploy.js +70 -0
  93. package/dist/deploy/middleware/deploy.js.map +1 -0
  94. package/dist/deploy/proxy.d.ts +18 -0
  95. package/dist/deploy/proxy.d.ts.map +1 -0
  96. package/dist/deploy/proxy.js +43 -0
  97. package/dist/deploy/proxy.js.map +1 -0
  98. package/dist/deploy/router/HyperlaneRouterChecker.d.ts +13 -0
  99. package/dist/deploy/router/HyperlaneRouterChecker.d.ts.map +1 -0
  100. package/dist/deploy/router/HyperlaneRouterChecker.js +44 -0
  101. package/dist/deploy/router/HyperlaneRouterChecker.js.map +1 -0
  102. package/dist/deploy/router/HyperlaneRouterDeployer.d.ts +13 -0
  103. package/dist/deploy/router/HyperlaneRouterDeployer.d.ts.map +1 -0
  104. package/dist/deploy/router/HyperlaneRouterDeployer.js +115 -0
  105. package/dist/deploy/router/HyperlaneRouterDeployer.js.map +1 -0
  106. package/dist/deploy/router/types.d.ts +7 -0
  107. package/dist/deploy/router/types.d.ts.map +1 -0
  108. package/dist/deploy/router/types.js +3 -0
  109. package/dist/deploy/router/types.js.map +1 -0
  110. package/dist/deploy/types.d.ts +23 -0
  111. package/dist/deploy/types.d.ts.map +1 -0
  112. package/dist/deploy/types.js +9 -0
  113. package/dist/deploy/types.js.map +1 -0
  114. package/dist/deploy/utils.d.ts +10 -0
  115. package/dist/deploy/utils.d.ts.map +1 -0
  116. package/dist/deploy/utils.js +38 -0
  117. package/dist/deploy/utils.js.map +1 -0
  118. package/dist/deploy/verify/ContractVerifier.d.ts +19 -0
  119. package/dist/deploy/verify/ContractVerifier.d.ts.map +1 -0
  120. package/dist/deploy/verify/ContractVerifier.js +137 -0
  121. package/dist/deploy/verify/ContractVerifier.js.map +1 -0
  122. package/dist/deploy/verify/types.d.ts +14 -0
  123. package/dist/deploy/verify/types.d.ts.map +1 -0
  124. package/dist/deploy/verify/types.js +3 -0
  125. package/dist/deploy/verify/types.js.map +1 -0
  126. package/dist/deploy/verify/utils.d.ts +6 -0
  127. package/dist/deploy/verify/utils.d.ts.map +1 -0
  128. package/dist/deploy/verify/utils.js +25 -0
  129. package/dist/deploy/verify/utils.js.map +1 -0
  130. package/dist/domains.d.ts +4 -0
  131. package/dist/domains.d.ts.map +1 -0
  132. package/dist/domains.js +12 -0
  133. package/dist/domains.js.map +1 -0
  134. package/dist/events.d.ts +25 -0
  135. package/dist/events.d.ts.map +1 -0
  136. package/dist/events.js +161 -0
  137. package/dist/events.js.map +1 -0
  138. package/dist/gas/calculator.d.ts +134 -0
  139. package/dist/gas/calculator.d.ts.map +1 -0
  140. package/dist/gas/calculator.js +240 -0
  141. package/dist/gas/calculator.js.map +1 -0
  142. package/dist/gas/calculator.test.d.ts +2 -0
  143. package/dist/gas/calculator.test.d.ts.map +1 -0
  144. package/dist/gas/calculator.test.js +208 -0
  145. package/dist/gas/calculator.test.js.map +1 -0
  146. package/dist/gas/token-prices.d.ts +34 -0
  147. package/dist/gas/token-prices.d.ts.map +1 -0
  148. package/dist/gas/token-prices.js +105 -0
  149. package/dist/gas/token-prices.js.map +1 -0
  150. package/dist/gas/token-prices.test.d.ts +2 -0
  151. package/dist/gas/token-prices.test.d.ts.map +1 -0
  152. package/dist/gas/token-prices.test.js +46 -0
  153. package/dist/gas/token-prices.test.js.map +1 -0
  154. package/dist/index.d.ts +46 -0
  155. package/dist/index.d.ts.map +1 -0
  156. package/dist/index.js +140 -0
  157. package/dist/index.js.map +1 -0
  158. package/dist/middleware/accounts.hardhat-test.d.ts +2 -0
  159. package/dist/middleware/accounts.hardhat-test.d.ts.map +1 -0
  160. package/dist/middleware/accounts.hardhat-test.js +63 -0
  161. package/dist/middleware/accounts.hardhat-test.js.map +1 -0
  162. package/dist/middleware/liquidity-layer.hardhat-test.d.ts +2 -0
  163. package/dist/middleware/liquidity-layer.hardhat-test.d.ts.map +1 -0
  164. package/dist/middleware/liquidity-layer.hardhat-test.js +89 -0
  165. package/dist/middleware/liquidity-layer.hardhat-test.js.map +1 -0
  166. package/dist/middleware/queries.hardhat-test.d.ts +2 -0
  167. package/dist/middleware/queries.hardhat-test.d.ts.map +1 -0
  168. package/dist/middleware/queries.hardhat-test.js +69 -0
  169. package/dist/middleware/queries.hardhat-test.js.map +1 -0
  170. package/dist/middleware.d.ts +16 -0
  171. package/dist/middleware.d.ts.map +1 -0
  172. package/dist/middleware.js +15 -0
  173. package/dist/middleware.js.map +1 -0
  174. package/dist/providers/ChainConnection.d.ts +22 -0
  175. package/dist/providers/ChainConnection.d.ts.map +1 -0
  176. package/dist/providers/ChainConnection.js +66 -0
  177. package/dist/providers/ChainConnection.js.map +1 -0
  178. package/dist/providers/MultiProvider.d.ts +56 -0
  179. package/dist/providers/MultiProvider.d.ts.map +1 -0
  180. package/dist/providers/MultiProvider.js +111 -0
  181. package/dist/providers/MultiProvider.js.map +1 -0
  182. package/dist/providers/RetryProvider.d.ts +18 -0
  183. package/dist/providers/RetryProvider.d.ts.map +1 -0
  184. package/dist/providers/RetryProvider.js +49 -0
  185. package/dist/providers/RetryProvider.js.map +1 -0
  186. package/dist/proxy.d.ts +21 -0
  187. package/dist/proxy.d.ts.map +1 -0
  188. package/dist/proxy.js +30 -0
  189. package/dist/proxy.js.map +1 -0
  190. package/dist/router.d.ts +20 -0
  191. package/dist/router.d.ts.map +1 -0
  192. package/dist/router.js +3 -0
  193. package/dist/router.js.map +1 -0
  194. package/dist/test/envSubsetDeployer/app.d.ts +36 -0
  195. package/dist/test/envSubsetDeployer/app.d.ts.map +1 -0
  196. package/dist/test/envSubsetDeployer/app.js +77 -0
  197. package/dist/test/envSubsetDeployer/app.js.map +1 -0
  198. package/dist/test/envSubsetDeployer/check-single-chain.d.ts +2 -0
  199. package/dist/test/envSubsetDeployer/check-single-chain.d.ts.map +1 -0
  200. package/dist/test/envSubsetDeployer/check-single-chain.js +49 -0
  201. package/dist/test/envSubsetDeployer/check-single-chain.js.map +1 -0
  202. package/dist/test/envSubsetDeployer/deploy-single-chain.d.ts +2 -0
  203. package/dist/test/envSubsetDeployer/deploy-single-chain.d.ts.map +1 -0
  204. package/dist/test/envSubsetDeployer/deploy-single-chain.js +42 -0
  205. package/dist/test/envSubsetDeployer/deploy-single-chain.js.map +1 -0
  206. package/dist/test/envSubsetDeployer/deploy.hardhat-test.d.ts +2 -0
  207. package/dist/test/envSubsetDeployer/deploy.hardhat-test.d.ts.map +1 -0
  208. package/dist/test/envSubsetDeployer/deploy.hardhat-test.js +83 -0
  209. package/dist/test/envSubsetDeployer/deploy.hardhat-test.js.map +1 -0
  210. package/dist/test/envSubsetDeployer/utils.d.ts +7 -0
  211. package/dist/test/envSubsetDeployer/utils.d.ts.map +1 -0
  212. package/dist/test/envSubsetDeployer/utils.js +25 -0
  213. package/dist/test/envSubsetDeployer/utils.js.map +1 -0
  214. package/dist/test/testUtils.d.ts +31 -0
  215. package/dist/test/testUtils.d.ts.map +1 -0
  216. package/dist/test/testUtils.js +106 -0
  217. package/dist/test/testUtils.js.map +1 -0
  218. package/dist/types.d.ts +21 -0
  219. package/dist/types.d.ts.map +1 -0
  220. package/dist/types.js +3 -0
  221. package/dist/types.js.map +1 -0
  222. package/dist/utils/MultiGeneric.d.ts +27 -0
  223. package/dist/utils/MultiGeneric.d.ts.map +1 -0
  224. package/dist/utils/MultiGeneric.js +70 -0
  225. package/dist/utils/MultiGeneric.js.map +1 -0
  226. package/dist/utils/ids.d.ts +20 -0
  227. package/dist/utils/ids.d.ts.map +1 -0
  228. package/dist/utils/ids.js +47 -0
  229. package/dist/utils/ids.js.map +1 -0
  230. package/dist/utils/number.d.ts +32 -0
  231. package/dist/utils/number.d.ts.map +1 -0
  232. package/dist/utils/number.js +59 -0
  233. package/dist/utils/number.js.map +1 -0
  234. package/dist/utils/objects.d.ts +7 -0
  235. package/dist/utils/objects.d.ts.map +1 -0
  236. package/dist/utils/objects.js +29 -0
  237. package/dist/utils/objects.js.map +1 -0
  238. package/dist/utils/time.d.ts +8 -0
  239. package/dist/utils/time.d.ts.map +1 -0
  240. package/dist/utils/time.js +15 -0
  241. package/dist/utils/time.js.map +1 -0
  242. package/dist/utils/utils.test.d.ts +2 -0
  243. package/dist/utils/utils.test.d.ts.map +1 -0
  244. package/dist/utils/utils.test.js +41 -0
  245. package/dist/utils/utils.test.js.map +1 -0
  246. package/logos/black/arbitrum.svg +1 -0
  247. package/logos/black/avalanche.svg +1 -0
  248. package/logos/black/bsc.svg +1 -0
  249. package/logos/black/celo.svg +1 -0
  250. package/logos/black/ethereum.svg +8 -0
  251. package/logos/black/hyperlane.svg +1 -0
  252. package/logos/black/moonbeam.svg +3 -0
  253. package/logos/black/near.svg +1 -0
  254. package/logos/black/optimism.svg +1 -0
  255. package/logos/black/polygon.svg +1 -0
  256. package/logos/color/arbitrum.svg +1 -0
  257. package/logos/color/avalanche.svg +1 -0
  258. package/logos/color/bsc.svg +1 -0
  259. package/logos/color/celo.svg +1 -0
  260. package/logos/color/ethereum.svg +1 -0
  261. package/logos/color/hyperlane.svg +1 -0
  262. package/logos/color/moonbeam.svg +1 -0
  263. package/logos/color/optimism.svg +1 -0
  264. package/logos/color/polygon.svg +1 -0
  265. package/package.json +6 -4
@@ -0,0 +1,97 @@
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.LiquidityLayerDeployer = 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 LiquidityLayerDeployer extends HyperlaneRouterDeployer_1.HyperlaneRouterDeployer {
23
+ constructor(multiProvider, configMap, core, create2salt = 'LiquidityLayerDeployerSalt') {
24
+ super(multiProvider, configMap, middleware_1.liquidityLayerFactories, {});
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 LiquidityLayerRouter 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.LiquidityLayerRouter__factory.createInterface().encodeFunctionData('initialize', [
46
+ config.mailbox,
47
+ config.interchainGasPaymaster,
48
+ config.interchainSecurityModule,
49
+ ]);
50
+ const router = yield this.deployContract(chain, 'router', [], {
51
+ create2Salt: this.create2salt,
52
+ initCalldata,
53
+ });
54
+ const bridgeAdapters = {};
55
+ for (const adapterConfig of config.bridgeAdapterConfigs) {
56
+ if (adapterConfig.type === BridgeAdapterType.Circle) {
57
+ bridgeAdapters.circleBridgeAdapter =
58
+ yield this.deployCircleBridgeAdapter(chain, adapterConfig, config.owner, router);
59
+ }
60
+ }
61
+ return Object.assign(Object.assign({}, bridgeAdapters), { router });
62
+ });
63
+ }
64
+ deployCircleBridgeAdapter(chain, adapterConfig, owner, router) {
65
+ return __awaiter(this, void 0, void 0, function* () {
66
+ const cc = this.multiProvider.getChainConnection(chain);
67
+ const initCalldata = core_1.CircleBridgeAdapter__factory.createInterface().encodeFunctionData('initialize', [
68
+ owner,
69
+ adapterConfig.circleBridgeAddress,
70
+ adapterConfig.messageTransmitterAddress,
71
+ router.address,
72
+ ]);
73
+ const circleBridgeAdapter = yield this.deployContract(chain, 'circleBridgeAdapter', [], {
74
+ create2Salt: this.create2salt,
75
+ initCalldata,
76
+ });
77
+ if ((yield circleBridgeAdapter.tokenSymbolToAddress('USDC')) ===
78
+ ethers_1.ethers.constants.AddressZero) {
79
+ this.logger(`Set USDC token contract`);
80
+ yield cc.handleTx(circleBridgeAdapter.addToken(adapterConfig.usdcAddress, 'USDC'));
81
+ }
82
+ // Set domain mappings
83
+ for (const { circleDomain, hyperlaneDomain, } of adapterConfig.circleDomainMapping) {
84
+ const expectedCircleDomain = yield circleBridgeAdapter.hyperlaneDomainToCircleDomain(hyperlaneDomain);
85
+ if (expectedCircleDomain === circleDomain)
86
+ continue;
87
+ this.logger(`Set circle domain ${circleDomain} for hyperlane domain ${hyperlaneDomain}`);
88
+ yield cc.handleTx(circleBridgeAdapter.addDomain(hyperlaneDomain, circleDomain));
89
+ }
90
+ this.logger('Set CircleLiquidityLayerAdapter on Router');
91
+ yield cc.handleTx(router.setLiquidityLayerAdapter(adapterConfig.type, circleBridgeAdapter.address));
92
+ return circleBridgeAdapter;
93
+ });
94
+ }
95
+ }
96
+ exports.LiquidityLayerDeployer = LiquidityLayerDeployer;
97
+ //# sourceMappingURL=LiquidityLayerRouterDeployer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LiquidityLayerRouterDeployer.js","sourceRoot":"","sources":["../../../src/deploy/middleware/LiquidityLayerRouterDeployer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,21 @@
1
+ import { HyperlaneCore } from '../../core/HyperlaneCore';
2
+ import { InterchainAccountContracts, InterchainAccountFactories, InterchainQueryContracts, InterchainQueryFactories } 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 InterchainAccountConfig = RouterConfig;
8
+ export declare class InterchainAccountDeployer<Chain extends ChainName> extends HyperlaneRouterDeployer<Chain, InterchainAccountConfig, InterchainAccountContracts, InterchainAccountFactories> {
9
+ protected core: HyperlaneCore<Chain>;
10
+ protected create2salt: string;
11
+ constructor(multiProvider: MultiProvider<Chain>, configMap: ChainMap<Chain, InterchainAccountConfig>, core: HyperlaneCore<Chain>, create2salt?: string);
12
+ deployContracts(chain: Chain, config: InterchainAccountConfig): Promise<InterchainAccountContracts>;
13
+ }
14
+ export declare type InterchainQueryConfig = RouterConfig;
15
+ export declare class InterchainQueryDeployer<Chain extends ChainName> extends HyperlaneRouterDeployer<Chain, InterchainQueryConfig, InterchainQueryContracts, InterchainQueryFactories> {
16
+ protected core: HyperlaneCore<Chain>;
17
+ protected create2salt: string;
18
+ constructor(multiProvider: MultiProvider<Chain>, configMap: ChainMap<Chain, InterchainQueryConfig>, core: HyperlaneCore<Chain>, create2salt?: string);
19
+ deployContracts(chain: Chain, config: InterchainQueryConfig): Promise<InterchainQueryContracts>;
20
+ }
21
+ //# sourceMappingURL=deploy.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,70 @@
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.InterchainQueryDeployer = exports.InterchainAccountDeployer = 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 InterchainAccountDeployer extends HyperlaneRouterDeployer_1.HyperlaneRouterDeployer {
17
+ constructor(multiProvider, configMap, core, create2salt = 'asdasdsd') {
18
+ super(multiProvider, configMap, middleware_1.interchainAccountFactories, {});
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.InterchainAccountRouter__factory.createInterface().encodeFunctionData('initialize', [
27
+ config.mailbox,
28
+ config.interchainGasPaymaster,
29
+ config.interchainSecurityModule,
30
+ ]);
31
+ const router = yield this.deployContract(chain, 'router', [], {
32
+ create2Salt: this.create2salt + 'router',
33
+ initCalldata,
34
+ });
35
+ return {
36
+ router,
37
+ };
38
+ });
39
+ }
40
+ }
41
+ exports.InterchainAccountDeployer = InterchainAccountDeployer;
42
+ class InterchainQueryDeployer extends HyperlaneRouterDeployer_1.HyperlaneRouterDeployer {
43
+ constructor(multiProvider, configMap, core,
44
+ // TODO replace salt with 'hyperlane' before next redeploy
45
+ create2salt = 'asdasdsd') {
46
+ super(multiProvider, configMap, middleware_1.interchainQueryFactories, {});
47
+ this.core = core;
48
+ this.create2salt = create2salt;
49
+ }
50
+ // Custom contract deployment logic can go here
51
+ // If no custom logic is needed, call deployContract for the router
52
+ deployContracts(chain, config) {
53
+ 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
+ ]);
59
+ const router = yield this.deployContract(chain, 'router', [], {
60
+ create2Salt: this.create2salt + 'router',
61
+ initCalldata,
62
+ });
63
+ return {
64
+ router,
65
+ };
66
+ });
67
+ }
68
+ }
69
+ exports.InterchainQueryDeployer = InterchainQueryDeployer;
70
+ //# sourceMappingURL=deploy.js.map
@@ -0,0 +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"}
@@ -0,0 +1,18 @@
1
+ import { ethers } from 'ethers';
2
+ import type { types } from '@hyperlane-xyz/utils';
3
+ import { TransparentProxyAddresses } from '../proxy';
4
+ import { ChainName } from '../types';
5
+ import { CheckerViolation } from './types';
6
+ export interface ProxyViolation extends CheckerViolation {
7
+ type: TransparentProxyAddresses['kind'];
8
+ data: {
9
+ proxyAddresses: TransparentProxyAddresses;
10
+ name: string;
11
+ };
12
+ actual: string;
13
+ expected: string;
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;
18
+ //# sourceMappingURL=proxy.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,43 @@
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.proxyViolation = exports.proxyAdmin = exports.proxyImplementation = void 0;
13
+ const ethers_1 = require("ethers");
14
+ function proxyImplementation(provider, proxy) {
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');
18
+ return ethers_1.ethers.utils.getAddress(storageValue.slice(26));
19
+ });
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) {
31
+ return {
32
+ chain,
33
+ type: proxyAddresses.kind,
34
+ actual,
35
+ expected: proxyAddresses.implementation,
36
+ data: {
37
+ name,
38
+ proxyAddresses,
39
+ },
40
+ };
41
+ }
42
+ exports.proxyViolation = proxyViolation;
43
+ //# sourceMappingURL=proxy.js.map
@@ -0,0 +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"}
@@ -0,0 +1,13 @@
1
+ import { Ownable } from '@hyperlane-xyz/core';
2
+ import { HyperlaneApp } from '../../HyperlaneApp';
3
+ import { RouterContracts } from '../../router';
4
+ import { ChainName } from '../../types';
5
+ import { HyperlaneAppChecker } from '../HyperlaneAppChecker';
6
+ import { RouterConfig } from './types';
7
+ export declare class HyperlaneRouterChecker<Chain extends ChainName, App extends HyperlaneApp<Contracts, Chain>, Config extends RouterConfig, Contracts extends RouterContracts> extends HyperlaneAppChecker<Chain, App, Config> {
8
+ checkOwnership(chain: Chain): Promise<void>;
9
+ checkChain(chain: Chain): Promise<void>;
10
+ checkEnrolledRouters(chain: Chain): Promise<void>;
11
+ ownables(chain: Chain): Ownable[];
12
+ }
13
+ //# sourceMappingURL=HyperlaneRouterChecker.d.ts.map
@@ -0,0 +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"}
@@ -0,0 +1,44 @@
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.HyperlaneRouterChecker = void 0;
13
+ const utils_1 = require("@hyperlane-xyz/utils");
14
+ const chainMetadata_1 = require("../../consts/chainMetadata");
15
+ const HyperlaneAppChecker_1 = require("../HyperlaneAppChecker");
16
+ class HyperlaneRouterChecker extends HyperlaneAppChecker_1.HyperlaneAppChecker {
17
+ checkOwnership(chain) {
18
+ const owner = this.configMap[chain].owner;
19
+ const ownables = this.ownables(chain);
20
+ return super.checkOwnership(chain, owner, ownables);
21
+ }
22
+ checkChain(chain) {
23
+ return __awaiter(this, void 0, void 0, function* () {
24
+ yield this.checkEnrolledRouters(chain);
25
+ yield this.checkOwnership(chain);
26
+ });
27
+ }
28
+ checkEnrolledRouters(chain) {
29
+ return __awaiter(this, void 0, void 0, function* () {
30
+ const router = this.app.getContracts(chain).router;
31
+ yield Promise.all(this.app.remoteChains(chain).map((remoteChain) => __awaiter(this, void 0, void 0, function* () {
32
+ const remoteRouter = this.app.getContracts(remoteChain).router;
33
+ const remoteChainId = chainMetadata_1.chainMetadata[remoteChain].id;
34
+ const address = yield router.routers(remoteChainId);
35
+ utils_1.utils.assert(address === utils_1.utils.addressToBytes32(remoteRouter.address));
36
+ })));
37
+ });
38
+ }
39
+ ownables(chain) {
40
+ return [this.app.getContracts(chain).router];
41
+ }
42
+ }
43
+ exports.HyperlaneRouterChecker = HyperlaneRouterChecker;
44
+ //# sourceMappingURL=HyperlaneRouterChecker.js.map
@@ -0,0 +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"}
@@ -0,0 +1,13 @@
1
+ import { MultiProvider } from '../../providers/MultiProvider';
2
+ import { RouterContracts, RouterFactories } from '../../router';
3
+ import { ChainMap, ChainName } from '../../types';
4
+ import { DeployerOptions, HyperlaneDeployer } from '../HyperlaneDeployer';
5
+ import { RouterConfig } from './types';
6
+ export declare abstract class HyperlaneRouterDeployer<Chain extends ChainName, Config extends RouterConfig, Contracts extends RouterContracts, Factories extends RouterFactories> extends HyperlaneDeployer<Chain, Config, Contracts, Factories> {
7
+ constructor(multiProvider: MultiProvider<Chain>, configMap: ChainMap<Chain, Config>, factories: Factories, options?: DeployerOptions);
8
+ initConnectionClient(contractsMap: ChainMap<Chain, Contracts>): Promise<void>;
9
+ enrollRemoteRouters(contractsMap: ChainMap<Chain, RouterContracts>): Promise<void>;
10
+ transferOwnership(contractsMap: ChainMap<Chain, Contracts>): Promise<void>;
11
+ deploy(partialDeployment?: Partial<Record<Chain, Contracts>>): Promise<ChainMap<Chain, Contracts>>;
12
+ }
13
+ //# sourceMappingURL=HyperlaneRouterDeployer.d.ts.map
@@ -0,0 +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"}
@@ -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
+ Object.defineProperty(exports, "__esModule", { value: true });
12
+ exports.HyperlaneRouterDeployer = void 0;
13
+ const debug_1 = require("debug");
14
+ const ethers_1 = require("ethers");
15
+ const utils_1 = require("@hyperlane-xyz/utils");
16
+ const chainMetadata_1 = require("../../consts/chainMetadata");
17
+ const domains_1 = require("../../domains");
18
+ const objects_1 = require("../../utils/objects");
19
+ const HyperlaneDeployer_1 = require("../HyperlaneDeployer");
20
+ class HyperlaneRouterDeployer extends HyperlaneDeployer_1.HyperlaneDeployer {
21
+ constructor(multiProvider, configMap, factories, options) {
22
+ super(multiProvider, configMap, factories, Object.assign({ logger: (0, debug_1.debug)('hyperlane:RouterDeployer') }, options));
23
+ }
24
+ initConnectionClient(contractsMap) {
25
+ return __awaiter(this, void 0, void 0, function* () {
26
+ this.logger(`Initializing connection clients (if not already)...`);
27
+ yield (0, objects_1.promiseObjAll)((0, objects_1.objMap)(contractsMap, (local, contracts) => __awaiter(this, void 0, void 0, function* () {
28
+ 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));
35
+ }
36
+ // set interchain gas paymaster if not already set (and configured)
37
+ const interchainGasPaymaster = this.configMap[local].interchainGasPaymaster;
38
+ if (interchainGasPaymaster &&
39
+ (yield contracts.router.interchainGasPaymaster()) ===
40
+ ethers_1.ethers.constants.AddressZero) {
41
+ this.logger(`Set interchain gas paymaster on ${local}`);
42
+ yield chainConnection.handleTx(contracts.router.setInterchainGasPaymaster(interchainGasPaymaster));
43
+ }
44
+ })));
45
+ });
46
+ }
47
+ enrollRemoteRouters(contractsMap) {
48
+ const _super = Object.create(null, {
49
+ runIfOwner: { get: () => super.runIfOwner }
50
+ });
51
+ return __awaiter(this, void 0, void 0, function* () {
52
+ this.logger(`Enrolling deployed routers with each other (if not already)...`);
53
+ // Make all routers aware of each other.
54
+ const deployedChains = Object.keys(contractsMap);
55
+ for (const [chain, contracts] of Object.entries(contractsMap)) {
56
+ const local = chain;
57
+ this.logger({ local });
58
+ const chainConnection = this.multiProvider.getChainConnection(local);
59
+ // only enroll chains which are deployed
60
+ const deployedRemoteChains = this.multiProvider
61
+ .remoteChains(local)
62
+ .filter((c) => deployedChains.includes(c));
63
+ this.logger({ deployedRemoteChains });
64
+ const enrollEntries = yield Promise.all(deployedRemoteChains.map((remote) => __awaiter(this, void 0, void 0, function* () {
65
+ const remoteDomain = chainMetadata_1.chainMetadata[remote].id;
66
+ const current = yield contracts.router.routers(remoteDomain);
67
+ const expected = utils_1.utils.addressToBytes32(contractsMap[remote].router.address);
68
+ return current !== expected ? [remoteDomain, expected] : undefined;
69
+ })));
70
+ const entries = enrollEntries.filter((entry) => entry !== undefined);
71
+ this.logger({ entries });
72
+ const domains = entries.map(([id]) => id);
73
+ 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
+ }));
79
+ }
80
+ });
81
+ }
82
+ transferOwnership(contractsMap) {
83
+ const _super = Object.create(null, {
84
+ runIfOwner: { get: () => super.runIfOwner }
85
+ });
86
+ return __awaiter(this, void 0, void 0, function* () {
87
+ this.logger(`Transferring ownership of routers...`);
88
+ yield (0, objects_1.promiseObjAll)((0, objects_1.objMap)(contractsMap, (chain, contracts) => __awaiter(this, void 0, void 0, function* () {
89
+ const chainConnection = this.multiProvider.getChainConnection(chain);
90
+ const owner = this.configMap[chain].owner;
91
+ this.logger(`Transfer ownership of ${chain}'s router to ${owner}`);
92
+ const currentOwner = yield contracts.router.owner();
93
+ if (owner != currentOwner) {
94
+ yield _super.runIfOwner.call(this, chain, contracts.router, () => __awaiter(this, void 0, void 0, function* () {
95
+ yield chainConnection.handleTx(contracts.router.transferOwnership(owner, chainConnection.overrides));
96
+ }));
97
+ }
98
+ })));
99
+ });
100
+ }
101
+ deploy(partialDeployment) {
102
+ const _super = Object.create(null, {
103
+ deploy: { get: () => super.deploy }
104
+ });
105
+ return __awaiter(this, void 0, void 0, function* () {
106
+ const contractsMap = yield _super.deploy.call(this, partialDeployment);
107
+ yield this.enrollRemoteRouters(contractsMap);
108
+ yield this.initConnectionClient(contractsMap);
109
+ yield this.transferOwnership(contractsMap);
110
+ return contractsMap;
111
+ });
112
+ }
113
+ }
114
+ exports.HyperlaneRouterDeployer = HyperlaneRouterDeployer;
115
+ //# sourceMappingURL=HyperlaneRouterDeployer.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"HyperlaneRouterDeployer.js","sourceRoot":"","sources":["../../../src/deploy/router/HyperlaneRouterDeployer.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,7 @@
1
+ import type { types } from '@hyperlane-xyz/utils';
2
+ import type { ConnectionClientConfig } from '../../router';
3
+ export declare type OwnableConfig = {
4
+ owner: types.Address;
5
+ };
6
+ export declare type RouterConfig = ConnectionClientConfig & OwnableConfig;
7
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../../src/deploy/router/types.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAElD,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,cAAc,CAAC;AAE3D,oBAAY,aAAa,GAAG;IAC1B,KAAK,EAAE,KAAK,CAAC,OAAO,CAAC;CACtB,CAAC;AAEF,oBAAY,YAAY,GAAG,sBAAsB,GAAG,aAAa,CAAC"}
@@ -0,0 +1,3 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../../src/deploy/router/types.ts"],"names":[],"mappings":""}
@@ -0,0 +1,23 @@
1
+ import { Contract } from 'ethers';
2
+ import { Ownable } from '@hyperlane-xyz/core';
3
+ import type { ChainMap, ChainName, IChainConnection } from '../types';
4
+ export interface CheckerViolation {
5
+ chain: ChainName;
6
+ type: string;
7
+ expected: any;
8
+ actual: any;
9
+ contract?: Contract;
10
+ }
11
+ export declare type EnvironmentConfig<Chain extends ChainName> = ChainMap<Chain, IChainConnection>;
12
+ export declare enum ViolationType {
13
+ Owner = "Owner",
14
+ NotDeployed = "NotDeployed"
15
+ }
16
+ export interface OwnerViolation extends CheckerViolation {
17
+ type: ViolationType.Owner;
18
+ contract: Ownable;
19
+ }
20
+ export interface NotDeployedViolation extends CheckerViolation {
21
+ type: ViolationType.NotDeployed;
22
+ }
23
+ //# sourceMappingURL=types.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.d.ts","sourceRoot":"","sources":["../../src/deploy/types.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,QAAQ,EAAE,MAAM,QAAQ,CAAC;AAElC,OAAO,EAAE,OAAO,EAAE,MAAM,qBAAqB,CAAC;AAE9C,OAAO,KAAK,EAAE,QAAQ,EAAE,SAAS,EAAE,gBAAgB,EAAE,MAAM,UAAU,CAAC;AAEtE,MAAM,WAAW,gBAAgB;IAC/B,KAAK,EAAE,SAAS,CAAC;IACjB,IAAI,EAAE,MAAM,CAAC;IACb,QAAQ,EAAE,GAAG,CAAC;IACd,MAAM,EAAE,GAAG,CAAC;IACZ,QAAQ,CAAC,EAAE,QAAQ,CAAC;CACrB;AAED,oBAAY,iBAAiB,CAAC,KAAK,SAAS,SAAS,IAAI,QAAQ,CAC/D,KAAK,EACL,gBAAgB,CACjB,CAAC;AAEF,oBAAY,aAAa;IACvB,KAAK,UAAU;IACf,WAAW,gBAAgB;CAC5B;AAED,MAAM,WAAW,cAAe,SAAQ,gBAAgB;IACtD,IAAI,EAAE,aAAa,CAAC,KAAK,CAAC;IAC1B,QAAQ,EAAE,OAAO,CAAC;CACnB;AAED,MAAM,WAAW,oBAAqB,SAAQ,gBAAgB;IAC5D,IAAI,EAAE,aAAa,CAAC,WAAW,CAAC;CACjC"}
@@ -0,0 +1,9 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.ViolationType = void 0;
4
+ var ViolationType;
5
+ (function (ViolationType) {
6
+ ViolationType["Owner"] = "Owner";
7
+ ViolationType["NotDeployed"] = "NotDeployed";
8
+ })(ViolationType = exports.ViolationType || (exports.ViolationType = {}));
9
+ //# sourceMappingURL=types.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"types.js","sourceRoot":"","sources":["../../src/deploy/types.ts"],"names":[],"mappings":";;;AAmBA,IAAY,aAGX;AAHD,WAAY,aAAa;IACvB,gCAAe,CAAA;IACf,4CAA2B,CAAA;AAC7B,CAAC,EAHW,aAAa,GAAb,qBAAa,KAAb,qBAAa,QAGxB"}
@@ -0,0 +1,10 @@
1
+ import { Signer, providers } from 'ethers';
2
+ import { types } from '@hyperlane-xyz/utils';
3
+ import { MultiProvider } from '../providers/MultiProvider';
4
+ import { ChainMap, ChainName, TestChainNames } from '../types';
5
+ import { EnvironmentConfig } from './types';
6
+ export declare function getTestMultiProvider<Chain extends TestChainNames>(signerOrProvider: Signer | providers.Provider, configs?: EnvironmentConfig<Chain>): MultiProvider<Chain>;
7
+ export declare function getChainToOwnerMap<Chain extends ChainName>(configMap: ChainMap<Chain, any>, owner: types.Address): ChainMap<Chain, {
8
+ owner: string;
9
+ }>;
10
+ //# sourceMappingURL=utils.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.d.ts","sourceRoot":"","sources":["../../src/deploy/utils.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,MAAM,EAAE,SAAS,EAAE,MAAM,QAAQ,CAAC;AAE3C,OAAO,EAAE,KAAK,EAAE,MAAM,sBAAsB,CAAC;AAG7C,OAAO,EAAE,aAAa,EAAE,MAAM,4BAA4B,CAAC;AAC3D,OAAO,EAAE,QAAQ,EAAE,SAAS,EAAE,cAAc,EAAE,MAAM,UAAU,CAAC;AAG/D,OAAO,EAAE,iBAAiB,EAAE,MAAM,SAAS,CAAC;AAE5C,wBAAgB,oBAAoB,CAAC,KAAK,SAAS,cAAc,EAC/D,gBAAgB,EAAE,MAAM,GAAG,SAAS,CAAC,QAAQ,EAC7C,OAAO,GAAE,iBAAiB,CAAC,KAAK,CAA8B,GAC7D,aAAa,CAAC,KAAK,CAAC,CAmBtB;AAED,wBAAgB,kBAAkB,CAAC,KAAK,SAAS,SAAS,EACxD,SAAS,EAAE,QAAQ,CAAC,KAAK,EAAE,GAAG,CAAC,EAC/B,KAAK,EAAE,KAAK,CAAC,OAAO,GACnB,QAAQ,CAAC,KAAK,EAAE;IAAE,KAAK,EAAE,MAAM,CAAA;CAAE,CAAC,CAMpC"}
@@ -0,0 +1,38 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.getChainToOwnerMap = exports.getTestMultiProvider = void 0;
4
+ const ethers_1 = require("ethers");
5
+ const chainConnectionConfigs_1 = require("../consts/chainConnectionConfigs");
6
+ const MultiProvider_1 = require("../providers/MultiProvider");
7
+ const objects_1 = require("../utils/objects");
8
+ function getTestMultiProvider(signerOrProvider, configs = chainConnectionConfigs_1.testChainConnectionConfigs) {
9
+ let signer;
10
+ let provider;
11
+ if (ethers_1.Signer.isSigner(signerOrProvider) && signerOrProvider.provider) {
12
+ signer = signerOrProvider;
13
+ provider = signerOrProvider.provider;
14
+ }
15
+ else if (ethers_1.providers.Provider.isProvider(signerOrProvider)) {
16
+ provider = signerOrProvider;
17
+ }
18
+ else {
19
+ throw new Error('signerOrProvider is invalid');
20
+ }
21
+ const chainProviders = (0, objects_1.objMap)(configs, (_, config) => ({
22
+ signer,
23
+ provider,
24
+ confirmations: config.confirmations,
25
+ overrides: config.overrides,
26
+ }));
27
+ return new MultiProvider_1.MultiProvider(chainProviders);
28
+ }
29
+ exports.getTestMultiProvider = getTestMultiProvider;
30
+ function getChainToOwnerMap(configMap, owner) {
31
+ return (0, objects_1.objMap)(configMap, () => {
32
+ return {
33
+ owner,
34
+ };
35
+ });
36
+ }
37
+ exports.getChainToOwnerMap = getChainToOwnerMap;
38
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/deploy/utils.ts"],"names":[],"mappings":";;;AAAA,mCAA2C;AAI3C,6EAA8E;AAC9E,8DAA2D;AAE3D,8CAA0C;AAI1C,SAAgB,oBAAoB,CAClC,gBAA6C,EAC7C,UAAoC,mDAA0B;IAE9D,IAAI,MAA0B,CAAC;IAC/B,IAAI,QAA4B,CAAC;IACjC,IAAI,eAAM,CAAC,QAAQ,CAAC,gBAAgB,CAAC,IAAI,gBAAgB,CAAC,QAAQ,EAAE;QAClE,MAAM,GAAG,gBAAgB,CAAC;QAC1B,QAAQ,GAAG,gBAAgB,CAAC,QAAQ,CAAC;KACtC;SAAM,IAAI,kBAAS,CAAC,QAAQ,CAAC,UAAU,CAAC,gBAAgB,CAAC,EAAE;QAC1D,QAAQ,GAAG,gBAAgB,CAAC;KAC7B;SAAM;QACL,MAAM,IAAI,KAAK,CAAC,6BAA6B,CAAC,CAAC;KAChD;IAED,MAAM,cAAc,GAAG,IAAA,gBAAM,EAAC,OAAO,EAAE,CAAC,CAAC,EAAE,MAAM,EAAE,EAAE,CAAC,CAAC;QACrD,MAAM;QACN,QAAQ;QACR,aAAa,EAAE,MAAM,CAAC,aAAa;QACnC,SAAS,EAAE,MAAM,CAAC,SAAS;KAC5B,CAAC,CAAC,CAAC;IACJ,OAAO,IAAI,6BAAa,CAAC,cAAc,CAAC,CAAC;AAC3C,CAAC;AAtBD,oDAsBC;AAED,SAAgB,kBAAkB,CAChC,SAA+B,EAC/B,KAAoB;IAEpB,OAAO,IAAA,gBAAM,EAAC,SAAS,EAAE,GAAG,EAAE;QAC5B,OAAO;YACL,KAAK;SACN,CAAC;IACJ,CAAC,CAAC,CAAC;AACL,CAAC;AATD,gDASC"}