@hyperlane-xyz/sdk 22.0.0 → 24.0.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.
- package/dist/block-explorer/utils.d.ts.map +1 -1
- package/dist/block-explorer/utils.js +1 -0
- package/dist/block-explorer/utils.js.map +1 -1
- package/dist/consts/igp.d.ts +1 -0
- package/dist/consts/igp.d.ts.map +1 -1
- package/dist/consts/igp.js +13 -3
- package/dist/consts/igp.js.map +1 -1
- package/dist/consts/multisigIsm.d.ts.map +1 -1
- package/dist/consts/multisigIsm.js +23 -148
- package/dist/consts/multisigIsm.js.map +1 -1
- package/dist/contracts/contracts.d.ts.map +1 -1
- package/dist/contracts/contracts.js +2 -0
- package/dist/contracts/contracts.js.map +1 -1
- package/dist/core/HyperlaneCore.d.ts +24 -0
- package/dist/core/HyperlaneCore.d.ts.map +1 -1
- package/dist/core/HyperlaneCore.js +38 -3
- package/dist/core/HyperlaneCore.js.map +1 -1
- package/dist/core/HyperlaneCoreDeployer.d.ts.map +1 -1
- package/dist/core/HyperlaneCoreDeployer.js +6 -2
- package/dist/core/HyperlaneCoreDeployer.js.map +1 -1
- package/dist/core/MultiProtocolCore.d.ts.map +1 -1
- package/dist/core/MultiProtocolCore.js +3 -0
- package/dist/core/MultiProtocolCore.js.map +1 -1
- package/dist/core/adapters/AleoCoreAdapter.d.ts +23 -0
- package/dist/core/adapters/AleoCoreAdapter.d.ts.map +1 -0
- package/dist/core/adapters/AleoCoreAdapter.js +40 -0
- package/dist/core/adapters/AleoCoreAdapter.js.map +1 -0
- package/dist/core/adapters/CosmNativeCoreAdapter.d.ts +1 -0
- package/dist/core/adapters/CosmNativeCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/CosmNativeCoreAdapter.js +7 -0
- package/dist/core/adapters/CosmNativeCoreAdapter.js.map +1 -1
- package/dist/core/adapters/CosmWasmCoreAdapter.d.ts +1 -0
- package/dist/core/adapters/CosmWasmCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/CosmWasmCoreAdapter.js +3 -0
- package/dist/core/adapters/CosmWasmCoreAdapter.js.map +1 -1
- package/dist/core/adapters/EvmCoreAdapter.d.ts +1 -0
- package/dist/core/adapters/EvmCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/EvmCoreAdapter.js +4 -0
- package/dist/core/adapters/EvmCoreAdapter.js.map +1 -1
- package/dist/core/adapters/RadixCoreAdapter.d.ts +1 -0
- package/dist/core/adapters/RadixCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/RadixCoreAdapter.js +7 -0
- package/dist/core/adapters/RadixCoreAdapter.js.map +1 -1
- package/dist/core/adapters/SealevelCoreAdapter.d.ts +1 -0
- package/dist/core/adapters/SealevelCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/SealevelCoreAdapter.js +7 -0
- package/dist/core/adapters/SealevelCoreAdapter.js.map +1 -1
- package/dist/core/adapters/StarknetCoreAdapter.d.ts +1 -0
- package/dist/core/adapters/StarknetCoreAdapter.d.ts.map +1 -1
- package/dist/core/adapters/StarknetCoreAdapter.js +5 -0
- package/dist/core/adapters/StarknetCoreAdapter.js.map +1 -1
- package/dist/core/adapters/types.d.ts +7 -0
- package/dist/core/adapters/types.d.ts.map +1 -1
- package/dist/core/types.d.ts +154 -38
- package/dist/core/types.d.ts.map +1 -1
- package/dist/deploy/proxy.d.ts +2 -0
- package/dist/deploy/proxy.d.ts.map +1 -1
- package/dist/deploy/proxy.js +10 -4
- package/dist/deploy/proxy.js.map +1 -1
- package/dist/deploy/proxy.test.js +44 -1
- package/dist/deploy/proxy.test.js.map +1 -1
- package/dist/deploy/verify/BaseContractVerifier.d.ts.map +1 -1
- package/dist/deploy/verify/BaseContractVerifier.js +2 -1
- package/dist/deploy/verify/BaseContractVerifier.js.map +1 -1
- package/dist/deploy/verify/PostDeploymentContractVerifier.d.ts.map +1 -1
- package/dist/deploy/verify/PostDeploymentContractVerifier.js +2 -1
- package/dist/deploy/verify/PostDeploymentContractVerifier.js.map +1 -1
- package/dist/deploy/warp.js +3 -3
- package/dist/deploy/warp.js.map +1 -1
- package/dist/gas/utils.d.ts.map +1 -1
- package/dist/gas/utils.js +11 -8
- package/dist/gas/utils.js.map +1 -1
- package/dist/hook/EvmHookModule.hardhat-test.js +16 -10
- package/dist/hook/EvmHookModule.hardhat-test.js.map +1 -1
- package/dist/hook/EvmHookReader.d.ts.map +1 -1
- package/dist/hook/EvmHookReader.js +70 -32
- package/dist/hook/EvmHookReader.js.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.d.ts.map +1 -1
- package/dist/hook/HyperlaneHookDeployer.js +14 -6
- package/dist/hook/HyperlaneHookDeployer.js.map +1 -1
- package/dist/hook/types.d.ts +318 -14
- package/dist/hook/types.d.ts.map +1 -1
- package/dist/hook/types.js +49 -0
- package/dist/hook/types.js.map +1 -1
- package/dist/ica/types.d.ts +52 -12
- package/dist/ica/types.d.ts.map +1 -1
- package/dist/index.d.ts +10 -12
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +9 -10
- package/dist/index.js.map +1 -1
- package/dist/ism/EvmIsmReader.d.ts.map +1 -1
- package/dist/ism/EvmIsmReader.js +9 -9
- package/dist/ism/EvmIsmReader.js.map +1 -1
- package/dist/ism/EvmIsmReader.test.js +13 -1
- package/dist/ism/EvmIsmReader.test.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.d.ts.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.d.ts +1 -3
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.d.ts.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js +6 -96
- package/dist/ism/HyperlaneIsmFactory.hardhat-test.js.map +1 -1
- package/dist/ism/HyperlaneIsmFactory.js +2 -0
- package/dist/ism/HyperlaneIsmFactory.js.map +1 -1
- package/dist/ism/multisig.js +2 -2
- package/dist/ism/multisig.js.map +1 -1
- package/dist/ism/types.d.ts +221 -1
- package/dist/ism/types.d.ts.map +1 -1
- package/dist/ism/types.js +49 -0
- package/dist/ism/types.js.map +1 -1
- package/dist/ism/utils.d.ts +1 -0
- package/dist/ism/utils.d.ts.map +1 -1
- package/dist/ism/utils.js +4 -1
- package/dist/ism/utils.js.map +1 -1
- package/dist/mailbox/serialization.js +2 -2
- package/dist/mailbox/serialization.js.map +1 -1
- package/dist/metadata/agentConfig.d.ts +132 -132
- package/dist/metadata/blockExplorer.d.ts.map +1 -1
- package/dist/metadata/blockExplorer.js +2 -0
- package/dist/metadata/blockExplorer.js.map +1 -1
- package/dist/metadata/chainMetadataTypes.d.ts +73 -71
- package/dist/metadata/chainMetadataTypes.d.ts.map +1 -1
- package/dist/metadata/chainMetadataTypes.js +6 -8
- package/dist/metadata/chainMetadataTypes.js.map +1 -1
- package/dist/metadata/customZodTypes.d.ts +23 -0
- package/dist/metadata/customZodTypes.d.ts.map +1 -1
- package/dist/metadata/customZodTypes.js +33 -0
- package/dist/metadata/customZodTypes.js.map +1 -1
- package/dist/metadata/forwardCompatibleEnum.test.d.ts +2 -0
- package/dist/metadata/forwardCompatibleEnum.test.d.ts.map +1 -0
- package/dist/metadata/forwardCompatibleEnum.test.js +299 -0
- package/dist/metadata/forwardCompatibleEnum.test.js.map +1 -0
- package/dist/metadata/matchingList.d.ts +4 -4
- package/dist/metadata/warpRouteConfig.d.ts +10 -8
- package/dist/metadata/warpRouteConfig.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccount.d.ts +21 -1
- package/dist/middleware/account/InterchainAccount.d.ts.map +1 -1
- package/dist/middleware/account/InterchainAccount.js +120 -8
- package/dist/middleware/account/InterchainAccount.js.map +1 -1
- package/dist/middleware/account/InterchainAccount.test.d.ts +2 -0
- package/dist/middleware/account/InterchainAccount.test.d.ts.map +1 -0
- package/dist/middleware/account/InterchainAccount.test.js +279 -0
- package/dist/middleware/account/InterchainAccount.test.js.map +1 -0
- package/dist/middleware/account/types.d.ts +37 -3
- package/dist/middleware/account/types.d.ts.map +1 -1
- package/dist/middleware/account/types.js +8 -3
- package/dist/middleware/account/types.js.map +1 -1
- package/dist/providers/MultiProtocolProvider.d.ts.map +1 -1
- package/dist/providers/MultiProtocolProvider.js +4 -1
- package/dist/providers/MultiProtocolProvider.js.map +1 -1
- package/dist/providers/MultiProvider.d.ts +26 -4
- package/dist/providers/MultiProvider.d.ts.map +1 -1
- package/dist/providers/MultiProvider.js +59 -5
- package/dist/providers/MultiProvider.js.map +1 -1
- package/dist/providers/ProviderType.d.ts +9 -3
- package/dist/providers/ProviderType.d.ts.map +1 -1
- package/dist/providers/ProviderType.js +1 -1
- package/dist/providers/ProviderType.js.map +1 -1
- package/dist/providers/SmartProvider/SmartProvider.d.ts.map +1 -1
- package/dist/providers/SmartProvider/SmartProvider.foundry-test.js +2 -1
- package/dist/providers/SmartProvider/SmartProvider.foundry-test.js.map +1 -1
- package/dist/providers/SmartProvider/SmartProvider.js +43 -7
- package/dist/providers/SmartProvider/SmartProvider.js.map +1 -1
- package/dist/providers/SmartProvider/SmartProvider.test.js +77 -28
- package/dist/providers/SmartProvider/SmartProvider.test.js.map +1 -1
- package/dist/providers/explorerHealthTest.d.ts.map +1 -1
- package/dist/providers/explorerHealthTest.js +1 -0
- package/dist/providers/explorerHealthTest.js.map +1 -1
- package/dist/providers/providerBuilders.d.ts +2 -3
- package/dist/providers/providerBuilders.d.ts.map +1 -1
- package/dist/providers/providerBuilders.js.map +1 -1
- package/dist/providers/rpcHealthTest.d.ts.map +1 -1
- package/dist/providers/rpcHealthTest.js +6 -2
- package/dist/providers/rpcHealthTest.js.map +1 -1
- package/dist/providers/transactions/submitter/IcaTxSubmitter.d.ts.map +1 -1
- package/dist/providers/transactions/submitter/IcaTxSubmitter.js +4 -1
- package/dist/providers/transactions/submitter/IcaTxSubmitter.js.map +1 -1
- package/dist/router/types.d.ts +78 -18
- package/dist/router/types.d.ts.map +1 -1
- package/dist/test/testUtils.d.ts +10 -3
- package/dist/test/testUtils.d.ts.map +1 -1
- package/dist/test/testUtils.js +100 -3
- package/dist/test/testUtils.js.map +1 -1
- package/dist/token/{EvmERC20WarpModule.d.ts → EvmWarpModule.d.ts} +5 -5
- package/dist/token/EvmWarpModule.d.ts.map +1 -0
- package/dist/token/EvmWarpModule.hardhat-test.d.ts +2 -0
- package/dist/token/EvmWarpModule.hardhat-test.d.ts.map +1 -0
- package/dist/token/{EvmERC20WarpModule.hardhat-test.js → EvmWarpModule.hardhat-test.js} +45 -45
- package/dist/token/EvmWarpModule.hardhat-test.js.map +1 -0
- package/dist/token/{EvmERC20WarpModule.js → EvmWarpModule.js} +14 -11
- package/dist/token/EvmWarpModule.js.map +1 -0
- package/dist/token/{EvmERC20WarpRouteReader.d.ts → EvmWarpRouteReader.d.ts} +5 -5
- package/dist/token/EvmWarpRouteReader.d.ts.map +1 -0
- package/dist/token/EvmWarpRouteReader.hardhat-test.d.ts +2 -0
- package/dist/token/EvmWarpRouteReader.hardhat-test.d.ts.map +1 -0
- package/dist/token/{EvmERC20WarpRouteReader.hardhat-test.js → EvmWarpRouteReader.hardhat-test.js} +4 -4
- package/dist/token/EvmWarpRouteReader.hardhat-test.js.map +1 -0
- package/dist/token/{EvmERC20WarpRouteReader.js → EvmWarpRouteReader.js} +7 -6
- package/dist/token/EvmWarpRouteReader.js.map +1 -0
- package/dist/token/Token.d.ts.map +1 -1
- package/dist/token/Token.js +26 -2
- package/dist/token/Token.js.map +1 -1
- package/dist/token/TokenStandard.d.ts +6 -6
- package/dist/token/TokenStandard.d.ts.map +1 -1
- package/dist/token/TokenStandard.js +1 -0
- package/dist/token/TokenStandard.js.map +1 -1
- package/dist/token/adapters/AleoTokenAdapter.d.ts +60 -0
- package/dist/token/adapters/AleoTokenAdapter.d.ts.map +1 -0
- package/dist/token/adapters/AleoTokenAdapter.js +190 -0
- package/dist/token/adapters/AleoTokenAdapter.js.map +1 -0
- package/dist/token/adapters/EvmTokenAdapter.d.ts +26 -9
- package/dist/token/adapters/EvmTokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/EvmTokenAdapter.js +36 -31
- package/dist/token/adapters/EvmTokenAdapter.js.map +1 -1
- package/dist/token/adapters/ITokenAdapter.d.ts +5 -2
- package/dist/token/adapters/ITokenAdapter.d.ts.map +1 -1
- package/dist/token/adapters/utils.d.ts +7 -0
- package/dist/token/adapters/utils.d.ts.map +1 -0
- package/dist/token/adapters/utils.js +4 -0
- package/dist/token/adapters/utils.js.map +1 -0
- package/dist/token/checker.d.ts.map +1 -1
- package/dist/token/checker.js +1 -2
- package/dist/token/checker.js.map +1 -1
- package/dist/token/config.d.ts +3 -0
- package/dist/token/config.d.ts.map +1 -1
- package/dist/token/config.js +2 -0
- package/dist/token/config.js.map +1 -1
- package/dist/token/configUtils.d.ts.map +1 -1
- package/dist/token/configUtils.js +10 -2
- package/dist/token/configUtils.js.map +1 -1
- package/dist/token/contracts.d.ts.map +1 -1
- package/dist/token/contracts.js.map +1 -1
- package/dist/token/deploy.d.ts +2 -2
- package/dist/token/deploy.d.ts.map +1 -1
- package/dist/token/deploy.hardhat-test.js +4 -4
- package/dist/token/deploy.hardhat-test.js.map +1 -1
- package/dist/token/deploy.js.map +1 -1
- package/dist/token/nativeTokenMetadata.d.ts +2 -2
- package/dist/token/nativeTokenMetadata.d.ts.map +1 -1
- package/dist/token/nativeTokenMetadata.js.map +1 -1
- package/dist/token/types.d.ts +2389 -132
- package/dist/token/types.d.ts.map +1 -1
- package/dist/token/types.js +24 -6
- package/dist/token/types.js.map +1 -1
- package/dist/utils/gas.d.ts +29 -0
- package/dist/utils/gas.d.ts.map +1 -0
- package/dist/utils/gas.js +34 -0
- package/dist/utils/gas.js.map +1 -0
- package/package.json +11 -11
- package/dist/core/HyperlaneRelayer.d.ts +0 -600
- package/dist/core/HyperlaneRelayer.d.ts.map +0 -1
- package/dist/core/HyperlaneRelayer.js +0 -257
- package/dist/core/HyperlaneRelayer.js.map +0 -1
- package/dist/ism/metadata/aggregation.d.ts +0 -23
- package/dist/ism/metadata/aggregation.d.ts.map +0 -1
- package/dist/ism/metadata/aggregation.js +0 -92
- package/dist/ism/metadata/aggregation.js.map +0 -1
- package/dist/ism/metadata/aggregation.test.d.ts +0 -2
- package/dist/ism/metadata/aggregation.test.d.ts.map +0 -1
- package/dist/ism/metadata/aggregation.test.js +0 -37
- package/dist/ism/metadata/aggregation.test.js.map +0 -1
- package/dist/ism/metadata/arbL2ToL1.d.ts +0 -25
- package/dist/ism/metadata/arbL2ToL1.d.ts.map +0 -1
- package/dist/ism/metadata/arbL2ToL1.hardhat-test.d.ts +0 -2
- package/dist/ism/metadata/arbL2ToL1.hardhat-test.d.ts.map +0 -1
- package/dist/ism/metadata/arbL2ToL1.hardhat-test.js +0 -167
- package/dist/ism/metadata/arbL2ToL1.hardhat-test.js.map +0 -1
- package/dist/ism/metadata/arbL2ToL1.js +0 -133
- package/dist/ism/metadata/arbL2ToL1.js.map +0 -1
- package/dist/ism/metadata/builder.d.ts +0 -23
- package/dist/ism/metadata/builder.d.ts.map +0 -1
- package/dist/ism/metadata/builder.hardhat-test.d.ts +0 -2
- package/dist/ism/metadata/builder.hardhat-test.d.ts.map +0 -1
- package/dist/ism/metadata/builder.hardhat-test.js +0 -137
- package/dist/ism/metadata/builder.hardhat-test.js.map +0 -1
- package/dist/ism/metadata/builder.js +0 -87
- package/dist/ism/metadata/builder.js.map +0 -1
- package/dist/ism/metadata/ccipread.d.ts +0 -12
- package/dist/ism/metadata/ccipread.d.ts.map +0 -1
- package/dist/ism/metadata/ccipread.hardhat-test.d.ts +0 -2
- package/dist/ism/metadata/ccipread.hardhat-test.d.ts.map +0 -1
- package/dist/ism/metadata/ccipread.hardhat-test.js +0 -98
- package/dist/ism/metadata/ccipread.hardhat-test.js.map +0 -1
- package/dist/ism/metadata/ccipread.js +0 -73
- package/dist/ism/metadata/ccipread.js.map +0 -1
- package/dist/ism/metadata/decode.d.ts +0 -3
- package/dist/ism/metadata/decode.d.ts.map +0 -1
- package/dist/ism/metadata/decode.js +0 -34
- package/dist/ism/metadata/decode.js.map +0 -1
- package/dist/ism/metadata/multisig.d.ts +0 -57
- package/dist/ism/metadata/multisig.d.ts.map +0 -1
- package/dist/ism/metadata/multisig.js +0 -186
- package/dist/ism/metadata/multisig.js.map +0 -1
- package/dist/ism/metadata/multisig.test.d.ts +0 -2
- package/dist/ism/metadata/multisig.test.d.ts.map +0 -1
- package/dist/ism/metadata/multisig.test.js +0 -56
- package/dist/ism/metadata/multisig.test.js.map +0 -1
- package/dist/ism/metadata/null.d.ts +0 -15
- package/dist/ism/metadata/null.d.ts.map +0 -1
- package/dist/ism/metadata/null.js +0 -20
- package/dist/ism/metadata/null.js.map +0 -1
- package/dist/ism/metadata/routing.d.ts +0 -22
- package/dist/ism/metadata/routing.d.ts.map +0 -1
- package/dist/ism/metadata/routing.js +0 -72
- package/dist/ism/metadata/routing.js.map +0 -1
- package/dist/ism/metadata/types.d.ts +0 -20
- package/dist/ism/metadata/types.d.ts.map +0 -1
- package/dist/ism/metadata/types.js +0 -2
- package/dist/ism/metadata/types.js.map +0 -1
- package/dist/ism/metadata/types.test.d.ts +0 -5
- package/dist/ism/metadata/types.test.d.ts.map +0 -1
- package/dist/ism/metadata/types.test.js +0 -2
- package/dist/ism/metadata/types.test.js.map +0 -1
- package/dist/token/EvmERC20WarpModule.d.ts.map +0 -1
- package/dist/token/EvmERC20WarpModule.hardhat-test.d.ts +0 -2
- package/dist/token/EvmERC20WarpModule.hardhat-test.d.ts.map +0 -1
- package/dist/token/EvmERC20WarpModule.hardhat-test.js.map +0 -1
- package/dist/token/EvmERC20WarpModule.js.map +0 -1
- package/dist/token/EvmERC20WarpRouteReader.d.ts.map +0 -1
- package/dist/token/EvmERC20WarpRouteReader.hardhat-test.d.ts +0 -2
- package/dist/token/EvmERC20WarpRouteReader.hardhat-test.d.ts.map +0 -1
- package/dist/token/EvmERC20WarpRouteReader.hardhat-test.js.map +0 -1
- package/dist/token/EvmERC20WarpRouteReader.js.map +0 -1
- package/dist/utils/fetch.d.ts +0 -2
- package/dist/utils/fetch.d.ts.map +0 -1
- package/dist/utils/fetch.js +0 -12
- package/dist/utils/fetch.js.map +0 -1
|
@@ -13,7 +13,7 @@ import { HyperlaneIsmFactory } from '../ism/HyperlaneIsmFactory.js';
|
|
|
13
13
|
import { MultiProvider } from '../providers/MultiProvider.js';
|
|
14
14
|
import { randomAddress } from '../test/testUtils.js';
|
|
15
15
|
import { normalizeConfig } from '../utils/ism.js';
|
|
16
|
-
import {
|
|
16
|
+
import { EvmWarpModule } from './EvmWarpModule.js';
|
|
17
17
|
import { TokenType, isMovableCollateralTokenType, } from './config.js';
|
|
18
18
|
import { HypTokenRouterConfigSchema, derivedHookAddress, isEverclearTokenBridgeConfig, isMovableCollateralTokenConfig, } from './types.js';
|
|
19
19
|
chai.use(chaiAsPromised);
|
|
@@ -27,7 +27,7 @@ const randomRemoteRouters = (n) => {
|
|
|
27
27
|
}
|
|
28
28
|
return routers;
|
|
29
29
|
};
|
|
30
|
-
describe('
|
|
30
|
+
describe('EvmWarpModule', async () => {
|
|
31
31
|
const TOKEN_NAME = 'fake';
|
|
32
32
|
const TOKEN_SUPPLY = '100000000000000000000';
|
|
33
33
|
const TOKEN_DECIMALS = 18;
|
|
@@ -156,7 +156,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
156
156
|
token: token.address,
|
|
157
157
|
};
|
|
158
158
|
// Deploy using WarpModule
|
|
159
|
-
const evmERC20WarpModule = await
|
|
159
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
160
160
|
chain,
|
|
161
161
|
config,
|
|
162
162
|
multiProvider,
|
|
@@ -174,7 +174,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
174
174
|
...baseConfig,
|
|
175
175
|
};
|
|
176
176
|
// Deploy using WarpModule
|
|
177
|
-
const evmERC20WarpModule = await
|
|
177
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
178
178
|
chain,
|
|
179
179
|
config,
|
|
180
180
|
multiProvider,
|
|
@@ -200,7 +200,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
200
200
|
initialSupply: TOKEN_SUPPLY,
|
|
201
201
|
};
|
|
202
202
|
// Deploy using WarpModule
|
|
203
|
-
const evmERC20WarpModule = await
|
|
203
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
204
204
|
chain,
|
|
205
205
|
config,
|
|
206
206
|
multiProvider,
|
|
@@ -224,7 +224,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
224
224
|
...baseConfig,
|
|
225
225
|
};
|
|
226
226
|
// Deploy using WarpModule
|
|
227
|
-
const evmERC20WarpModule = await
|
|
227
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
228
228
|
chain,
|
|
229
229
|
config,
|
|
230
230
|
multiProvider,
|
|
@@ -246,7 +246,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
246
246
|
remoteRouters: randomRemoteRouters(numOfRouters),
|
|
247
247
|
};
|
|
248
248
|
// Deploy using WarpModule
|
|
249
|
-
const evmERC20WarpModule = await
|
|
249
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
250
250
|
chain,
|
|
251
251
|
config,
|
|
252
252
|
multiProvider,
|
|
@@ -260,7 +260,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
260
260
|
const rebalancers = new Set([randomAddress(), randomAddress()]);
|
|
261
261
|
const expectedRebalancers = Array.from(rebalancers);
|
|
262
262
|
const config = deepCopy(getMovableTokenConfig(expectedRebalancers)[tokenType]);
|
|
263
|
-
const evmERC20WarpModule = await
|
|
263
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
264
264
|
chain,
|
|
265
265
|
config,
|
|
266
266
|
multiProvider,
|
|
@@ -273,7 +273,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
273
273
|
it(`should create ${tokenType} token`, async () => {
|
|
274
274
|
const config = getEverclearTokenBridgeTokenConfig()[tokenType];
|
|
275
275
|
// Deploy using WarpModule
|
|
276
|
-
const evmERC20WarpModule = await
|
|
276
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
277
277
|
chain,
|
|
278
278
|
config,
|
|
279
279
|
multiProvider,
|
|
@@ -316,7 +316,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
316
316
|
},
|
|
317
317
|
};
|
|
318
318
|
// Deploy using WarpModule
|
|
319
|
-
const evmERC20WarpModule = await
|
|
319
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
320
320
|
chain,
|
|
321
321
|
config: updatedConfig,
|
|
322
322
|
multiProvider,
|
|
@@ -329,7 +329,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
329
329
|
expect(currentConfig.outputAssets).to.deep.equal(updatedConfig.outputAssets);
|
|
330
330
|
});
|
|
331
331
|
}
|
|
332
|
-
describe(
|
|
332
|
+
describe(EvmWarpModule.prototype.update.name, async () => {
|
|
333
333
|
const owner = randomAddress();
|
|
334
334
|
const ismConfigToUpdate = [
|
|
335
335
|
{
|
|
@@ -376,7 +376,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
376
376
|
interchainSecurityModule: ismAddress,
|
|
377
377
|
};
|
|
378
378
|
// Deploy using WarpModule
|
|
379
|
-
const evmERC20WarpModule = await
|
|
379
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
380
380
|
chain,
|
|
381
381
|
config,
|
|
382
382
|
multiProvider,
|
|
@@ -399,7 +399,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
399
399
|
interchainSecurityModule: ismAddress,
|
|
400
400
|
};
|
|
401
401
|
// Deploy using WarpModule
|
|
402
|
-
const evmERC20WarpModule = await
|
|
402
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
403
403
|
chain,
|
|
404
404
|
config,
|
|
405
405
|
multiProvider,
|
|
@@ -429,7 +429,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
429
429
|
type: TokenType.native,
|
|
430
430
|
};
|
|
431
431
|
// Deploy using WarpModule
|
|
432
|
-
const evmERC20WarpModule = await
|
|
432
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
433
433
|
chain,
|
|
434
434
|
config,
|
|
435
435
|
multiProvider,
|
|
@@ -452,7 +452,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
452
452
|
type: TokenType.native,
|
|
453
453
|
};
|
|
454
454
|
// Deploy using WarpModule
|
|
455
|
-
const evmERC20WarpModule = await
|
|
455
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
456
456
|
chain,
|
|
457
457
|
config,
|
|
458
458
|
multiProvider,
|
|
@@ -474,7 +474,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
474
474
|
type: TokenType.native,
|
|
475
475
|
};
|
|
476
476
|
// Deploy using WarpModule
|
|
477
|
-
const evmERC20WarpModule = await
|
|
477
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
478
478
|
chain,
|
|
479
479
|
config,
|
|
480
480
|
multiProvider,
|
|
@@ -511,7 +511,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
511
511
|
type: TokenType.native,
|
|
512
512
|
interchainSecurityModule: deployedIsm,
|
|
513
513
|
};
|
|
514
|
-
const evmERC20WarpModule = await
|
|
514
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
515
515
|
chain,
|
|
516
516
|
config,
|
|
517
517
|
multiProvider,
|
|
@@ -539,7 +539,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
539
539
|
ismFactoryAddresses,
|
|
540
540
|
};
|
|
541
541
|
// Deploy using WarpModule
|
|
542
|
-
const evmERC20WarpModule = await
|
|
542
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
543
543
|
chain,
|
|
544
544
|
config: {
|
|
545
545
|
...config,
|
|
@@ -563,7 +563,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
563
563
|
ismFactoryAddresses,
|
|
564
564
|
};
|
|
565
565
|
// Deploy using WarpModule
|
|
566
|
-
const evmERC20WarpModule = await
|
|
566
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
567
567
|
chain,
|
|
568
568
|
config: {
|
|
569
569
|
...config,
|
|
@@ -593,7 +593,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
593
593
|
ismFactoryAddresses,
|
|
594
594
|
};
|
|
595
595
|
// Deploy using WarpModule
|
|
596
|
-
const evmERC20WarpModule = await
|
|
596
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
597
597
|
chain,
|
|
598
598
|
config: {
|
|
599
599
|
...config,
|
|
@@ -639,7 +639,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
639
639
|
ismFactoryAddresses,
|
|
640
640
|
};
|
|
641
641
|
const owner = signer.address.toLowerCase();
|
|
642
|
-
const evmERC20WarpModule = await
|
|
642
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
643
643
|
chain,
|
|
644
644
|
config: {
|
|
645
645
|
...config,
|
|
@@ -670,7 +670,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
670
670
|
type: TokenType.native,
|
|
671
671
|
};
|
|
672
672
|
const owner = signer.address.toLowerCase();
|
|
673
|
-
const evmERC20WarpModule = await
|
|
673
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
674
674
|
chain,
|
|
675
675
|
config: {
|
|
676
676
|
...config,
|
|
@@ -710,7 +710,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
710
710
|
},
|
|
711
711
|
};
|
|
712
712
|
// Deploy using WarpModule
|
|
713
|
-
const evmERC20WarpModule = await
|
|
713
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
714
714
|
chain,
|
|
715
715
|
config: {
|
|
716
716
|
...config,
|
|
@@ -732,7 +732,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
732
732
|
it(`should add a new rebalancer on the deployed token if it is of type "${tokenType}"`, async () => {
|
|
733
733
|
const initialRebalancer = randomAddress();
|
|
734
734
|
const config = deepCopy(getMovableTokenConfig([initialRebalancer])[tokenType]);
|
|
735
|
-
const evmERC20WarpModule = await
|
|
735
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
736
736
|
chain,
|
|
737
737
|
config,
|
|
738
738
|
multiProvider,
|
|
@@ -752,7 +752,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
752
752
|
const expectedRebalancers = [rebalancerToKeep];
|
|
753
753
|
const rebalancers = new Set([rebalancerToKeep, randomAddress()]);
|
|
754
754
|
const config = deepCopy(getMovableTokenConfig(Array.from(rebalancers))[tokenType]);
|
|
755
|
-
const evmERC20WarpModule = await
|
|
755
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
756
756
|
chain,
|
|
757
757
|
config,
|
|
758
758
|
multiProvider,
|
|
@@ -769,7 +769,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
769
769
|
it(`should not generate rebalancer update transactions if the address is in a different casing when token is of type "${tokenType}"`, async () => {
|
|
770
770
|
const rebalancerToKeep = randomAddress();
|
|
771
771
|
const config = deepCopy(getMovableTokenConfig([rebalancerToKeep.toLowerCase()])[tokenType]);
|
|
772
|
-
const evmERC20WarpModule = await
|
|
772
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
773
773
|
chain,
|
|
774
774
|
config,
|
|
775
775
|
multiProvider,
|
|
@@ -792,7 +792,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
792
792
|
},
|
|
793
793
|
};
|
|
794
794
|
const allowedBridgeToAdd = normalizeAddressEvm(randomAddress());
|
|
795
|
-
const evmERC20WarpModule = await
|
|
795
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
796
796
|
chain,
|
|
797
797
|
config,
|
|
798
798
|
multiProvider,
|
|
@@ -836,7 +836,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
836
836
|
],
|
|
837
837
|
},
|
|
838
838
|
});
|
|
839
|
-
const evmERC20WarpModule = await
|
|
839
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
840
840
|
chain,
|
|
841
841
|
config,
|
|
842
842
|
multiProvider,
|
|
@@ -874,7 +874,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
874
874
|
],
|
|
875
875
|
},
|
|
876
876
|
});
|
|
877
|
-
const evmERC20WarpModule = await
|
|
877
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
878
878
|
chain,
|
|
879
879
|
config,
|
|
880
880
|
multiProvider,
|
|
@@ -897,7 +897,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
897
897
|
const bridges = [randomAddress(), randomAddress()];
|
|
898
898
|
const remoteRouter = randomAddress();
|
|
899
899
|
const config = deepCopy(getMovableTokenConfig()[tokenType]);
|
|
900
|
-
const evmERC20WarpModule = await
|
|
900
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
901
901
|
chain,
|
|
902
902
|
config: {
|
|
903
903
|
...config,
|
|
@@ -934,7 +934,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
934
934
|
for (const tokenType of everclearTokenBridgeTypes) {
|
|
935
935
|
it(`should add destination outputAssets if the token is of type ${tokenType}`, async () => {
|
|
936
936
|
const config = getEverclearTokenBridgeTokenConfig()[tokenType];
|
|
937
|
-
const evmERC20WarpModule = await
|
|
937
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
938
938
|
chain,
|
|
939
939
|
config,
|
|
940
940
|
multiProvider,
|
|
@@ -955,7 +955,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
955
955
|
});
|
|
956
956
|
it(`should overwrite a destination outputAssets if the token is of type ${tokenType} and a destination token already exists for the given destination`, async () => {
|
|
957
957
|
const config = getEverclearTokenBridgeTokenConfig()[tokenType];
|
|
958
|
-
const evmERC20WarpModule = await
|
|
958
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
959
959
|
chain,
|
|
960
960
|
config: {
|
|
961
961
|
...config,
|
|
@@ -981,7 +981,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
981
981
|
});
|
|
982
982
|
it(`should remove destination outputAssets if the token is of type ${tokenType} and a config is set`, async () => {
|
|
983
983
|
const config = getEverclearTokenBridgeTokenConfig()[tokenType];
|
|
984
|
-
const evmERC20WarpModule = await
|
|
984
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
985
985
|
chain,
|
|
986
986
|
config: {
|
|
987
987
|
...config,
|
|
@@ -1018,7 +1018,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
1018
1018
|
[domainId]: randomAddress(),
|
|
1019
1019
|
...outputAssetsToKeep,
|
|
1020
1020
|
};
|
|
1021
|
-
const evmERC20WarpModule = await
|
|
1021
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
1022
1022
|
chain,
|
|
1023
1023
|
config: {
|
|
1024
1024
|
...config,
|
|
@@ -1041,7 +1041,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
1041
1041
|
});
|
|
1042
1042
|
it(`should update the fee params if the token is of type ${tokenType}`, async () => {
|
|
1043
1043
|
const config = getEverclearTokenBridgeTokenConfig()[tokenType];
|
|
1044
|
-
const evmERC20WarpModule = await
|
|
1044
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
1045
1045
|
chain,
|
|
1046
1046
|
config,
|
|
1047
1047
|
multiProvider,
|
|
@@ -1067,7 +1067,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
1067
1067
|
it(`should not generate any update transactions for the fee params if the config did not change and the token is of type ${tokenType}`, async () => {
|
|
1068
1068
|
const config = getEverclearTokenBridgeTokenConfig()[tokenType];
|
|
1069
1069
|
const expectedEverclearFeeParams = config.everclearFeeParams;
|
|
1070
|
-
const evmERC20WarpModule = await
|
|
1070
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
1071
1071
|
chain,
|
|
1072
1072
|
config,
|
|
1073
1073
|
multiProvider,
|
|
@@ -1081,7 +1081,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
1081
1081
|
});
|
|
1082
1082
|
it(`should remove everclear fee params if the token is of type ${tokenType}`, async () => {
|
|
1083
1083
|
const config = getEverclearTokenBridgeTokenConfig()[tokenType];
|
|
1084
|
-
const evmERC20WarpModule = await
|
|
1084
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
1085
1085
|
chain,
|
|
1086
1086
|
config,
|
|
1087
1087
|
multiProvider,
|
|
@@ -1121,7 +1121,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
1121
1121
|
},
|
|
1122
1122
|
...feeParamsToKeep,
|
|
1123
1123
|
};
|
|
1124
|
-
const evmERC20WarpModule = await
|
|
1124
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
1125
1125
|
chain,
|
|
1126
1126
|
config: {
|
|
1127
1127
|
...config,
|
|
@@ -1175,7 +1175,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
1175
1175
|
signature: '0x30',
|
|
1176
1176
|
},
|
|
1177
1177
|
};
|
|
1178
|
-
const evmERC20WarpModule = await
|
|
1178
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
1179
1179
|
chain,
|
|
1180
1180
|
config: {
|
|
1181
1181
|
...config,
|
|
@@ -1214,7 +1214,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
1214
1214
|
},
|
|
1215
1215
|
};
|
|
1216
1216
|
// Deploy using WarpModule
|
|
1217
|
-
const evmERC20WarpModule = await
|
|
1217
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
1218
1218
|
chain,
|
|
1219
1219
|
config: {
|
|
1220
1220
|
...config,
|
|
@@ -1255,7 +1255,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
1255
1255
|
},
|
|
1256
1256
|
};
|
|
1257
1257
|
// Deploy using WarpModule
|
|
1258
|
-
const evmERC20WarpModule = await
|
|
1258
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
1259
1259
|
chain,
|
|
1260
1260
|
config: {
|
|
1261
1261
|
...config,
|
|
@@ -1284,7 +1284,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
1284
1284
|
type: TokenType.native,
|
|
1285
1285
|
};
|
|
1286
1286
|
// Deploy using WarpModule
|
|
1287
|
-
const evmERC20WarpModule = await
|
|
1287
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
1288
1288
|
chain,
|
|
1289
1289
|
config,
|
|
1290
1290
|
multiProvider,
|
|
@@ -1308,7 +1308,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
1308
1308
|
...baseConfig,
|
|
1309
1309
|
type: TokenType.native,
|
|
1310
1310
|
};
|
|
1311
|
-
const evmERC20WarpModule = await
|
|
1311
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
1312
1312
|
chain,
|
|
1313
1313
|
config,
|
|
1314
1314
|
multiProvider,
|
|
@@ -1338,7 +1338,7 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
1338
1338
|
...baseConfig,
|
|
1339
1339
|
type: TokenType.native,
|
|
1340
1340
|
};
|
|
1341
|
-
const evmERC20WarpModule = await
|
|
1341
|
+
const evmERC20WarpModule = await EvmWarpModule.create({
|
|
1342
1342
|
chain,
|
|
1343
1343
|
config,
|
|
1344
1344
|
multiProvider,
|
|
@@ -1370,4 +1370,4 @@ describe('EvmERC20WarpHyperlaneModule', async () => {
|
|
|
1370
1370
|
});
|
|
1371
1371
|
});
|
|
1372
1372
|
});
|
|
1373
|
-
//# sourceMappingURL=
|
|
1373
|
+
//# sourceMappingURL=EvmWarpModule.hardhat-test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"EvmWarpModule.hardhat-test.js","sourceRoot":"","sources":["../../src/token/EvmWarpModule.hardhat-test.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,7 +15,8 @@ import { getEvmHookUpdateTransactions } from '../hook/updates.js';
|
|
|
15
15
|
import { EvmIsmModule } from '../ism/EvmIsmModule.js';
|
|
16
16
|
import { resolveRouterMapConfig } from '../router/types.js';
|
|
17
17
|
import { extractIsmAndHookFactoryAddresses } from '../utils/ism.js';
|
|
18
|
-
import {
|
|
18
|
+
import { EvmWarpRouteReader } from './EvmWarpRouteReader.js';
|
|
19
|
+
import { TokenType } from './config.js';
|
|
19
20
|
import { resolveTokenFeeAddress } from './configUtils.js';
|
|
20
21
|
import { hypERC20contracts } from './contracts.js';
|
|
21
22
|
import { HypERC20Deployer } from './deploy.js';
|
|
@@ -25,12 +26,12 @@ const getAllowedRebalancingBridgesByDomain = (allowedRebalancingBridgesByDomain)
|
|
|
25
26
|
return new Set(allowedRebalancingBridges.map((bridgeConfig) => normalizeAddressEvm(bridgeConfig.bridge)));
|
|
26
27
|
});
|
|
27
28
|
};
|
|
28
|
-
export class
|
|
29
|
+
export class EvmWarpModule extends HyperlaneModule {
|
|
29
30
|
multiProvider;
|
|
30
31
|
ccipContractCache;
|
|
31
32
|
contractVerifier;
|
|
32
33
|
logger = rootLogger.child({
|
|
33
|
-
module: '
|
|
34
|
+
module: 'EvmWarpModule',
|
|
34
35
|
});
|
|
35
36
|
reader;
|
|
36
37
|
chainName;
|
|
@@ -41,7 +42,7 @@ export class EvmERC20WarpModule extends HyperlaneModule {
|
|
|
41
42
|
this.multiProvider = multiProvider;
|
|
42
43
|
this.ccipContractCache = ccipContractCache;
|
|
43
44
|
this.contractVerifier = contractVerifier;
|
|
44
|
-
this.reader = new
|
|
45
|
+
this.reader = new EvmWarpRouteReader(multiProvider, args.chain);
|
|
45
46
|
this.chainName = this.multiProvider.getChainName(args.chain);
|
|
46
47
|
this.chainId = multiProvider.getEvmChainId(args.chain);
|
|
47
48
|
this.domainId = multiProvider.getDomainId(args.chain);
|
|
@@ -567,8 +568,9 @@ export class EvmERC20WarpModule extends HyperlaneModule {
|
|
|
567
568
|
*/
|
|
568
569
|
async upgradeWarpRouteImplementationTx(actualConfig, expectedConfig) {
|
|
569
570
|
const updateTransactions = [];
|
|
571
|
+
assert(expectedConfig.type !== TokenType.unknown, 'Cannot upgrade warp route with unknown token type');
|
|
570
572
|
// This should be impossible since we try catch the call to `PACKAGE_VERSION`
|
|
571
|
-
// in `
|
|
573
|
+
// in `EvmWarpRouteReader.fetchPackageVersion`
|
|
572
574
|
assert(actualConfig.contractVersion, 'Actual contract version is undefined');
|
|
573
575
|
// Only upgrade if the user specifies a version
|
|
574
576
|
if (!expectedConfig.contractVersion) {
|
|
@@ -589,7 +591,8 @@ export class EvmERC20WarpModule extends HyperlaneModule {
|
|
|
589
591
|
this.logger.info(`Upgrading Warp Route implementation on ${this.args.chain} from ${actualConfig.contractVersion} to ${expectedConfig.contractVersion}`);
|
|
590
592
|
const deployer = new HypERC20Deployer(this.multiProvider);
|
|
591
593
|
const constructorArgs = await deployer.constructorArgs(this.chainName, expectedConfig);
|
|
592
|
-
const
|
|
594
|
+
const tokenType = expectedConfig.type;
|
|
595
|
+
const implementation = await deployer.deployContractWithName(this.chainName, tokenType, hypERC20contracts[tokenType], constructorArgs, undefined, false);
|
|
593
596
|
const provider = this.multiProvider.getProvider(this.domainId);
|
|
594
597
|
const proxyAddress = this.args.addresses.deployedTokenRoute;
|
|
595
598
|
const proxyAdminAddress = await proxyAdmin(provider, proxyAddress);
|
|
@@ -615,7 +618,7 @@ export class EvmERC20WarpModule extends HyperlaneModule {
|
|
|
615
618
|
const chainName = multiProvider.getChainName(chain);
|
|
616
619
|
const deployer = new HypERC20Deployer(multiProvider);
|
|
617
620
|
const deployedContracts = await deployer.deployContracts(chainName, config);
|
|
618
|
-
const warpModule = new
|
|
621
|
+
const warpModule = new EvmWarpModule(multiProvider, {
|
|
619
622
|
addresses: {
|
|
620
623
|
...proxyFactoryFactories,
|
|
621
624
|
deployedTokenRoute: deployedContracts[config.type].address,
|
|
@@ -625,14 +628,14 @@ export class EvmERC20WarpModule extends HyperlaneModule {
|
|
|
625
628
|
}, ccipContractCache, contractVerifier);
|
|
626
629
|
const actualConfig = await warpModule.read();
|
|
627
630
|
if (config.remoteRouters && !isObjEmpty(config.remoteRouters)) {
|
|
628
|
-
const enrollRemoteTxs = await warpModule.createEnrollRemoteRoutersUpdateTxs(actualConfig, config); // @TODO Remove when
|
|
631
|
+
const enrollRemoteTxs = await warpModule.createEnrollRemoteRoutersUpdateTxs(actualConfig, config); // @TODO Remove when EvmWarpModule.create can be used
|
|
629
632
|
const onlyTxIndex = 0;
|
|
630
633
|
await multiProvider.sendTransaction(chain, enrollRemoteTxs[onlyTxIndex]);
|
|
631
634
|
}
|
|
632
635
|
if (isMovableCollateralTokenConfig(config) &&
|
|
633
636
|
config.allowedRebalancers &&
|
|
634
637
|
config.allowedRebalancers.length !== 0) {
|
|
635
|
-
const addRebalancerTxs = await warpModule.createAddRebalancersUpdateTxs(actualConfig, config); // @TODO Remove when
|
|
638
|
+
const addRebalancerTxs = await warpModule.createAddRebalancersUpdateTxs(actualConfig, config); // @TODO Remove when EvmWarpModule.create can be used
|
|
636
639
|
for (const tx of addRebalancerTxs) {
|
|
637
640
|
await multiProvider.sendTransaction(chain, tx);
|
|
638
641
|
}
|
|
@@ -640,7 +643,7 @@ export class EvmERC20WarpModule extends HyperlaneModule {
|
|
|
640
643
|
if (isMovableCollateralTokenConfig(config) &&
|
|
641
644
|
config.allowedRebalancingBridges &&
|
|
642
645
|
!isObjEmpty(config.allowedRebalancingBridges)) {
|
|
643
|
-
const addBridgesTxs = await warpModule.createAddAllowedBridgesUpdateTxs(actualConfig, config); // @TODO Remove when
|
|
646
|
+
const addBridgesTxs = await warpModule.createAddAllowedBridgesUpdateTxs(actualConfig, config); // @TODO Remove when EvmWarpModule.create can be used
|
|
644
647
|
for (const tx of addBridgesTxs) {
|
|
645
648
|
await multiProvider.sendTransaction(chain, tx);
|
|
646
649
|
}
|
|
@@ -659,4 +662,4 @@ export class EvmERC20WarpModule extends HyperlaneModule {
|
|
|
659
662
|
return warpModule;
|
|
660
663
|
}
|
|
661
664
|
}
|
|
662
|
-
//# sourceMappingURL=
|
|
665
|
+
//# sourceMappingURL=EvmWarpModule.js.map
|