UNPKG

@crypto-dex-sdk/parachains-amplitude

Version:

Zenlink Parachains Impl for Amplitude

37 lines (33 loc) 1.28 kB
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]) }