UNPKG

@airdao/astra-cl-periphery

Version:

🎚 Peripheral smart contracts for interacting with AstraDEX Concentrated Liquidity version

64 lines (56 loc) • 2.15 kB
import { Fixture } from 'ethereum-waffle' import { ethers } from 'hardhat' import { CLRouterFixture } from './externalFixtures' import { constants } from 'ethers' import { ISAMB, MockTimeNonfungiblePositionManager, MockTimeSwapRouter, NonfungibleTokenPositionDescriptor, TestERC20, IAstraCLFactory, } from '../../typechain' const completeFixture: Fixture<{ samb: ISAMB factory: IAstraCLFactory router: MockTimeSwapRouter nft: MockTimeNonfungiblePositionManager nftDescriptor: NonfungibleTokenPositionDescriptor tokens: [TestERC20, TestERC20, TestERC20] }> = async ([wallet], provider) => { const { samb, factory, router } = await CLRouterFixture([wallet], provider) const tokenFactory = await ethers.getContractFactory('TestERC20') const tokens: [TestERC20, TestERC20, TestERC20] = [ (await tokenFactory.deploy(constants.MaxUint256.div(2))) as TestERC20, // do not use maxu256 to avoid overflowing (await tokenFactory.deploy(constants.MaxUint256.div(2))) as TestERC20, (await tokenFactory.deploy(constants.MaxUint256.div(2))) as TestERC20, ] const nftDescriptorLibraryFactory = await ethers.getContractFactory('NFTDescriptor') const nftDescriptorLibrary = await nftDescriptorLibraryFactory.deploy() const positionDescriptorFactory = await ethers.getContractFactory('NonfungibleTokenPositionDescriptor', { libraries: { NFTDescriptor: nftDescriptorLibrary.address, }, }) const nftDescriptor = (await positionDescriptorFactory.deploy( tokens[0].address, // 'AMB' as a bytes32 string '0x414D420000000000000000000000000000000000000000000000000000000000' )) as NonfungibleTokenPositionDescriptor const positionManagerFactory = await ethers.getContractFactory('MockTimeNonfungiblePositionManager') const nft = (await positionManagerFactory.deploy( factory.address, samb.address, nftDescriptor.address )) as MockTimeNonfungiblePositionManager tokens.sort((a, b) => (a.address.toLowerCase() < b.address.toLowerCase() ? -1 : 1)) return { samb, factory, router, tokens, nft, nftDescriptor, } } export default completeFixture