12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455 |
- const {getEndpointIdByName} = require("../utils/layerzero")
- task("testnetSwap", "swap using stargate")
- .addParam("poolId", "the poolId")
- .addParam("dstPoolId", "the destination poolId")
- .addParam("qty", "the quantity to swap")
- .addParam("targetNetwork", "the destination netowrk to swap() tokens to")
- .setAction(async (taskArgs) => {
- let accounts = await ethers.getSigners()
- let owner = accounts[0] // me
- console.log(`owner: ${owner.address}`)
- const factory = await ethers.getContract("Factory")
- console.log(`-> [stargate] factory.address: ${factory.address}`)
- const router = await ethers.getContract("Router")
- console.log(`-> [stargate] router.address: ${router.address}`)
- // get the token address from the router for the pool id so we know the address to approve
- let Pool = await ethers.getContractFactory("Pool")
- let poolData = await factory.getPool(taskArgs.poolId)
- let pool = await Pool.attach(poolData)
- let poolTokenAddr = await pool.token()
- console.log(`swap() poolTokenAddr: ${poolTokenAddr}`)
- let MockToken = await ethers.getContractFactory("MockToken") // erc20
- let mockToken = await MockToken.attach(poolTokenAddr)
- await (await mockToken.approve(router.address, taskArgs.qty)).wait(1)
- let bnQty = ethers.BigNumber.from(taskArgs.qty)
- let bnQtyMin = bnQty.mul(993).div(1000)
- let dstChainId = getEndpointIdByName(taskArgs.targetNetwork)
- console.log(`source(${getEndpointIdByName(hre.network.name)}) swap--> dstChainId(${dstChainId})`);
- console.log('disChainId', dstChainId);
- console.log("poolId", taskArgs.poolId);
- console.log("dstPoolId", taskArgs.dstPoolId);
- console.log("address", owner.address);
- console.log("bnQty", bnQty);
- console.log("bnQtyMin", bnQtyMin);
- let tx = await (
- await router.swap(
- dstChainId,
- taskArgs.poolId,
- taskArgs.dstPoolId,
- owner.address,
- bnQty,
- bnQtyMin,
- {dstGasForCall: 0, dstNativeAmount: 0, dstNativeAddr: "0x"},
- owner.address,
- "0x",
- {value: ethers.utils.parseEther("0.1")} // guess a value high enough , it refunds extra
- )
- ).wait()
- console.log(`tx.transactionHash: ${tx.transactionHash}`)
- })
|