diff --git a/typescript/cli/src/commands/deploy.ts b/typescript/cli/src/commands/deploy.ts index f75238dc2..fffcb96d7 100644 --- a/typescript/cli/src/commands/deploy.ts +++ b/typescript/cli/src/commands/deploy.ts @@ -19,7 +19,7 @@ import { */ export const deployCommand: CommandModule = { command: 'deploy', - describe: 'Permisionslessly deploy a Hyperlane contracts or extensions', + describe: 'Permissionlessly deploy a Hyperlane contracts or extensions', builder: (yargs) => yargs .command(coreCommand) diff --git a/typescript/infra/config/environments/mainnet3/chains.ts b/typescript/infra/config/environments/mainnet3/chains.ts index 239c179fd..437fe170c 100644 --- a/typescript/infra/config/environments/mainnet3/chains.ts +++ b/typescript/infra/config/environments/mainnet3/chains.ts @@ -52,7 +52,7 @@ export const nonEthereumMainnetConfigs: ChainMap = { export const mainnetConfigs: ChainMap = { ...ethereumMainnetConfigs, - ...nonEthereumMainnetConfigs, + // ...nonEthereumMainnetConfigs, }; export type MainnetChains = keyof typeof mainnetConfigs; diff --git a/typescript/infra/config/environments/mainnet3/warp/addresses.json b/typescript/infra/config/environments/mainnet3/warp/addresses.json new file mode 100644 index 000000000..79b01185b --- /dev/null +++ b/typescript/infra/config/environments/mainnet3/warp/addresses.json @@ -0,0 +1,5 @@ +{ + "arbitrum": { + "router": "0x93ca0d85837FF83158Cd14D65B169CdB223b1921" + } +} diff --git a/typescript/infra/config/environments/mainnet3/warp/verification.json b/typescript/infra/config/environments/mainnet3/warp/verification.json new file mode 100644 index 000000000..023a2a53d --- /dev/null +++ b/typescript/infra/config/environments/mainnet3/warp/verification.json @@ -0,0 +1,16 @@ +{ + "arbitrum": [ + { + "name": "HypERC20", + "address": "0x93ca0d85837FF83158Cd14D65B169CdB223b1921", + "constructorArguments": "0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000979ca5202784112f4738403dbec5d0f3b9daabb9", + "isProxy": false + }, + { + "name": "HypERC20", + "address": "0x93ca0d85837FF83158Cd14D65B169CdB223b1921", + "constructorArguments": "0000000000000000000000000000000000000000000000000000000000000006000000000000000000000000979ca5202784112f4738403dbec5d0f3b9daabb9", + "isProxy": false + } + ] +} diff --git a/typescript/infra/scripts/deploy.ts b/typescript/infra/scripts/deploy.ts index 8e109110f..cc39c893c 100644 --- a/typescript/infra/scripts/deploy.ts +++ b/typescript/infra/scripts/deploy.ts @@ -4,6 +4,8 @@ import { prompt } from 'prompts'; import { HelloWorldDeployer } from '@hyperlane-xyz/helloworld'; import { ChainMap, + Chains, + HypERC20Deployer, HyperlaneCore, HyperlaneCoreDeployer, HyperlaneDeployer, @@ -13,7 +15,9 @@ import { InterchainAccountDeployer, InterchainQueryDeployer, LiquidityLayerDeployer, + TokenConfig, } from '@hyperlane-xyz/sdk'; +import { TokenDecimals, TokenType } from '@hyperlane-xyz/sdk/dist/token/config'; import { objMap } from '@hyperlane-xyz/utils'; import { Contexts } from '../config/contexts'; @@ -75,6 +79,39 @@ async function main() { multiProvider, ); deployer = new HyperlaneCoreDeployer(multiProvider, ismFactory); + } else if (module === Modules.WARP) { + const owner = deployerAddress; + const neutronRouter = + '6b04c49fcfd98bc4ea9c05cd5790462a39537c00028333474aebe6ddf20b73a3'; + const ismFactory = HyperlaneIsmFactory.fromAddressesMap( + getAddresses(environment, Modules.PROXY_FACTORY), + multiProvider, + ); + const tokenConfig: TokenConfig & TokenDecimals = { + type: TokenType.synthetic, + name: 'Eclipse Fi', + symbol: 'ECLIP', + decimals: 6, + totalSupply: 0, + }; + const core = HyperlaneCore.fromEnvironment( + deployEnvToSdkEnv[environment], + multiProvider, + ); + const routerConfig = core.getRouterConfig(owner); + const targetChains = [Chains.arbitrum]; + config = { + arbitrum: { + ...routerConfig['arbitrum'], + ...tokenConfig, + interchainSecurityModule: '0x53A5c239d62ff35c98E0EC9612c86517748ffF59', + gas: 600_000, + }, + neutron: { + foreignDeployment: neutronRouter, + }, + }; + deployer = new HypERC20Deployer(multiProvider, ismFactory); } else if (module === Modules.INTERCHAIN_GAS_PAYMASTER) { config = envConfig.igp; deployer = new HyperlaneIgpDeployer(multiProvider);