@crypto-dex-sdk/parachains-amplitude
Version:
Zenlink Parachains Impl for Amplitude
37 lines (33 loc) • 1.28 kB
text/typescript
import type { Pair } from '@crypto-dex-sdk/amm'
import type { ParachainId } from '@crypto-dex-sdk/chain'
import type { PairStatus as _PairStatus, ZenlinkAssetBalance } from '@zenlink-types/bifrost/interfaces'
import { Amount } from '@crypto-dex-sdk/currency'
import { addressToZenlinkAssetId } from '@crypto-dex-sdk/format'
import { useApi, useCall } from '@crypto-dex-sdk/polkadot'
import { useMemo } from 'react'
interface PairStatus extends Omit<_PairStatus, 'asTrading'> {
asTrading: {
totalSupply: ZenlinkAssetBalance
}
}
export function usePairTotalSupply(pair: Pair | undefined | null, chainId: ParachainId, enabled = true) {
const api = useApi(chainId)
const pairStatus = useCall<PairStatus>({
chainId,
fn: api?.query.zenlinkProtocol.pairStatuses,
params: pair && enabled
? [
[
addressToZenlinkAssetId(pair.token0.address),
addressToZenlinkAssetId(pair.token1.address),
],
]
: [],
options: { enabled: enabled && !!api },
})
return useMemo(() => {
if (!pair || !pairStatus || pairStatus.isDisable || !pairStatus.isTrading)
return undefined
return Amount.fromRawAmount(pair.liquidityToken, pairStatus.asTrading.totalSupply.toHex())
}, [pair, pairStatus])
}