mango-v4-ui/hooks/useStablePrice.ts

42 lines
1.3 KiB
TypeScript

import { I80F48, PerpMarket } from '@blockworks-foundation/mango-v4'
import { useMemo } from 'react'
import useMangoGroup from './useMangoGroup'
import useSelectedMarket from './useSelectedMarket'
import useBanks from './useBanks'
const useStablePrice = () => {
const { selectedMarket } = useSelectedMarket()
const { group } = useMangoGroup()
const { banks } = useBanks()
const stablePrice = useMemo(() => {
if (!group || !selectedMarket || !banks.length) return 0
let stablePrice
if (selectedMarket instanceof PerpMarket) {
stablePrice = selectedMarket.stablePriceModel.stablePrice || 0
} else {
const baseBank = banks.find(
(b) => b.tokenIndex === selectedMarket.baseTokenIndex,
)
const quoteBank = banks.find(
(b) => b.tokenIndex === selectedMarket.quoteTokenIndex,
)
const baseStablePrice = group.toUiPrice(
I80F48.fromNumber(baseBank!.stablePriceModel.stablePrice),
baseBank!.mintDecimals,
)
const quoteStablePrice = group.toUiPrice(
I80F48.fromNumber(quoteBank!.stablePriceModel.stablePrice),
quoteBank!.mintDecimals,
)
stablePrice = baseStablePrice / quoteStablePrice
}
return stablePrice
}, [banks, group, selectedMarket])
return stablePrice
}
export default useStablePrice