@hyperlane-xyz/sdk 1.4.3-beta1 → 1.4.3-beta2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (297) hide show
  1. package/README.md +7 -1
  2. package/dist/{HyperlaneApp.d.ts → app/HyperlaneApp.d.ts} +4 -4
  3. package/dist/app/HyperlaneApp.d.ts.map +1 -0
  4. package/dist/{HyperlaneApp.js → app/HyperlaneApp.js} +2 -2
  5. package/dist/app/HyperlaneApp.js.map +1 -0
  6. package/dist/app/MultiProtocolApp.d.ts +51 -0
  7. package/dist/app/MultiProtocolApp.d.ts.map +1 -0
  8. package/dist/app/MultiProtocolApp.js +80 -0
  9. package/dist/app/MultiProtocolApp.js.map +1 -0
  10. package/dist/app/MultiProtocolApp.test.d.ts +2 -0
  11. package/dist/app/MultiProtocolApp.test.d.ts.map +1 -0
  12. package/dist/app/MultiProtocolApp.test.js +19 -0
  13. package/dist/app/MultiProtocolApp.test.js.map +1 -0
  14. package/dist/consts/agentStartBlocks.d.ts +3 -0
  15. package/dist/consts/agentStartBlocks.d.ts.map +1 -0
  16. package/dist/consts/agentStartBlocks.js +28 -0
  17. package/dist/consts/agentStartBlocks.js.map +1 -0
  18. package/dist/consts/bytecode.js +1 -1
  19. package/dist/consts/bytecode.js.map +1 -1
  20. package/dist/consts/chainMetadata.d.ts +2 -58
  21. package/dist/consts/chainMetadata.d.ts.map +1 -1
  22. package/dist/consts/chainMetadata.js +1 -19
  23. package/dist/consts/chainMetadata.js.map +1 -1
  24. package/dist/consts/chains.d.ts +2 -3
  25. package/dist/consts/chains.d.ts.map +1 -1
  26. package/dist/consts/chains.js +2 -3
  27. package/dist/consts/chains.js.map +1 -1
  28. package/dist/consts/environments/index.d.ts +3 -3
  29. package/dist/consts/environments/index.d.ts.map +1 -1
  30. package/dist/consts/environments/index.js.map +1 -1
  31. package/dist/{contracts.d.ts → contracts/contracts.d.ts} +3 -15
  32. package/dist/contracts/contracts.d.ts.map +1 -0
  33. package/dist/{contracts.js → contracts/contracts.js} +12 -23
  34. package/dist/contracts/contracts.js.map +1 -0
  35. package/dist/contracts/types.d.ts +18 -0
  36. package/dist/contracts/types.d.ts.map +1 -0
  37. package/dist/contracts/types.js +3 -0
  38. package/dist/contracts/types.js.map +1 -0
  39. package/dist/core/CoreDeployer.hardhat-test.js +33 -42
  40. package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
  41. package/dist/core/HyperlaneCore.d.ts +5 -5
  42. package/dist/core/HyperlaneCore.d.ts.map +1 -1
  43. package/dist/core/HyperlaneCore.js +15 -28
  44. package/dist/core/HyperlaneCore.js.map +1 -1
  45. package/dist/core/HyperlaneCore.test.js +4 -13
  46. package/dist/core/HyperlaneCore.test.js.map +1 -1
  47. package/dist/core/HyperlaneCoreChecker.js +80 -99
  48. package/dist/core/HyperlaneCoreChecker.js.map +1 -1
  49. package/dist/core/HyperlaneCoreDeployer.d.ts +1 -1
  50. package/dist/core/HyperlaneCoreDeployer.d.ts.map +1 -1
  51. package/dist/core/HyperlaneCoreDeployer.js +45 -62
  52. package/dist/core/HyperlaneCoreDeployer.js.map +1 -1
  53. package/dist/core/TestCoreApp.d.ts +1 -1
  54. package/dist/core/TestCoreApp.d.ts.map +1 -1
  55. package/dist/core/TestCoreApp.js +35 -45
  56. package/dist/core/TestCoreApp.js.map +1 -1
  57. package/dist/core/TestCoreDeployer.d.ts +1 -1
  58. package/dist/core/TestCoreDeployer.d.ts.map +1 -1
  59. package/dist/core/TestCoreDeployer.js +14 -27
  60. package/dist/core/TestCoreDeployer.js.map +1 -1
  61. package/dist/core/contracts.d.ts +1 -1
  62. package/dist/core/contracts.d.ts.map +1 -1
  63. package/dist/core/events.d.ts +1 -1
  64. package/dist/core/events.d.ts.map +1 -1
  65. package/dist/core/testHyperlaneDeploy.hardhat-test.js +23 -32
  66. package/dist/core/testHyperlaneDeploy.hardhat-test.js.map +1 -1
  67. package/dist/core/types.d.ts +1 -1
  68. package/dist/core/types.d.ts.map +1 -1
  69. package/dist/core/types.js +2 -2
  70. package/dist/core/types.js.map +1 -1
  71. package/dist/deploy/HyperlaneAppChecker.d.ts +1 -1
  72. package/dist/deploy/HyperlaneAppChecker.d.ts.map +1 -1
  73. package/dist/deploy/HyperlaneAppChecker.js +99 -123
  74. package/dist/deploy/HyperlaneAppChecker.js.map +1 -1
  75. package/dist/deploy/HyperlaneDeployer.d.ts +1 -1
  76. package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
  77. package/dist/deploy/HyperlaneDeployer.js +176 -216
  78. package/dist/deploy/HyperlaneDeployer.js.map +1 -1
  79. package/dist/deploy/proxy.d.ts +1 -1
  80. package/dist/deploy/proxy.d.ts.map +1 -1
  81. package/dist/deploy/proxy.js +11 -26
  82. package/dist/deploy/proxy.js.map +1 -1
  83. package/dist/deploy/types.js +1 -1
  84. package/dist/deploy/types.js.map +1 -1
  85. package/dist/deploy/verify/ContractVerifier.js +122 -131
  86. package/dist/deploy/verify/ContractVerifier.js.map +1 -1
  87. package/dist/deploy/verify/types.d.ts +3 -3
  88. package/dist/deploy/verify/types.d.ts.map +1 -1
  89. package/dist/gas/HyperlaneIgp.d.ts +2 -2
  90. package/dist/gas/HyperlaneIgp.d.ts.map +1 -1
  91. package/dist/gas/HyperlaneIgp.js +2 -2
  92. package/dist/gas/HyperlaneIgp.js.map +1 -1
  93. package/dist/gas/HyperlaneIgpChecker.js +101 -123
  94. package/dist/gas/HyperlaneIgpChecker.js.map +1 -1
  95. package/dist/gas/HyperlaneIgpDeployer.d.ts +1 -1
  96. package/dist/gas/HyperlaneIgpDeployer.d.ts.map +1 -1
  97. package/dist/gas/HyperlaneIgpDeployer.js +70 -89
  98. package/dist/gas/HyperlaneIgpDeployer.js.map +1 -1
  99. package/dist/gas/contracts.d.ts +1 -1
  100. package/dist/gas/contracts.d.ts.map +1 -1
  101. package/dist/gas/contracts.js +6 -1
  102. package/dist/gas/contracts.js.map +1 -1
  103. package/dist/gas/token-prices.d.ts +6 -60
  104. package/dist/gas/token-prices.d.ts.map +1 -1
  105. package/dist/gas/token-prices.js +37 -54
  106. package/dist/gas/token-prices.js.map +1 -1
  107. package/dist/gas/token-prices.test.js +11 -20
  108. package/dist/gas/token-prices.test.js.map +1 -1
  109. package/dist/gas/types.d.ts +2 -2
  110. package/dist/gas/types.d.ts.map +1 -1
  111. package/dist/gas/types.js +2 -2
  112. package/dist/gas/types.js.map +1 -1
  113. package/dist/hook/HyperlaneHookDeployer.d.ts +1 -1
  114. package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
  115. package/dist/hook/HyperlaneHookDeployer.js +69 -88
  116. package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
  117. package/dist/hook/contracts.d.ts +4 -4
  118. package/dist/hook/contracts.d.ts.map +1 -1
  119. package/dist/hook/contracts.js +5 -1
  120. package/dist/hook/contracts.js.map +1 -1
  121. package/dist/hook/types.d.ts +3 -3
  122. package/dist/hook/types.d.ts.map +1 -1
  123. package/dist/hook/types.js +1 -1
  124. package/dist/hook/types.js.map +1 -1
  125. package/dist/index.d.ts +13 -6
  126. package/dist/index.d.ts.map +1 -1
  127. package/dist/index.js +30 -5
  128. package/dist/index.js.map +1 -1
  129. package/dist/ism/HyperlaneIsmFactory.d.ts +2 -2
  130. package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
  131. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +14 -23
  132. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
  133. package/dist/ism/HyperlaneIsmFactory.js +234 -256
  134. package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
  135. package/dist/ism/HyperlaneIsmFactoryDeployer.d.ts +1 -1
  136. package/dist/ism/HyperlaneIsmFactoryDeployer.d.ts.map +1 -1
  137. package/dist/ism/HyperlaneIsmFactoryDeployer.js +18 -34
  138. package/dist/ism/HyperlaneIsmFactoryDeployer.js.map +1 -1
  139. package/dist/ism/contracts.d.ts +1 -1
  140. package/dist/ism/contracts.d.ts.map +1 -1
  141. package/dist/ism/types.d.ts +5 -5
  142. package/dist/ism/types.d.ts.map +1 -1
  143. package/dist/ism/types.js +1 -1
  144. package/dist/ism/types.js.map +1 -1
  145. package/dist/metadata/ChainMetadataManager.d.ts +130 -0
  146. package/dist/metadata/ChainMetadataManager.d.ts.map +1 -0
  147. package/dist/metadata/ChainMetadataManager.js +240 -0
  148. package/dist/metadata/ChainMetadataManager.js.map +1 -0
  149. package/dist/metadata/agentConfig.d.ts +4 -4
  150. package/dist/metadata/agentConfig.d.ts.map +1 -1
  151. package/dist/metadata/agentConfig.js +15 -6
  152. package/dist/metadata/agentConfig.js.map +1 -1
  153. package/dist/metadata/chainMetadata.test.js +27 -9
  154. package/dist/metadata/chainMetadata.test.js.map +1 -1
  155. package/dist/metadata/chainMetadataTypes.d.ts +2 -2
  156. package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
  157. package/dist/metadata/chainMetadataTypes.js +2 -3
  158. package/dist/metadata/chainMetadataTypes.js.map +1 -1
  159. package/dist/metadata/deploymentArtifacts.d.ts +2 -2
  160. package/dist/metadata/deploymentArtifacts.d.ts.map +1 -1
  161. package/dist/middleware/account/InterchainAccount.d.ts +1 -1
  162. package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
  163. package/dist/middleware/account/InterchainAccount.js +1 -1
  164. package/dist/middleware/account/InterchainAccount.js.map +1 -1
  165. package/dist/middleware/account/InterchainAccountChecker.js +4 -1
  166. package/dist/middleware/account/InterchainAccountChecker.js.map +1 -1
  167. package/dist/middleware/account/InterchainAccountDeployer.d.ts +2 -2
  168. package/dist/middleware/account/InterchainAccountDeployer.d.ts.map +1 -1
  169. package/dist/middleware/account/InterchainAccountDeployer.js +28 -41
  170. package/dist/middleware/account/InterchainAccountDeployer.js.map +1 -1
  171. package/dist/middleware/account/accounts.hardhat-test.js +21 -30
  172. package/dist/middleware/account/accounts.hardhat-test.js.map +1 -1
  173. package/dist/middleware/account/contracts.d.ts +1 -1
  174. package/dist/middleware/account/contracts.d.ts.map +1 -1
  175. package/dist/middleware/account/contracts.js +5 -1
  176. package/dist/middleware/account/contracts.js.map +1 -1
  177. package/dist/middleware/liquidity-layer/LiquidityLayerApp.d.ts +2 -2
  178. package/dist/middleware/liquidity-layer/LiquidityLayerApp.d.ts.map +1 -1
  179. package/dist/middleware/liquidity-layer/LiquidityLayerApp.js +130 -152
  180. package/dist/middleware/liquidity-layer/LiquidityLayerApp.js.map +1 -1
  181. package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts +3 -3
  182. package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts.map +1 -1
  183. package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js +85 -110
  184. package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js.map +1 -1
  185. package/dist/middleware/liquidity-layer/contracts.d.ts +1 -1
  186. package/dist/middleware/liquidity-layer/contracts.d.ts.map +1 -1
  187. package/dist/middleware/liquidity-layer/contracts.js +6 -1
  188. package/dist/middleware/liquidity-layer/contracts.js.map +1 -1
  189. package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js +41 -46
  190. package/dist/middleware/liquidity-layer/liquidity-layer.hardhat-test.js.map +1 -1
  191. package/dist/middleware/query/InterchainQuery.d.ts +1 -1
  192. package/dist/middleware/query/InterchainQuery.d.ts.map +1 -1
  193. package/dist/middleware/query/InterchainQuery.js +1 -1
  194. package/dist/middleware/query/InterchainQuery.js.map +1 -1
  195. package/dist/middleware/query/InterchainQueryDeployer.d.ts +1 -1
  196. package/dist/middleware/query/InterchainQueryDeployer.d.ts.map +1 -1
  197. package/dist/middleware/query/InterchainQueryDeployer.js +13 -27
  198. package/dist/middleware/query/InterchainQueryDeployer.js.map +1 -1
  199. package/dist/middleware/query/contracts.d.ts +1 -1
  200. package/dist/middleware/query/contracts.d.ts.map +1 -1
  201. package/dist/middleware/query/contracts.js +4 -1
  202. package/dist/middleware/query/contracts.js.map +1 -1
  203. package/dist/middleware/query/queries.hardhat-test.js +23 -32
  204. package/dist/middleware/query/queries.hardhat-test.js.map +1 -1
  205. package/dist/providers/MultiProtocolProvider.d.ts +39 -0
  206. package/dist/providers/MultiProtocolProvider.d.ts.map +1 -0
  207. package/dist/providers/MultiProtocolProvider.js +105 -0
  208. package/dist/providers/MultiProtocolProvider.js.map +1 -0
  209. package/dist/providers/MultiProtocolProvider.test.d.ts +2 -0
  210. package/dist/providers/MultiProtocolProvider.test.d.ts.map +1 -0
  211. package/dist/providers/MultiProtocolProvider.test.js +24 -0
  212. package/dist/providers/MultiProtocolProvider.test.js.map +1 -0
  213. package/dist/providers/MultiProvider.d.ts +20 -118
  214. package/dist/providers/MultiProvider.d.ts.map +1 -1
  215. package/dist/providers/MultiProvider.js +69 -300
  216. package/dist/providers/MultiProvider.js.map +1 -1
  217. package/dist/providers/ProviderType.d.ts +71 -0
  218. package/dist/providers/ProviderType.d.ts.map +1 -0
  219. package/dist/providers/ProviderType.js +11 -0
  220. package/dist/providers/ProviderType.js.map +1 -0
  221. package/dist/providers/RetryProvider.d.ts +1 -1
  222. package/dist/providers/RetryProvider.d.ts.map +1 -1
  223. package/dist/providers/RetryProvider.js +2 -16
  224. package/dist/providers/RetryProvider.js.map +1 -1
  225. package/dist/providers/providerBuilders.d.ts +17 -0
  226. package/dist/providers/providerBuilders.d.ts.map +1 -0
  227. package/dist/providers/providerBuilders.js +97 -0
  228. package/dist/providers/providerBuilders.js.map +1 -0
  229. package/dist/router/GasRouterDeployer.d.ts +1 -1
  230. package/dist/router/GasRouterDeployer.d.ts.map +1 -1
  231. package/dist/router/GasRouterDeployer.js +18 -32
  232. package/dist/router/GasRouterDeployer.js.map +1 -1
  233. package/dist/router/HyperlaneRouterChecker.d.ts +1 -1
  234. package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
  235. package/dist/router/HyperlaneRouterChecker.js +37 -55
  236. package/dist/router/HyperlaneRouterChecker.js.map +1 -1
  237. package/dist/router/HyperlaneRouterDeployer.d.ts +1 -1
  238. package/dist/router/HyperlaneRouterDeployer.d.ts.map +1 -1
  239. package/dist/router/HyperlaneRouterDeployer.js +87 -115
  240. package/dist/router/HyperlaneRouterDeployer.js.map +1 -1
  241. package/dist/router/MultiProtocolRouterApps.d.ts +29 -0
  242. package/dist/router/MultiProtocolRouterApps.d.ts.map +1 -0
  243. package/dist/router/MultiProtocolRouterApps.js +43 -0
  244. package/dist/router/MultiProtocolRouterApps.js.map +1 -0
  245. package/dist/router/MultiProtocolRouterApps.test.d.ts +2 -0
  246. package/dist/router/MultiProtocolRouterApps.test.d.ts.map +1 -0
  247. package/dist/router/MultiProtocolRouterApps.test.js +20 -0
  248. package/dist/router/MultiProtocolRouterApps.test.js.map +1 -0
  249. package/dist/router/ProxiedRouterChecker.js +14 -34
  250. package/dist/router/ProxiedRouterChecker.js.map +1 -1
  251. package/dist/router/ProxiedRouterDeployer.d.ts +1 -1
  252. package/dist/router/ProxiedRouterDeployer.d.ts.map +1 -1
  253. package/dist/router/ProxiedRouterDeployer.js +24 -38
  254. package/dist/router/ProxiedRouterDeployer.js.map +1 -1
  255. package/dist/router/RouterApps.d.ts +4 -4
  256. package/dist/router/RouterApps.d.ts.map +1 -1
  257. package/dist/router/RouterApps.js +8 -18
  258. package/dist/router/RouterApps.js.map +1 -1
  259. package/dist/router/adapters/EvmRouterAdapter.d.ts +25 -0
  260. package/dist/router/adapters/EvmRouterAdapter.d.ts.map +1 -0
  261. package/dist/router/adapters/EvmRouterAdapter.js +50 -0
  262. package/dist/router/adapters/EvmRouterAdapter.js.map +1 -0
  263. package/dist/router/adapters/SealevelRouterAdapter.d.ts +50 -0
  264. package/dist/router/adapters/SealevelRouterAdapter.d.ts.map +1 -0
  265. package/dist/router/adapters/SealevelRouterAdapter.js +132 -0
  266. package/dist/router/adapters/SealevelRouterAdapter.js.map +1 -0
  267. package/dist/router/adapters/SealevelRouterAdapter.test.d.ts +2 -0
  268. package/dist/router/adapters/SealevelRouterAdapter.test.d.ts.map +1 -0
  269. package/dist/router/adapters/SealevelRouterAdapter.test.js +21 -0
  270. package/dist/router/adapters/SealevelRouterAdapter.test.js.map +1 -0
  271. package/dist/router/adapters/types.d.ts +18 -0
  272. package/dist/router/adapters/types.d.ts.map +1 -0
  273. package/dist/router/adapters/types.js +3 -0
  274. package/dist/router/adapters/types.js.map +1 -0
  275. package/dist/router/types.d.ts +12 -9
  276. package/dist/router/types.d.ts.map +1 -1
  277. package/dist/router/types.js +1 -1
  278. package/dist/router/types.js.map +1 -1
  279. package/dist/test/testUtils.d.ts +1 -1
  280. package/dist/test/testUtils.d.ts.map +1 -1
  281. package/dist/test/testUtils.js +12 -23
  282. package/dist/test/testUtils.js.map +1 -1
  283. package/dist/types.d.ts +5 -5
  284. package/dist/types.d.ts.map +1 -1
  285. package/dist/utils/MultiGeneric.d.ts +1 -1
  286. package/dist/utils/MultiGeneric.d.ts.map +1 -1
  287. package/dist/utils/MultiGeneric.js +2 -4
  288. package/dist/utils/MultiGeneric.js.map +1 -1
  289. package/dist/utils/fetch.js +8 -16
  290. package/dist/utils/fetch.js.map +1 -1
  291. package/dist/utils/wagmi.js +1 -2
  292. package/dist/utils/wagmi.js.map +1 -1
  293. package/package.json +10 -7
  294. package/dist/HyperlaneApp.d.ts.map +0 -1
  295. package/dist/HyperlaneApp.js.map +0 -1
  296. package/dist/contracts.d.ts.map +0 -1
  297. package/dist/contracts.js.map +0 -1
@@ -1 +1 @@
1
- {"version":3,"file":"HyperlaneIsmFactory.hardhat-test.js","sourceRoot":"","sources":["../../src/ism/HyperlaneIsmFactory.hardhat-test.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"HyperlaneIsmFactory.hardhat-test.js","sourceRoot":"","sources":["../../src/ism/HyperlaneIsmFactory.hardhat-test.ts"],"names":[],"mappings":"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"}
@@ -1,24 +1,16 @@
1
1
  "use strict";
2
- var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3
- function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
4
- return new (P || (P = Promise))(function (resolve, reject) {
5
- function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
6
- function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
7
- function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
8
- step((generator = generator.apply(thisArg, _arguments || [])).next());
9
- });
10
- };
11
2
  Object.defineProperty(exports, "__esModule", { value: true });
12
3
  exports.collectValidators = exports.moduleMatchesConfig = exports.moduleCanCertainlyVerify = exports.HyperlaneIsmFactory = void 0;
13
4
  const debug_1 = require("debug");
14
5
  const ethers_1 = require("ethers");
15
6
  const core_1 = require("@hyperlane-xyz/core");
16
7
  const utils_1 = require("@hyperlane-xyz/utils");
17
- const HyperlaneApp_1 = require("../HyperlaneApp");
8
+ const HyperlaneApp_1 = require("../app/HyperlaneApp");
18
9
  const environments_1 = require("../consts/environments");
19
- const contracts_1 = require("../contracts");
10
+ const contracts_1 = require("../contracts/contracts");
20
11
  const contracts_2 = require("./contracts");
21
12
  const types_1 = require("./types");
13
+ // TODO this should handle cached addresses like the other deployers
22
14
  class HyperlaneIsmFactory extends HyperlaneApp_1.HyperlaneApp {
23
15
  static fromEnvironment(env, multiProvider) {
24
16
  const envAddresses = environments_1.hyperlaneEnvironments[env];
@@ -31,123 +23,113 @@ class HyperlaneIsmFactory extends HyperlaneApp_1.HyperlaneApp {
31
23
  const helper = (0, contracts_1.appFromAddressesMapHelper)(addressesMap, contracts_2.ismFactoryFactories, multiProvider);
32
24
  return new HyperlaneIsmFactory(helper.contractsMap, helper.multiProvider, (0, debug_1.debug)('hyperlane:IsmFactoryApp'));
33
25
  }
34
- deploy(chain, config, origin) {
35
- return __awaiter(this, void 0, void 0, function* () {
36
- if (config.type === types_1.ModuleType.MERKLE_ROOT_MULTISIG ||
37
- config.type === types_1.ModuleType.MESSAGE_ID_MULTISIG ||
38
- config.type === types_1.ModuleType.LEGACY_MULTISIG) {
39
- switch (config.type) {
40
- case types_1.ModuleType.LEGACY_MULTISIG:
41
- this.logger(`Deploying Legacy Multisig ISM to ${chain} for verifying ${origin}`);
42
- break;
43
- case types_1.ModuleType.MERKLE_ROOT_MULTISIG:
44
- this.logger(`Deploying Merkle Root Multisig ISM to ${chain} for verifying ${origin}`);
45
- break;
46
- case types_1.ModuleType.MESSAGE_ID_MULTISIG:
47
- this.logger(`Deploying Message ID Multisig ISM to ${chain} for verifying ${origin}`);
48
- break;
49
- }
50
- return this.deployMultisigIsm(chain, config, origin);
51
- }
52
- else if (config.type === types_1.ModuleType.ROUTING) {
53
- this.logger(`Deploying Routing ISM to ${chain} for verifying ${Object.keys(config.domains)}`);
54
- return this.deployRoutingIsm(chain, config);
55
- }
56
- else if (config.type === types_1.ModuleType.AGGREGATION) {
57
- this.logger(`Deploying Aggregation ISM to ${chain}`);
58
- return this.deployAggregationIsm(chain, config);
59
- }
60
- else {
61
- throw new Error(`Unsupported ISM type`);
26
+ async deploy(chain, config, origin) {
27
+ if (config.type === types_1.ModuleType.MERKLE_ROOT_MULTISIG ||
28
+ config.type === types_1.ModuleType.MESSAGE_ID_MULTISIG ||
29
+ config.type === types_1.ModuleType.LEGACY_MULTISIG) {
30
+ switch (config.type) {
31
+ case types_1.ModuleType.LEGACY_MULTISIG:
32
+ this.logger(`Deploying Legacy Multisig ISM to ${chain} for verifying ${origin}`);
33
+ break;
34
+ case types_1.ModuleType.MERKLE_ROOT_MULTISIG:
35
+ this.logger(`Deploying Merkle Root Multisig ISM to ${chain} for verifying ${origin}`);
36
+ break;
37
+ case types_1.ModuleType.MESSAGE_ID_MULTISIG:
38
+ this.logger(`Deploying Message ID Multisig ISM to ${chain} for verifying ${origin}`);
39
+ break;
62
40
  }
63
- });
41
+ return this.deployMultisigIsm(chain, config, origin);
42
+ }
43
+ else if (config.type === types_1.ModuleType.ROUTING) {
44
+ this.logger(`Deploying Routing ISM to ${chain} for verifying ${Object.keys(config.domains)}`);
45
+ return this.deployRoutingIsm(chain, config);
46
+ }
47
+ else if (config.type === types_1.ModuleType.AGGREGATION) {
48
+ this.logger(`Deploying Aggregation ISM to ${chain}`);
49
+ return this.deployAggregationIsm(chain, config);
50
+ }
51
+ else {
52
+ throw new Error(`Unsupported ISM type`);
53
+ }
64
54
  }
65
- deployMultisigIsm(chain, config, origin) {
66
- return __awaiter(this, void 0, void 0, function* () {
67
- const signer = this.multiProvider.getSigner(chain);
68
- let address;
69
- if (config.type === types_1.ModuleType.LEGACY_MULTISIG) {
70
- const multisig = yield new core_1.LegacyMultisigIsm__factory()
71
- .connect(signer)
72
- .deploy();
73
- yield this.multiProvider.handleTx(chain, multisig.deployTransaction);
74
- const originDomain = this.multiProvider.getDomainId(origin);
75
- this.logger(`Enrolling validators for ${originDomain}`);
76
- yield this.multiProvider.handleTx(chain, multisig.enrollValidators([originDomain], [config.validators]));
77
- yield this.multiProvider.handleTx(chain, multisig.setThreshold(originDomain, config.threshold));
78
- address = multisig.address;
79
- }
80
- else {
81
- const multisigIsmFactory = config.type === types_1.ModuleType.MERKLE_ROOT_MULTISIG
82
- ? this.getContracts(chain).merkleRootMultisigIsmFactory
83
- : this.getContracts(chain).messageIdMultisigIsmFactory;
84
- address = yield this.deployMOfNFactory(chain, multisigIsmFactory, config.validators, config.threshold);
85
- }
86
- return core_1.IMultisigIsm__factory.connect(address, signer);
87
- });
55
+ async deployMultisigIsm(chain, config, origin) {
56
+ const signer = this.multiProvider.getSigner(chain);
57
+ let address;
58
+ if (config.type === types_1.ModuleType.LEGACY_MULTISIG) {
59
+ const multisig = await new core_1.LegacyMultisigIsm__factory()
60
+ .connect(signer)
61
+ .deploy();
62
+ await this.multiProvider.handleTx(chain, multisig.deployTransaction);
63
+ const originDomain = this.multiProvider.getDomainId(origin);
64
+ this.logger(`Enrolling validators for ${originDomain}`);
65
+ await this.multiProvider.handleTx(chain, multisig.enrollValidators([originDomain], [config.validators]));
66
+ await this.multiProvider.handleTx(chain, multisig.setThreshold(originDomain, config.threshold));
67
+ address = multisig.address;
68
+ }
69
+ else {
70
+ const multisigIsmFactory = config.type === types_1.ModuleType.MERKLE_ROOT_MULTISIG
71
+ ? this.getContracts(chain).merkleRootMultisigIsmFactory
72
+ : this.getContracts(chain).messageIdMultisigIsmFactory;
73
+ address = await this.deployMOfNFactory(chain, multisigIsmFactory, config.validators, config.threshold);
74
+ }
75
+ return core_1.IMultisigIsm__factory.connect(address, signer);
88
76
  }
89
- deployRoutingIsm(chain, config) {
90
- return __awaiter(this, void 0, void 0, function* () {
91
- const signer = this.multiProvider.getSigner(chain);
92
- const routingIsmFactory = this.getContracts(chain).routingIsmFactory;
93
- const isms = {};
94
- for (const origin of Object.keys(config.domains)) {
95
- const ism = yield this.deploy(chain, config.domains[origin], origin);
96
- isms[origin] = ism.address;
77
+ async deployRoutingIsm(chain, config) {
78
+ const signer = this.multiProvider.getSigner(chain);
79
+ const routingIsmFactory = this.getContracts(chain).routingIsmFactory;
80
+ const isms = {};
81
+ for (const origin of Object.keys(config.domains)) {
82
+ const ism = await this.deploy(chain, config.domains[origin], origin);
83
+ isms[origin] = ism.address;
84
+ }
85
+ const domains = Object.keys(isms).map((chain) => this.multiProvider.getDomainId(chain));
86
+ const submoduleAddresses = Object.values(isms);
87
+ const overrides = this.multiProvider.getTransactionOverrides(chain);
88
+ const tx = await routingIsmFactory.deploy(domains, submoduleAddresses, overrides);
89
+ const receipt = await this.multiProvider.handleTx(chain, tx);
90
+ // TODO: Break this out into a generalized function
91
+ const dispatchLogs = receipt.logs
92
+ .map((log) => {
93
+ try {
94
+ return routingIsmFactory.interface.parseLog(log);
97
95
  }
98
- const domains = Object.keys(isms).map((chain) => this.multiProvider.getDomainId(chain));
99
- const submoduleAddresses = Object.values(isms);
100
- const overrides = this.multiProvider.getTransactionOverrides(chain);
101
- const tx = yield routingIsmFactory.deploy(domains, submoduleAddresses, overrides);
102
- const receipt = yield this.multiProvider.handleTx(chain, tx);
103
- // TODO: Break this out into a generalized function
104
- const dispatchLogs = receipt.logs
105
- .map((log) => {
106
- try {
107
- return routingIsmFactory.interface.parseLog(log);
108
- }
109
- catch (e) {
110
- return undefined;
111
- }
112
- })
113
- .filter((log) => !!log && log.name === 'ModuleDeployed');
114
- const moduleAddress = dispatchLogs[0].args['module'];
115
- const routingIsm = core_1.DomainRoutingIsm__factory.connect(moduleAddress, this.multiProvider.getSigner(chain));
116
- this.logger(`Transferring ownership of routing ISM to ${config.owner}`);
117
- yield this.multiProvider.handleTx(chain, yield routingIsm.transferOwnership(config.owner, overrides));
118
- const address = dispatchLogs[0].args['module'];
119
- return core_1.IRoutingIsm__factory.connect(address, signer);
120
- });
121
- }
122
- deployAggregationIsm(chain, config) {
123
- return __awaiter(this, void 0, void 0, function* () {
124
- const signer = this.multiProvider.getSigner(chain);
125
- const aggregationIsmFactory = this.getContracts(chain).aggregationIsmFactory;
126
- const addresses = [];
127
- for (const module of config.modules) {
128
- addresses.push((yield this.deploy(chain, module)).address);
96
+ catch (e) {
97
+ return undefined;
129
98
  }
130
- const address = yield this.deployMOfNFactory(chain, aggregationIsmFactory, addresses, config.threshold);
131
- return core_1.IAggregationIsm__factory.connect(address, signer);
132
- });
99
+ })
100
+ .filter((log) => !!log && log.name === 'ModuleDeployed');
101
+ const moduleAddress = dispatchLogs[0].args['module'];
102
+ const routingIsm = core_1.DomainRoutingIsm__factory.connect(moduleAddress, this.multiProvider.getSigner(chain));
103
+ this.logger(`Transferring ownership of routing ISM to ${config.owner}`);
104
+ await this.multiProvider.handleTx(chain, await routingIsm.transferOwnership(config.owner, overrides));
105
+ const address = dispatchLogs[0].args['module'];
106
+ return core_1.IRoutingIsm__factory.connect(address, signer);
133
107
  }
134
- deployMOfNFactory(chain, factory, values, threshold) {
135
- return __awaiter(this, void 0, void 0, function* () {
136
- const sorted = [...values].sort();
137
- const address = yield factory.getAddress(sorted, threshold);
138
- const provider = this.multiProvider.getProvider(chain);
139
- const code = yield provider.getCode(address);
140
- if (code === '0x') {
141
- this.logger(`Deploying new ${threshold} of ${values.length} address set to ${chain}`);
142
- const overrides = this.multiProvider.getTransactionOverrides(chain);
143
- const hash = yield factory.deploy(sorted, threshold, overrides);
144
- yield this.multiProvider.handleTx(chain, hash);
145
- }
146
- else {
147
- this.logger(`Recovered ${threshold} of ${values.length} address set on ${chain}`);
148
- }
149
- return address;
150
- });
108
+ async deployAggregationIsm(chain, config) {
109
+ const signer = this.multiProvider.getSigner(chain);
110
+ const aggregationIsmFactory = this.getContracts(chain).aggregationIsmFactory;
111
+ const addresses = [];
112
+ for (const module of config.modules) {
113
+ addresses.push((await this.deploy(chain, module)).address);
114
+ }
115
+ const address = await this.deployMOfNFactory(chain, aggregationIsmFactory, addresses, config.threshold);
116
+ return core_1.IAggregationIsm__factory.connect(address, signer);
117
+ }
118
+ async deployMOfNFactory(chain, factory, values, threshold) {
119
+ const sorted = [...values].sort();
120
+ const address = await factory.getAddress(sorted, threshold);
121
+ const provider = this.multiProvider.getProvider(chain);
122
+ const code = await provider.getCode(address);
123
+ if (code === '0x') {
124
+ this.logger(`Deploying new ${threshold} of ${values.length} address set to ${chain}`);
125
+ const overrides = this.multiProvider.getTransactionOverrides(chain);
126
+ const hash = await factory.deploy(sorted, threshold, overrides);
127
+ await this.multiProvider.handleTx(chain, hash);
128
+ }
129
+ else {
130
+ this.logger(`Recovered ${threshold} of ${values.length} address set on ${chain}`);
131
+ }
132
+ return address;
151
133
  }
152
134
  }
153
135
  exports.HyperlaneIsmFactory = HyperlaneIsmFactory;
@@ -156,155 +138,151 @@ exports.HyperlaneIsmFactory = HyperlaneIsmFactory;
156
138
  // This can happen if, for example, the module has sender, recipient, or
157
139
  // body specific logic, as the sample message used when querying the ISM
158
140
  // sets all of these to zero.
159
- function moduleCanCertainlyVerify(destModule, multiProvider, origin, destination) {
160
- return __awaiter(this, void 0, void 0, function* () {
161
- const message = (0, utils_1.formatMessage)(0, 0, multiProvider.getDomainId(origin), ethers_1.ethers.constants.AddressZero, multiProvider.getDomainId(destination), ethers_1.ethers.constants.AddressZero, '0x');
162
- const provider = multiProvider.getSignerOrProvider(destination);
163
- if (typeof destModule === 'string') {
164
- const module = core_1.IInterchainSecurityModule__factory.connect(destModule, provider);
165
- try {
166
- const moduleType = yield module.moduleType();
167
- if (moduleType === types_1.ModuleType.MERKLE_ROOT_MULTISIG ||
168
- moduleType === types_1.ModuleType.LEGACY_MULTISIG ||
169
- moduleType === types_1.ModuleType.MESSAGE_ID_MULTISIG) {
170
- const multisigModule = core_1.IMultisigIsm__factory.connect(destModule, provider);
171
- const [, threshold] = yield multisigModule.validatorsAndThreshold(message);
172
- return threshold > 0;
173
- }
174
- else if (moduleType === types_1.ModuleType.ROUTING) {
175
- const routingIsm = core_1.IRoutingIsm__factory.connect(destModule, provider);
176
- const subModule = yield routingIsm.route(message);
177
- return moduleCanCertainlyVerify(subModule, multiProvider, origin, destination);
178
- }
179
- else if (moduleType === types_1.ModuleType.AGGREGATION) {
180
- const aggregationIsm = core_1.IAggregationIsm__factory.connect(destModule, provider);
181
- const [subModules, threshold] = yield aggregationIsm.modulesAndThreshold(message);
182
- let verified = 0;
183
- for (const subModule of subModules) {
184
- const canVerify = yield moduleCanCertainlyVerify(subModule, multiProvider, origin, destination);
185
- if (canVerify) {
186
- verified += 1;
187
- }
141
+ async function moduleCanCertainlyVerify(destModule, multiProvider, origin, destination) {
142
+ const message = (0, utils_1.formatMessage)(0, 0, multiProvider.getDomainId(origin), ethers_1.ethers.constants.AddressZero, multiProvider.getDomainId(destination), ethers_1.ethers.constants.AddressZero, '0x');
143
+ const provider = multiProvider.getSignerOrProvider(destination);
144
+ if (typeof destModule === 'string') {
145
+ const module = core_1.IInterchainSecurityModule__factory.connect(destModule, provider);
146
+ try {
147
+ const moduleType = await module.moduleType();
148
+ if (moduleType === types_1.ModuleType.MERKLE_ROOT_MULTISIG ||
149
+ moduleType === types_1.ModuleType.LEGACY_MULTISIG ||
150
+ moduleType === types_1.ModuleType.MESSAGE_ID_MULTISIG) {
151
+ const multisigModule = core_1.IMultisigIsm__factory.connect(destModule, provider);
152
+ const [, threshold] = await multisigModule.validatorsAndThreshold(message);
153
+ return threshold > 0;
154
+ }
155
+ else if (moduleType === types_1.ModuleType.ROUTING) {
156
+ const routingIsm = core_1.IRoutingIsm__factory.connect(destModule, provider);
157
+ const subModule = await routingIsm.route(message);
158
+ return moduleCanCertainlyVerify(subModule, multiProvider, origin, destination);
159
+ }
160
+ else if (moduleType === types_1.ModuleType.AGGREGATION) {
161
+ const aggregationIsm = core_1.IAggregationIsm__factory.connect(destModule, provider);
162
+ const [subModules, threshold] = await aggregationIsm.modulesAndThreshold(message);
163
+ let verified = 0;
164
+ for (const subModule of subModules) {
165
+ const canVerify = await moduleCanCertainlyVerify(subModule, multiProvider, origin, destination);
166
+ if (canVerify) {
167
+ verified += 1;
188
168
  }
189
- return verified >= threshold;
190
- }
191
- else {
192
- throw new Error(`Unsupported module type: ${moduleType}`);
193
169
  }
170
+ return verified >= threshold;
194
171
  }
195
- catch (e) {
196
- (0, utils_1.warn)(`Error checking module ${destModule}: ${e}`);
197
- return false;
172
+ else {
173
+ throw new Error(`Unsupported module type: ${moduleType}`);
198
174
  }
199
175
  }
200
- else {
201
- // destModule is an IsmConfig
202
- switch (destModule.type) {
203
- case types_1.ModuleType.MERKLE_ROOT_MULTISIG:
204
- case types_1.ModuleType.MESSAGE_ID_MULTISIG:
205
- case types_1.ModuleType.LEGACY_MULTISIG:
206
- return destModule.threshold > 0;
207
- case types_1.ModuleType.ROUTING:
208
- return moduleCanCertainlyVerify(destModule.domains[destination], multiProvider, origin, destination);
209
- case types_1.ModuleType.AGGREGATION: {
210
- let verified = 0;
211
- for (const subModule of destModule.modules) {
212
- const canVerify = yield moduleCanCertainlyVerify(subModule, multiProvider, origin, destination);
213
- if (canVerify) {
214
- verified += 1;
215
- }
176
+ catch (e) {
177
+ (0, utils_1.warn)(`Error checking module ${destModule}: ${e}`);
178
+ return false;
179
+ }
180
+ }
181
+ else {
182
+ // destModule is an IsmConfig
183
+ switch (destModule.type) {
184
+ case types_1.ModuleType.MERKLE_ROOT_MULTISIG:
185
+ case types_1.ModuleType.MESSAGE_ID_MULTISIG:
186
+ case types_1.ModuleType.LEGACY_MULTISIG:
187
+ return destModule.threshold > 0;
188
+ case types_1.ModuleType.ROUTING:
189
+ return moduleCanCertainlyVerify(destModule.domains[destination], multiProvider, origin, destination);
190
+ case types_1.ModuleType.AGGREGATION: {
191
+ let verified = 0;
192
+ for (const subModule of destModule.modules) {
193
+ const canVerify = await moduleCanCertainlyVerify(subModule, multiProvider, origin, destination);
194
+ if (canVerify) {
195
+ verified += 1;
216
196
  }
217
- return verified >= destModule.threshold;
218
197
  }
198
+ return verified >= destModule.threshold;
219
199
  }
220
200
  }
221
- });
201
+ }
222
202
  }
223
203
  exports.moduleCanCertainlyVerify = moduleCanCertainlyVerify;
224
- function moduleMatchesConfig(chain, moduleAddress, config, multiProvider, contracts, origin) {
225
- return __awaiter(this, void 0, void 0, function* () {
226
- const provider = multiProvider.getProvider(chain);
227
- const module = core_1.IInterchainSecurityModule__factory.connect(moduleAddress, provider);
228
- const actualType = yield module.moduleType();
229
- if (actualType !== config.type)
230
- return false;
231
- let matches = true;
232
- switch (config.type) {
233
- case types_1.ModuleType.MERKLE_ROOT_MULTISIG: {
234
- // A MerkleRootMultisigIsm matches if validators and threshold match the config
235
- const expectedAddress = yield contracts.merkleRootMultisigIsmFactory.getAddress(config.validators.sort(), config.threshold);
236
- matches = (0, utils_1.eqAddress)(expectedAddress, module.address);
237
- break;
238
- }
239
- case types_1.ModuleType.MESSAGE_ID_MULTISIG: {
240
- // A MessageIdMultisigIsm matches if validators and threshold match the config
241
- const expectedAddress = yield contracts.messageIdMultisigIsmFactory.getAddress(config.validators.sort(), config.threshold);
242
- matches = (0, utils_1.eqAddress)(expectedAddress, module.address);
243
- break;
244
- }
245
- case types_1.ModuleType.LEGACY_MULTISIG: {
246
- const multisigIsm = core_1.LegacyMultisigIsm__factory.connect(moduleAddress, provider);
247
- if (!origin) {
248
- throw new Error("Can't check legacy multisig without origin");
249
- }
250
- const originDomain = multiProvider.getDomainId(origin);
251
- const validators = yield multisigIsm.validators(originDomain);
252
- const threshold = yield multisigIsm.threshold(originDomain);
253
- matches =
254
- JSON.stringify(config.validators.map((s) => s.toLowerCase()).sort()) ===
255
- JSON.stringify(validators.map((s) => s.toLowerCase()).sort()) &&
256
- config.threshold === threshold;
257
- break;
258
- }
259
- case types_1.ModuleType.ROUTING: {
260
- // A RoutingIsm matches if:
261
- // 1. The set of domains in the config equals those on-chain
262
- // 2. The modules for each domain match the config
263
- // TODO: Check (1)
264
- const routingIsm = core_1.DomainRoutingIsm__factory.connect(moduleAddress, provider);
265
- // Check that the RoutingISM owner matches the config
266
- const owner = yield routingIsm.owner();
267
- matches = matches && (0, utils_1.eqAddress)(owner, config.owner);
268
- // Recursively check that the submodule for each configured
269
- // domain matches the submodule config.
270
- for (const [origin, subConfig] of Object.entries(config.domains)) {
271
- const subModule = yield routingIsm.modules(multiProvider.getDomainId(origin));
272
- const subModuleMatches = yield moduleMatchesConfig(chain, subModule, subConfig, multiProvider, contracts, origin);
273
- matches = matches && subModuleMatches;
274
- }
275
- break;
204
+ async function moduleMatchesConfig(chain, moduleAddress, config, multiProvider, contracts, origin) {
205
+ const provider = multiProvider.getProvider(chain);
206
+ const module = core_1.IInterchainSecurityModule__factory.connect(moduleAddress, provider);
207
+ const actualType = await module.moduleType();
208
+ if (actualType !== config.type)
209
+ return false;
210
+ let matches = true;
211
+ switch (config.type) {
212
+ case types_1.ModuleType.MERKLE_ROOT_MULTISIG: {
213
+ // A MerkleRootMultisigIsm matches if validators and threshold match the config
214
+ const expectedAddress = await contracts.merkleRootMultisigIsmFactory.getAddress(config.validators.sort(), config.threshold);
215
+ matches = (0, utils_1.eqAddress)(expectedAddress, module.address);
216
+ break;
217
+ }
218
+ case types_1.ModuleType.MESSAGE_ID_MULTISIG: {
219
+ // A MessageIdMultisigIsm matches if validators and threshold match the config
220
+ const expectedAddress = await contracts.messageIdMultisigIsmFactory.getAddress(config.validators.sort(), config.threshold);
221
+ matches = (0, utils_1.eqAddress)(expectedAddress, module.address);
222
+ break;
223
+ }
224
+ case types_1.ModuleType.LEGACY_MULTISIG: {
225
+ const multisigIsm = core_1.LegacyMultisigIsm__factory.connect(moduleAddress, provider);
226
+ if (!origin) {
227
+ throw new Error("Can't check legacy multisig without origin");
276
228
  }
277
- case types_1.ModuleType.AGGREGATION: {
278
- // An AggregationIsm matches if:
279
- // 1. The threshold matches the config
280
- // 2. There is a bijection between on and off-chain configured modules
281
- const aggregationIsm = core_1.StaticAggregationIsm__factory.connect(moduleAddress, provider);
282
- const [subModules, threshold] = yield aggregationIsm.modulesAndThreshold('0x');
283
- matches = matches && threshold === config.threshold;
284
- matches = matches && subModules.length === config.modules.length;
285
- const configIndexMatched = new Map();
286
- for (const subModule of subModules) {
287
- const subModuleMatchesConfig = yield Promise.all(config.modules.map((c) => moduleMatchesConfig(chain, subModule, c, multiProvider, contracts)));
288
- // The submodule returned by the ISM must match exactly one
289
- // entry in the config.
290
- const count = subModuleMatchesConfig.filter(Boolean).length;
291
- matches = matches && count === 1;
292
- // That entry in the config should not have been matched already.
293
- subModuleMatchesConfig.forEach((matched, index) => {
294
- if (matched) {
295
- matches = matches && !configIndexMatched.has(index);
296
- configIndexMatched.set(index, true);
297
- }
298
- });
299
- }
300
- break;
229
+ const originDomain = multiProvider.getDomainId(origin);
230
+ const validators = await multisigIsm.validators(originDomain);
231
+ const threshold = await multisigIsm.threshold(originDomain);
232
+ matches =
233
+ JSON.stringify(config.validators.map((s) => s.toLowerCase()).sort()) ===
234
+ JSON.stringify(validators.map((s) => s.toLowerCase()).sort()) &&
235
+ config.threshold === threshold;
236
+ break;
237
+ }
238
+ case types_1.ModuleType.ROUTING: {
239
+ // A RoutingIsm matches if:
240
+ // 1. The set of domains in the config equals those on-chain
241
+ // 2. The modules for each domain match the config
242
+ // TODO: Check (1)
243
+ const routingIsm = core_1.DomainRoutingIsm__factory.connect(moduleAddress, provider);
244
+ // Check that the RoutingISM owner matches the config
245
+ const owner = await routingIsm.owner();
246
+ matches = matches && (0, utils_1.eqAddress)(owner, config.owner);
247
+ // Recursively check that the submodule for each configured
248
+ // domain matches the submodule config.
249
+ for (const [origin, subConfig] of Object.entries(config.domains)) {
250
+ const subModule = await routingIsm.modules(multiProvider.getDomainId(origin));
251
+ const subModuleMatches = await moduleMatchesConfig(chain, subModule, subConfig, multiProvider, contracts, origin);
252
+ matches = matches && subModuleMatches;
301
253
  }
302
- default: {
303
- throw new Error('Unsupported ModuleType');
254
+ break;
255
+ }
256
+ case types_1.ModuleType.AGGREGATION: {
257
+ // An AggregationIsm matches if:
258
+ // 1. The threshold matches the config
259
+ // 2. There is a bijection between on and off-chain configured modules
260
+ const aggregationIsm = core_1.StaticAggregationIsm__factory.connect(moduleAddress, provider);
261
+ const [subModules, threshold] = await aggregationIsm.modulesAndThreshold('0x');
262
+ matches = matches && threshold === config.threshold;
263
+ matches = matches && subModules.length === config.modules.length;
264
+ const configIndexMatched = new Map();
265
+ for (const subModule of subModules) {
266
+ const subModuleMatchesConfig = await Promise.all(config.modules.map((c) => moduleMatchesConfig(chain, subModule, c, multiProvider, contracts)));
267
+ // The submodule returned by the ISM must match exactly one
268
+ // entry in the config.
269
+ const count = subModuleMatchesConfig.filter(Boolean).length;
270
+ matches = matches && count === 1;
271
+ // That entry in the config should not have been matched already.
272
+ subModuleMatchesConfig.forEach((matched, index) => {
273
+ if (matched) {
274
+ matches = matches && !configIndexMatched.has(index);
275
+ configIndexMatched.set(index, true);
276
+ }
277
+ });
304
278
  }
279
+ break;
305
280
  }
306
- return matches;
307
- });
281
+ default: {
282
+ throw new Error('Unsupported ModuleType');
283
+ }
284
+ }
285
+ return matches;
308
286
  }
309
287
  exports.moduleMatchesConfig = moduleMatchesConfig;
310
288
  function collectValidators(origin, config) {