-
Notifications
You must be signed in to change notification settings - Fork 3.6k
/
Copy pathutils.ts
52 lines (47 loc) · 1.98 KB
/
utils.ts
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
import { ChainId } from '@pancakeswap/chains'
import { CHAIN_QUERY_NAME } from 'config/chains'
import { multiChainPaths } from './constant'
import { ApiPoolData, InfoDataSource, PoolDataForView } from './types'
// TODO: refactor
// Params should be defined in object for future extension
export function getTokenInfoPath(
chainId: ChainId | undefined,
address: string,
dataSource: InfoDataSource = InfoDataSource.V3,
stableSwapPath = '',
) {
return `/info${dataSource === InfoDataSource.V3 ? '/v3' : ''}${
multiChainPaths[chainId ?? '']
}/tokens/${address}?chain=${CHAIN_QUERY_NAME[chainId ?? '']}${stableSwapPath.replace('?', '&')}`
}
export const get2DayChange = (valueNow: string, value24HoursAgo: string, value48HoursAgo: string): [number, number] => {
// get volume info for both 24 hour periods
const currentChange = parseFloat(valueNow) - parseFloat(value24HoursAgo)
const previousChange = parseFloat(value24HoursAgo) - parseFloat(value48HoursAgo)
const adjustedPercentChange = ((currentChange - previousChange) / previousChange) * 100
if (Number.isNaN(adjustedPercentChange) || !Number.isFinite(adjustedPercentChange)) {
return [currentChange, 0]
}
return [currentChange, adjustedPercentChange]
}
export function transformPoolData(item: ApiPoolData): PoolDataForView {
return {
feeTier: item.feeTier,
address: item.id,
volumeUSD: parseFloat(item.volumeUSD24h),
volumeUSDWeek: parseFloat(item.volumeUSD7d),
token0: { ...item.token0, address: item.token0.id, derivedETH: 0 },
token1: { ...item.token1, address: item.token1.id, derivedETH: 0 },
feeUSD: item.totalFeeUSD,
liquidity: parseFloat(item.liquidity),
sqrtPrice: parseFloat(item.sqrtPrice),
tick: item.tick ?? 0,
tvlUSD: parseFloat(item.tvlUSD),
token0Price: parseFloat(item.token0Price),
token1Price: parseFloat(item.token1Price),
tvlToken0: parseFloat(item.tvlToken0),
tvlToken1: parseFloat(item.tvlToken1),
volumeUSDChange: 0,
tvlUSDChange: 0,
}
}