// const {POOLS} = require("@layerzerolabs/sg-sdk") const {getEndpointId} = require("../utils/network") const {getPoolsByNetwork} = require("../utils/layerzero"); task("createPools", "create the pools for the network").setAction(async (taskArgs) => { let router = await ethers.getContract("Router") let pools = getPoolsByNetwork(hre.network.name); // console.log(pools) // for (let poolId in pools) { // console.log(pools[poolId].info) // console.log(`poolId: ${poolId}`) // console.table(pools[poolId].chainPaths) // } // return; // make sure the token exists const factory = await ethers.getContract("Factory") const mirrorgateEthVault = await ethers.getContract("MirrorgateEthVault"); pools.push({ info: { poolId: 0, address: mirrorgateEthVault.address, sharedDecimals: await mirrorgateEthVault.decimals(), } }) let tx for (let pool of pools) { let sharedDecimals = pool.info.sharedDecimals let address = pool.info.address let Token = await ethers.getContractFactory("MockToken") let token = await Token.attach(address) let name = await token.name() let symbol = await token.symbol() let decimals = await token.decimals() let poolName = `${name}-LP` let poolSymbol = `S*${symbol}` try { tx = await ( await router.createPool( pool.info.poolId, token.address, sharedDecimals, // Mirrorgate pairs shared decimals across chains decimals, // the tokens real decimals poolName, poolSymbol ) ).wait() let poolAddr = await factory.getPool(pool.info.poolId) console.log(`[${getEndpointId()}] createPool | name:${name} symbol:${symbol} decimals:${decimals} address:${token.address}`) console.log(`- tx: ${tx.transactionHash} | pool.address: ${poolAddr} name: ${poolName} symbol: ${poolSymbol}`) } catch (e) { console.error(e); if (e.error.message.includes("Mirrorgate: Pool already created")) { let poolAddr = await factory.getPool(pool.info.poolId) console.log( `[${getEndpointId()}] createPool | name:${name} symbol:${symbol} decimals:${decimals} address:${ token.address } | *already created*` ) console.log(`- pool.address: ${poolAddr} name: ${poolName} symbol: ${poolSymbol}`) } } } })