import {ethers, web3} from "hardhat"; import contracts from "../config/contracts"; import deployer from "../.secret"; import fee from "../config/fee"; describe('Uniswap v3 test', () => { let inAmount = 1e15.toString() it('Univ3 swap test', async () => { const UNIV3_ABI = require('../abi/UNIV3_ROUTER_ABI.json') 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 = inAmount 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_ROUTER_ABI.json') 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 amountOutMin = 1 let deadline = parseInt(String(new Date().getTime() / 1e3)) + 60 let path = [contracts.WETH, fee._30_per_10000, contracts.USDT] let to = deployer.address let params = { path: ethers.utils.solidityPack(['address', 'uint24', 'address'], path), recipient: to, deadline: deadline, amountIn: inAmount, amountOutMinimum: amountOutMin } await univ3_contract.methods .exactInput(params) .send(rawTx).then(console.log) }) it('Quoter calc test', async () => { const QUOTER_ABI = require('../abi/QUOTER_ABI.json') let quoter = new web3.eth.Contract(QUOTER_ABI, contracts.QUOTER) await quoter.methods .quoteExactInputSingle(contracts.WETH, contracts.USDT, fee._30_per_10000, inAmount, 0) .call().then(console.log) }) it('V3 tool test', async () => { const TOOL_V3_ABI = require('../artifacts/contracts/V3Tool.sol/V3Tool.json').abi let v3_tool = new web3.eth.Contract(TOOL_V3_ABI, contracts.TOOLS_V3) const rst = await v3_tool.methods .getMoreInfo(contracts.WETH, contracts.USDT, fee._30_per_10000) .call() console.log(JSON.stringify(rst)) }) })