@hyperlane-xyz/sdk 13.2.0 → 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 (169) hide show
  1. package/dist/consts/multisigIsm.d.ts.map +1 -1
  2. package/dist/consts/multisigIsm.js +36 -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 +19 -17
  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 +98 -47
  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/types.d.ts +2 -1
  163. package/dist/types.d.ts.map +1 -1
  164. package/dist/types.js.map +1 -1
  165. package/dist/utils/decimals.d.ts +4 -0
  166. package/dist/utils/decimals.d.ts.map +1 -0
  167. package/dist/utils/decimals.js +26 -0
  168. package/dist/utils/decimals.js.map +1 -0
  169. package/package.json +12 -8
@@ -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;AAGxE,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,20 +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
- import { ExplorerLicenseType } from '../deploy/verify/types.js';
8
- import { VerifyContractTypes } from '../deploy/verify/types.js';
7
+ import { ExplorerLicenseType, VerifyContractTypes, } from '../deploy/verify/types.js';
9
8
  import { EvmHookReader } from '../hook/EvmHookReader.js';
10
9
  import { EvmIsmReader } from '../ism/EvmIsmReader.js';
11
- import { RemoteRoutersSchema, } from '../router/types.js';
12
- import { HyperlaneReader } from '../utils/HyperlaneReader.js';
10
+ import { EvmRouterReader } from '../router/EvmRouterReader.js';
13
11
  import { isProxy, proxyAdmin, proxyImplementation } from './../deploy/proxy.js';
14
12
  import { NON_ZERO_SENDER_ADDRESS, TokenType } from './config.js';
15
- import { HypTokenConfigSchema, } from './types.js';
13
+ import { HypTokenConfigSchema, isMovableCollateralTokenConfig, } from './types.js';
16
14
  import { getExtraLockBoxConfigs } from './xerc20.js';
17
- export class EvmERC20WarpRouteReader extends HyperlaneReader {
15
+ export class EvmERC20WarpRouteReader extends EvmRouterReader {
18
16
  multiProvider;
19
17
  chain;
20
18
  concurrency;
@@ -40,8 +38,11 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
40
38
  [TokenType.collateral]: this.deriveHypCollateralTokenConfig.bind(this),
41
39
  [TokenType.collateralFiat]: this.deriveHypCollateralFiatTokenConfig.bind(this),
42
40
  [TokenType.collateralVault]: this.deriveHypCollateralVaultTokenConfig.bind(this),
41
+ [TokenType.collateralCctp]: this.deriveHypCollateralCctpTokenConfig.bind(this),
43
42
  [TokenType.collateralVaultRebase]: this.deriveHypCollateralVaultRebaseTokenConfig.bind(this),
44
43
  [TokenType.native]: this.deriveHypNativeTokenConfig.bind(this),
44
+ [TokenType.nativeOpL2]: this.deriveOpL2TokenConfig.bind(this),
45
+ [TokenType.nativeOpL1]: this.deriveOpL1TokenConfig.bind(this),
45
46
  [TokenType.synthetic]: this.deriveHypSyntheticTokenConfig.bind(this),
46
47
  [TokenType.syntheticRebase]: this.deriveHypSyntheticRebaseConfig.bind(this),
47
48
  [TokenType.nativeScaled]: null,
@@ -62,19 +63,48 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
62
63
  async deriveWarpRouteConfig(warpRouteAddress) {
63
64
  // Derive the config type
64
65
  const type = await this.deriveTokenType(warpRouteAddress);
65
- const mailboxClientConfig = await this.fetchMailboxClientConfig(warpRouteAddress);
66
66
  const tokenConfig = await this.fetchTokenConfig(type, warpRouteAddress);
67
- const remoteRouters = await this.fetchRemoteRouters(warpRouteAddress);
67
+ const routerConfig = await this.readRouterConfig(warpRouteAddress);
68
68
  // if the token has not been deployed as a proxy do not derive the config
69
69
  // inevm warp routes are an example
70
70
  const proxyAdmin = (await isProxy(this.provider, warpRouteAddress))
71
71
  ? await this.fetchProxyAdminConfig(warpRouteAddress)
72
72
  : undefined;
73
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
+ }
74
105
  return {
75
- ...mailboxClientConfig,
106
+ ...routerConfig,
76
107
  ...tokenConfig,
77
- remoteRouters,
78
108
  proxyAdmin,
79
109
  destinationGas,
80
110
  };
@@ -185,33 +215,6 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
185
215
  this.setSmartProviderLogLevel(getLogLevel()); // returns to original level defined by rootLogger
186
216
  }
187
217
  }
188
- /**
189
- * Fetches the base metadata for a Warp Route contract.
190
- *
191
- * @param routerAddress - The address of the Warp Route contract.
192
- * @returns The base metadata for the Warp Route contract, including the mailbox, owner, hook, and ism.
193
- */
194
- async fetchMailboxClientConfig(routerAddress) {
195
- const warpRoute = HypERC20Collateral__factory.connect(routerAddress, this.provider);
196
- const [mailbox, owner, hook, ism] = await Promise.all([
197
- warpRoute.mailbox(),
198
- warpRoute.owner(),
199
- warpRoute.hook(),
200
- warpRoute.interchainSecurityModule(),
201
- ]);
202
- const derivedIsm = eqAddress(ism, constants.AddressZero)
203
- ? constants.AddressZero
204
- : await this.evmIsmReader.deriveIsmConfig(ism);
205
- const derivedHook = eqAddress(hook, constants.AddressZero)
206
- ? constants.AddressZero
207
- : await this.evmHookReader.deriveHookConfig(hook);
208
- return {
209
- mailbox,
210
- owner,
211
- hook: derivedHook,
212
- interchainSecurityModule: derivedIsm,
213
- };
214
- }
215
218
  async fetchXERC20Config(xERC20Address, warpRouteAddress) {
216
219
  // fetch the limits if possible
217
220
  const rateLimitsABI = [
@@ -254,6 +257,7 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
254
257
  throw new Error(`Provided unsupported token type "${type}" when fetching token metadata on chain "${this.chain}" at address "${warpRouteAddress}"`);
255
258
  }
256
259
  const config = await deriveFunction(warpRouteAddress);
260
+ config.contractVersion = await this.fetchPackageVersion(warpRouteAddress);
257
261
  return HypTokenConfigSchema.parse(config);
258
262
  }
259
263
  async deriveHypXERC20TokenConfig(hypTokenAddress) {
@@ -285,6 +289,20 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
285
289
  xERC20: xERC20Metadata.xERC20,
286
290
  };
287
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
+ }
288
306
  async deriveHypCollateralTokenConfig(hypToken) {
289
307
  const hypCollateralTokenInstance = HypERC20Collateral__factory.connect(hypToken, this.provider);
290
308
  const collateralTokenAddress = await hypCollateralTokenInstance.wrappedToken();
@@ -337,6 +355,30 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
337
355
  isNft: false,
338
356
  };
339
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
+ }
340
382
  async deriveHypSyntheticRebaseConfig(hypTokenAddress) {
341
383
  const hypERC4626 = HypERC4626__factory.connect(hypTokenAddress, this.provider);
342
384
  const [erc20TokenMetadata, collateralDomainId] = await Promise.all([
@@ -359,13 +401,22 @@ export class EvmERC20WarpRouteReader extends HyperlaneReader {
359
401
  ]);
360
402
  return { name, symbol, decimals, isNft: false };
361
403
  }
362
- async fetchRemoteRouters(warpRouteAddress) {
363
- const warpRoute = TokenRouter__factory.connect(warpRouteAddress, this.provider);
364
- const domains = await warpRoute.domains();
365
- const routers = Object.fromEntries(await Promise.all(domains.map(async (domain) => {
366
- return [domain, { address: await warpRoute.routers(domain) }];
367
- })));
368
- 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
+ }
369
420
  }
370
421
  async fetchProxyAdminConfig(tokenAddress) {
371
422
  const proxyAdminAddress = await proxyAdmin(this.provider, tokenAddress);