mango-v4-ui/hooks/useStablePrice.ts

42 lines
1.3 KiB
TypeScript
Raw Normal View History

2023-02-09 03:41:15 -08:00
import { I80F48, PerpMarket } from '@blockworks-foundation/mango-v4'
import { useMemo } from 'react'
import useMangoGroup from './useMangoGroup'
import useSelectedMarket from './useSelectedMarket'
2023-10-04 16:04:51 -07:00
import useBanks from './useBanks'
2023-02-09 03:41:15 -08:00
const useStablePrice = () => {
const { selectedMarket } = useSelectedMarket()
const { group } = useMangoGroup()
2023-10-04 16:04:51 -07:00
const { banks } = useBanks()
2023-02-09 03:41:15 -08:00
const stablePrice = useMemo(() => {
if (!group || !selectedMarket || !banks.length) return 0
let stablePrice
if (selectedMarket instanceof PerpMarket) {
stablePrice = selectedMarket.stablePriceModel.stablePrice || 0
2023-02-09 03:41:15 -08:00
} else {
const baseBank = banks.find(
2023-07-21 11:47:53 -07:00
(b) => b.tokenIndex === selectedMarket.baseTokenIndex,
2023-02-09 03:41:15 -08:00
)
const quoteBank = banks.find(
2023-07-21 11:47:53 -07:00
(b) => b.tokenIndex === selectedMarket.quoteTokenIndex,
2023-02-09 03:41:15 -08:00
)
const baseStablePrice = group.toUiPrice(
I80F48.fromNumber(baseBank!.stablePriceModel.stablePrice),
2023-07-21 11:47:53 -07:00
baseBank!.mintDecimals,
2023-02-09 03:41:15 -08:00
)
const quoteStablePrice = group.toUiPrice(
I80F48.fromNumber(quoteBank!.stablePriceModel.stablePrice),
2023-07-21 11:47:53 -07:00
quoteBank!.mintDecimals,
2023-02-09 03:41:15 -08:00
)
stablePrice = baseStablePrice / quoteStablePrice
}
return stablePrice
2023-02-26 17:04:02 -08:00
}, [banks, group, selectedMarket])
2023-02-09 03:41:15 -08:00
return stablePrice
}
export default useStablePrice