infrastructure-upgrade/lib/v3-periphery/test/shared/externalFixtures.ts
T-Hax 735546619e
init
Signed-off-by: T-Hax <>
2023-04-08 18:46:18 +00:00

58 lines
1.7 KiB
TypeScript

import {
abi as FACTORY_ABI,
bytecode as FACTORY_BYTECODE,
} from '@uniswap/v3-core/artifacts/contracts/UniswapV3Factory.sol/UniswapV3Factory.json'
import { abi as FACTORY_V2_ABI, bytecode as FACTORY_V2_BYTECODE } from '@uniswap/v2-core/build/UniswapV2Factory.json'
import { Fixture } from 'ethereum-waffle'
import { ethers, waffle } from 'hardhat'
import { IUniswapV3Factory, IWETH9, MockTimeSwapRouter } from '../../typechain'
import WETH9 from '../contracts/WETH9.json'
import { Contract } from '@ethersproject/contracts'
import { constants } from 'ethers'
const wethFixture: Fixture<{ weth9: IWETH9 }> = async ([wallet]) => {
const weth9 = (await waffle.deployContract(wallet, {
bytecode: WETH9.bytecode,
abi: WETH9.abi,
})) as IWETH9
return { weth9 }
}
export const v2FactoryFixture: Fixture<{ factory: Contract }> = async ([wallet]) => {
const factory = await waffle.deployContract(
wallet,
{
bytecode: FACTORY_V2_BYTECODE,
abi: FACTORY_V2_ABI,
},
[constants.AddressZero]
)
return { factory }
}
const v3CoreFactoryFixture: Fixture<IUniswapV3Factory> = async ([wallet]) => {
return (await waffle.deployContract(wallet, {
bytecode: FACTORY_BYTECODE,
abi: FACTORY_ABI,
})) as IUniswapV3Factory
}
export const v3RouterFixture: Fixture<{
weth9: IWETH9
factory: IUniswapV3Factory
router: MockTimeSwapRouter
}> = async ([wallet], provider) => {
const { weth9 } = await wethFixture([wallet], provider)
const factory = await v3CoreFactoryFixture([wallet], provider)
const router = (await (await ethers.getContractFactory('MockTimeSwapRouter')).deploy(
factory.address,
weth9.address
)) as MockTimeSwapRouter
return { factory, weth9, router }
}