const {getLayerZeroAddress} = require("../utils/layerzero") const CONFIG = require("../constants/config.json") const {isTestnet, isLocalhost} = require("../utils/network") const {getEndpointIdByName} = require("@layerzerolabs/lz-sdk") function getDependencies() { if (hre.network.name === "hardhat") { return ["LZEndpointMock"] } } module.exports = async ({getNamedAccounts, deployments}) => { const {deploy} = deployments const {deployer} = await getNamedAccounts() let lzAddress if (hre.network.name === "hardhat") { lzAddress = (await deployments.get("LZEndpointMock")).address // console.log(` -> MirrorgateToken needs LayerZero: ${hre.network.name} LZEndpointMock: ${lzAddress}`) } else { console.log(hre.network.name) lzAddress = getLayerZeroAddress(hre.network.name) console.log(` -> MirrorgateToken needs LayerZero: ${hre.network.name} LayerZeroEndpoint: ${lzAddress}`) } let mainEndpointId = CONFIG.mirrorgateToken.mainEndpointId // ETH if (isTestnet() && !isLocalhost()) { // for testnet, mint a bunch of tokens on every chain mainEndpointId = getEndpointIdByName(hre.network.name) } let tokenName = CONFIG.mirrorgateToken.name let tokenSymbol = CONFIG.mirrorgateToken.symbol if (hre.network.name !== "hardhat") { console.log(`MirrorgateToken name: ${tokenName}, symbol:${tokenSymbol} | mainEndpointId: ${mainEndpointId} | isTestnet: ${isTestnet()}`) } await deploy("MirrorgateToken", { from: deployer, args: [tokenName, tokenSymbol, lzAddress, mainEndpointId, CONFIG.mirrorgateToken.initialSupplyMainEndpoint], log: true, skipIfAlreadyDeployed: true, waitConfirmations: 1, }) } module.exports.tags = ["MirrorgateToken", "test"] module.exports.dependencies = getDependencies()