@hyperlane-xyz/sdk 3.6.2 → 3.8.0-beta0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (240) hide show
  1. package/dist/consts/chainMetadata.d.ts +3 -2
  2. package/dist/consts/chainMetadata.d.ts.map +1 -1
  3. package/dist/consts/chainMetadata.js +99 -72
  4. package/dist/consts/chainMetadata.js.map +1 -1
  5. package/dist/consts/chains.d.ts +3 -2
  6. package/dist/consts/chains.d.ts.map +1 -1
  7. package/dist/consts/chains.js +6 -4
  8. package/dist/consts/chains.js.map +1 -1
  9. package/dist/consts/environments/index.d.ts +141 -133
  10. package/dist/consts/environments/index.d.ts.map +1 -1
  11. package/dist/consts/environments/mainnet.json +20 -0
  12. package/dist/consts/environments/testnet.json +166 -178
  13. package/dist/consts/igp.d.ts +2 -0
  14. package/dist/consts/igp.d.ts.map +1 -0
  15. package/dist/consts/igp.js +5 -0
  16. package/dist/consts/igp.js.map +1 -0
  17. package/dist/consts/multisigIsm.d.ts.map +1 -1
  18. package/dist/consts/multisigIsm.js +22 -18
  19. package/dist/consts/multisigIsm.js.map +1 -1
  20. package/dist/core/CoreDeployer.hardhat-test.js +4 -2
  21. package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
  22. package/dist/core/HyperlaneCore.d.ts.map +1 -1
  23. package/dist/core/HyperlaneCore.js +10 -4
  24. package/dist/core/HyperlaneCore.js.map +1 -1
  25. package/dist/core/HyperlaneCoreChecker.d.ts.map +1 -1
  26. package/dist/core/HyperlaneCoreChecker.js +3 -3
  27. package/dist/core/HyperlaneCoreChecker.js.map +1 -1
  28. package/dist/core/HyperlaneCoreDeployer.d.ts +6 -2
  29. package/dist/core/HyperlaneCoreDeployer.d.ts.map +1 -1
  30. package/dist/core/HyperlaneCoreDeployer.js +24 -11
  31. package/dist/core/HyperlaneCoreDeployer.js.map +1 -1
  32. package/dist/core/TestRecipientDeployer.d.ts +2 -1
  33. package/dist/core/TestRecipientDeployer.d.ts.map +1 -1
  34. package/dist/core/TestRecipientDeployer.js +2 -1
  35. package/dist/core/TestRecipientDeployer.js.map +1 -1
  36. package/dist/deploy/HyperlaneDeployer.d.ts +7 -6
  37. package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
  38. package/dist/deploy/HyperlaneDeployer.js +34 -13
  39. package/dist/deploy/HyperlaneDeployer.js.map +1 -1
  40. package/dist/deploy/HyperlaneProxyFactoryDeployer.d.ts +2 -1
  41. package/dist/deploy/HyperlaneProxyFactoryDeployer.d.ts.map +1 -1
  42. package/dist/deploy/HyperlaneProxyFactoryDeployer.js +2 -1
  43. package/dist/deploy/HyperlaneProxyFactoryDeployer.js.map +1 -1
  44. package/dist/deploy/types.d.ts +1 -1
  45. package/dist/deploy/types.d.ts.map +1 -1
  46. package/dist/deploy/verify/ContractVerifier.d.ts +9 -12
  47. package/dist/deploy/verify/ContractVerifier.d.ts.map +1 -1
  48. package/dist/deploy/verify/ContractVerifier.js +147 -121
  49. package/dist/deploy/verify/ContractVerifier.js.map +1 -1
  50. package/dist/deploy/verify/PostDeploymentContractVerifier.d.ts +14 -0
  51. package/dist/deploy/verify/PostDeploymentContractVerifier.d.ts.map +1 -0
  52. package/dist/deploy/verify/PostDeploymentContractVerifier.js +31 -0
  53. package/dist/deploy/verify/PostDeploymentContractVerifier.js.map +1 -0
  54. package/dist/deploy/verify/types.d.ts +60 -3
  55. package/dist/deploy/verify/types.d.ts.map +1 -1
  56. package/dist/deploy/verify/types.js +42 -0
  57. package/dist/deploy/verify/types.js.map +1 -1
  58. package/dist/gas/HyperlaneIgpChecker.d.ts +0 -2
  59. package/dist/gas/HyperlaneIgpChecker.d.ts.map +1 -1
  60. package/dist/gas/HyperlaneIgpChecker.js +8 -29
  61. package/dist/gas/HyperlaneIgpChecker.js.map +1 -1
  62. package/dist/gas/HyperlaneIgpDeployer.d.ts +3 -2
  63. package/dist/gas/HyperlaneIgpDeployer.d.ts.map +1 -1
  64. package/dist/gas/HyperlaneIgpDeployer.js +47 -20
  65. package/dist/gas/HyperlaneIgpDeployer.js.map +1 -1
  66. package/dist/gas/oracle/configure-gas-oracles.hardhat-test.d.ts +2 -0
  67. package/dist/gas/oracle/configure-gas-oracles.hardhat-test.d.ts.map +1 -0
  68. package/dist/gas/oracle/configure-gas-oracles.hardhat-test.js +47 -0
  69. package/dist/gas/oracle/configure-gas-oracles.hardhat-test.js.map +1 -0
  70. package/dist/gas/oracle/types.d.ts +11 -0
  71. package/dist/gas/oracle/types.d.ts.map +1 -0
  72. package/dist/gas/oracle/types.js +30 -0
  73. package/dist/gas/oracle/types.js.map +1 -0
  74. package/dist/gas/types.d.ts +3 -4
  75. package/dist/gas/types.d.ts.map +1 -1
  76. package/dist/gas/types.js +1 -5
  77. package/dist/gas/types.js.map +1 -1
  78. package/dist/hook/HyperlaneHookDeployer.d.ts +2 -1
  79. package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
  80. package/dist/hook/HyperlaneHookDeployer.js +6 -4
  81. package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
  82. package/dist/index.d.ts +18 -7
  83. package/dist/index.d.ts.map +1 -1
  84. package/dist/index.js +52 -20
  85. package/dist/index.js.map +1 -1
  86. package/dist/ism/HyperlaneIsmFactory.d.ts +11 -10
  87. package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
  88. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +14 -12
  89. package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
  90. package/dist/ism/HyperlaneIsmFactory.js +39 -287
  91. package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
  92. package/dist/ism/utils.d.ts +11 -0
  93. package/dist/ism/utils.d.ts.map +1 -0
  94. package/dist/ism/utils.js +277 -0
  95. package/dist/ism/utils.js.map +1 -0
  96. package/dist/metadata/ChainMetadataManager.d.ts +43 -21
  97. package/dist/metadata/ChainMetadataManager.d.ts.map +1 -1
  98. package/dist/metadata/ChainMetadataManager.js +26 -0
  99. package/dist/metadata/ChainMetadataManager.js.map +1 -1
  100. package/dist/metadata/agentConfig.d.ts +138 -46
  101. package/dist/metadata/agentConfig.d.ts.map +1 -1
  102. package/dist/metadata/agentConfig.js +1 -1
  103. package/dist/metadata/blockExplorer.d.ts +6 -1
  104. package/dist/metadata/blockExplorer.d.ts.map +1 -1
  105. package/dist/metadata/blockExplorer.js +15 -1
  106. package/dist/metadata/blockExplorer.js.map +1 -1
  107. package/dist/metadata/chainMetadataTypes.d.ts +202 -1
  108. package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
  109. package/dist/metadata/chainMetadataTypes.js +18 -4
  110. package/dist/metadata/chainMetadataTypes.js.map +1 -1
  111. package/dist/metadata/customZodTypes.d.ts +2 -0
  112. package/dist/metadata/customZodTypes.d.ts.map +1 -1
  113. package/dist/metadata/customZodTypes.js +3 -1
  114. package/dist/metadata/customZodTypes.js.map +1 -1
  115. package/dist/metadata/health.js +2 -2
  116. package/dist/metadata/health.js.map +1 -1
  117. package/dist/metadata/warpRouteConfig.d.ts +134 -0
  118. package/dist/metadata/warpRouteConfig.d.ts.map +1 -0
  119. package/dist/metadata/warpRouteConfig.js +24 -0
  120. package/dist/metadata/warpRouteConfig.js.map +1 -0
  121. package/dist/middleware/account/InterchainAccountDeployer.d.ts +2 -1
  122. package/dist/middleware/account/InterchainAccountDeployer.d.ts.map +1 -1
  123. package/dist/middleware/account/InterchainAccountDeployer.js +4 -2
  124. package/dist/middleware/account/InterchainAccountDeployer.js.map +1 -1
  125. package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts +2 -1
  126. package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.d.ts.map +1 -1
  127. package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js +4 -2
  128. package/dist/middleware/liquidity-layer/LiquidityLayerRouterDeployer.js.map +1 -1
  129. package/dist/middleware/query/InterchainQueryDeployer.d.ts +2 -1
  130. package/dist/middleware/query/InterchainQueryDeployer.d.ts.map +1 -1
  131. package/dist/middleware/query/InterchainQueryDeployer.js +4 -2
  132. package/dist/middleware/query/InterchainQueryDeployer.js.map +1 -1
  133. package/dist/providers/MultiProtocolProvider.d.ts +10 -12
  134. package/dist/providers/MultiProtocolProvider.d.ts.map +1 -1
  135. package/dist/providers/MultiProtocolProvider.js +2 -7
  136. package/dist/providers/MultiProtocolProvider.js.map +1 -1
  137. package/dist/providers/MultiProvider.d.ts +17 -17
  138. package/dist/providers/MultiProvider.d.ts.map +1 -1
  139. package/dist/providers/MultiProvider.js +12 -1
  140. package/dist/providers/MultiProvider.js.map +1 -1
  141. package/dist/providers/ProviderType.d.ts +5 -2
  142. package/dist/providers/ProviderType.d.ts.map +1 -1
  143. package/dist/providers/ProviderType.js +10 -1
  144. package/dist/providers/ProviderType.js.map +1 -1
  145. package/dist/providers/SmartProvider/SmartProvider.d.ts +2 -2
  146. package/dist/providers/SmartProvider/SmartProvider.d.ts.map +1 -1
  147. package/dist/providers/SmartProvider/SmartProvider.js +3 -3
  148. package/dist/providers/SmartProvider/SmartProvider.js.map +1 -1
  149. package/dist/providers/providerBuilders.d.ts.map +1 -1
  150. package/dist/providers/providerBuilders.js +1 -0
  151. package/dist/providers/providerBuilders.js.map +1 -1
  152. package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
  153. package/dist/router/HyperlaneRouterChecker.js +2 -2
  154. package/dist/router/HyperlaneRouterChecker.js.map +1 -1
  155. package/dist/router/HyperlaneRouterDeployer.d.ts.map +1 -1
  156. package/dist/router/HyperlaneRouterDeployer.js +2 -3
  157. package/dist/router/HyperlaneRouterDeployer.js.map +1 -1
  158. package/dist/test/metadata-check.js +7 -39
  159. package/dist/test/metadata-check.js.map +1 -1
  160. package/dist/test/testUtils.d.ts +2 -0
  161. package/dist/test/testUtils.d.ts.map +1 -1
  162. package/dist/test/testUtils.js +19 -1
  163. package/dist/test/testUtils.js.map +1 -1
  164. package/dist/token/IToken.d.ts +147 -0
  165. package/dist/token/IToken.d.ts.map +1 -0
  166. package/dist/token/IToken.js +37 -0
  167. package/dist/token/IToken.js.map +1 -0
  168. package/dist/token/Token.d.ts +58 -0
  169. package/dist/token/Token.d.ts.map +1 -0
  170. package/dist/token/Token.js +260 -0
  171. package/dist/token/Token.js.map +1 -0
  172. package/dist/token/Token.test.d.ts +2 -0
  173. package/dist/token/Token.test.d.ts.map +1 -0
  174. package/dist/token/Token.test.js +155 -0
  175. package/dist/token/Token.test.js.map +1 -0
  176. package/dist/token/TokenAmount.d.ts +12 -0
  177. package/dist/token/TokenAmount.d.ts.map +1 -0
  178. package/dist/token/TokenAmount.js +24 -0
  179. package/dist/token/TokenAmount.js.map +1 -0
  180. package/dist/token/TokenAmount.test.d.ts +2 -0
  181. package/dist/token/TokenAmount.test.d.ts.map +1 -0
  182. package/dist/token/TokenAmount.test.js +41 -0
  183. package/dist/token/TokenAmount.test.js.map +1 -0
  184. package/dist/token/TokenConnection.d.ts +81 -0
  185. package/dist/token/TokenConnection.d.ts.map +1 -0
  186. package/dist/token/TokenConnection.js +36 -0
  187. package/dist/token/TokenConnection.js.map +1 -0
  188. package/dist/token/TokenStandard.d.ts +36 -0
  189. package/dist/token/TokenStandard.d.ts.map +1 -0
  190. package/dist/token/TokenStandard.js +118 -0
  191. package/dist/token/TokenStandard.js.map +1 -0
  192. package/dist/token/adapters/CosmWasmTokenAdapter.d.ts +29 -30
  193. package/dist/token/adapters/CosmWasmTokenAdapter.d.ts.map +1 -1
  194. package/dist/token/adapters/CosmWasmTokenAdapter.js +65 -50
  195. package/dist/token/adapters/CosmWasmTokenAdapter.js.map +1 -1
  196. package/dist/token/adapters/CosmosTokenAdapter.d.ts +11 -9
  197. package/dist/token/adapters/CosmosTokenAdapter.d.ts.map +1 -1
  198. package/dist/token/adapters/CosmosTokenAdapter.js +25 -6
  199. package/dist/token/adapters/CosmosTokenAdapter.js.map +1 -1
  200. package/dist/token/adapters/EvmTokenAdapter.d.ts +27 -16
  201. package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
  202. package/dist/token/adapters/EvmTokenAdapter.js +69 -23
  203. package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
  204. package/dist/token/adapters/ITokenAdapter.d.ts +16 -11
  205. package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -1
  206. package/dist/token/adapters/SealevelTokenAdapter.d.ts +15 -13
  207. package/dist/token/adapters/SealevelTokenAdapter.d.ts.map +1 -1
  208. package/dist/token/adapters/SealevelTokenAdapter.js +17 -15
  209. package/dist/token/adapters/SealevelTokenAdapter.js.map +1 -1
  210. package/dist/token/deploy.d.ts +3 -2
  211. package/dist/token/deploy.d.ts.map +1 -1
  212. package/dist/token/deploy.js +4 -2
  213. package/dist/token/deploy.js.map +1 -1
  214. package/dist/types.d.ts +2 -1
  215. package/dist/types.d.ts.map +1 -1
  216. package/dist/warp/WarpCore.d.ts +76 -0
  217. package/dist/warp/WarpCore.d.ts.map +1 -0
  218. package/dist/warp/WarpCore.js +288 -0
  219. package/dist/warp/WarpCore.js.map +1 -0
  220. package/dist/warp/WarpCore.test.d.ts +2 -0
  221. package/dist/warp/WarpCore.test.d.ts.map +1 -0
  222. package/dist/warp/WarpCore.test.js +143 -0
  223. package/dist/warp/WarpCore.test.js.map +1 -0
  224. package/dist/warp/types.d.ts +274 -0
  225. package/dist/warp/types.d.ts.map +1 -0
  226. package/dist/warp/types.js +38 -0
  227. package/dist/warp/types.js.map +1 -0
  228. package/logos/black/cosmwasm.svg +1 -1
  229. package/logos/black/inevm.svg +1 -0
  230. package/logos/black/injective.svg +1 -0
  231. package/logos/black/nautilus.svg +1 -0
  232. package/logos/black/plume.svg +29 -0
  233. package/logos/color/cosmos.svg +1 -1
  234. package/logos/color/cosmwasm.svg +1 -1
  235. package/logos/color/inevm.svg +1 -0
  236. package/logos/color/injective.svg +1 -0
  237. package/logos/color/manta.svg +1 -1
  238. package/logos/color/nautilus.svg +1 -0
  239. package/logos/color/plume.svg +24 -0
  240. package/package.json +5 -4
@@ -0,0 +1,277 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ exports.collectValidators = exports.routingModuleDelta = exports.moduleMatchesConfig = exports.moduleCanCertainlyVerify = void 0;
7
+ const debug_1 = __importDefault(require("debug"));
8
+ const ethers_1 = require("ethers");
9
+ const core_1 = require("@hyperlane-xyz/core");
10
+ const utils_1 = require("@hyperlane-xyz/utils");
11
+ const chainMetadata_1 = require("../consts/chainMetadata");
12
+ const types_1 = require("./types");
13
+ const logger = (0, debug_1.default)('hyperlane:IsmUtils');
14
+ // Note that this function may return false negatives, but should
15
+ // not return false positives.
16
+ // This can happen if, for example, the module has sender, recipient, or
17
+ // body specific logic, as the sample message used when querying the ISM
18
+ // sets all of these to zero.
19
+ async function moduleCanCertainlyVerify(destModule, multiProvider, origin, destination) {
20
+ const originDomainId = multiProvider.tryGetDomainId(origin);
21
+ const destinationDomainId = multiProvider.tryGetDomainId(destination);
22
+ if (!originDomainId || !destinationDomainId) {
23
+ return false;
24
+ }
25
+ const message = (0, utils_1.formatMessage)(0, 0, originDomainId, ethers_1.ethers.constants.AddressZero, destinationDomainId, ethers_1.ethers.constants.AddressZero, '0x');
26
+ const provider = multiProvider.getSignerOrProvider(destination);
27
+ if (typeof destModule === 'string') {
28
+ const module = core_1.IInterchainSecurityModule__factory.connect(destModule, provider);
29
+ try {
30
+ const moduleType = await module.moduleType();
31
+ if (moduleType === types_1.ModuleType.MERKLE_ROOT_MULTISIG ||
32
+ moduleType === types_1.ModuleType.MESSAGE_ID_MULTISIG) {
33
+ const multisigModule = core_1.IMultisigIsm__factory.connect(destModule, provider);
34
+ const [, threshold] = await multisigModule.validatorsAndThreshold(message);
35
+ return threshold > 0;
36
+ }
37
+ else if (moduleType === types_1.ModuleType.ROUTING) {
38
+ const routingIsm = core_1.IRoutingIsm__factory.connect(destModule, provider);
39
+ const subModule = await routingIsm.route(message);
40
+ return moduleCanCertainlyVerify(subModule, multiProvider, origin, destination);
41
+ }
42
+ else if (moduleType === types_1.ModuleType.AGGREGATION) {
43
+ const aggregationIsm = core_1.IAggregationIsm__factory.connect(destModule, provider);
44
+ const [subModules, threshold] = await aggregationIsm.modulesAndThreshold(message);
45
+ let verified = 0;
46
+ for (const subModule of subModules) {
47
+ const canVerify = await moduleCanCertainlyVerify(subModule, multiProvider, origin, destination);
48
+ if (canVerify) {
49
+ verified += 1;
50
+ }
51
+ }
52
+ return verified >= threshold;
53
+ }
54
+ else {
55
+ throw new Error(`Unsupported module type: ${moduleType}`);
56
+ }
57
+ }
58
+ catch (e) {
59
+ logger(`Error checking module ${destModule}: ${e}`);
60
+ return false;
61
+ }
62
+ }
63
+ else {
64
+ // destModule is an IsmConfig
65
+ switch (destModule.type) {
66
+ case types_1.IsmType.MERKLE_ROOT_MULTISIG:
67
+ case types_1.IsmType.MESSAGE_ID_MULTISIG:
68
+ return destModule.threshold > 0;
69
+ case types_1.IsmType.ROUTING: {
70
+ const checking = moduleCanCertainlyVerify(destModule.domains[destination], multiProvider, origin, destination);
71
+ return checking;
72
+ }
73
+ case types_1.IsmType.AGGREGATION: {
74
+ let verified = 0;
75
+ for (const subModule of destModule.modules) {
76
+ const canVerify = await moduleCanCertainlyVerify(subModule, multiProvider, origin, destination);
77
+ if (canVerify) {
78
+ verified += 1;
79
+ }
80
+ }
81
+ return verified >= destModule.threshold;
82
+ }
83
+ case types_1.IsmType.OP_STACK:
84
+ return destModule.nativeBridge !== ethers_1.ethers.constants.AddressZero;
85
+ case types_1.IsmType.TEST_ISM: {
86
+ return true;
87
+ }
88
+ default:
89
+ throw new Error(`Unsupported module type: ${destModule.type}`);
90
+ }
91
+ }
92
+ }
93
+ exports.moduleCanCertainlyVerify = moduleCanCertainlyVerify;
94
+ async function moduleMatchesConfig(chain, moduleAddress, config, multiProvider, contracts, mailbox) {
95
+ if (typeof config === 'string') {
96
+ return (0, utils_1.eqAddress)(moduleAddress, config);
97
+ }
98
+ // If the module address is zero, it can't match any object-based config.
99
+ // The subsequent check of what moduleType it is will throw, so we fail here.
100
+ if ((0, utils_1.eqAddress)(moduleAddress, ethers_1.ethers.constants.AddressZero)) {
101
+ return false;
102
+ }
103
+ const provider = multiProvider.getProvider(chain);
104
+ const module = core_1.IInterchainSecurityModule__factory.connect(moduleAddress, provider);
105
+ const actualType = await module.moduleType();
106
+ if (actualType !== (0, types_1.ismTypeToModuleType)(config.type))
107
+ return false;
108
+ let matches = true;
109
+ switch (config.type) {
110
+ case types_1.IsmType.MERKLE_ROOT_MULTISIG: {
111
+ // A MerkleRootMultisigIsm matches if validators and threshold match the config
112
+ const expectedAddress = await contracts.merkleRootMultisigIsmFactory.getAddress(config.validators.sort(), config.threshold);
113
+ matches = (0, utils_1.eqAddress)(expectedAddress, module.address);
114
+ break;
115
+ }
116
+ case types_1.IsmType.MESSAGE_ID_MULTISIG: {
117
+ // A MessageIdMultisigIsm matches if validators and threshold match the config
118
+ const expectedAddress = await contracts.messageIdMultisigIsmFactory.getAddress(config.validators.sort(), config.threshold);
119
+ matches = (0, utils_1.eqAddress)(expectedAddress, module.address);
120
+ break;
121
+ }
122
+ case types_1.IsmType.FALLBACK_ROUTING:
123
+ case types_1.IsmType.ROUTING: {
124
+ // A RoutingIsm matches if:
125
+ // 1. The set of domains in the config equals those on-chain
126
+ // 2. The modules for each domain match the config
127
+ // TODO: Check (1)
128
+ const routingIsm = core_1.DomainRoutingIsm__factory.connect(moduleAddress, provider);
129
+ // Check that the RoutingISM owner matches the config
130
+ const owner = await routingIsm.owner();
131
+ matches && (matches = (0, utils_1.eqAddress)(owner, config.owner));
132
+ // check if the mailbox matches the config for fallback routing
133
+ if (config.type === types_1.IsmType.FALLBACK_ROUTING) {
134
+ const client = core_1.MailboxClient__factory.connect(moduleAddress, provider);
135
+ const mailboxAddress = await client.mailbox();
136
+ matches =
137
+ matches &&
138
+ mailbox !== undefined &&
139
+ (0, utils_1.eqAddress)(mailboxAddress, mailbox);
140
+ }
141
+ const delta = await routingModuleDelta(chain, moduleAddress, config, multiProvider, contracts, mailbox);
142
+ matches =
143
+ matches &&
144
+ delta.domainsToEnroll.length === 0 &&
145
+ delta.domainsToUnenroll.length === 0 &&
146
+ !delta.mailbox &&
147
+ !delta.owner;
148
+ break;
149
+ }
150
+ case types_1.IsmType.AGGREGATION: {
151
+ // An AggregationIsm matches if:
152
+ // 1. The threshold matches the config
153
+ // 2. There is a bijection between on and off-chain configured modules
154
+ const aggregationIsm = core_1.StaticAggregationIsm__factory.connect(moduleAddress, provider);
155
+ const [subModules, threshold] = await aggregationIsm.modulesAndThreshold('0x');
156
+ matches && (matches = threshold === config.threshold);
157
+ matches && (matches = subModules.length === config.modules.length);
158
+ const configIndexMatched = new Map();
159
+ for (const subModule of subModules) {
160
+ const subModuleMatchesConfig = await Promise.all(config.modules.map((c) => moduleMatchesConfig(chain, subModule, c, multiProvider, contracts)));
161
+ // The submodule returned by the ISM must match exactly one
162
+ // entry in the config.
163
+ const count = subModuleMatchesConfig.filter(Boolean).length;
164
+ matches && (matches = count === 1);
165
+ // That entry in the config should not have been matched already.
166
+ subModuleMatchesConfig.forEach((matched, index) => {
167
+ if (matched) {
168
+ matches && (matches = !configIndexMatched.has(index));
169
+ configIndexMatched.set(index, true);
170
+ }
171
+ });
172
+ }
173
+ break;
174
+ }
175
+ case types_1.IsmType.OP_STACK: {
176
+ const opStackIsm = core_1.OPStackIsm__factory.connect(moduleAddress, provider);
177
+ const type = await opStackIsm.moduleType();
178
+ matches && (matches = type === types_1.ModuleType.NULL);
179
+ break;
180
+ }
181
+ case types_1.IsmType.TEST_ISM: {
182
+ // This is just a TestISM
183
+ matches = true;
184
+ break;
185
+ }
186
+ case types_1.IsmType.PAUSABLE: {
187
+ const pausableIsm = core_1.PausableIsm__factory.connect(moduleAddress, provider);
188
+ const owner = await pausableIsm.owner();
189
+ matches && (matches = (0, utils_1.eqAddress)(owner, config.owner));
190
+ if (config.paused) {
191
+ const isPaused = await pausableIsm.paused();
192
+ matches && (matches = config.paused === isPaused);
193
+ }
194
+ break;
195
+ }
196
+ default: {
197
+ throw new Error('Unsupported ModuleType');
198
+ }
199
+ }
200
+ return matches;
201
+ }
202
+ exports.moduleMatchesConfig = moduleMatchesConfig;
203
+ async function routingModuleDelta(destination, moduleAddress, config, multiProvider, contracts, mailbox) {
204
+ const provider = multiProvider.getProvider(destination);
205
+ const routingIsm = core_1.DomainRoutingIsm__factory.connect(moduleAddress, provider);
206
+ const owner = await routingIsm.owner();
207
+ const deployedDomains = (await routingIsm.domains()).map((domain) => domain.toNumber());
208
+ // config.domains is already filtered to only include domains in the multiprovider
209
+ const safeConfigDomains = (0, utils_1.objMap)(config.domains, (chainName) => chainMetadata_1.chainMetadata[chainName]?.domainId ??
210
+ multiProvider.getDomainId(chainName));
211
+ const delta = {
212
+ domainsToUnenroll: [],
213
+ domainsToEnroll: [],
214
+ };
215
+ // if owners don't match, we need to transfer ownership
216
+ if (!(0, utils_1.eqAddress)(owner, (0, utils_1.normalizeAddress)(config.owner)))
217
+ delta.owner = config.owner;
218
+ if (config.type === types_1.IsmType.FALLBACK_ROUTING) {
219
+ const client = core_1.MailboxClient__factory.connect(moduleAddress, provider);
220
+ const mailboxAddress = await client.mailbox();
221
+ if (mailbox && !(0, utils_1.eqAddress)(mailboxAddress, mailbox))
222
+ delta.mailbox = mailbox;
223
+ }
224
+ // check for exclusion of domains in the config
225
+ delta.domainsToUnenroll = deployedDomains.filter((domain) => !Object.values(safeConfigDomains).includes(domain));
226
+ // check for inclusion of domains in the config
227
+ for (const [origin, subConfig] of Object.entries(config.domains)) {
228
+ const originDomain = safeConfigDomains[origin];
229
+ if (!deployedDomains.includes(originDomain)) {
230
+ delta.domainsToEnroll.push(originDomain);
231
+ }
232
+ else {
233
+ const subModule = await routingIsm.module(originDomain);
234
+ // Recursively check that the submodule for each configured
235
+ // domain matches the submodule config.
236
+ const subModuleMatches = await moduleMatchesConfig(destination, subModule, subConfig, multiProvider, contracts, mailbox);
237
+ if (!subModuleMatches)
238
+ delta.domainsToEnroll.push(originDomain);
239
+ }
240
+ }
241
+ return delta;
242
+ }
243
+ exports.routingModuleDelta = routingModuleDelta;
244
+ function collectValidators(origin, config) {
245
+ // TODO: support address configurations in collectValidators
246
+ if (typeof config === 'string') {
247
+ logger.extend(origin)('Address config unimplemented in collectValidators');
248
+ return new Set([]);
249
+ }
250
+ let validators = [];
251
+ if (config.type === types_1.IsmType.MERKLE_ROOT_MULTISIG ||
252
+ config.type === types_1.IsmType.MESSAGE_ID_MULTISIG) {
253
+ validators = config.validators;
254
+ }
255
+ else if (config.type === types_1.IsmType.ROUTING) {
256
+ if (Object.keys(config.domains).includes(origin)) {
257
+ const domainValidators = collectValidators(origin, config.domains[origin]);
258
+ validators = [...domainValidators];
259
+ }
260
+ }
261
+ else if (config.type === types_1.IsmType.AGGREGATION) {
262
+ const aggregatedValidators = config.modules.map((c) => collectValidators(origin, c));
263
+ aggregatedValidators.forEach((set) => {
264
+ validators = validators.concat([...set]);
265
+ });
266
+ }
267
+ else if (config.type === types_1.IsmType.TEST_ISM ||
268
+ config.type === types_1.IsmType.PAUSABLE) {
269
+ return new Set([]);
270
+ }
271
+ else {
272
+ throw new Error('Unsupported ModuleType');
273
+ }
274
+ return new Set(validators);
275
+ }
276
+ exports.collectValidators = collectValidators;
277
+ //# sourceMappingURL=utils.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"utils.js","sourceRoot":"","sources":["../../src/ism/utils.ts"],"names":[],"mappings":"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"}
@@ -1,7 +1,7 @@
1
1
  import { Debugger } from 'debug';
2
2
  import { ProtocolType } from '@hyperlane-xyz/utils';
3
- import { ChainMap, ChainName } from '../types';
4
- import { ChainMetadata } from './chainMetadataTypes';
3
+ import { ChainMap, ChainName, ChainNameOrId } from '../types';
4
+ import { ChainMetadata, ExplorerFamily } from './chainMetadataTypes';
5
5
  export interface ChainMetadataManagerOptions {
6
6
  loggerName?: string;
7
7
  }
@@ -27,21 +27,26 @@ export declare class ChainMetadataManager<MetaExt = {}> {
27
27
  * Get the metadata for a given chain name, chain id, or domain id
28
28
  * @throws if chain's metadata has not been set
29
29
  */
30
- tryGetChainMetadata(chainNameOrId: ChainName | number): ChainMetadata<MetaExt> | null;
30
+ tryGetChainMetadata(chainNameOrId: ChainNameOrId): ChainMetadata<MetaExt> | null;
31
31
  /**
32
32
  * Get the metadata for a given chain name, chain id, or domain id
33
33
  * @throws if chain's metadata has not been set
34
34
  */
35
- getChainMetadata(chainNameOrId: ChainName | number): ChainMetadata<MetaExt>;
35
+ getChainMetadata(chainNameOrId: ChainNameOrId): ChainMetadata<MetaExt>;
36
+ /**
37
+ * Returns true if the given chain name, chain id, or domain id is
38
+ * include in this manager's metadata, false otherwise
39
+ */
40
+ hasChain(chainNameOrId: ChainNameOrId): boolean;
36
41
  /**
37
42
  * Get the name for a given chain name, chain id, or domain id
38
43
  */
39
- tryGetChainName(chainNameOrId: ChainName | number): string | null;
44
+ tryGetChainName(chainNameOrId: ChainNameOrId): string | null;
40
45
  /**
41
46
  * Get the name for a given chain name, chain id, or domain id
42
47
  * @throws if chain's metadata has not been set
43
48
  */
44
- getChainName(chainNameOrId: ChainName | number): string;
49
+ getChainName(chainNameOrId: ChainNameOrId): string;
45
50
  /**
46
51
  * Get the names for all chains known to this MultiProvider
47
52
  */
@@ -49,12 +54,12 @@ export declare class ChainMetadataManager<MetaExt = {}> {
49
54
  /**
50
55
  * Get the id for a given chain name, chain id, or domain id
51
56
  */
52
- tryGetChainId(chainNameOrId: ChainName | number): number | string | null;
57
+ tryGetChainId(chainNameOrId: ChainNameOrId): number | string | null;
53
58
  /**
54
59
  * Get the id for a given chain name, chain id, or domain id
55
60
  * @throws if chain's metadata has not been set
56
61
  */
57
- getChainId(chainNameOrId: ChainName | number): number | string;
62
+ getChainId(chainNameOrId: ChainNameOrId): number | string;
58
63
  /**
59
64
  * Get the ids for all chains known to this MultiProvider
60
65
  */
@@ -62,21 +67,21 @@ export declare class ChainMetadataManager<MetaExt = {}> {
62
67
  /**
63
68
  * Get the domain id for a given chain name, chain id, or domain id
64
69
  */
65
- tryGetDomainId(chainNameOrId: ChainName | number): number | null;
70
+ tryGetDomainId(chainNameOrId: ChainNameOrId): number | null;
66
71
  /**
67
72
  * Get the domain id for a given chain name, chain id, or domain id
68
73
  * @throws if chain's metadata has not been set
69
74
  */
70
- getDomainId(chainNameOrId: ChainName | number): number;
75
+ getDomainId(chainNameOrId: ChainNameOrId): number;
71
76
  /**
72
77
  * Get the protocol type for a given chain name, chain id, or domain id
73
78
  */
74
- tryGetProtocol(chainNameOrId: ChainName | number): ProtocolType | null;
79
+ tryGetProtocol(chainNameOrId: ChainNameOrId): ProtocolType | null;
75
80
  /**
76
81
  * Get the protocol type for a given chain name, chain id, or domain id
77
82
  * @throws if chain's metadata or protocol has not been set
78
83
  */
79
- getProtocol(chainNameOrId: ChainName | number): ProtocolType;
84
+ getProtocol(chainNameOrId: ChainNameOrId): ProtocolType;
80
85
  /**
81
86
  * Get the domain ids for a list of chain names, chain ids, or domain ids
82
87
  * @throws if any chain's metadata has not been set
@@ -98,47 +103,64 @@ export declare class ChainMetadataManager<MetaExt = {}> {
98
103
  * Get an RPC URL for a given chain name, chain id, or domain id
99
104
  * @throws if chain's metadata has not been set
100
105
  */
101
- getRpcUrl(chainNameOrId: ChainName | number): string;
106
+ getRpcUrl(chainNameOrId: ChainNameOrId): string;
102
107
  /**
103
108
  * Get a block explorer URL for a given chain name, chain id, or domain id
104
109
  */
105
- tryGetExplorerUrl(chainNameOrId: ChainName | number): string | null;
110
+ tryGetExplorerUrl(chainNameOrId: ChainNameOrId): string | null;
106
111
  /**
107
112
  * Get a block explorer URL for a given chain name, chain id, or domain id
108
113
  * @throws if chain's metadata or block explorer data has no been set
109
114
  */
110
- getExplorerUrl(chainNameOrId: ChainName | number): string;
115
+ getExplorerUrl(chainNameOrId: ChainNameOrId): string;
116
+ /**
117
+ * Get a block explorer's API for a given chain name, chain id, or domain id
118
+ */
119
+ tryGetExplorerApi(chainNameOrId: ChainName | number): {
120
+ apiUrl: string;
121
+ apiKey?: string;
122
+ family?: ExplorerFamily;
123
+ } | null;
124
+ /**
125
+ * Get a block explorer API for a given chain name, chain id, or domain id
126
+ * @throws if chain's metadata or block explorer data has no been set
127
+ */
128
+ getExplorerApi(chainNameOrId: ChainName | number): {
129
+ apiUrl: string;
130
+ apiKey?: string;
131
+ family?: ExplorerFamily;
132
+ };
111
133
  /**
112
134
  * Get a block explorer's API URL for a given chain name, chain id, or domain id
113
135
  */
114
- tryGetExplorerApiUrl(chainNameOrId: ChainName | number): string | null;
136
+ tryGetExplorerApiUrl(chainNameOrId: ChainNameOrId): string | null;
115
137
  /**
116
138
  * Get a block explorer API URL for a given chain name, chain id, or domain id
117
139
  * @throws if chain's metadata or block explorer data has no been set
118
140
  */
119
- getExplorerApiUrl(chainNameOrId: ChainName | number): string;
141
+ getExplorerApiUrl(chainNameOrId: ChainNameOrId): string;
120
142
  /**
121
143
  * Get a block explorer URL for given chain's tx
122
144
  */
123
- tryGetExplorerTxUrl(chainNameOrId: ChainName | number, response: {
145
+ tryGetExplorerTxUrl(chainNameOrId: ChainNameOrId, response: {
124
146
  hash: string;
125
147
  }): string | null;
126
148
  /**
127
149
  * Get a block explorer URL for given chain's tx
128
150
  * @throws if chain's metadata or block explorer data has no been set
129
151
  */
130
- getExplorerTxUrl(chainNameOrId: ChainName | number, response: {
152
+ getExplorerTxUrl(chainNameOrId: ChainNameOrId, response: {
131
153
  hash: string;
132
154
  }): string;
133
155
  /**
134
156
  * Get a block explorer URL for given chain's address
135
157
  */
136
- tryGetExplorerAddressUrl(chainNameOrId: ChainName | number, address?: string): Promise<string | null>;
158
+ tryGetExplorerAddressUrl(chainNameOrId: ChainNameOrId, address?: string): Promise<string | null>;
137
159
  /**
138
160
  * Get a block explorer URL for given chain's address
139
161
  * @throws if address or the chain's block explorer data has no been set
140
162
  */
141
- getExplorerAddressUrl(chainNameOrId: ChainName | number, address?: string): Promise<string>;
163
+ getExplorerAddressUrl(chainNameOrId: ChainNameOrId, address?: string): Promise<string>;
142
164
  /**
143
165
  * Creates a new ChainMetadataManager with the extended metadata
144
166
  * @param additionalMetadata extra fields to add to the metadata for each chain
@@ -1 +1 @@
1
- {"version":3,"file":"ChainMetadataManager.d.ts","sourceRoot":"","sources":["../../src/metadata/ChainMetadataManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChainMetadataManager.d.ts","sourceRoot":"","sources":["../../src/metadata/ChainMetadataManager.ts"],"names":[],"mappings":"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"}
@@ -72,6 +72,13 @@ class ChainMetadataManager {
72
72
  }
73
73
  return chainMetadata;
74
74
  }
75
+ /**
76
+ * Returns true if the given chain name, chain id, or domain id is
77
+ * include in this manager's metadata, false otherwise
78
+ */
79
+ hasChain(chainNameOrId) {
80
+ return !!this.tryGetChainMetadata(chainNameOrId);
81
+ }
75
82
  /**
76
83
  * Get the name for a given chain name, chain id, or domain id
77
84
  */
@@ -200,6 +207,25 @@ class ChainMetadataManager {
200
207
  throw new Error(`No explorer url set for ${chainNameOrId}`);
201
208
  return url;
202
209
  }
210
+ /**
211
+ * Get a block explorer's API for a given chain name, chain id, or domain id
212
+ */
213
+ tryGetExplorerApi(chainNameOrId) {
214
+ const metadata = this.tryGetChainMetadata(chainNameOrId);
215
+ if (!metadata)
216
+ return null;
217
+ return (0, blockExplorer_1.getExplorerApi)(metadata);
218
+ }
219
+ /**
220
+ * Get a block explorer API for a given chain name, chain id, or domain id
221
+ * @throws if chain's metadata or block explorer data has no been set
222
+ */
223
+ getExplorerApi(chainNameOrId) {
224
+ const explorerApi = this.tryGetExplorerApi(chainNameOrId);
225
+ if (!explorerApi)
226
+ throw new Error(`No supported explorer api set for ${chainNameOrId}`);
227
+ return explorerApi;
228
+ }
203
229
  /**
204
230
  * Get a block explorer's API URL for a given chain name, chain id, or domain id
205
231
  */
@@ -1 +1 @@
1
- {"version":3,"file":"ChainMetadataManager.js","sourceRoot":"","sources":["../../src/metadata/ChainMetadataManager.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"ChainMetadataManager.js","sourceRoot":"","sources":["../../src/metadata/ChainMetadataManager.ts"],"names":[],"mappings":"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"}