@hyperlane-xyz/sdk 13.2.1 → 13.3.0

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 (166) hide show
  1. package/dist/consts/multisigIsm.d.ts.map +1 -1
  2. package/dist/consts/multisigIsm.js +27 -0
  3. package/dist/consts/multisigIsm.js.map +1 -1
  4. package/dist/core/CoreDeployer.hardhat-test.js +5 -0
  5. package/dist/core/CoreDeployer.hardhat-test.js.map +1 -1
  6. package/dist/core/CosmosNativeCoreModule.d.ts.map +1 -1
  7. package/dist/core/CosmosNativeCoreModule.js +0 -1
  8. package/dist/core/CosmosNativeCoreModule.js.map +1 -1
  9. package/dist/core/EvmCoreModule.d.ts.map +1 -1
  10. package/dist/core/EvmCoreModule.hardhat-test.js +1 -2
  11. package/dist/core/EvmCoreModule.hardhat-test.js.map +1 -1
  12. package/dist/core/EvmCoreModule.js +7 -7
  13. package/dist/core/EvmCoreModule.js.map +1 -1
  14. package/dist/core/EvmCoreReader.d.ts.map +1 -1
  15. package/dist/core/EvmCoreReader.js +1 -1
  16. package/dist/core/EvmCoreReader.js.map +1 -1
  17. package/dist/core/EvmIcaModule.d.ts +3 -4
  18. package/dist/core/EvmIcaModule.d.ts.map +1 -1
  19. package/dist/core/EvmIcaModule.hardhat-test.js +25 -2
  20. package/dist/core/EvmIcaModule.hardhat-test.js.map +1 -1
  21. package/dist/core/EvmIcaModule.js +13 -11
  22. package/dist/core/EvmIcaModule.js.map +1 -1
  23. package/dist/core/HyperlaneRelayer.d.ts +20 -5
  24. package/dist/core/HyperlaneRelayer.d.ts.map +1 -1
  25. package/dist/core/types.d.ts +2801 -1286
  26. package/dist/core/types.d.ts.map +1 -1
  27. package/dist/core/types.js +0 -1
  28. package/dist/core/types.js.map +1 -1
  29. package/dist/deploy/HyperlaneDeployer.d.ts +2 -1
  30. package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
  31. package/dist/deploy/HyperlaneDeployer.js +11 -8
  32. package/dist/deploy/HyperlaneDeployer.js.map +1 -1
  33. package/dist/deploy/proxy.d.ts +1 -1
  34. package/dist/deploy/proxy.d.ts.map +1 -1
  35. package/dist/deploy/proxy.js +4 -5
  36. package/dist/deploy/proxy.js.map +1 -1
  37. package/dist/gas/token-prices.d.ts.map +1 -1
  38. package/dist/gas/token-prices.js +23 -4
  39. package/dist/gas/token-prices.js.map +1 -1
  40. package/dist/ica/EvmIcaReader.d.ts +2 -5
  41. package/dist/ica/EvmIcaReader.d.ts.map +1 -1
  42. package/dist/ica/EvmIcaReader.hardhat-test.js +2 -7
  43. package/dist/ica/EvmIcaReader.hardhat-test.js.map +1 -1
  44. package/dist/ica/EvmIcaReader.js +10 -44
  45. package/dist/ica/EvmIcaReader.js.map +1 -1
  46. package/dist/ica/types.d.ts +965 -47
  47. package/dist/ica/types.d.ts.map +1 -1
  48. package/dist/ica/types.js +7 -22
  49. package/dist/ica/types.js.map +1 -1
  50. package/dist/index.d.ts +18 -16
  51. package/dist/index.d.ts.map +1 -1
  52. package/dist/index.js +16 -14
  53. package/dist/index.js.map +1 -1
  54. package/dist/ism/EvmIsmModule.hardhat-test.js +0 -5
  55. package/dist/ism/EvmIsmModule.hardhat-test.js.map +1 -1
  56. package/dist/ism/EvmIsmReader.d.ts +4 -1
  57. package/dist/ism/EvmIsmReader.d.ts.map +1 -1
  58. package/dist/ism/EvmIsmReader.js +66 -42
  59. package/dist/ism/EvmIsmReader.js.map +1 -1
  60. package/dist/ism/HyperlaneIsmFactory.d.ts +0 -1
  61. package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
  62. package/dist/ism/HyperlaneIsmFactory.js +4 -11
  63. package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
  64. package/dist/ism/metadata/arbL2ToL1.hardhat-test.js +0 -1
  65. package/dist/ism/metadata/arbL2ToL1.hardhat-test.js.map +1 -1
  66. package/dist/ism/metadata/builder.d.ts +2 -2
  67. package/dist/ism/metadata/builder.d.ts.map +1 -1
  68. package/dist/ism/metadata/builder.hardhat-test.js +0 -1
  69. package/dist/ism/metadata/builder.hardhat-test.js.map +1 -1
  70. package/dist/ism/metadata/builder.js +3 -4
  71. package/dist/ism/metadata/builder.js.map +1 -1
  72. package/dist/ism/metadata/ccipread.d.ts +4 -4
  73. package/dist/ism/metadata/ccipread.d.ts.map +1 -1
  74. package/dist/ism/metadata/ccipread.hardhat-test.js +5 -37
  75. package/dist/ism/metadata/ccipread.hardhat-test.js.map +1 -1
  76. package/dist/ism/metadata/ccipread.js +4 -4
  77. package/dist/ism/metadata/ccipread.js.map +1 -1
  78. package/dist/ism/metadata/routing.d.ts.map +1 -1
  79. package/dist/ism/metadata/routing.js +8 -11
  80. package/dist/ism/metadata/routing.js.map +1 -1
  81. package/dist/ism/types.d.ts +59 -19
  82. package/dist/ism/types.d.ts.map +1 -1
  83. package/dist/ism/types.js +17 -12
  84. package/dist/ism/types.js.map +1 -1
  85. package/dist/ism/utils.d.ts.map +1 -1
  86. package/dist/ism/utils.js +7 -5
  87. package/dist/ism/utils.js.map +1 -1
  88. package/dist/middleware/account/InterchainAccount.d.ts +1 -1
  89. package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
  90. package/dist/middleware/account/InterchainAccount.js +3 -9
  91. package/dist/middleware/account/InterchainAccount.js.map +1 -1
  92. package/dist/middleware/account/InterchainAccountChecker.d.ts +3 -6
  93. package/dist/middleware/account/InterchainAccountChecker.d.ts.map +1 -1
  94. package/dist/middleware/account/InterchainAccountChecker.js +2 -17
  95. package/dist/middleware/account/InterchainAccountChecker.js.map +1 -1
  96. package/dist/middleware/account/InterchainAccountDeployer.d.ts +3 -8
  97. package/dist/middleware/account/InterchainAccountDeployer.d.ts.map +1 -1
  98. package/dist/middleware/account/InterchainAccountDeployer.js +11 -31
  99. package/dist/middleware/account/InterchainAccountDeployer.js.map +1 -1
  100. package/dist/middleware/account/accounts.hardhat-test.js +10 -1
  101. package/dist/middleware/account/accounts.hardhat-test.js.map +1 -1
  102. package/dist/middleware/account/contracts.d.ts +1 -4
  103. package/dist/middleware/account/contracts.d.ts.map +1 -1
  104. package/dist/middleware/account/contracts.js +1 -4
  105. package/dist/middleware/account/contracts.js.map +1 -1
  106. package/dist/middleware/account/types.d.ts +2 -2
  107. package/dist/providers/transactions/submitter/builder/types.d.ts +10 -10
  108. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.d.ts +2 -3
  109. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.d.ts.map +1 -1
  110. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.js +20 -16
  111. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.js.map +1 -1
  112. package/dist/providers/transactions/transformer/ethersV5/types.d.ts +3 -3
  113. package/dist/providers/transactions/transformer/types.d.ts +3 -3
  114. package/dist/router/EvmRouterReader.d.ts +18 -0
  115. package/dist/router/EvmRouterReader.d.ts.map +1 -0
  116. package/dist/router/EvmRouterReader.js +60 -0
  117. package/dist/router/EvmRouterReader.js.map +1 -0
  118. package/dist/router/HyperlaneRouterChecker.d.ts +3 -0
  119. package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
  120. package/dist/router/HyperlaneRouterChecker.js +14 -4
  121. package/dist/router/HyperlaneRouterChecker.js.map +1 -1
  122. package/dist/router/types.d.ts +79 -31
  123. package/dist/router/types.d.ts.map +1 -1
  124. package/dist/router/types.js +13 -4
  125. package/dist/router/types.js.map +1 -1
  126. package/dist/token/EvmERC20WarpModule.d.ts +13 -0
  127. package/dist/token/EvmERC20WarpModule.d.ts.map +1 -1
  128. package/dist/token/EvmERC20WarpModule.hardhat-test.js +354 -9
  129. package/dist/token/EvmERC20WarpModule.hardhat-test.js.map +1 -1
  130. package/dist/token/EvmERC20WarpModule.js +210 -9
  131. package/dist/token/EvmERC20WarpModule.js.map +1 -1
  132. package/dist/token/EvmERC20WarpRouteReader.d.ts +7 -11
  133. package/dist/token/EvmERC20WarpRouteReader.d.ts.map +1 -1
  134. package/dist/token/EvmERC20WarpRouteReader.js +97 -45
  135. package/dist/token/EvmERC20WarpRouteReader.js.map +1 -1
  136. package/dist/token/TokenMetadataMap.d.ts +1 -2
  137. package/dist/token/TokenMetadataMap.d.ts.map +1 -1
  138. package/dist/token/TokenMetadataMap.js +2 -20
  139. package/dist/token/TokenMetadataMap.js.map +1 -1
  140. package/dist/token/TokenStandard.d.ts.map +1 -1
  141. package/dist/token/TokenStandard.js +3 -0
  142. package/dist/token/TokenStandard.js.map +1 -1
  143. package/dist/token/config.d.ts +25 -0
  144. package/dist/token/config.d.ts.map +1 -1
  145. package/dist/token/config.js +25 -0
  146. package/dist/token/config.js.map +1 -1
  147. package/dist/token/configUtils.d.ts.map +1 -1
  148. package/dist/token/configUtils.js +13 -3
  149. package/dist/token/configUtils.js.map +1 -1
  150. package/dist/token/contracts.d.ts +37 -31
  151. package/dist/token/contracts.d.ts.map +1 -1
  152. package/dist/token/contracts.js +8 -1
  153. package/dist/token/contracts.js.map +1 -1
  154. package/dist/token/deploy.d.ts +12 -5
  155. package/dist/token/deploy.d.ts.map +1 -1
  156. package/dist/token/deploy.js +137 -5
  157. package/dist/token/deploy.js.map +1 -1
  158. package/dist/token/types.d.ts +2720 -101
  159. package/dist/token/types.d.ts.map +1 -1
  160. package/dist/token/types.js +76 -5
  161. package/dist/token/types.js.map +1 -1
  162. package/dist/utils/decimals.d.ts +4 -0
  163. package/dist/utils/decimals.d.ts.map +1 -0
  164. package/dist/utils/decimals.js +26 -0
  165. package/dist/utils/decimals.js.map +1 -0
  166. package/package.json +11 -7
@@ -1,18 +1,27 @@
1
+ // import { expect } from 'chai';
2
+ import { compareVersions } from 'compare-versions';
3
+ import { UINT_256_MAX } from 'starknet';
1
4
  import { zeroAddress } from 'viem';
2
- import { GasRouter__factory, MailboxClient__factory, TokenRouter__factory, } from '@hyperlane-xyz/core';
5
+ import { GasRouter__factory, IERC20__factory, MailboxClient__factory, MovableCollateralRouter__factory, ProxyAdmin__factory, TokenRouter__factory, } from '@hyperlane-xyz/core';
3
6
  import { buildArtifact as coreBuildArtifact } from '@hyperlane-xyz/core/buildArtifact.js';
4
- import { addressToBytes32, assert, deepEquals, difference, eqAddress, isObjEmpty, objMap, rootLogger, } from '@hyperlane-xyz/utils';
7
+ import { addressToBytes32, assert, deepEquals, difference, eqAddress, isObjEmpty, normalizeAddressEvm, objMap, promiseObjAll, rootLogger, } from '@hyperlane-xyz/utils';
5
8
  import { transferOwnershipTransactions } from '../contracts/contracts.js';
6
9
  import { HyperlaneModule, } from '../core/AbstractHyperlaneModule.js';
7
- import { proxyAdminUpdateTxs } from '../deploy/proxy.js';
10
+ import { isInitialized, proxyAdmin, proxyAdminUpdateTxs, } from '../deploy/proxy.js';
8
11
  import { ContractVerifier } from '../deploy/verify/ContractVerifier.js';
9
12
  import { ExplorerLicenseType } from '../deploy/verify/types.js';
10
13
  import { EvmHookModule } from '../hook/EvmHookModule.js';
11
14
  import { EvmIsmModule } from '../ism/EvmIsmModule.js';
15
+ import { resolveRouterMapConfig } from '../router/types.js';
12
16
  import { extractIsmAndHookFactoryAddresses } from '../utils/ism.js';
13
17
  import { EvmERC20WarpRouteReader } from './EvmERC20WarpRouteReader.js';
14
18
  import { HypERC20Deployer } from './deploy.js';
15
- import { HypTokenRouterConfigSchema, derivedHookAddress, derivedIsmAddress, } from './types.js';
19
+ import { HypTokenRouterConfigSchema, VERSION_ERROR_MESSAGE, contractVersionMatchesDependency, derivedHookAddress, derivedIsmAddress, isMovableCollateralTokenConfig, } from './types.js';
20
+ const getAllowedRebalancingBridgesByDomain = (allowedRebalancingBridgesByDomain) => {
21
+ return objMap(allowedRebalancingBridgesByDomain, (_domainId, allowedRebalancingBridges) => {
22
+ return new Set(allowedRebalancingBridges.map((bridgeConfig) => normalizeAddressEvm(bridgeConfig.bridge)));
23
+ });
24
+ };
16
25
  export class EvmERC20WarpModule extends HyperlaneModule {
17
26
  multiProvider;
18
27
  ccipContractCache;
@@ -61,7 +70,7 @@ export class EvmERC20WarpModule extends HyperlaneModule {
61
70
  * 1. createOwnershipUpdateTxs() must always be LAST because no updates possible after ownership transferred
62
71
  * 2. createRemoteRoutersUpdateTxs() must always be BEFORE createSetDestinationGasUpdateTxs() because gas enumeration depends on domains
63
72
  */
64
- transactions.push(...(await this.createIsmUpdateTxs(actualConfig, expectedConfig)), ...(await this.createHookUpdateTxs(actualConfig, expectedConfig)), ...this.createEnrollRemoteRoutersUpdateTxs(actualConfig, expectedConfig), ...this.createUnenrollRemoteRoutersUpdateTxs(actualConfig, expectedConfig), ...this.createSetDestinationGasUpdateTxs(actualConfig, expectedConfig), ...this.createOwnershipUpdateTxs(actualConfig, expectedConfig), ...proxyAdminUpdateTxs(this.chainId, this.args.addresses.deployedTokenRoute, actualConfig, expectedConfig));
73
+ transactions.push(...(await this.upgradeWarpRouteImplementationTx(actualConfig, expectedConfig)), ...(await this.createIsmUpdateTxs(actualConfig, expectedConfig)), ...(await this.createHookUpdateTxs(actualConfig, expectedConfig)), ...this.createEnrollRemoteRoutersUpdateTxs(actualConfig, expectedConfig), ...this.createUnenrollRemoteRoutersUpdateTxs(actualConfig, expectedConfig), ...this.createSetDestinationGasUpdateTxs(actualConfig, expectedConfig), ...this.createAddRebalancersUpdateTxs(actualConfig, expectedConfig), ...this.createRemoveRebalancersUpdateTxs(actualConfig, expectedConfig), ...(await this.createAddAllowedBridgesUpdateTxs(actualConfig, expectedConfig)), ...this.createRemoveBridgesTxs(actualConfig, expectedConfig), ...this.createOwnershipUpdateTxs(actualConfig, expectedConfig), ...proxyAdminUpdateTxs(this.chainId, this.args.addresses.deployedTokenRoute, actualConfig, expectedConfig));
65
74
  return transactions;
66
75
  }
67
76
  /**
@@ -128,6 +137,137 @@ export class EvmERC20WarpModule extends HyperlaneModule {
128
137
  });
129
138
  return updateTransactions;
130
139
  }
140
+ createAddRebalancersUpdateTxs(actualConfig, expectedConfig) {
141
+ actualConfig.type;
142
+ if (!isMovableCollateralTokenConfig(expectedConfig) ||
143
+ !isMovableCollateralTokenConfig(actualConfig)) {
144
+ return [];
145
+ }
146
+ if (!expectedConfig.allowedRebalancers) {
147
+ return [];
148
+ }
149
+ const formattedExpectedRebalancers = new Set(expectedConfig.allowedRebalancers.map(normalizeAddressEvm));
150
+ const formattedActualRebalancers = new Set((actualConfig.allowedRebalancers ?? []).map(normalizeAddressEvm));
151
+ const rebalancersToAdd = Array.from(difference(formattedExpectedRebalancers, formattedActualRebalancers));
152
+ if (rebalancersToAdd.length === 0) {
153
+ return [];
154
+ }
155
+ return rebalancersToAdd.map((rebalancerToAdd) => ({
156
+ chainId: this.chainId,
157
+ annotation: `Adding rebalancer role to "${rebalancerToAdd}" on token "${this.args.addresses.deployedTokenRoute}" on chain "${this.chainName}"`,
158
+ to: this.args.addresses.deployedTokenRoute,
159
+ data: MovableCollateralRouter__factory.createInterface().encodeFunctionData('addRebalancer(address)', [rebalancerToAdd]),
160
+ }));
161
+ }
162
+ createRemoveRebalancersUpdateTxs(actualConfig, expectedConfig) {
163
+ actualConfig.type;
164
+ if (!isMovableCollateralTokenConfig(expectedConfig) ||
165
+ !isMovableCollateralTokenConfig(actualConfig)) {
166
+ return [];
167
+ }
168
+ if (!expectedConfig.allowedRebalancers) {
169
+ return [];
170
+ }
171
+ const formattedExpectedRebalancers = new Set(expectedConfig.allowedRebalancers.map(normalizeAddressEvm));
172
+ const formattedActualRebalancers = new Set((actualConfig.allowedRebalancers ?? []).map(normalizeAddressEvm));
173
+ const rebalancersToRemove = Array.from(difference(formattedActualRebalancers, formattedExpectedRebalancers));
174
+ if (rebalancersToRemove.length === 0) {
175
+ return [];
176
+ }
177
+ return rebalancersToRemove.map((rebalancerToRemove) => ({
178
+ chainId: this.chainId,
179
+ annotation: `Removing rebalancer role from "${rebalancerToRemove}" on token "${this.args.addresses.deployedTokenRoute}" on chain "${this.chainName}"`,
180
+ to: this.args.addresses.deployedTokenRoute,
181
+ data: MovableCollateralRouter__factory.createInterface().encodeFunctionData('removeRebalancer(address)', [rebalancerToRemove]),
182
+ }));
183
+ }
184
+ async getAllowedBridgesApprovalTxs(actualConfig, expectedConfig) {
185
+ if (!isMovableCollateralTokenConfig(expectedConfig) ||
186
+ !isMovableCollateralTokenConfig(actualConfig)) {
187
+ return [];
188
+ }
189
+ if (!expectedConfig.allowedRebalancingBridges) {
190
+ return [];
191
+ }
192
+ const tokensToApproveByAllowedBridge = Object.values(expectedConfig.allowedRebalancingBridges).reduce((acc, allowedBridgesConfigs) => {
193
+ allowedBridgesConfigs.forEach((bridgeConfig) => {
194
+ acc[bridgeConfig.bridge] ??= [];
195
+ acc[bridgeConfig.bridge].push(...(bridgeConfig.approvedTokens ?? []));
196
+ });
197
+ return acc;
198
+ },
199
+ // allowed bridge -> tokens to approve
200
+ {});
201
+ const filteredTokensToApproveByAllowedBridge = await promiseObjAll(objMap(tokensToApproveByAllowedBridge, async (bridge, tokens) => {
202
+ const filteredApprovals = [];
203
+ for (const token of tokens) {
204
+ const instance = IERC20__factory.connect(token, this.multiProvider.getProvider(this.chainId));
205
+ const allowance = await instance.allowance(this.args.addresses.deployedTokenRoute, bridge);
206
+ if (allowance.toBigInt() !== UINT_256_MAX) {
207
+ filteredApprovals.push(token);
208
+ }
209
+ }
210
+ return filteredApprovals;
211
+ }));
212
+ return Object.entries(filteredTokensToApproveByAllowedBridge).flatMap(([bridge, tokensToApprove]) => tokensToApprove.map((tokenToApprove) => ({
213
+ chainId: this.chainId,
214
+ annotation: `Approving allowed bridge "${bridge}" to spend token "${tokenToApprove}" on behalf of "${this.args.addresses.deployedTokenRoute}" on chain "${this.chainName}"`,
215
+ to: this.args.addresses.deployedTokenRoute,
216
+ data: MovableCollateralRouter__factory.createInterface().encodeFunctionData('approveTokenForBridge(address,address)', [tokenToApprove, bridge]),
217
+ })));
218
+ }
219
+ async createAddAllowedBridgesUpdateTxs(actualConfig, expectedConfig) {
220
+ if (!isMovableCollateralTokenConfig(expectedConfig) ||
221
+ !isMovableCollateralTokenConfig(actualConfig)) {
222
+ return [];
223
+ }
224
+ if (!expectedConfig.allowedRebalancingBridges) {
225
+ return [];
226
+ }
227
+ const actualAllowedBridges = getAllowedRebalancingBridgesByDomain(resolveRouterMapConfig(this.multiProvider, actualConfig.allowedRebalancingBridges ?? {}));
228
+ const expectedAllowedBridges = getAllowedRebalancingBridgesByDomain(resolveRouterMapConfig(this.multiProvider, expectedConfig.allowedRebalancingBridges));
229
+ const rebalancingBridgesToAddByDomain = objMap(expectedAllowedBridges, (domain, bridges) => {
230
+ const actualBridges = actualAllowedBridges[domain] ?? new Set();
231
+ return Array.from(difference(bridges, actualBridges));
232
+ });
233
+ const bridgesToAllow = Object.entries(rebalancingBridgesToAddByDomain).flatMap(([domain, allowedBridgesToAdd]) => {
234
+ return allowedBridgesToAdd.map((bridgeToAdd) => {
235
+ return {
236
+ chainId: this.chainId,
237
+ annotation: `Adding allowed bridge "${bridgeToAdd}" on token "${this.args.addresses.deployedTokenRoute}" on chain "${this.chainName}"`,
238
+ to: this.args.addresses.deployedTokenRoute,
239
+ data: MovableCollateralRouter__factory.createInterface().encodeFunctionData('addBridge(uint32,address)', [domain, bridgeToAdd]),
240
+ };
241
+ });
242
+ });
243
+ const approvalTxs = await this.getAllowedBridgesApprovalTxs(actualConfig, expectedConfig);
244
+ return [...bridgesToAllow, ...approvalTxs];
245
+ }
246
+ createRemoveBridgesTxs(actualConfig, expectedConfig) {
247
+ if (!isMovableCollateralTokenConfig(expectedConfig) ||
248
+ !isMovableCollateralTokenConfig(actualConfig)) {
249
+ return [];
250
+ }
251
+ if (!expectedConfig.allowedRebalancingBridges) {
252
+ return [];
253
+ }
254
+ const actualAllowedBridges = getAllowedRebalancingBridgesByDomain(resolveRouterMapConfig(this.multiProvider, actualConfig.allowedRebalancingBridges ?? {}));
255
+ const expectedAllowedBridges = getAllowedRebalancingBridgesByDomain(resolveRouterMapConfig(this.multiProvider, expectedConfig.allowedRebalancingBridges));
256
+ const rebalancingBridgesToAddByDomain = objMap(actualAllowedBridges, (domain, bridges) => {
257
+ const expectedBridges = expectedAllowedBridges[domain] ?? new Set();
258
+ return Array.from(difference(bridges, expectedBridges));
259
+ });
260
+ return Object.entries(rebalancingBridgesToAddByDomain).flatMap(([domain, allowedBridgesToAdd]) => {
261
+ return allowedBridgesToAdd.map((bridgeToAdd) => {
262
+ return {
263
+ chainId: this.chainId,
264
+ annotation: `Removing allowed bridge "${bridgeToAdd}" on token "${this.args.addresses.deployedTokenRoute}" on chain "${this.chainName}"`,
265
+ to: this.args.addresses.deployedTokenRoute,
266
+ data: MovableCollateralRouter__factory.createInterface().encodeFunctionData('removeBridge(uint32,address)', [domain, bridgeToAdd]),
267
+ };
268
+ });
269
+ });
270
+ }
131
271
  /**
132
272
  * Create a transaction to update the remote routers for the Warp Route contract.
133
273
  *
@@ -141,9 +281,9 @@ export class EvmERC20WarpModule extends HyperlaneModule {
141
281
  return [];
142
282
  }
143
283
  assert(actualConfig.destinationGas, 'actualDestinationGas is undefined');
144
- assert(expectedConfig.destinationGas, 'actualDestinationGas is undefined');
145
- const { destinationGas: actualDestinationGas } = actualConfig;
146
- const { destinationGas: expectedDestinationGas } = expectedConfig;
284
+ assert(expectedConfig.destinationGas, 'expectedDestinationGas is undefined');
285
+ const actualDestinationGas = resolveRouterMapConfig(this.multiProvider, actualConfig.destinationGas);
286
+ const expectedDestinationGas = resolveRouterMapConfig(this.multiProvider, expectedConfig.destinationGas);
147
287
  if (!deepEquals(actualDestinationGas, expectedDestinationGas)) {
148
288
  const contractToUpdate = GasRouter__factory.connect(this.args.addresses.deployedTokenRoute, this.multiProvider.getProvider(this.domainId));
149
289
  // Convert { 1: 2, 2: 3, ... } to [{ 1: 2 }, { 2: 3 }]
@@ -296,6 +436,50 @@ export class EvmERC20WarpModule extends HyperlaneModule {
296
436
  const { deployedHook } = hookModule.serialize();
297
437
  return { deployedHook, updateTransactions };
298
438
  }
439
+ /**
440
+ * Creates a transaction to upgrade the Warp Route implementation if the package version is below specified version.
441
+ *
442
+ * @param actualConfig - The current on-chain configuration
443
+ * @param expectedConfig - The expected configuration
444
+ * @returns An array of transactions to upgrade the implementation if needed
445
+ */
446
+ async upgradeWarpRouteImplementationTx(actualConfig, expectedConfig) {
447
+ const updateTransactions = [];
448
+ // This should be impossible since we try catch the call to `PACKAGE_VERSION`
449
+ // in `EvmERC20WarpRouteReader.fetchPackageVersion`
450
+ assert(actualConfig.contractVersion, 'Actual contract version is undefined');
451
+ // Only upgrade if the user specifies a version
452
+ if (!expectedConfig.contractVersion) {
453
+ return [];
454
+ }
455
+ const comparisonValue = compareVersions(expectedConfig.contractVersion, actualConfig.contractVersion);
456
+ // Expected version is lower than actual version, no upgrade is possible
457
+ if (comparisonValue === -1) {
458
+ throw new Error(`Expected contract version ${expectedConfig.contractVersion} is lower than actual contract version ${actualConfig.contractVersion}`);
459
+ }
460
+ // Versions are the same, no upgrade needed
461
+ if (comparisonValue === 0) {
462
+ return [];
463
+ }
464
+ // You can only upgrade to the contract version (see `PackageVersioned`)
465
+ // defined by the @hyperlane-xyz/core package
466
+ assert(contractVersionMatchesDependency(expectedConfig.contractVersion), VERSION_ERROR_MESSAGE);
467
+ this.logger.info(`Upgrading Warp Route implementation on ${this.args.chain} from ${actualConfig.contractVersion} to ${expectedConfig.contractVersion}`);
468
+ const deployer = new HypERC20Deployer(this.multiProvider);
469
+ const constructorArgs = await deployer.constructorArgs(this.chainName, expectedConfig);
470
+ const implementation = await deployer.deployContract(this.chainName, expectedConfig.type, constructorArgs);
471
+ const provider = this.multiProvider.getProvider(this.domainId);
472
+ const proxyAddress = this.args.addresses.deployedTokenRoute;
473
+ const proxyAdminAddress = await proxyAdmin(provider, proxyAddress);
474
+ assert(await isInitialized(provider, proxyAddress), 'Proxy is not initialized');
475
+ updateTransactions.push({
476
+ chainId: this.chainId,
477
+ annotation: `Upgrading Warp Route implementation on ${this.args.chain}`,
478
+ to: proxyAdminAddress,
479
+ data: ProxyAdmin__factory.createInterface().encodeFunctionData('upgrade', [proxyAddress, implementation.address]),
480
+ });
481
+ return updateTransactions;
482
+ }
299
483
  /**
300
484
  * Deploys the Warp Route.
301
485
  *
@@ -317,11 +501,28 @@ export class EvmERC20WarpModule extends HyperlaneModule {
317
501
  chain,
318
502
  config,
319
503
  }, ccipContractCache, contractVerifier);
504
+ const actualConfig = await warpModule.read();
320
505
  if (config.remoteRouters && !isObjEmpty(config.remoteRouters)) {
321
- const enrollRemoteTxs = await warpModule.update(config); // @TODO Remove when EvmERC20WarpModule.create can be used
506
+ const enrollRemoteTxs = await warpModule.createEnrollRemoteRoutersUpdateTxs(actualConfig, config); // @TODO Remove when EvmERC20WarpModule.create can be used
322
507
  const onlyTxIndex = 0;
323
508
  await multiProvider.sendTransaction(chain, enrollRemoteTxs[onlyTxIndex]);
324
509
  }
510
+ if (isMovableCollateralTokenConfig(config) &&
511
+ config.allowedRebalancers &&
512
+ config.allowedRebalancers.length !== 0) {
513
+ const addRebalancerTxs = await warpModule.createAddRebalancersUpdateTxs(actualConfig, config); // @TODO Remove when EvmERC20WarpModule.create can be used
514
+ for (const tx of addRebalancerTxs) {
515
+ await multiProvider.sendTransaction(chain, tx);
516
+ }
517
+ }
518
+ if (isMovableCollateralTokenConfig(config) &&
519
+ config.allowedRebalancingBridges &&
520
+ !isObjEmpty(config.allowedRebalancingBridges)) {
521
+ const addBridgesTxs = await warpModule.createAddAllowedBridgesUpdateTxs(actualConfig, config); // @TODO Remove when EvmERC20WarpModule.create can be used
522
+ for (const tx of addBridgesTxs) {
523
+ await multiProvider.sendTransaction(chain, tx);
524
+ }
525
+ }
325
526
  return warpModule;
326
527
  }
327
528
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EvmERC20WarpModule.js","sourceRoot":"","sources":["../../src/token/EvmERC20WarpModule.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"EvmERC20WarpModule.js","sourceRoot":"","sources":["../../src/token/EvmERC20WarpModule.ts"],"names":[],"mappings":"AAAA,iCAAiC;AACjC,OAAO,EAAE,eAAe,EAAE,MAAM,kBAAkB,CAAC;AAEnD,OAAO,EAAE,YAAY,EAAE,MAAM,UAAU,CAAC;AACxC,OAAO,EAAE,WAAW,EAAE,MAAM,MAAM,CAAC;AAEnC,OAAO,EACL,kBAAkB,EAClB,eAAe,EACf,sBAAsB,EACtB,gCAAgC,EAChC,mBAAmB,EACnB,oBAAoB,GACrB,MAAM,qBAAqB,CAAC;AAC7B,OAAO,EAAE,aAAa,IAAI,iBAAiB,EAAE,MAAM,sCAAsC,CAAC;AAC1F,OAAO,EAKL,gBAAgB,EAChB,MAAM,EACN,UAAU,EACV,UAAU,EACV,SAAS,EACT,UAAU,EACV,mBAAmB,EACnB,MAAM,EACN,aAAa,EACb,UAAU,GACX,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,6BAA6B,EAAE,MAAM,2BAA2B,CAAC;AAE1E,OAAO,EACL,eAAe,GAEhB,MAAM,oCAAoC,CAAC;AAE5C,OAAO,EACL,aAAa,EACb,UAAU,EACV,mBAAmB,GACpB,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AACxE,OAAO,EAAE,mBAAmB,EAAE,MAAM,2BAA2B,CAAC;AAChE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AAGtD,OAAO,EAAiB,sBAAsB,EAAE,MAAM,oBAAoB,CAAC;AAE3E,OAAO,EAAE,iCAAiC,EAAE,MAAM,iBAAiB,CAAC;AAEpE,OAAO,EAAE,uBAAuB,EAAE,MAAM,8BAA8B,CAAC;AACvE,OAAO,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAC;AAC/C,OAAO,EAGL,0BAA0B,EAE1B,qBAAqB,EACrB,gCAAgC,EAChC,kBAAkB,EAClB,iBAAiB,EACjB,8BAA8B,GAC/B,MAAM,YAAY,CAAC;AAMpB,MAAM,oCAAoC,GAAG,CAC3C,iCAEC,EAC6B,EAAE;IAChC,OAAO,MAAM,CACX,iCAAiC,EACjC,CAAC,SAAS,EAAE,yBAAyB,EAAE,EAAE;QACvC,OAAO,IAAI,GAAG,CACZ,yBAAyB,CAAC,GAAG,CAAC,CAAC,YAAY,EAAE,EAAE,CAC7C,mBAAmB,CAAC,YAAY,CAAC,MAAM,CAAC,CACzC,CACF,CAAC;IACJ,CAAC,CACF,CAAC;AACJ,CAAC,CAAC;AACF,MAAM,OAAO,kBAAmB,SAAQ,eAIvC;IAUsB;IAEA;IACA;IAZX,MAAM,GAAG,UAAU,CAAC,KAAK,CAAC;QAClC,MAAM,EAAE,oBAAoB;KAC7B,CAAC,CAAC;IACH,MAAM,CAA0B;IAChB,SAAS,CAAY;IACrB,OAAO,CAAa;IACpB,QAAQ,CAAS;IAEjC,YACqB,aAA4B,EAC/C,IAAqE,EAClD,iBAAqC,EACrC,gBAAmC;QAEtD,KAAK,CAAC,IAAI,CAAC,CAAC;QALO,kBAAa,GAAb,aAAa,CAAe;QAE5B,sBAAiB,GAAjB,iBAAiB,CAAoB;QACrC,qBAAgB,GAAhB,gBAAgB,CAAmB;QAGtD,IAAI,CAAC,MAAM,GAAG,IAAI,uBAAuB,CAAC,aAAa,EAAE,IAAI,CAAC,KAAK,CAAC,CAAC;QACrE,IAAI,CAAC,SAAS,GAAG,IAAI,CAAC,aAAa,CAAC,YAAY,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QAC7D,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,QAAQ,GAAG,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACtD,IAAI,CAAC,OAAO,GAAG,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;QACvD,IAAI,CAAC,gBAAgB,KAAK,IAAI,gBAAgB,CAC5C,aAAa,EACb,EAAE,EACF,iBAAiB,EACjB,mBAAmB,CAAC,GAAG,CACxB,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,IAAI;QACR,OAAO,IAAI,CAAC,MAAM,CAAC,qBAAqB,CACtC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CACvC,CAAC;IACJ,CAAC;IAED;;;;;OAKG;IACH,KAAK,CAAC,MAAM,CACV,cAAoC;QAEpC,0BAA0B,CAAC,KAAK,CAAC,cAAc,CAAC,CAAC;QACjD,MAAM,YAAY,GAAG,MAAM,IAAI,CAAC,IAAI,EAAE,CAAC;QACvC,MAAM,YAAY,GAAG,EAAE,CAAC;QAExB;;;;;WAKG;QACH,YAAY,CAAC,IAAI,CACf,GAAG,CAAC,MAAM,IAAI,CAAC,gCAAgC,CAC7C,YAAY,EACZ,cAAc,CACf,CAAC,EACF,GAAG,CAAC,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,EAChE,GAAG,CAAC,MAAM,IAAI,CAAC,mBAAmB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC,EACjE,GAAG,IAAI,CAAC,kCAAkC,CAAC,YAAY,EAAE,cAAc,CAAC,EACxE,GAAG,IAAI,CAAC,oCAAoC,CAC1C,YAAY,EACZ,cAAc,CACf,EACD,GAAG,IAAI,CAAC,gCAAgC,CAAC,YAAY,EAAE,cAAc,CAAC,EACtE,GAAG,IAAI,CAAC,6BAA6B,CAAC,YAAY,EAAE,cAAc,CAAC,EACnE,GAAG,IAAI,CAAC,gCAAgC,CAAC,YAAY,EAAE,cAAc,CAAC,EACtE,GAAG,CAAC,MAAM,IAAI,CAAC,gCAAgC,CAC7C,YAAY,EACZ,cAAc,CACf,CAAC,EACF,GAAG,IAAI,CAAC,sBAAsB,CAAC,YAAY,EAAE,cAAc,CAAC,EAC5D,GAAG,IAAI,CAAC,wBAAwB,CAAC,YAAY,EAAE,cAAc,CAAC,EAC9D,GAAG,mBAAmB,CACpB,IAAI,CAAC,OAAO,EACZ,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EACtC,YAAY,EACZ,cAAc,CACf,CACF,CAAC;QAEF,OAAO,YAAY,CAAC;IACtB,CAAC;IAED;;;;;;OAMG;IACH,kCAAkC,CAChC,YAAsC,EACtC,cAAoC;QAEpC,MAAM,kBAAkB,GAA8B,EAAE,CAAC;QACzD,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;YAClC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,kCAAkC,CAAC,CAAC;QACvE,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,kCAAkC,CAAC,CAAC;QAEzE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,GAAG,YAAY,CAAC;QAC5D,MAAM,EAAE,aAAa,EAAE,qBAAqB,EAAE,GAAG,cAAc,CAAC;QAEhE,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CAAC,qBAAqB,CAAC;aACzD,GAAG,CAAC,CAAC,CAAC,MAAM,EAAE,SAAS,CAAC,EAAmC,EAAE,CAAC;YAC7D,MAAM;YACN,EAAE,OAAO,EAAE,gBAAgB,CAAC,SAAS,CAAC,OAAO,CAAC,EAAE;SACjD,CAAC;aACD,MAAM,CAAC,CAAC,CAAC,MAAM,EAAE,cAAc,CAAC,EAAE,EAAE;YACnC,MAAM,YAAY,GAAG,mBAAmB,CAAC,MAAM,CAAC,CAAC;YACjD,qEAAqE;YACrE,OAAO,CAAC,YAAY,IAAI,YAAY,CAAC,OAAO,KAAK,cAAc,CAAC,OAAO,CAAC;QAC1E,CAAC,CAAC;aACD,GAAG,CAAC,CAAC,CAAC,MAAM,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC;QAE7B,IAAI,cAAc,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAChC,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAED,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,OAAO,CACnD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EACtC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC9C,CAAC;QAEF,kBAAkB,CAAC,IAAI,CAAC;YACtB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,oBAAoB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAC9F,EAAE,EAAE,gBAAgB,CAAC,OAAO;YAC5B,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,kBAAkB,CACjD,qBAAqB,EACrB;gBACE,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC;gBACpC,cAAc,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CACvB,gBAAgB,CAAC,qBAAqB,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,CACnD;aACF,CACF;SACF,CAAC,CAAC;QAEH,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,oCAAoC,CAClC,YAAsC,EACtC,cAAoC;QAEpC,MAAM,kBAAkB,GAA8B,EAAE,CAAC;QACzD,IAAI,CAAC,cAAc,CAAC,aAAa,EAAE,CAAC;YAClC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,aAAa,EAAE,kCAAkC,CAAC,CAAC;QACvE,MAAM,CAAC,cAAc,CAAC,aAAa,EAAE,kCAAkC,CAAC,CAAC;QAEzE,MAAM,EAAE,aAAa,EAAE,mBAAmB,EAAE,GAAG,YAAY,CAAC;QAC5D,MAAM,EAAE,aAAa,EAAE,qBAAqB,EAAE,GAAG,cAAc,CAAC;QAEhE,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CACjC,UAAU,CACR,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,mBAAmB,CAAC,CAAC,EACzC,IAAI,GAAG,CAAC,MAAM,CAAC,IAAI,CAAC,qBAAqB,CAAC,CAAC,CAC5C,CACF,CAAC;QAEF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,kBAAkB,CAAC;QAC5B,CAAC;QAED,MAAM,gBAAgB,GAAG,oBAAoB,CAAC,OAAO,CACnD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EACtC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC9C,CAAC;QAEF,kBAAkB,CAAC,IAAI,CAAC;YACtB,UAAU,EAAE,sBAAsB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YAChG,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,EAAE,EAAE,gBAAgB,CAAC,OAAO;YAC5B,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,kBAAkB,CACjD,iCAAiC,EACjC,CAAC,gBAAgB,CAAC,GAAG,CAAC,CAAC,CAAC,EAAE,EAAE,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,CAAC,CACzC;SACF,CAAC,CAAC;QAEH,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,6BAA6B,CAC3B,YAAsC,EACtC,cAAoC;QAEpC,YAAY,CAAC,IAAI,CAAC;QAClB,IACE,CAAC,8BAA8B,CAAC,cAAc,CAAC;YAC/C,CAAC,8BAA8B,CAAC,YAAY,CAAC,EAC7C,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;YACvC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAC1C,cAAc,CAAC,kBAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAC3D,CAAC;QACF,MAAM,0BAA0B,GAAG,IAAI,GAAG,CACxC,CAAC,YAAY,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CACjE,CAAC;QAEF,MAAM,gBAAgB,GAAG,KAAK,CAAC,IAAI,CACjC,UAAU,CAAC,4BAA4B,EAAE,0BAA0B,CAAC,CACrE,CAAC;QAEF,IAAI,gBAAgB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YAClC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,gBAAgB,CAAC,GAAG,CAAC,CAAC,eAAe,EAAE,EAAE,CAAC,CAAC;YAChD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,8BAA8B,eAAe,eAAe,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,eAAe,IAAI,CAAC,SAAS,GAAG;YAC9I,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB;YAC1C,IAAI,EAAE,gCAAgC,CAAC,eAAe,EAAE,CAAC,kBAAkB,CACzE,wBAAwB,EACxB,CAAC,eAAe,CAAC,CAClB;SACF,CAAC,CAAC,CAAC;IACN,CAAC;IAED,gCAAgC,CAC9B,YAAsC,EACtC,cAAoC;QAEpC,YAAY,CAAC,IAAI,CAAC;QAClB,IACE,CAAC,8BAA8B,CAAC,cAAc,CAAC;YAC/C,CAAC,8BAA8B,CAAC,YAAY,CAAC,EAC7C,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,kBAAkB,EAAE,CAAC;YACvC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,4BAA4B,GAAG,IAAI,GAAG,CAC1C,cAAc,CAAC,kBAAkB,CAAC,GAAG,CAAC,mBAAmB,CAAC,CAC3D,CAAC;QACF,MAAM,0BAA0B,GAAG,IAAI,GAAG,CACxC,CAAC,YAAY,CAAC,kBAAkB,IAAI,EAAE,CAAC,CAAC,GAAG,CAAC,mBAAmB,CAAC,CACjE,CAAC;QAEF,MAAM,mBAAmB,GAAG,KAAK,CAAC,IAAI,CACpC,UAAU,CAAC,0BAA0B,EAAE,4BAA4B,CAAC,CACrE,CAAC;QAEF,IAAI,mBAAmB,CAAC,MAAM,KAAK,CAAC,EAAE,CAAC;YACrC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC,kBAAkB,EAAE,EAAE,CAAC,CAAC;YACtD,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,kCAAkC,kBAAkB,eAAe,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,eAAe,IAAI,CAAC,SAAS,GAAG;YACrJ,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB;YAC1C,IAAI,EAAE,gCAAgC,CAAC,eAAe,EAAE,CAAC,kBAAkB,CACzE,2BAA2B,EAC3B,CAAC,kBAAkB,CAAC,CACrB;SACF,CAAC,CAAC,CAAC;IACN,CAAC;IAED,KAAK,CAAC,4BAA4B,CAChC,YAAsC,EACtC,cAAoC;QAEpC,IACE,CAAC,8BAA8B,CAAC,cAAc,CAAC;YAC/C,CAAC,8BAA8B,CAAC,YAAY,CAAC,EAC7C,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,8BAA8B,GAAG,MAAM,CAAC,MAAM,CAClD,cAAc,CAAC,yBAAyB,CACzC,CAAC,MAAM,CACN,CAAC,GAAG,EAAE,qBAAqB,EAAE,EAAE;YAC7B,qBAAqB,CAAC,OAAO,CAAC,CAAC,YAAY,EAAE,EAAE;gBAC7C,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,KAAK,EAAE,CAAC;gBAChC,GAAG,CAAC,YAAY,CAAC,MAAM,CAAC,CAAC,IAAI,CAAC,GAAG,CAAC,YAAY,CAAC,cAAc,IAAI,EAAE,CAAC,CAAC,CAAC;YACxE,CAAC,CAAC,CAAC;YAEH,OAAO,GAAG,CAAC;QACb,CAAC;QACD,sCAAsC;QACtC,EAAgC,CACjC,CAAC;QAEF,MAAM,sCAAsC,GAAG,MAAM,aAAa,CAChE,MAAM,CAAC,8BAA8B,EAAE,KAAK,EAAE,MAAM,EAAE,MAAM,EAAE,EAAE;YAC9D,MAAM,iBAAiB,GAAG,EAAE,CAAC;YAC7B,KAAK,MAAM,KAAK,IAAI,MAAM,EAAE,CAAC;gBAC3B,MAAM,QAAQ,GAAG,eAAe,CAAC,OAAO,CACtC,KAAK,EACL,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,OAAO,CAAC,CAC7C,CAAC;gBAEF,MAAM,SAAS,GAAG,MAAM,QAAQ,CAAC,SAAS,CACxC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EACtC,MAAM,CACP,CAAC;gBAEF,IAAI,SAAS,CAAC,QAAQ,EAAE,KAAK,YAAY,EAAE,CAAC;oBAC1C,iBAAiB,CAAC,IAAI,CAAC,KAAK,CAAC,CAAC;gBAChC,CAAC;YACH,CAAC;YAED,OAAO,iBAAiB,CAAC;QAC3B,CAAC,CAAC,CACH,CAAC;QAEF,OAAO,MAAM,CAAC,OAAO,CAAC,sCAAsC,CAAC,CAAC,OAAO,CACnE,CAAC,CAAC,MAAM,EAAE,eAAe,CAAC,EAAE,EAAE,CAC5B,eAAe,CAAC,GAAG,CAAC,CAAC,cAAc,EAAE,EAAE,CAAC,CAAC;YACvC,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,6BAA6B,MAAM,qBAAqB,cAAc,mBAAmB,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,eAAe,IAAI,CAAC,SAAS,GAAG;YAC3K,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB;YAC1C,IAAI,EAAE,gCAAgC,CAAC,eAAe,EAAE,CAAC,kBAAkB,CACzE,wCAAwC,EACxC,CAAC,cAAc,EAAE,MAAM,CAAC,CACzB;SACF,CAAC,CAAC,CACN,CAAC;IACJ,CAAC;IAED,KAAK,CAAC,gCAAgC,CACpC,YAAsC,EACtC,cAAoC;QAEpC,IACE,CAAC,8BAA8B,CAAC,cAAc,CAAC;YAC/C,CAAC,8BAA8B,CAAC,YAAY,CAAC,EAC7C,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,oBAAoB,GAAG,oCAAoC,CAC/D,sBAAsB,CACpB,IAAI,CAAC,aAAa,EAClB,YAAY,CAAC,yBAAyB,IAAI,EAAE,CAC7C,CACF,CAAC;QAEF,MAAM,sBAAsB,GAAG,oCAAoC,CACjE,sBAAsB,CACpB,IAAI,CAAC,aAAa,EAClB,cAAc,CAAC,yBAAyB,CACzC,CACF,CAAC;QACF,MAAM,+BAA+B,GAAG,MAAM,CAC5C,sBAAsB,EACtB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;YAClB,MAAM,aAAa,GAAG,oBAAoB,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;YAEhE,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,aAAa,CAAC,CAAC,CAAC;QACxD,CAAC,CACF,CAAC;QAEF,MAAM,cAAc,GAAG,MAAM,CAAC,OAAO,CACnC,+BAA+B,CAChC,CAAC,OAAO,CAAC,CAAC,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE,EAAE;YAC1C,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;gBAC7C,OAAO;oBACL,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,UAAU,EAAE,0BAA0B,WAAW,eAAe,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,eAAe,IAAI,CAAC,SAAS,GAAG;oBACtI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB;oBAC1C,IAAI,EAAE,gCAAgC,CAAC,eAAe,EAAE,CAAC,kBAAkB,CACzE,2BAA2B,EAC3B,CAAC,MAAM,EAAE,WAAW,CAAC,CACtB;iBACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CAAC,CAAC;QAEH,MAAM,WAAW,GAAG,MAAM,IAAI,CAAC,4BAA4B,CACzD,YAAY,EACZ,cAAc,CACf,CAAC;QACF,OAAO,CAAC,GAAG,cAAc,EAAE,GAAG,WAAW,CAAC,CAAC;IAC7C,CAAC;IAED,sBAAsB,CACpB,YAAsC,EACtC,cAAoC;QAEpC,IACE,CAAC,8BAA8B,CAAC,cAAc,CAAC;YAC/C,CAAC,8BAA8B,CAAC,YAAY,CAAC,EAC7C,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,IAAI,CAAC,cAAc,CAAC,yBAAyB,EAAE,CAAC;YAC9C,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,oBAAoB,GAAG,oCAAoC,CAC/D,sBAAsB,CACpB,IAAI,CAAC,aAAa,EAClB,YAAY,CAAC,yBAAyB,IAAI,EAAE,CAC7C,CACF,CAAC;QACF,MAAM,sBAAsB,GAAG,oCAAoC,CACjE,sBAAsB,CACpB,IAAI,CAAC,aAAa,EAClB,cAAc,CAAC,yBAAyB,CACzC,CACF,CAAC;QACF,MAAM,+BAA+B,GAAG,MAAM,CAC5C,oBAAoB,EACpB,CAAC,MAAM,EAAE,OAAO,EAAE,EAAE;YAClB,MAAM,eAAe,GAAG,sBAAsB,CAAC,MAAM,CAAC,IAAI,IAAI,GAAG,EAAE,CAAC;YAEpE,OAAO,KAAK,CAAC,IAAI,CAAC,UAAU,CAAC,OAAO,EAAE,eAAe,CAAC,CAAC,CAAC;QAC1D,CAAC,CACF,CAAC;QAEF,OAAO,MAAM,CAAC,OAAO,CAAC,+BAA+B,CAAC,CAAC,OAAO,CAC5D,CAAC,CAAC,MAAM,EAAE,mBAAmB,CAAC,EAAE,EAAE;YAChC,OAAO,mBAAmB,CAAC,GAAG,CAAC,CAAC,WAAW,EAAE,EAAE;gBAC7C,OAAO;oBACL,OAAO,EAAE,IAAI,CAAC,OAAO;oBACrB,UAAU,EAAE,4BAA4B,WAAW,eAAe,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,eAAe,IAAI,CAAC,SAAS,GAAG;oBACxI,EAAE,EAAE,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB;oBAC1C,IAAI,EAAE,gCAAgC,CAAC,eAAe,EAAE,CAAC,kBAAkB,CACzE,8BAA8B,EAC9B,CAAC,MAAM,EAAE,WAAW,CAAC,CACtB;iBACF,CAAC;YACJ,CAAC,CAAC,CAAC;QACL,CAAC,CACF,CAAC;IACJ,CAAC;IAED;;;;;;OAMG;IACH,gCAAgC,CAC9B,YAAsC,EACtC,cAAoC;QAEpC,MAAM,kBAAkB,GAA8B,EAAE,CAAC;QACzD,IAAI,CAAC,cAAc,CAAC,cAAc,EAAE,CAAC;YACnC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,CAAC,YAAY,CAAC,cAAc,EAAE,mCAAmC,CAAC,CAAC;QACzE,MAAM,CACJ,cAAc,CAAC,cAAc,EAC7B,qCAAqC,CACtC,CAAC;QAEF,MAAM,oBAAoB,GAAG,sBAAsB,CACjD,IAAI,CAAC,aAAa,EAClB,YAAY,CAAC,cAAc,CAC5B,CAAC;QACF,MAAM,sBAAsB,GAAG,sBAAsB,CACnD,IAAI,CAAC,aAAa,EAClB,cAAc,CAAC,cAAc,CAC9B,CAAC;QAEF,IAAI,CAAC,UAAU,CAAC,oBAAoB,EAAE,sBAAsB,CAAC,EAAE,CAAC;YAC9D,MAAM,gBAAgB,GAAG,kBAAkB,CAAC,OAAO,CACjD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EACtC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC9C,CAAC;YAEF,sDAAsD;YACtD,MAAM,gBAAgB,GACpB,EAAE,CAAC;YACL,MAAM,CAAC,sBAAsB,EAAE,CAAC,MAAc,EAAE,GAAW,EAAE,EAAE;gBAC7D,gBAAgB,CAAC,IAAI,CAAC;oBACpB,MAAM;oBACN,GAAG;iBACJ,CAAC,CAAC;YACL,CAAC,CAAC,CAAC;YAEH,kBAAkB,CAAC,IAAI,CAAC;gBACtB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,UAAU,EAAE,+BAA+B,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,OAAO,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;gBACzG,EAAE,EAAE,gBAAgB,CAAC,OAAO;gBAC5B,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,kBAAkB,CACjD,uCAAuC,EACvC,CAAC,gBAAgB,CAAC,CACnB;aACF,CAAC,CAAC;QACL,CAAC;QACD,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,kBAAkB,CACtB,YAAsC,EACtC,cAAoC;QAEpC,MAAM,kBAAkB,GAA8B,EAAE,CAAC;QACzD,IACE,CAAC,cAAc,CAAC,wBAAwB;YACxC,cAAc,CAAC,wBAAwB,KAAK,WAAW,EACvD,CAAC;YACD,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,iBAAiB,GAAG,iBAAiB,CAAC,YAAY,CAAC,CAAC;QAE1D,+DAA+D;QAC/D,MAAM,EACJ,WAAW,EAAE,mBAAmB,EAChC,kBAAkB,EAAE,qBAAqB,GAC1C,GAAG,MAAM,IAAI,CAAC,iBAAiB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAE/D,qDAAqD;QACrD,kBAAkB,CAAC,IAAI,CAAC,GAAG,qBAAqB,CAAC,CAAC;QAElD,oEAAoE;QACpE,IAAI,iBAAiB,KAAK,mBAAmB,EAAE,CAAC;YAC9C,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,OAAO,CACrD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EACtC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC9C,CAAC;YACF,kBAAkB,CAAC,IAAI,CAAC;gBACtB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,UAAU,EAAE,iCAAiC,mBAAmB,EAAE;gBAClE,EAAE,EAAE,gBAAgB,CAAC,OAAO;gBAC5B,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,kBAAkB,CACjD,6BAA6B,EAC7B,CAAC,mBAAmB,CAAC,CACtB;aACF,CAAC,CAAC;QACL,CAAC;QAED,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED,KAAK,CAAC,mBAAmB,CACvB,YAAsC,EACtC,cAAoC;QAEpC,MAAM,kBAAkB,GAA8B,EAAE,CAAC;QAEzD,IAAI,CAAC,cAAc,CAAC,IAAI,IAAI,cAAc,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAChE,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,kBAAkB,GAAG,kBAAkB,CAAC,YAAY,CAAC,CAAC;QAE5D,wDAAwD;QACxD,MAAM,EACJ,YAAY,EAAE,oBAAoB,EAClC,kBAAkB,EAAE,sBAAsB,GAC3C,GAAG,MAAM,IAAI,CAAC,kBAAkB,CAAC,YAAY,EAAE,cAAc,CAAC,CAAC;QAEhE,qDAAqD;QACrD,kBAAkB,CAAC,IAAI,CAAC,GAAG,sBAAsB,CAAC,CAAC;QAEnD,iDAAiD;QACjD,IAAI,CAAC,SAAS,CAAC,kBAAkB,EAAE,oBAAoB,CAAC,EAAE,CAAC;YACzD,MAAM,gBAAgB,GAAG,sBAAsB,CAAC,OAAO,CACrD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EACtC,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAC9C,CAAC;YACF,kBAAkB,CAAC,IAAI,CAAC;gBACtB,OAAO,EAAE,IAAI,CAAC,OAAO;gBACrB,UAAU,EAAE,kCAAkC,oBAAoB,EAAE;gBACpE,EAAE,EAAE,gBAAgB,CAAC,OAAO;gBAC5B,IAAI,EAAE,gBAAgB,CAAC,SAAS,CAAC,kBAAkB,CAAC,SAAS,EAAE;oBAC7D,oBAAoB;iBACrB,CAAC;aACH,CAAC,CAAC;QACL,CAAC;QAED,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED;;;;;;OAMG;IACH,wBAAwB,CACtB,YAAsC,EACtC,cAAoC;QAEpC,OAAO,6BAA6B,CAClC,IAAI,CAAC,aAAa,CAAC,aAAa,CAAC,IAAI,CAAC,IAAI,CAAC,KAAK,CAAC,EACjD,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,EACtC,YAAY,EACZ,cAAc,EACd,GAAG,cAAc,CAAC,IAAI,aAAa,CACpC,CAAC;IACJ,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,iBAAiB,CACrB,YAAsC,EACtC,cAAoC;QAKpC,MAAM,CAAC,cAAc,CAAC,wBAAwB,EAAE,yBAAyB,CAAC,CAAC;QAE3E,MAAM,SAAS,GAAG,IAAI,YAAY,CAChC,IAAI,CAAC,aAAa,EAClB;YACE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YACtB,MAAM,EAAE,cAAc,CAAC,wBAAwB;YAC/C,SAAS,EAAE;gBACT,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS;gBACtB,OAAO,EAAE,cAAc,CAAC,OAAO;gBAC/B,WAAW,EAAE,iBAAiB,CAAC,YAAY,CAAC;aAC7C;SACF,EACD,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,gBAAgB,CACtB,CAAC;QACF,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,oCAAoC,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,CAC5D,CAAC;QACF,MAAM,kBAAkB,GAAG,MAAM,SAAS,CAAC,MAAM,CAC/C,cAAc,CAAC,wBAAwB,CACxC,CAAC;QACF,MAAM,EAAE,WAAW,EAAE,GAAG,SAAS,CAAC,SAAS,EAAE,CAAC;QAE9C,OAAO,EAAE,WAAW,EAAE,kBAAkB,EAAE,CAAC;IAC7C,CAAC;IAED;;;;OAIG;IACH,KAAK,CAAC,kBAAkB,CACtB,YAAsC,EACtC,cAAoC;QAKpC,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,gBAAgB,CAAC,CAAC;QAC9C,IAAI,CAAC,YAAY,CAAC,IAAI,IAAI,YAAY,CAAC,IAAI,KAAK,WAAW,EAAE,CAAC;YAC5D,OAAO,IAAI,CAAC,aAAa,CAAC,cAAc,CAAC,CAAC;QAC5C,CAAC;QAED,OAAO,IAAI,CAAC,kBAAkB,CAAC,cAAc,EAAE,YAAY,CAAC,CAAC;IAC/D,CAAC;IAED,KAAK,CAAC,aAAa,CAAC,cAAoC;QAItD,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,0DAA0D,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,CAClF,CAAC;QAEF,MAAM,CAAC,cAAc,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QACjD,MAAM,CACJ,cAAc,CAAC,UAAU,EAAE,OAAO,EAClC,iCAAiC,CAClC,CAAC;QAEF,MAAM,UAAU,GAAG,MAAM,aAAa,CAAC,MAAM,CAAC;YAC5C,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YACtB,MAAM,EAAE,cAAc,CAAC,IAAI;YAC3B,qBAAqB,EAAE,iCAAiC,CACtD,IAAI,CAAC,IAAI,CAAC,SAAS,CACpB;YACD,aAAa,EAAE;gBACb,OAAO,EAAE,cAAc,CAAC,OAAO;gBAC/B,UAAU,EAAE,cAAc,CAAC,UAAU,EAAE,OAAO,EAAE,+DAA+D;aAChH;YACD,gBAAgB,EAAE,IAAI,CAAC,gBAAgB;YACvC,aAAa,EAAE,IAAI,CAAC,aAAa;SAClC,CAAC,CAAC;QACH,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;QAChD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,EAAE,EAAE,CAAC;IAClD,CAAC;IAED,KAAK,CAAC,kBAAkB,CACtB,cAAoC,EACpC,YAAsC;QAKtC,MAAM,CAAC,YAAY,CAAC,UAAU,EAAE,OAAO,EAAE,iCAAiC,CAAC,CAAC;QAC5E,MAAM,CAAC,YAAY,CAAC,IAAI,EAAE,mBAAmB,CAAC,CAAC;QAE/C,MAAM,UAAU,GAAG,IAAI,aAAa,CAClC,IAAI,CAAC,aAAa,EAClB;YACE,KAAK,EAAE,IAAI,CAAC,IAAI,CAAC,KAAK;YACtB,MAAM,EAAE,YAAY,CAAC,IAAI;YACzB,SAAS,EAAE;gBACT,GAAG,iCAAiC,CAAC,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC;gBACzD,OAAO,EAAE,YAAY,CAAC,OAAO;gBAC7B,UAAU,EAAE,YAAY,CAAC,UAAU,EAAE,OAAO;gBAC5C,YAAY,EAAE,kBAAkB,CAAC,YAAY,CAAC;aAC/C;SACF,EACD,IAAI,CAAC,iBAAiB,EACtB,IAAI,CAAC,gBAAgB,CACtB,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,qCAAqC,IAAI,CAAC,IAAI,CAAC,KAAK,QAAQ,CAC7D,CAAC;QACF,MAAM,kBAAkB,GAAG,MAAM,UAAU,CAAC,MAAM,CAAC,cAAc,CAAC,IAAK,CAAC,CAAC;QACzE,MAAM,EAAE,YAAY,EAAE,GAAG,UAAU,CAAC,SAAS,EAAE,CAAC;QAEhD,OAAO,EAAE,YAAY,EAAE,kBAAkB,EAAE,CAAC;IAC9C,CAAC;IAED;;;;;;OAMG;IACH,KAAK,CAAC,gCAAgC,CACpC,YAAsC,EACtC,cAAoC;QAEpC,MAAM,kBAAkB,GAA8B,EAAE,CAAC;QAEzD,6EAA6E;QAC7E,mDAAmD;QACnD,MAAM,CACJ,YAAY,CAAC,eAAe,EAC5B,sCAAsC,CACvC,CAAC;QAEF,+CAA+C;QAC/C,IAAI,CAAC,cAAc,CAAC,eAAe,EAAE,CAAC;YACpC,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,MAAM,eAAe,GAAG,eAAe,CACrC,cAAc,CAAC,eAAe,EAC9B,YAAY,CAAC,eAAe,CAC7B,CAAC;QAEF,wEAAwE;QACxE,IAAI,eAAe,KAAK,CAAC,CAAC,EAAE,CAAC;YAC3B,MAAM,IAAI,KAAK,CACb,6BAA6B,cAAc,CAAC,eAAe,0CAA0C,YAAY,CAAC,eAAe,EAAE,CACpI,CAAC;QACJ,CAAC;QACD,2CAA2C;QAC3C,IAAI,eAAe,KAAK,CAAC,EAAE,CAAC;YAC1B,OAAO,EAAE,CAAC;QACZ,CAAC;QAED,wEAAwE;QACxE,6CAA6C;QAC7C,MAAM,CACJ,gCAAgC,CAAC,cAAc,CAAC,eAAe,CAAC,EAChE,qBAAqB,CACtB,CAAC;QAEF,IAAI,CAAC,MAAM,CAAC,IAAI,CACd,0CAA0C,IAAI,CAAC,IAAI,CAAC,KAAK,SAAS,YAAY,CAAC,eAAe,OAAO,cAAc,CAAC,eAAe,EAAE,CACtI,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,IAAI,CAAC,aAAa,CAAC,CAAC;QAC1D,MAAM,eAAe,GAAG,MAAM,QAAQ,CAAC,eAAe,CACpD,IAAI,CAAC,SAAS,EACd,cAAc,CACf,CAAC;QACF,MAAM,cAAc,GAAG,MAAM,QAAQ,CAAC,cAAc,CAClD,IAAI,CAAC,SAAS,EACd,cAAc,CAAC,IAAI,EACnB,eAAe,CAChB,CAAC;QAEF,MAAM,QAAQ,GAAG,IAAI,CAAC,aAAa,CAAC,WAAW,CAAC,IAAI,CAAC,QAAQ,CAAC,CAAC;QAC/D,MAAM,YAAY,GAAG,IAAI,CAAC,IAAI,CAAC,SAAS,CAAC,kBAAkB,CAAC;QAC5D,MAAM,iBAAiB,GAAG,MAAM,UAAU,CAAC,QAAQ,EAAE,YAAY,CAAC,CAAC;QAEnE,MAAM,CACJ,MAAM,aAAa,CAAC,QAAQ,EAAE,YAAY,CAAC,EAC3C,0BAA0B,CAC3B,CAAC;QAEF,kBAAkB,CAAC,IAAI,CAAC;YACtB,OAAO,EAAE,IAAI,CAAC,OAAO;YACrB,UAAU,EAAE,0CAA0C,IAAI,CAAC,IAAI,CAAC,KAAK,EAAE;YACvE,EAAE,EAAE,iBAAiB;YACrB,IAAI,EAAE,mBAAmB,CAAC,eAAe,EAAE,CAAC,kBAAkB,CAC5D,SAAS,EACT,CAAC,YAAY,EAAE,cAAc,CAAC,OAAO,CAAC,CACvC;SACF,CAAC,CAAC;QAEH,OAAO,kBAAkB,CAAC;IAC5B,CAAC;IAED;;;;;;;OAOG;IACH,MAAM,CAAC,KAAK,CAAC,MAAM,CAAC,MAOnB;QACC,MAAM,EACJ,KAAK,EACL,MAAM,EACN,aAAa,EACb,iBAAiB,EACjB,gBAAgB,EAChB,qBAAqB,GACtB,GAAG,MAAM,CAAC;QACX,MAAM,SAAS,GAAG,aAAa,CAAC,YAAY,CAAC,KAAK,CAAC,CAAC;QACpD,MAAM,QAAQ,GAAG,IAAI,gBAAgB,CAAC,aAAa,CAAC,CAAC;QACrD,MAAM,iBAAiB,GAAG,MAAM,QAAQ,CAAC,eAAe,CAAC,SAAS,EAAE,MAAM,CAAC,CAAC;QAE5E,MAAM,UAAU,GAAG,IAAI,kBAAkB,CACvC,aAAa,EACb;YACE,SAAS,EAAE;gBACT,GAAG,qBAAqB;gBACxB,kBAAkB,EAAE,iBAAiB,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,OAAO;aAC3D;YACD,KAAK;YACL,MAAM;SACP,EACD,iBAAiB,EACjB,gBAAgB,CACjB,CAAC;QAEF,MAAM,YAAY,GAAG,MAAM,UAAU,CAAC,IAAI,EAAE,CAAC;QAC7C,IAAI,MAAM,CAAC,aAAa,IAAI,CAAC,UAAU,CAAC,MAAM,CAAC,aAAa,CAAC,EAAE,CAAC;YAC9D,MAAM,eAAe,GACnB,MAAM,UAAU,CAAC,kCAAkC,CACjD,YAAY,EACZ,MAAM,CACP,CAAC,CAAC,0DAA0D;YAC/D,MAAM,WAAW,GAAG,CAAC,CAAC;YACtB,MAAM,aAAa,CAAC,eAAe,CAAC,KAAK,EAAE,eAAe,CAAC,WAAW,CAAC,CAAC,CAAC;QAC3E,CAAC;QAED,IACE,8BAA8B,CAAC,MAAM,CAAC;YACtC,MAAM,CAAC,kBAAkB;YACzB,MAAM,CAAC,kBAAkB,CAAC,MAAM,KAAK,CAAC,EACtC,CAAC;YACD,MAAM,gBAAgB,GAAG,MAAM,UAAU,CAAC,6BAA6B,CACrE,YAAY,EACZ,MAAM,CACP,CAAC,CAAC,0DAA0D;YAE7D,KAAK,MAAM,EAAE,IAAI,gBAAgB,EAAE,CAAC;gBAClC,MAAM,aAAa,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,IACE,8BAA8B,CAAC,MAAM,CAAC;YACtC,MAAM,CAAC,yBAAyB;YAChC,CAAC,UAAU,CAAC,MAAM,CAAC,yBAAyB,CAAC,EAC7C,CAAC;YACD,MAAM,aAAa,GAAG,MAAM,UAAU,CAAC,gCAAgC,CACrE,YAAY,EACZ,MAAM,CACP,CAAC,CAAC,0DAA0D;YAE7D,KAAK,MAAM,EAAE,IAAI,aAAa,EAAE,CAAC;gBAC/B,MAAM,aAAa,CAAC,eAAe,CAAC,KAAK,EAAE,EAAE,CAAC,CAAC;YACjD,CAAC;QACH,CAAC;QAED,OAAO,UAAU,CAAC;IACpB,CAAC;CACF"}
@@ -3,12 +3,12 @@ import { ContractVerifier } from '../deploy/verify/ContractVerifier.js';
3
3
  import { EvmHookReader } from '../hook/EvmHookReader.js';
4
4
  import { EvmIsmReader } from '../ism/EvmIsmReader.js';
5
5
  import { MultiProvider } from '../providers/MultiProvider.js';
6
- import { DerivedMailboxClientConfig, DestinationGas, RemoteRouters } from '../router/types.js';
6
+ import { EvmRouterReader } from '../router/EvmRouterReader.js';
7
+ import { DestinationGas } from '../router/types.js';
7
8
  import { ChainName, ChainNameOrId, DeployedOwnableConfig } from '../types.js';
8
- import { HyperlaneReader } from '../utils/HyperlaneReader.js';
9
9
  import { TokenType } from './config.js';
10
10
  import { DerivedTokenRouterConfig, HypTokenConfig, HypTokenRouterVirtualConfig, TokenMetadata, XERC20TokenMetadata } from './types.js';
11
- export declare class EvmERC20WarpRouteReader extends HyperlaneReader {
11
+ export declare class EvmERC20WarpRouteReader extends EvmRouterReader {
12
12
  protected readonly multiProvider: MultiProvider;
13
13
  protected readonly chain: ChainNameOrId;
14
14
  protected readonly concurrency: number;
@@ -34,13 +34,6 @@ export declare class EvmERC20WarpRouteReader extends HyperlaneReader {
34
34
  * @returns The derived token type, which can be one of: collateralVault, collateral, native, or synthetic.
35
35
  */
36
36
  deriveTokenType(warpRouteAddress: Address): Promise<TokenType>;
37
- /**
38
- * Fetches the base metadata for a Warp Route contract.
39
- *
40
- * @param routerAddress - The address of the Warp Route contract.
41
- * @returns The base metadata for the Warp Route contract, including the mailbox, owner, hook, and ism.
42
- */
43
- fetchMailboxClientConfig(routerAddress: Address): Promise<DerivedMailboxClientConfig>;
44
37
  fetchXERC20Config(xERC20Address: Address, warpRouteAddress: Address): Promise<XERC20TokenMetadata>;
45
38
  /**
46
39
  * Fetches the metadata for a token address.
@@ -52,15 +45,18 @@ export declare class EvmERC20WarpRouteReader extends HyperlaneReader {
52
45
  fetchTokenConfig(type: TokenType, warpRouteAddress: Address): Promise<HypTokenConfig>;
53
46
  private deriveHypXERC20TokenConfig;
54
47
  private deriveHypXERC20LockboxTokenConfig;
48
+ private deriveHypCollateralCctpTokenConfig;
55
49
  private deriveHypCollateralTokenConfig;
56
50
  private deriveHypCollateralFiatTokenConfig;
57
51
  private deriveHypCollateralVaultTokenConfig;
58
52
  private deriveHypCollateralVaultRebaseTokenConfig;
59
53
  private deriveHypSyntheticTokenConfig;
60
54
  private deriveHypNativeTokenConfig;
55
+ private deriveOpL2TokenConfig;
56
+ private deriveOpL1TokenConfig;
61
57
  private deriveHypSyntheticRebaseConfig;
62
58
  fetchERC20Metadata(tokenAddress: Address): Promise<TokenMetadata>;
63
- fetchRemoteRouters(warpRouteAddress: Address): Promise<RemoteRouters>;
59
+ fetchPackageVersion(address: Address): Promise<string>;
64
60
  fetchProxyAdminConfig(tokenAddress: Address): Promise<DeployedOwnableConfig>;
65
61
  fetchDestinationGas(warpRouteAddress: Address): Promise<DestinationGas>;
66
62
  }
@@ -1 +1 @@
1
- {"version":3,"file":"EvmERC20WarpRouteReader.d.ts","sourceRoot":"","sources":["../../src/token/EvmERC20WarpRouteReader.ts"],"names":[],"mappings":"AAgBA,OAAO,EACL,OAAO,EAMR,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAKxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EACL,0BAA0B,EAC1B,cAAc,EACd,aAAa,EAEd,MAAM,oBAAoB,CAAC;AAC5B,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAC9E,OAAO,EAAE,eAAe,EAAE,MAAM,6BAA6B,CAAC;AAG9D,OAAO,EAA2B,SAAS,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAEL,wBAAwB,EACxB,cAAc,EAEd,2BAA2B,EAC3B,aAAa,EACb,mBAAmB,EACpB,MAAM,YAAY,CAAC;AAGpB,qBAAa,uBAAwB,SAAQ,eAAe;IAgBxD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa;IAC/C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa;IACvC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM;IAjBxC,SAAS,CAAC,QAAQ,CAAC,MAAM,uCAEtB;IAIH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAC7C,SAAS,EACT,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CACvD,CAAC;IACF,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;gBAGd,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,aAAa,EACpB,WAAW,GAAE,MAA0C,EAC1E,gBAAgB,CAAC,EAAE,gBAAgB;IAoCrC;;;;;;OAMG;IACG,qBAAqB,CACzB,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,wBAAwB,CAAC;IAuB9B,4BAA4B,CAChC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,2BAA2B,CAAC;IA8BvC;;;;;OAKG;IACG,eAAe,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;IAuGpE;;;;;OAKG;IACG,wBAAwB,CAC5B,aAAa,EAAE,OAAO,GACrB,OAAO,CAAC,0BAA0B,CAAC;IA2BhC,iBAAiB,CACrB,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,mBAAmB,CAAC;IAqC/B;;;;;;OAMG;IACG,gBAAgB,CACpB,IAAI,EAAE,SAAS,EACf,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,cAAc,CAAC;YAYZ,0BAA0B;YAsB1B,iCAAiC;YAsBjC,8BAA8B;YAqB9B,kCAAkC;YAYlC,mCAAmC;YAYnC,yCAAyC;YAYzC,6BAA6B;YAW7B,0BAA0B;YAoB1B,8BAA8B;IAuBtC,kBAAkB,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAWjE,kBAAkB,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAkBrE,qBAAqB,CACzB,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,qBAAqB,CAAC;IAkB3B,mBAAmB,CACvB,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,cAAc,CAAC;CAqB3B"}
1
+ {"version":3,"file":"EvmERC20WarpRouteReader.d.ts","sourceRoot":"","sources":["../../src/token/EvmERC20WarpRouteReader.ts"],"names":[],"mappings":"AAqBA,OAAO,EACL,OAAO,EASR,MAAM,sBAAsB,CAAC;AAG9B,OAAO,EAAE,gBAAgB,EAAE,MAAM,sCAAsC,CAAC;AAKxE,OAAO,EAAE,aAAa,EAAE,MAAM,0BAA0B,CAAC;AACzD,OAAO,EAAE,YAAY,EAAE,MAAM,wBAAwB,CAAC;AACtD,OAAO,EAAE,aAAa,EAAE,MAAM,+BAA+B,CAAC;AAC9D,OAAO,EAAE,eAAe,EAAE,MAAM,8BAA8B,CAAC;AAC/D,OAAO,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AACpD,OAAO,EAAE,SAAS,EAAE,aAAa,EAAE,qBAAqB,EAAE,MAAM,aAAa,CAAC;AAG9E,OAAO,EAA2B,SAAS,EAAE,MAAM,aAAa,CAAC;AACjE,OAAO,EAGL,wBAAwB,EACxB,cAAc,EAEd,2BAA2B,EAI3B,aAAa,EACb,mBAAmB,EAEpB,MAAM,YAAY,CAAC;AAGpB,qBAAa,uBAAwB,SAAQ,eAAe;IAgBxD,SAAS,CAAC,QAAQ,CAAC,aAAa,EAAE,aAAa;IAC/C,SAAS,CAAC,QAAQ,CAAC,KAAK,EAAE,aAAa;IACvC,SAAS,CAAC,QAAQ,CAAC,WAAW,EAAE,MAAM;IAjBxC,SAAS,CAAC,QAAQ,CAAC,MAAM,uCAEtB;IAIH,SAAS,CAAC,QAAQ,CAAC,oBAAoB,EAAE,MAAM,CAC7C,SAAS,EACT,CAAC,CAAC,OAAO,EAAE,OAAO,KAAK,OAAO,CAAC,cAAc,CAAC,CAAC,GAAG,IAAI,CACvD,CAAC;IACF,aAAa,EAAE,aAAa,CAAC;IAC7B,YAAY,EAAE,YAAY,CAAC;IAC3B,gBAAgB,EAAE,gBAAgB,CAAC;gBAGd,aAAa,EAAE,aAAa,EAC5B,KAAK,EAAE,aAAa,EACpB,WAAW,GAAE,MAA0C,EAC1E,gBAAgB,CAAC,EAAE,gBAAgB;IAwCrC;;;;;;OAMG;IACG,qBAAqB,CACzB,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,wBAAwB,CAAC;IA0E9B,4BAA4B,CAChC,KAAK,EAAE,SAAS,EAChB,OAAO,EAAE,OAAO,GACf,OAAO,CAAC,2BAA2B,CAAC;IA8BvC;;;;;OAKG;IACG,eAAe,CAAC,gBAAgB,EAAE,OAAO,GAAG,OAAO,CAAC,SAAS,CAAC;IAuG9D,iBAAiB,CACrB,aAAa,EAAE,OAAO,EACtB,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,mBAAmB,CAAC;IAqC/B;;;;;;OAMG;IACG,gBAAgB,CACpB,IAAI,EAAE,SAAS,EACf,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,cAAc,CAAC;YAcZ,0BAA0B;YAsB1B,iCAAiC;YAsBjC,kCAAkC;YAwBlC,8BAA8B;YAqB9B,kCAAkC;YAYlC,mCAAmC;YAYnC,yCAAyC;YAYzC,6BAA6B;YAW7B,0BAA0B;YAoB1B,qBAAqB;YAmBrB,qBAAqB;YAsBrB,8BAA8B;IAuBtC,kBAAkB,CAAC,YAAY,EAAE,OAAO,GAAG,OAAO,CAAC,aAAa,CAAC;IAWjE,mBAAmB,CAAC,OAAO,EAAE,OAAO;IAoBpC,qBAAqB,CACzB,YAAY,EAAE,OAAO,GACpB,OAAO,CAAC,qBAAqB,CAAC;IAkB3B,mBAAmB,CACvB,gBAAgB,EAAE,OAAO,GACxB,OAAO,CAAC,cAAc,CAAC;CAqB3B"}
@@ -1,19 +1,18 @@
1
- import { BigNumber, Contract, constants } from 'ethers';
2
- import { HypERC20Collateral__factory, HypERC20__factory, HypERC4626Collateral__factory, HypERC4626OwnerCollateral__factory, HypERC4626__factory, HypXERC20Lockbox__factory, HypXERC20__factory, IFiatToken__factory, IXERC20__factory, ProxyAdmin__factory, TokenRouter__factory, } from '@hyperlane-xyz/core';
1
+ import { BigNumber, Contract } from 'ethers';
2
+ import { HypERC20Collateral__factory, HypERC20__factory, HypERC4626Collateral__factory, HypERC4626OwnerCollateral__factory, HypERC4626__factory, HypXERC20Lockbox__factory, HypXERC20__factory, IFiatToken__factory, IXERC20__factory, MovableCollateralRouter__factory, OpL1NativeTokenBridge__factory, OpL2NativeTokenBridge__factory, PackageVersioned__factory, ProxyAdmin__factory, TokenBridgeCctp__factory, TokenRouter__factory, } from '@hyperlane-xyz/core';
3
3
  import { buildArtifact as coreBuildArtifact } from '@hyperlane-xyz/core/buildArtifact.js';
4
- import { assert, eqAddress, getLogLevel, isZeroishAddress, rootLogger, } from '@hyperlane-xyz/utils';
4
+ import { arrayToObject, assert, getLogLevel, isZeroishAddress, objFilter, objMap, promiseObjAll, rootLogger, } from '@hyperlane-xyz/utils';
5
5
  import { DEFAULT_CONTRACT_READ_CONCURRENCY } from '../consts/concurrency.js';
6
6
  import { ContractVerifier } from '../deploy/verify/ContractVerifier.js';
7
7
  import { ExplorerLicenseType, VerifyContractTypes, } from '../deploy/verify/types.js';
8
8
  import { EvmHookReader } from '../hook/EvmHookReader.js';
9
9
  import { EvmIsmReader } from '../ism/EvmIsmReader.js';
10
- import { RemoteRoutersSchema, } from '../router/types.js';
11
- import { HyperlaneReader } from '../utils/HyperlaneReader.js';
10
+ import { EvmRouterReader } from '../router/EvmRouterReader.js';
12
11
  import { isProxy, proxyAdmin, proxyImplementation } from './../deploy/proxy.js';
13
12
  import { NON_ZERO_SENDER_ADDRESS, TokenType } from './config.js';
14
- import { HypTokenConfigSchema, } from './types.js';
13
+ import { HypTokenConfigSchema, isMovableCollateralTokenConfig, } from './types.js';
15
14
  import { getExtraLockBoxConfigs } from './xerc20.js';
16
- export class EvmERC20WarpRouteReader extends HyperlaneReader {
15
+ export class EvmERC20WarpRouteReader extends EvmRouterReader {
17
16
  multiProvider;
18
17
  chain;
19
18
  concurrency;
@@ -39,8 +38,11 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
39
38
  [TokenType.collateral]: this.deriveHypCollateralTokenConfig.bind(this),
40
39
  [TokenType.collateralFiat]: this.deriveHypCollateralFiatTokenConfig.bind(this),
41
40
  [TokenType.collateralVault]: this.deriveHypCollateralVaultTokenConfig.bind(this),
41
+ [TokenType.collateralCctp]: this.deriveHypCollateralCctpTokenConfig.bind(this),
42
42
  [TokenType.collateralVaultRebase]: this.deriveHypCollateralVaultRebaseTokenConfig.bind(this),
43
43
  [TokenType.native]: this.deriveHypNativeTokenConfig.bind(this),
44
+ [TokenType.nativeOpL2]: this.deriveOpL2TokenConfig.bind(this),
45
+ [TokenType.nativeOpL1]: this.deriveOpL1TokenConfig.bind(this),
44
46
  [TokenType.synthetic]: this.deriveHypSyntheticTokenConfig.bind(this),
45
47
  [TokenType.syntheticRebase]: this.deriveHypSyntheticRebaseConfig.bind(this),
46
48
  [TokenType.nativeScaled]: null,
@@ -61,19 +63,48 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
61
63
  async deriveWarpRouteConfig(warpRouteAddress) {
62
64
  // Derive the config type
63
65
  const type = await this.deriveTokenType(warpRouteAddress);
64
- const mailboxClientConfig = await this.fetchMailboxClientConfig(warpRouteAddress);
65
66
  const tokenConfig = await this.fetchTokenConfig(type, warpRouteAddress);
66
- const remoteRouters = await this.fetchRemoteRouters(warpRouteAddress);
67
+ const routerConfig = await this.readRouterConfig(warpRouteAddress);
67
68
  // if the token has not been deployed as a proxy do not derive the config
68
69
  // inevm warp routes are an example
69
70
  const proxyAdmin = (await isProxy(this.provider, warpRouteAddress))
70
71
  ? await this.fetchProxyAdminConfig(warpRouteAddress)
71
72
  : undefined;
72
73
  const destinationGas = await this.fetchDestinationGas(warpRouteAddress);
74
+ let allowedRebalancers;
75
+ let allowedRebalancingBridges;
76
+ if (isMovableCollateralTokenConfig(tokenConfig)) {
77
+ const movableToken = MovableCollateralRouter__factory.connect(warpRouteAddress, this.provider);
78
+ try {
79
+ allowedRebalancers = await MovableCollateralRouter__factory.connect(warpRouteAddress, this.provider).allowedRebalancers();
80
+ }
81
+ catch (error) {
82
+ // If this crashes it probably is because the token implementation has not been updated to be a movable collateral
83
+ this.logger.error(`Failed to get configured rebalancers for token at "${warpRouteAddress}" on chain ${this.chain}`, error);
84
+ }
85
+ try {
86
+ const knownDomains = await movableToken.domains();
87
+ const allowedBridgesByDomain = await promiseObjAll(objMap(arrayToObject(knownDomains.map((domain) => domain.toString())), (domain) => movableToken.allowedBridges(domain)));
88
+ allowedRebalancingBridges = objFilter(objMap(allowedBridgesByDomain, (_domain, bridges) => bridges.map((bridge) => ({ bridge }))),
89
+ // Remove domains that do not have allowed bridges
90
+ (_domain, bridges) => bridges.length !== 0);
91
+ }
92
+ catch (error) {
93
+ // If this crashes it probably is because the token implementation has not been updated to be a movable collateral
94
+ this.logger.error(`Failed to get allowed rebalancer bridges for token at "${warpRouteAddress}" on chain ${this.chain}`, error);
95
+ }
96
+ return {
97
+ ...routerConfig,
98
+ ...tokenConfig,
99
+ allowedRebalancers,
100
+ allowedRebalancingBridges,
101
+ proxyAdmin,
102
+ destinationGas,
103
+ };
104
+ }
73
105
  return {
74
- ...mailboxClientConfig,
106
+ ...routerConfig,
75
107
  ...tokenConfig,
76
- remoteRouters,
77
108
  proxyAdmin,
78
109
  destinationGas,
79
110
  };
@@ -184,33 +215,6 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
184
215
  this.setSmartProviderLogLevel(getLogLevel()); // returns to original level defined by rootLogger
185
216
  }
186
217
  }
187
- /**
188
- * Fetches the base metadata for a Warp Route contract.
189
- *
190
- * @param routerAddress - The address of the Warp Route contract.
191
- * @returns The base metadata for the Warp Route contract, including the mailbox, owner, hook, and ism.
192
- */
193
- async fetchMailboxClientConfig(routerAddress) {
194
- const warpRoute = HypERC20Collateral__factory.connect(routerAddress, this.provider);
195
- const [mailbox, owner, hook, ism] = await Promise.all([
196
- warpRoute.mailbox(),
197
- warpRoute.owner(),
198
- warpRoute.hook(),
199
- warpRoute.interchainSecurityModule(),
200
- ]);
201
- const derivedIsm = eqAddress(ism, constants.AddressZero)
202
- ? constants.AddressZero
203
- : await this.evmIsmReader.deriveIsmConfig(ism);
204
- const derivedHook = eqAddress(hook, constants.AddressZero)
205
- ? constants.AddressZero
206
- : await this.evmHookReader.deriveHookConfig(hook);
207
- return {
208
- mailbox,
209
- owner,
210
- hook: derivedHook,
211
- interchainSecurityModule: derivedIsm,
212
- };
213
- }
214
218
  async fetchXERC20Config(xERC20Address, warpRouteAddress) {
215
219
  // fetch the limits if possible
216
220
  const rateLimitsABI = [
@@ -253,6 +257,7 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
253
257
  throw new Error(`Provided unsupported token type "${type}" when fetching token metadata on chain "${this.chain}" at address "${warpRouteAddress}"`);
254
258
  }
255
259
  const config = await deriveFunction(warpRouteAddress);
260
+ config.contractVersion = await this.fetchPackageVersion(warpRouteAddress);
256
261
  return HypTokenConfigSchema.parse(config);
257
262
  }
258
263
  async deriveHypXERC20TokenConfig(hypTokenAddress) {
@@ -284,6 +289,20 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
284
289
  xERC20: xERC20Metadata.xERC20,
285
290
  };
286
291
  }
292
+ async deriveHypCollateralCctpTokenConfig(hypToken) {
293
+ const collateralConfig = await this.deriveHypCollateralTokenConfig(hypToken);
294
+ const tokenBridge = TokenBridgeCctp__factory.connect(hypToken, this.provider);
295
+ const messageTransmitter = await tokenBridge.messageTransmitter();
296
+ const tokenMessenger = await tokenBridge.tokenMessenger();
297
+ const urls = await tokenBridge.urls();
298
+ return {
299
+ ...collateralConfig,
300
+ type: TokenType.collateralCctp,
301
+ messageTransmitter,
302
+ tokenMessenger,
303
+ urls,
304
+ };
305
+ }
287
306
  async deriveHypCollateralTokenConfig(hypToken) {
288
307
  const hypCollateralTokenInstance = HypERC20Collateral__factory.connect(hypToken, this.provider);
289
308
  const collateralTokenAddress = await hypCollateralTokenInstance.wrappedToken();
@@ -336,6 +355,30 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
336
355
  isNft: false,
337
356
  };
338
357
  }
358
+ async deriveOpL2TokenConfig(_address) {
359
+ const config = await this.deriveHypNativeTokenConfig(_address);
360
+ const contract = OpL2NativeTokenBridge__factory.connect(_address, this.multiProvider.getProvider(this.chain));
361
+ const l2Bridge = await contract.l2Bridge();
362
+ return {
363
+ ...config,
364
+ type: TokenType.nativeOpL2,
365
+ l2Bridge,
366
+ };
367
+ }
368
+ async deriveOpL1TokenConfig(_address) {
369
+ const config = await this.deriveHypNativeTokenConfig(_address);
370
+ const contract = OpL1NativeTokenBridge__factory.connect(_address, this.multiProvider.getProvider(this.chain));
371
+ const urls = await contract.urls();
372
+ const portal = await contract.opPortal();
373
+ return {
374
+ ...config,
375
+ type: TokenType.nativeOpL1,
376
+ urls,
377
+ portal,
378
+ // assume version 1 for now
379
+ version: 1,
380
+ };
381
+ }
339
382
  async deriveHypSyntheticRebaseConfig(hypTokenAddress) {
340
383
  const hypERC4626 = HypERC4626__factory.connect(hypTokenAddress, this.provider);
341
384
  const [erc20TokenMetadata, collateralDomainId] = await Promise.all([
@@ -358,13 +401,22 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
358
401
  ]);
359
402
  return { name, symbol, decimals, isNft: false };
360
403
  }
361
- async fetchRemoteRouters(warpRouteAddress) {
362
- const warpRoute = TokenRouter__factory.connect(warpRouteAddress, this.provider);
363
- const domains = await warpRoute.domains();
364
- const routers = Object.fromEntries(await Promise.all(domains.map(async (domain) => {
365
- return [domain, { address: await warpRoute.routers(domain) }];
366
- })));
367
- return RemoteRoutersSchema.parse(routers);
404
+ async fetchPackageVersion(address) {
405
+ const contractWithVersion = PackageVersioned__factory.connect(address, this.provider);
406
+ try {
407
+ return await contractWithVersion.PACKAGE_VERSION();
408
+ }
409
+ catch (err) {
410
+ if (err.code && err.code === 'CALL_EXCEPTION') {
411
+ // PACKAGE_VERSION was introduced in @hyperlane-xyz/core@5.4.0
412
+ // See https://github.com/hyperlane-xyz/hyperlane-monorepo/releases/tag/%40hyperlane-xyz%2Fcore%405.4.0
413
+ // The real version of a contract without this function is below 5.4.0
414
+ return '5.3.9';
415
+ }
416
+ else {
417
+ throw err;
418
+ }
419
+ }
368
420
  }
369
421
  async fetchProxyAdminConfig(tokenAddress) {
370
422
  const proxyAdminAddress = await proxyAdmin(this.provider, tokenAddress);