@hyperlane-xyz/sdk 13.2.1 → 13.4.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 (229) hide show
  1. package/dist/consts/multisigIsm.d.ts.map +1 -1
  2. package/dist/consts/multisigIsm.js +52 -90
  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/CosmosNativeCoreReader.d.ts +3 -3
  10. package/dist/core/CosmosNativeCoreReader.d.ts.map +1 -1
  11. package/dist/core/CosmosNativeCoreReader.js +5 -5
  12. package/dist/core/CosmosNativeCoreReader.js.map +1 -1
  13. package/dist/core/EvmCoreModule.d.ts.map +1 -1
  14. package/dist/core/EvmCoreModule.hardhat-test.js +1 -2
  15. package/dist/core/EvmCoreModule.hardhat-test.js.map +1 -1
  16. package/dist/core/EvmCoreModule.js +7 -7
  17. package/dist/core/EvmCoreModule.js.map +1 -1
  18. package/dist/core/EvmCoreReader.d.ts.map +1 -1
  19. package/dist/core/EvmCoreReader.js +1 -1
  20. package/dist/core/EvmCoreReader.js.map +1 -1
  21. package/dist/core/EvmIcaModule.d.ts +3 -4
  22. package/dist/core/EvmIcaModule.d.ts.map +1 -1
  23. package/dist/core/EvmIcaModule.hardhat-test.js +25 -2
  24. package/dist/core/EvmIcaModule.hardhat-test.js.map +1 -1
  25. package/dist/core/EvmIcaModule.js +13 -11
  26. package/dist/core/EvmIcaModule.js.map +1 -1
  27. package/dist/core/HyperlaneRelayer.d.ts +40 -5
  28. package/dist/core/HyperlaneRelayer.d.ts.map +1 -1
  29. package/dist/core/types.d.ts +1794 -129
  30. package/dist/core/types.d.ts.map +1 -1
  31. package/dist/core/types.js +0 -1
  32. package/dist/core/types.js.map +1 -1
  33. package/dist/deploy/HyperlaneDeployer.d.ts +2 -1
  34. package/dist/deploy/HyperlaneDeployer.d.ts.map +1 -1
  35. package/dist/deploy/HyperlaneDeployer.js +11 -8
  36. package/dist/deploy/HyperlaneDeployer.js.map +1 -1
  37. package/dist/deploy/HyperlaneProxyFactoryDeployer.d.ts.map +1 -1
  38. package/dist/deploy/HyperlaneProxyFactoryDeployer.js +10 -4
  39. package/dist/deploy/HyperlaneProxyFactoryDeployer.js.map +1 -1
  40. package/dist/deploy/contracts.js +1 -1
  41. package/dist/deploy/contracts.js.map +1 -1
  42. package/dist/deploy/proxy.d.ts +1 -1
  43. package/dist/deploy/proxy.d.ts.map +1 -1
  44. package/dist/deploy/proxy.js +4 -5
  45. package/dist/deploy/proxy.js.map +1 -1
  46. package/dist/deploy/verify/utils.d.ts +1 -0
  47. package/dist/deploy/verify/utils.d.ts.map +1 -1
  48. package/dist/deploy/verify/utils.js +8 -1
  49. package/dist/deploy/verify/utils.js.map +1 -1
  50. package/dist/fork/types.d.ts +2086 -0
  51. package/dist/fork/types.d.ts.map +1 -0
  52. package/dist/fork/types.js +142 -0
  53. package/dist/fork/types.js.map +1 -0
  54. package/dist/gas/token-prices.d.ts.map +1 -1
  55. package/dist/gas/token-prices.js +23 -4
  56. package/dist/gas/token-prices.js.map +1 -1
  57. package/dist/hook/CosmosNativeHookReader.d.ts +3 -3
  58. package/dist/hook/CosmosNativeHookReader.d.ts.map +1 -1
  59. package/dist/hook/CosmosNativeHookReader.js +4 -4
  60. package/dist/hook/CosmosNativeHookReader.js.map +1 -1
  61. package/dist/ica/EvmIcaReader.d.ts +2 -5
  62. package/dist/ica/EvmIcaReader.d.ts.map +1 -1
  63. package/dist/ica/EvmIcaReader.hardhat-test.js +2 -7
  64. package/dist/ica/EvmIcaReader.hardhat-test.js.map +1 -1
  65. package/dist/ica/EvmIcaReader.js +10 -44
  66. package/dist/ica/EvmIcaReader.js.map +1 -1
  67. package/dist/ica/types.d.ts +1005 -47
  68. package/dist/ica/types.d.ts.map +1 -1
  69. package/dist/ica/types.js +7 -22
  70. package/dist/ica/types.js.map +1 -1
  71. package/dist/index.d.ts +24 -18
  72. package/dist/index.d.ts.map +1 -1
  73. package/dist/index.js +21 -16
  74. package/dist/index.js.map +1 -1
  75. package/dist/ism/CosmosNativeIsmReader.d.ts +3 -3
  76. package/dist/ism/CosmosNativeIsmReader.d.ts.map +1 -1
  77. package/dist/ism/CosmosNativeIsmReader.js +4 -4
  78. package/dist/ism/CosmosNativeIsmReader.js.map +1 -1
  79. package/dist/ism/EvmIsmModule.hardhat-test.js +0 -5
  80. package/dist/ism/EvmIsmModule.hardhat-test.js.map +1 -1
  81. package/dist/ism/EvmIsmReader.d.ts +6 -3
  82. package/dist/ism/EvmIsmReader.d.ts.map +1 -1
  83. package/dist/ism/EvmIsmReader.js +87 -43
  84. package/dist/ism/EvmIsmReader.js.map +1 -1
  85. package/dist/ism/EvmIsmReader.test.js +36 -1
  86. package/dist/ism/EvmIsmReader.test.js.map +1 -1
  87. package/dist/ism/HyperlaneIsmFactory.d.ts +0 -1
  88. package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
  89. package/dist/ism/HyperlaneIsmFactory.js +6 -11
  90. package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
  91. package/dist/ism/metadata/arbL2ToL1.hardhat-test.js +0 -1
  92. package/dist/ism/metadata/arbL2ToL1.hardhat-test.js.map +1 -1
  93. package/dist/ism/metadata/builder.d.ts +4 -4
  94. package/dist/ism/metadata/builder.d.ts.map +1 -1
  95. package/dist/ism/metadata/builder.hardhat-test.js +0 -1
  96. package/dist/ism/metadata/builder.hardhat-test.js.map +1 -1
  97. package/dist/ism/metadata/builder.js +7 -7
  98. package/dist/ism/metadata/builder.js.map +1 -1
  99. package/dist/ism/metadata/ccipread.d.ts +5 -4
  100. package/dist/ism/metadata/ccipread.d.ts.map +1 -1
  101. package/dist/ism/metadata/ccipread.hardhat-test.js +7 -13
  102. package/dist/ism/metadata/ccipread.hardhat-test.js.map +1 -1
  103. package/dist/ism/metadata/ccipread.js +9 -8
  104. package/dist/ism/metadata/ccipread.js.map +1 -1
  105. package/dist/ism/metadata/decode.js +2 -2
  106. package/dist/ism/metadata/decode.js.map +1 -1
  107. package/dist/ism/metadata/routing.d.ts +4 -2
  108. package/dist/ism/metadata/routing.d.ts.map +1 -1
  109. package/dist/ism/metadata/routing.js +33 -39
  110. package/dist/ism/metadata/routing.js.map +1 -1
  111. package/dist/ism/types.d.ts +77 -19
  112. package/dist/ism/types.d.ts.map +1 -1
  113. package/dist/ism/types.js +26 -12
  114. package/dist/ism/types.js.map +1 -1
  115. package/dist/ism/utils.d.ts.map +1 -1
  116. package/dist/ism/utils.js +12 -10
  117. package/dist/ism/utils.js.map +1 -1
  118. package/dist/middleware/account/InterchainAccount.d.ts +52 -2
  119. package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
  120. package/dist/middleware/account/InterchainAccount.js +53 -10
  121. package/dist/middleware/account/InterchainAccount.js.map +1 -1
  122. package/dist/middleware/account/InterchainAccountChecker.d.ts +3 -6
  123. package/dist/middleware/account/InterchainAccountChecker.d.ts.map +1 -1
  124. package/dist/middleware/account/InterchainAccountChecker.js +2 -17
  125. package/dist/middleware/account/InterchainAccountChecker.js.map +1 -1
  126. package/dist/middleware/account/InterchainAccountDeployer.d.ts +3 -8
  127. package/dist/middleware/account/InterchainAccountDeployer.d.ts.map +1 -1
  128. package/dist/middleware/account/InterchainAccountDeployer.js +11 -31
  129. package/dist/middleware/account/InterchainAccountDeployer.js.map +1 -1
  130. package/dist/middleware/account/accounts.hardhat-test.js +10 -1
  131. package/dist/middleware/account/accounts.hardhat-test.js.map +1 -1
  132. package/dist/middleware/account/contracts.d.ts +1 -4
  133. package/dist/middleware/account/contracts.d.ts.map +1 -1
  134. package/dist/middleware/account/contracts.js +1 -4
  135. package/dist/middleware/account/contracts.js.map +1 -1
  136. package/dist/middleware/account/types.d.ts +2 -2
  137. package/dist/providers/SmartProvider/SmartProvider.d.ts.map +1 -1
  138. package/dist/providers/SmartProvider/SmartProvider.foundry-test.js +6 -0
  139. package/dist/providers/SmartProvider/SmartProvider.foundry-test.js.map +1 -1
  140. package/dist/providers/SmartProvider/SmartProvider.js +7 -3
  141. package/dist/providers/SmartProvider/SmartProvider.js.map +1 -1
  142. package/dist/providers/transactions/submitter/builder/types.d.ts +10 -10
  143. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.d.ts +2 -3
  144. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.d.ts.map +1 -1
  145. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.js +20 -16
  146. package/dist/providers/transactions/submitter/ethersV5/EV5GnosisSafeTxSubmitter.js.map +1 -1
  147. package/dist/providers/transactions/transformer/ethersV5/types.d.ts +3 -3
  148. package/dist/providers/transactions/transformer/types.d.ts +3 -3
  149. package/dist/rebalancer/types.d.ts +875 -0
  150. package/dist/rebalancer/types.d.ts.map +1 -0
  151. package/dist/rebalancer/types.js +119 -0
  152. package/dist/rebalancer/types.js.map +1 -0
  153. package/dist/router/EvmRouterReader.d.ts +18 -0
  154. package/dist/router/EvmRouterReader.d.ts.map +1 -0
  155. package/dist/router/EvmRouterReader.js +60 -0
  156. package/dist/router/EvmRouterReader.js.map +1 -0
  157. package/dist/router/HyperlaneRouterChecker.d.ts +3 -0
  158. package/dist/router/HyperlaneRouterChecker.d.ts.map +1 -1
  159. package/dist/router/HyperlaneRouterChecker.js +14 -4
  160. package/dist/router/HyperlaneRouterChecker.js.map +1 -1
  161. package/dist/router/types.d.ts +139 -31
  162. package/dist/router/types.d.ts.map +1 -1
  163. package/dist/router/types.js +13 -4
  164. package/dist/router/types.js.map +1 -1
  165. package/dist/token/CosmosNativeWarpRouteReader.d.ts +51 -0
  166. package/dist/token/CosmosNativeWarpRouteReader.d.ts.map +1 -0
  167. package/dist/token/CosmosNativeWarpRouteReader.js +123 -0
  168. package/dist/token/CosmosNativeWarpRouteReader.js.map +1 -0
  169. package/dist/token/EvmERC20WarpModule.d.ts +13 -0
  170. package/dist/token/EvmERC20WarpModule.d.ts.map +1 -1
  171. package/dist/token/EvmERC20WarpModule.hardhat-test.js +354 -9
  172. package/dist/token/EvmERC20WarpModule.hardhat-test.js.map +1 -1
  173. package/dist/token/EvmERC20WarpModule.js +211 -9
  174. package/dist/token/EvmERC20WarpModule.js.map +1 -1
  175. package/dist/token/EvmERC20WarpRouteReader.d.ts +7 -11
  176. package/dist/token/EvmERC20WarpRouteReader.d.ts.map +1 -1
  177. package/dist/token/EvmERC20WarpRouteReader.js +97 -45
  178. package/dist/token/EvmERC20WarpRouteReader.js.map +1 -1
  179. package/dist/token/TokenMetadataMap.d.ts +1 -2
  180. package/dist/token/TokenMetadataMap.d.ts.map +1 -1
  181. package/dist/token/TokenMetadataMap.js +2 -20
  182. package/dist/token/TokenMetadataMap.js.map +1 -1
  183. package/dist/token/TokenStandard.d.ts +5 -1
  184. package/dist/token/TokenStandard.d.ts.map +1 -1
  185. package/dist/token/TokenStandard.js +29 -1
  186. package/dist/token/TokenStandard.js.map +1 -1
  187. package/dist/token/adapters/CosmosModuleTokenAdapter.d.ts +1 -1
  188. package/dist/token/adapters/CosmosModuleTokenAdapter.d.ts.map +1 -1
  189. package/dist/token/adapters/CosmosModuleTokenAdapter.js +7 -4
  190. package/dist/token/adapters/CosmosModuleTokenAdapter.js.map +1 -1
  191. package/dist/token/adapters/EvmTokenAdapter.d.ts +14 -2
  192. package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
  193. package/dist/token/adapters/EvmTokenAdapter.js +64 -3
  194. package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
  195. package/dist/token/adapters/ITokenAdapter.d.ts +9 -1
  196. package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -1
  197. package/dist/token/config.d.ts +25 -0
  198. package/dist/token/config.d.ts.map +1 -1
  199. package/dist/token/config.js +25 -0
  200. package/dist/token/config.js.map +1 -1
  201. package/dist/token/configUtils.d.ts.map +1 -1
  202. package/dist/token/configUtils.js +13 -3
  203. package/dist/token/configUtils.js.map +1 -1
  204. package/dist/token/configUtils.test.js +2 -2
  205. package/dist/token/configUtils.test.js.map +1 -1
  206. package/dist/token/contracts.d.ts +37 -31
  207. package/dist/token/contracts.d.ts.map +1 -1
  208. package/dist/token/contracts.js +8 -1
  209. package/dist/token/contracts.js.map +1 -1
  210. package/dist/token/deploy.d.ts +12 -5
  211. package/dist/token/deploy.d.ts.map +1 -1
  212. package/dist/token/deploy.js +140 -5
  213. package/dist/token/deploy.js.map +1 -1
  214. package/dist/token/types.d.ts +2812 -83
  215. package/dist/token/types.d.ts.map +1 -1
  216. package/dist/token/types.js +76 -5
  217. package/dist/token/types.js.map +1 -1
  218. package/dist/utils/decimals.d.ts +3 -0
  219. package/dist/utils/decimals.d.ts.map +1 -0
  220. package/dist/utils/decimals.js +34 -0
  221. package/dist/utils/decimals.js.map +1 -0
  222. package/dist/utils/decimals.test.d.ts +2 -0
  223. package/dist/utils/decimals.test.d.ts.map +1 -0
  224. package/dist/utils/decimals.test.js +173 -0
  225. package/dist/utils/decimals.test.js.map +1 -0
  226. package/dist/warp/WarpCore.d.ts.map +1 -1
  227. package/dist/warp/WarpCore.js +2 -1
  228. package/dist/warp/WarpCore.js.map +1 -1
  229. package/package.json +12 -8
@@ -1,18 +1,28 @@
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';
18
+ import { hypERC20contracts } from './contracts.js';
14
19
  import { HypERC20Deployer } from './deploy.js';
15
- import { HypTokenRouterConfigSchema, derivedHookAddress, derivedIsmAddress, } from './types.js';
20
+ import { HypTokenRouterConfigSchema, VERSION_ERROR_MESSAGE, contractVersionMatchesDependency, derivedHookAddress, derivedIsmAddress, isMovableCollateralTokenConfig, } from './types.js';
21
+ const getAllowedRebalancingBridgesByDomain = (allowedRebalancingBridgesByDomain) => {
22
+ return objMap(allowedRebalancingBridgesByDomain, (_domainId, allowedRebalancingBridges) => {
23
+ return new Set(allowedRebalancingBridges.map((bridgeConfig) => normalizeAddressEvm(bridgeConfig.bridge)));
24
+ });
25
+ };
16
26
  export class EvmERC20WarpModule extends HyperlaneModule {
17
27
  multiProvider;
18
28
  ccipContractCache;
@@ -61,7 +71,7 @@ export class EvmERC20WarpModule extends HyperlaneModule {
61
71
  * 1. createOwnershipUpdateTxs() must always be LAST because no updates possible after ownership transferred
62
72
  * 2. createRemoteRoutersUpdateTxs() must always be BEFORE createSetDestinationGasUpdateTxs() because gas enumeration depends on domains
63
73
  */
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));
74
+ 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
75
  return transactions;
66
76
  }
67
77
  /**
@@ -128,6 +138,137 @@ export class EvmERC20WarpModule extends HyperlaneModule {
128
138
  });
129
139
  return updateTransactions;
130
140
  }
141
+ createAddRebalancersUpdateTxs(actualConfig, expectedConfig) {
142
+ actualConfig.type;
143
+ if (!isMovableCollateralTokenConfig(expectedConfig) ||
144
+ !isMovableCollateralTokenConfig(actualConfig)) {
145
+ return [];
146
+ }
147
+ if (!expectedConfig.allowedRebalancers) {
148
+ return [];
149
+ }
150
+ const formattedExpectedRebalancers = new Set(expectedConfig.allowedRebalancers.map(normalizeAddressEvm));
151
+ const formattedActualRebalancers = new Set((actualConfig.allowedRebalancers ?? []).map(normalizeAddressEvm));
152
+ const rebalancersToAdd = Array.from(difference(formattedExpectedRebalancers, formattedActualRebalancers));
153
+ if (rebalancersToAdd.length === 0) {
154
+ return [];
155
+ }
156
+ return rebalancersToAdd.map((rebalancerToAdd) => ({
157
+ chainId: this.chainId,
158
+ annotation: `Adding rebalancer role to "${rebalancerToAdd}" on token "${this.args.addresses.deployedTokenRoute}" on chain "${this.chainName}"`,
159
+ to: this.args.addresses.deployedTokenRoute,
160
+ data: MovableCollateralRouter__factory.createInterface().encodeFunctionData('addRebalancer(address)', [rebalancerToAdd]),
161
+ }));
162
+ }
163
+ createRemoveRebalancersUpdateTxs(actualConfig, expectedConfig) {
164
+ actualConfig.type;
165
+ if (!isMovableCollateralTokenConfig(expectedConfig) ||
166
+ !isMovableCollateralTokenConfig(actualConfig)) {
167
+ return [];
168
+ }
169
+ if (!expectedConfig.allowedRebalancers) {
170
+ return [];
171
+ }
172
+ const formattedExpectedRebalancers = new Set(expectedConfig.allowedRebalancers.map(normalizeAddressEvm));
173
+ const formattedActualRebalancers = new Set((actualConfig.allowedRebalancers ?? []).map(normalizeAddressEvm));
174
+ const rebalancersToRemove = Array.from(difference(formattedActualRebalancers, formattedExpectedRebalancers));
175
+ if (rebalancersToRemove.length === 0) {
176
+ return [];
177
+ }
178
+ return rebalancersToRemove.map((rebalancerToRemove) => ({
179
+ chainId: this.chainId,
180
+ annotation: `Removing rebalancer role from "${rebalancerToRemove}" on token "${this.args.addresses.deployedTokenRoute}" on chain "${this.chainName}"`,
181
+ to: this.args.addresses.deployedTokenRoute,
182
+ data: MovableCollateralRouter__factory.createInterface().encodeFunctionData('removeRebalancer(address)', [rebalancerToRemove]),
183
+ }));
184
+ }
185
+ async getAllowedBridgesApprovalTxs(actualConfig, expectedConfig) {
186
+ if (!isMovableCollateralTokenConfig(expectedConfig) ||
187
+ !isMovableCollateralTokenConfig(actualConfig)) {
188
+ return [];
189
+ }
190
+ if (!expectedConfig.allowedRebalancingBridges) {
191
+ return [];
192
+ }
193
+ const tokensToApproveByAllowedBridge = Object.values(expectedConfig.allowedRebalancingBridges).reduce((acc, allowedBridgesConfigs) => {
194
+ allowedBridgesConfigs.forEach((bridgeConfig) => {
195
+ acc[bridgeConfig.bridge] ??= [];
196
+ acc[bridgeConfig.bridge].push(...(bridgeConfig.approvedTokens ?? []));
197
+ });
198
+ return acc;
199
+ },
200
+ // allowed bridge -> tokens to approve
201
+ {});
202
+ const filteredTokensToApproveByAllowedBridge = await promiseObjAll(objMap(tokensToApproveByAllowedBridge, async (bridge, tokens) => {
203
+ const filteredApprovals = [];
204
+ for (const token of tokens) {
205
+ const instance = IERC20__factory.connect(token, this.multiProvider.getProvider(this.chainId));
206
+ const allowance = await instance.allowance(this.args.addresses.deployedTokenRoute, bridge);
207
+ if (allowance.toBigInt() !== UINT_256_MAX) {
208
+ filteredApprovals.push(token);
209
+ }
210
+ }
211
+ return filteredApprovals;
212
+ }));
213
+ return Object.entries(filteredTokensToApproveByAllowedBridge).flatMap(([bridge, tokensToApprove]) => tokensToApprove.map((tokenToApprove) => ({
214
+ chainId: this.chainId,
215
+ annotation: `Approving allowed bridge "${bridge}" to spend token "${tokenToApprove}" on behalf of "${this.args.addresses.deployedTokenRoute}" on chain "${this.chainName}"`,
216
+ to: this.args.addresses.deployedTokenRoute,
217
+ data: MovableCollateralRouter__factory.createInterface().encodeFunctionData('approveTokenForBridge(address,address)', [tokenToApprove, bridge]),
218
+ })));
219
+ }
220
+ async createAddAllowedBridgesUpdateTxs(actualConfig, expectedConfig) {
221
+ if (!isMovableCollateralTokenConfig(expectedConfig) ||
222
+ !isMovableCollateralTokenConfig(actualConfig)) {
223
+ return [];
224
+ }
225
+ if (!expectedConfig.allowedRebalancingBridges) {
226
+ return [];
227
+ }
228
+ const actualAllowedBridges = getAllowedRebalancingBridgesByDomain(resolveRouterMapConfig(this.multiProvider, actualConfig.allowedRebalancingBridges ?? {}));
229
+ const expectedAllowedBridges = getAllowedRebalancingBridgesByDomain(resolveRouterMapConfig(this.multiProvider, expectedConfig.allowedRebalancingBridges));
230
+ const rebalancingBridgesToAddByDomain = objMap(expectedAllowedBridges, (domain, bridges) => {
231
+ const actualBridges = actualAllowedBridges[domain] ?? new Set();
232
+ return Array.from(difference(bridges, actualBridges));
233
+ });
234
+ const bridgesToAllow = Object.entries(rebalancingBridgesToAddByDomain).flatMap(([domain, allowedBridgesToAdd]) => {
235
+ return allowedBridgesToAdd.map((bridgeToAdd) => {
236
+ return {
237
+ chainId: this.chainId,
238
+ annotation: `Adding allowed bridge "${bridgeToAdd}" on token "${this.args.addresses.deployedTokenRoute}" on chain "${this.chainName}"`,
239
+ to: this.args.addresses.deployedTokenRoute,
240
+ data: MovableCollateralRouter__factory.createInterface().encodeFunctionData('addBridge(uint32,address)', [domain, bridgeToAdd]),
241
+ };
242
+ });
243
+ });
244
+ const approvalTxs = await this.getAllowedBridgesApprovalTxs(actualConfig, expectedConfig);
245
+ return [...bridgesToAllow, ...approvalTxs];
246
+ }
247
+ createRemoveBridgesTxs(actualConfig, expectedConfig) {
248
+ if (!isMovableCollateralTokenConfig(expectedConfig) ||
249
+ !isMovableCollateralTokenConfig(actualConfig)) {
250
+ return [];
251
+ }
252
+ if (!expectedConfig.allowedRebalancingBridges) {
253
+ return [];
254
+ }
255
+ const actualAllowedBridges = getAllowedRebalancingBridgesByDomain(resolveRouterMapConfig(this.multiProvider, actualConfig.allowedRebalancingBridges ?? {}));
256
+ const expectedAllowedBridges = getAllowedRebalancingBridgesByDomain(resolveRouterMapConfig(this.multiProvider, expectedConfig.allowedRebalancingBridges));
257
+ const rebalancingBridgesToAddByDomain = objMap(actualAllowedBridges, (domain, bridges) => {
258
+ const expectedBridges = expectedAllowedBridges[domain] ?? new Set();
259
+ return Array.from(difference(bridges, expectedBridges));
260
+ });
261
+ return Object.entries(rebalancingBridgesToAddByDomain).flatMap(([domain, allowedBridgesToAdd]) => {
262
+ return allowedBridgesToAdd.map((bridgeToAdd) => {
263
+ return {
264
+ chainId: this.chainId,
265
+ annotation: `Removing allowed bridge "${bridgeToAdd}" on token "${this.args.addresses.deployedTokenRoute}" on chain "${this.chainName}"`,
266
+ to: this.args.addresses.deployedTokenRoute,
267
+ data: MovableCollateralRouter__factory.createInterface().encodeFunctionData('removeBridge(uint32,address)', [domain, bridgeToAdd]),
268
+ };
269
+ });
270
+ });
271
+ }
131
272
  /**
132
273
  * Create a transaction to update the remote routers for the Warp Route contract.
133
274
  *
@@ -141,9 +282,9 @@ export class EvmERC20WarpModule extends HyperlaneModule {
141
282
  return [];
142
283
  }
143
284
  assert(actualConfig.destinationGas, 'actualDestinationGas is undefined');
144
- assert(expectedConfig.destinationGas, 'actualDestinationGas is undefined');
145
- const { destinationGas: actualDestinationGas } = actualConfig;
146
- const { destinationGas: expectedDestinationGas } = expectedConfig;
285
+ assert(expectedConfig.destinationGas, 'expectedDestinationGas is undefined');
286
+ const actualDestinationGas = resolveRouterMapConfig(this.multiProvider, actualConfig.destinationGas);
287
+ const expectedDestinationGas = resolveRouterMapConfig(this.multiProvider, expectedConfig.destinationGas);
147
288
  if (!deepEquals(actualDestinationGas, expectedDestinationGas)) {
148
289
  const contractToUpdate = GasRouter__factory.connect(this.args.addresses.deployedTokenRoute, this.multiProvider.getProvider(this.domainId));
149
290
  // Convert { 1: 2, 2: 3, ... } to [{ 1: 2 }, { 2: 3 }]
@@ -296,6 +437,50 @@ export class EvmERC20WarpModule extends HyperlaneModule {
296
437
  const { deployedHook } = hookModule.serialize();
297
438
  return { deployedHook, updateTransactions };
298
439
  }
440
+ /**
441
+ * Creates a transaction to upgrade the Warp Route implementation if the package version is below specified version.
442
+ *
443
+ * @param actualConfig - The current on-chain configuration
444
+ * @param expectedConfig - The expected configuration
445
+ * @returns An array of transactions to upgrade the implementation if needed
446
+ */
447
+ async upgradeWarpRouteImplementationTx(actualConfig, expectedConfig) {
448
+ const updateTransactions = [];
449
+ // This should be impossible since we try catch the call to `PACKAGE_VERSION`
450
+ // in `EvmERC20WarpRouteReader.fetchPackageVersion`
451
+ assert(actualConfig.contractVersion, 'Actual contract version is undefined');
452
+ // Only upgrade if the user specifies a version
453
+ if (!expectedConfig.contractVersion) {
454
+ return [];
455
+ }
456
+ const comparisonValue = compareVersions(expectedConfig.contractVersion, actualConfig.contractVersion);
457
+ // Expected version is lower than actual version, no upgrade is possible
458
+ if (comparisonValue === -1) {
459
+ throw new Error(`Expected contract version ${expectedConfig.contractVersion} is lower than actual contract version ${actualConfig.contractVersion}`);
460
+ }
461
+ // Versions are the same, no upgrade needed
462
+ if (comparisonValue === 0) {
463
+ return [];
464
+ }
465
+ // You can only upgrade to the contract version (see `PackageVersioned`)
466
+ // defined by the @hyperlane-xyz/core package
467
+ assert(contractVersionMatchesDependency(expectedConfig.contractVersion), VERSION_ERROR_MESSAGE);
468
+ this.logger.info(`Upgrading Warp Route implementation on ${this.args.chain} from ${actualConfig.contractVersion} to ${expectedConfig.contractVersion}`);
469
+ const deployer = new HypERC20Deployer(this.multiProvider);
470
+ const constructorArgs = await deployer.constructorArgs(this.chainName, expectedConfig);
471
+ const implementation = await deployer.deployContractWithName(this.chainName, expectedConfig.type, hypERC20contracts[expectedConfig.type], constructorArgs, undefined, false);
472
+ const provider = this.multiProvider.getProvider(this.domainId);
473
+ const proxyAddress = this.args.addresses.deployedTokenRoute;
474
+ const proxyAdminAddress = await proxyAdmin(provider, proxyAddress);
475
+ assert(await isInitialized(provider, proxyAddress), 'Proxy is not initialized');
476
+ updateTransactions.push({
477
+ chainId: this.chainId,
478
+ annotation: `Upgrading Warp Route implementation on ${this.args.chain}`,
479
+ to: proxyAdminAddress,
480
+ data: ProxyAdmin__factory.createInterface().encodeFunctionData('upgrade', [proxyAddress, implementation.address]),
481
+ });
482
+ return updateTransactions;
483
+ }
299
484
  /**
300
485
  * Deploys the Warp Route.
301
486
  *
@@ -317,11 +502,28 @@ export class EvmERC20WarpModule extends HyperlaneModule {
317
502
  chain,
318
503
  config,
319
504
  }, ccipContractCache, contractVerifier);
505
+ const actualConfig = await warpModule.read();
320
506
  if (config.remoteRouters && !isObjEmpty(config.remoteRouters)) {
321
- const enrollRemoteTxs = await warpModule.update(config); // @TODO Remove when EvmERC20WarpModule.create can be used
507
+ const enrollRemoteTxs = await warpModule.createEnrollRemoteRoutersUpdateTxs(actualConfig, config); // @TODO Remove when EvmERC20WarpModule.create can be used
322
508
  const onlyTxIndex = 0;
323
509
  await multiProvider.sendTransaction(chain, enrollRemoteTxs[onlyTxIndex]);
324
510
  }
511
+ if (isMovableCollateralTokenConfig(config) &&
512
+ config.allowedRebalancers &&
513
+ config.allowedRebalancers.length !== 0) {
514
+ const addRebalancerTxs = await warpModule.createAddRebalancersUpdateTxs(actualConfig, config); // @TODO Remove when EvmERC20WarpModule.create can be used
515
+ for (const tx of addRebalancerTxs) {
516
+ await multiProvider.sendTransaction(chain, tx);
517
+ }
518
+ }
519
+ if (isMovableCollateralTokenConfig(config) &&
520
+ config.allowedRebalancingBridges &&
521
+ !isObjEmpty(config.allowedRebalancingBridges)) {
522
+ const addBridgesTxs = await warpModule.createAddAllowedBridgesUpdateTxs(actualConfig, config); // @TODO Remove when EvmERC20WarpModule.create can be used
523
+ for (const tx of addBridgesTxs) {
524
+ await multiProvider.sendTransaction(chain, tx);
525
+ }
526
+ }
325
527
  return warpModule;
326
528
  }
327
529
  }
@@ -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":"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"}
@@ -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.cause.code && err.cause.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);