import {ethers, web3} from "hardhat"; import contracts from "../config/contracts"; import deployer from "../.secret"; import fee from "../config/fee"; describe('Uniswap v3 test', () => { it('Univ3 swap test', async () => { const UNIV3_ABI = require('../abi/UNIV3_ABI').default let univ3_contract = new web3.eth.Contract(UNIV3_ABI, contracts.UNIV3) let rawTx = { from: deployer.address, nonce: await web3.eth.getTransactionCount(deployer.address), gasPrice: web3.utils.toWei('2', 'gwei'), gasLimit: 1_000_000 } let amountIn = 1_000_000 let amountOutMin = 1 let path = [contracts.WETH, contracts.HEX] let to = deployer.address await univ3_contract.methods .swapExactTokensForTokens(amountIn, amountOutMin, path, to) .send(rawTx).then(console.log) }) it('Univ3 `exactInput` test', async () => { const UNIV3_ABI = require('../abi/UNIV3_ABI').default let univ3_contract = new web3.eth.Contract(UNIV3_ABI, contracts.UNIV3) let rawTx = { from: deployer.address, nonce: await web3.eth.getTransactionCount(deployer.address), gasPrice: web3.utils.toWei('2', 'gwei'), gasLimit: 1e6 } let amountIn = 1e15 let amountOutMin = 1 let deadline = parseInt(String(new Date().getTime() / 1e3)) + 60 let path = [contracts.WETH, fee._30_per_10000, contracts.HEX] let to = deployer.address let params = { path: ethers.utils.solidityPack(['address', 'uint24', 'address'], path), recipient: to, deadline: deadline, amountIn: amountIn, amountOutMinimum: amountOutMin } await univ3_contract.methods .exactInput(params) .send(rawTx).then(console.log) }) })