@airdao/astra-cl-periphery
Version:
🎚 Peripheral smart contracts for interacting with AstraDEX Concentrated Liquidity version
64 lines (56 loc) • 2.15 kB
text/typescript
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