chore: remove all tick lens stuff that is not used
This commit is contained in:
parent
d3c04b7246
commit
b14da2844d
@ -15,7 +15,6 @@ export const ARGENT_WALLET_DETECTOR_ADDRESS: { [chainId in ChainId]?: string } =
|
||||
}
|
||||
export const V3_CORE_FACTORY_ADDRESSES = constructSameAddressMap(V3_FACTORY_ADDRESS)
|
||||
export const QUOTER_ADDRESSES = constructSameAddressMap('0xb27308f9F90D607463bb33eA1BeBb41C27CE5AB6')
|
||||
export const TICK_LENS_ADDRESSES = constructSameAddressMap('0xbfd8137f7d1516D3ea5cA83523914859ec47F573')
|
||||
export const NONFUNGIBLE_POSITION_MANAGER_ADDRESSES = constructSameAddressMap(
|
||||
'0xC36442b4a4522E871399CD717aBDD847Ab11FE88'
|
||||
)
|
||||
|
@ -1,113 +0,0 @@
|
||||
import { Token } from '@uniswap/sdk-core'
|
||||
import { FeeAmount, TICK_SPACINGS } from '@uniswap/v3-sdk'
|
||||
import { nearestUsableTick, TickMath } from '@uniswap/v3-sdk/dist/'
|
||||
import { ZERO_ADDRESS } from '../constants/misc'
|
||||
import { useEffect, useMemo, useState } from 'react'
|
||||
import { Result, useSingleCallResult, useSingleContractMultipleData } from 'state/multicall/hooks'
|
||||
import { useTickLens, useV3Factory } from './useContract'
|
||||
|
||||
function bitmapIndex(tick: number, tickSpacing: number) {
|
||||
return Math.floor(tick / tickSpacing / 256)
|
||||
}
|
||||
|
||||
const REFRESH_FREQUENCY = { blocksPerFetch: 2 }
|
||||
|
||||
interface TickData {
|
||||
tick: number
|
||||
liquidityNet: number
|
||||
liquidityGross: number
|
||||
}
|
||||
|
||||
// for now, reconsider using this function, it consumes a lot of data and cpu to fetch all the ticks.
|
||||
export function useAllV3Ticks(
|
||||
token0: Token | undefined,
|
||||
token1: Token | undefined,
|
||||
feeAmount: FeeAmount | undefined
|
||||
): {
|
||||
loading: boolean
|
||||
syncing: boolean
|
||||
error: boolean
|
||||
valid: boolean
|
||||
tickData: TickData[]
|
||||
} {
|
||||
const tickSpacing = feeAmount && TICK_SPACINGS[feeAmount]
|
||||
|
||||
const minIndex = useMemo(
|
||||
() => (tickSpacing ? bitmapIndex(nearestUsableTick(TickMath.MIN_TICK, tickSpacing), tickSpacing) : undefined),
|
||||
[tickSpacing]
|
||||
)
|
||||
const maxIndex = useMemo(
|
||||
() => (tickSpacing ? bitmapIndex(nearestUsableTick(TickMath.MAX_TICK, tickSpacing), tickSpacing) : undefined),
|
||||
[tickSpacing]
|
||||
)
|
||||
|
||||
const [tickDataLatestSynced, setTickDataLatestSynced] = useState<TickData[]>([])
|
||||
|
||||
// fetch the pool address
|
||||
const factoryContract = useV3Factory()
|
||||
const poolAddress = useSingleCallResult(factoryContract, 'getPool', [token0?.address, token1?.address, feeAmount])
|
||||
.result?.[0]
|
||||
|
||||
const tickLensArgs: [string, number][] = useMemo(
|
||||
() =>
|
||||
maxIndex && minIndex && poolAddress && poolAddress !== ZERO_ADDRESS
|
||||
? new Array(maxIndex - minIndex + 1)
|
||||
.fill(0)
|
||||
.map((_, i) => i + minIndex)
|
||||
.map((wordIndex) => [poolAddress, wordIndex])
|
||||
: [],
|
||||
[minIndex, maxIndex, poolAddress]
|
||||
)
|
||||
|
||||
const tickLens = useTickLens()
|
||||
const callStates = useSingleContractMultipleData(
|
||||
tickLensArgs.length > 0 ? tickLens : undefined,
|
||||
'getPopulatedTicksInWord',
|
||||
tickLensArgs,
|
||||
REFRESH_FREQUENCY,
|
||||
3_000_000
|
||||
)
|
||||
|
||||
const error = useMemo(() => callStates.some(({ error }) => error), [callStates])
|
||||
const loading = useMemo(() => callStates.some(({ loading }) => loading), [callStates])
|
||||
const syncing = useMemo(() => callStates.some(({ syncing }) => syncing), [callStates])
|
||||
const valid = useMemo(() => callStates.some(({ valid }) => valid), [callStates])
|
||||
|
||||
const tickData = useMemo(
|
||||
() =>
|
||||
callStates
|
||||
.map(({ result }) => (result as Result)?.populatedTicks)
|
||||
.reduce(
|
||||
(accumulator, current) => [
|
||||
...accumulator,
|
||||
...(current?.map((tickData: TickData) => {
|
||||
return {
|
||||
tick: tickData.tick,
|
||||
liquidityNet: tickData.liquidityNet,
|
||||
liquidityGross: tickData.liquidityGross,
|
||||
}
|
||||
}) ?? []),
|
||||
],
|
||||
[]
|
||||
),
|
||||
[callStates]
|
||||
)
|
||||
|
||||
// return the latest synced tickdata even if we are still loading the newest data
|
||||
useEffect(() => {
|
||||
if (!syncing && !loading && !error && valid) {
|
||||
setTickDataLatestSynced(tickData)
|
||||
}
|
||||
}, [error, loading, syncing, tickData, valid])
|
||||
|
||||
return useMemo(
|
||||
() => ({
|
||||
loading,
|
||||
syncing,
|
||||
error,
|
||||
valid,
|
||||
tickData: tickDataLatestSynced,
|
||||
}),
|
||||
[loading, syncing, error, valid, tickDataLatestSynced]
|
||||
)
|
||||
}
|
@ -9,7 +9,6 @@ import { abi as V3FactoryABI } from '@uniswap/v3-core/artifacts/contracts/Uniswa
|
||||
import { abi as V3PoolABI } from '@uniswap/v3-core/artifacts/contracts/UniswapV3Pool.sol/UniswapV3Pool.json'
|
||||
import { abi as QuoterABI } from '@uniswap/v3-periphery/artifacts/contracts/lens/Quoter.sol/Quoter.json'
|
||||
import { abi as V2MigratorABI } from '@uniswap/v3-periphery/artifacts/contracts/V3Migrator.sol/V3Migrator.json'
|
||||
import { abi as TickLensABI } from '@uniswap/v3-periphery/artifacts/contracts/lens/TickLens.sol/TickLens.json'
|
||||
import { abi as IUniswapV2Router02ABI } from '@uniswap/v2-periphery/build/IUniswapV2Router02.json'
|
||||
|
||||
import ARGENT_WALLET_DETECTOR_ABI from 'abis/argent-wallet-detector.json'
|
||||
@ -26,7 +25,6 @@ import EIP_2612 from 'abis/eip_2612.json'
|
||||
import {
|
||||
NONFUNGIBLE_POSITION_MANAGER_ADDRESSES,
|
||||
QUOTER_ADDRESSES,
|
||||
TICK_LENS_ADDRESSES,
|
||||
V3_CORE_FACTORY_ADDRESSES,
|
||||
V3_MIGRATOR_ADDRESSES,
|
||||
ARGENT_WALLET_DETECTOR_ADDRESS,
|
||||
@ -39,7 +37,7 @@ import {
|
||||
} from 'constants/addresses'
|
||||
import { abi as NFTPositionManagerABI } from '@uniswap/v3-periphery/artifacts/contracts/NonfungiblePositionManager.sol/NonfungiblePositionManager.json'
|
||||
import { useMemo } from 'react'
|
||||
import { Quoter, TickLens, UniswapV3Factory, UniswapV3Pool } from 'types/v3'
|
||||
import { Quoter, UniswapV3Factory, UniswapV3Pool } from 'types/v3'
|
||||
import { NonfungiblePositionManager } from 'types/v3/NonfungiblePositionManager'
|
||||
import { V3Migrator } from 'types/v3/V3Migrator'
|
||||
import { getContract } from 'utils'
|
||||
@ -155,7 +153,3 @@ export function useV3Pool(address: string | undefined) {
|
||||
export function useV3Quoter() {
|
||||
return useContract<Quoter>(QUOTER_ADDRESSES, QuoterABI)
|
||||
}
|
||||
|
||||
export function useTickLens(): TickLens | null {
|
||||
return useContract<TickLens>(TICK_LENS_ADDRESSES, TickLensABI)
|
||||
}
|
||||
|
@ -1,7 +1,6 @@
|
||||
import { Currency, CurrencyAmount, TradeType } from '@uniswap/sdk-core'
|
||||
import { Pair, Trade } from '@uniswap/v2-sdk'
|
||||
import { useMemo } from 'react'
|
||||
import { useUserSingleHopOnly } from 'state/user/hooks'
|
||||
import { isTradeBetter } from 'utils/isTradeBetter'
|
||||
import { BETTER_TRADE_LESS_HOPS_THRESHOLD } from '../constants/misc'
|
||||
import { useAllCurrencyCombinations } from './useAllCurrencyCombinations'
|
||||
|
Loading…
Reference in New Issue
Block a user