| 12345678910111213141516171819202122232425262728293031323334353637383940 | task("addLiquidity", "add liquidity to stargate instance")    .addParam("poolId", "the poolId")    .addParam("qty", "the qty of tokens to add")    .setAction(async (taskArgs, hre) => {        let accounts = await ethers.getSigners()        let owner = accounts[0]        // factory / router        const factory = await ethers.getContract("Factory")        const router = await ethers.getContract("Router")        // get the token from the router        let Pool = await ethers.getContractFactory("Pool")        let poolData = await factory.getPool(taskArgs.poolId) // return stg lp address        let pool = await Pool.attach(poolData)        let tokenAddr = await pool.token()        console.log(`${hre.network.name} > addLiquidity poolId:${taskArgs.poolId} tokenAddr: ${tokenAddr}`)        let MockToken = await ethers.getContractFactory("MockToken")        let mockToken = await MockToken.attach(tokenAddr)        let balance = await mockToken.balanceOf(owner.address)        let allowance = await mockToken.allowance(owner.address, router.address)        let amountInTokenDecimals = ethers.utils.parseUnits(taskArgs.qty, await mockToken.decimals())        console.log(`amountInTokenDecimals: ${amountInTokenDecimals}`)        await (await mockToken.mint(owner.address, amountInTokenDecimals)).wait(1)        if (balance == 0 || balance < allowance) {            await (await mockToken.mint(owner.address, amountInTokenDecimals)).wait(1)            balance = await mockToken.balanceOf(owner.address)            console.log(`    (now) we have this much to addLiquidity: ${balance}`)        }        let t = await mockToken.approve(router.address, amountInTokenDecimals) // give stargate router approval for this qty        await t.wait(1)        let tx = await (await router.addLiquidity(taskArgs.poolId, amountInTokenDecimals, owner.address)).wait(1)        console.log(`💦 addLiquidity | tx: ${tx.transactionHash}`)    })
 |