70 lines
2.1 KiB
TypeScript
70 lines
2.1 KiB
TypeScript
import { useMemo } from 'react'
|
|
import useStakeRates from './useStakeRates'
|
|
import useMangoGroup from './useMangoGroup'
|
|
// import mangoStore from '@store/mangoStore'
|
|
import useLeverageMax from './useLeverageMax'
|
|
|
|
// const set = mangoStore.getState().set
|
|
|
|
export default function useBankRates(selectedToken: string, leverage: number) {
|
|
const { data: stakeRates } = useStakeRates()
|
|
const { group } = useMangoGroup()
|
|
|
|
// const estimatedMaxAPY = mangoStore((s) => s.estimatedMaxAPY.current)
|
|
const leverageMax = useLeverageMax(selectedToken)
|
|
|
|
const stakeBank = useMemo(() => {
|
|
return group?.banksMapByName.get(selectedToken)?.[0]
|
|
}, [selectedToken, group])
|
|
|
|
const borrowBank = useMemo(() => {
|
|
return group?.banksMapByName.get('USDC')?.[0]
|
|
}, [group])
|
|
|
|
const stakeBankDepositRate = useMemo(() => {
|
|
return stakeBank ? stakeBank.getDepositRateUi() : 0
|
|
}, [stakeBank])
|
|
|
|
const borrowBankBorrowRate = useMemo(() => {
|
|
return borrowBank ? borrowBank.getBorrowRateUi() : 0
|
|
}, [borrowBank])
|
|
|
|
const borrowBankStakeRate = useMemo(() => {
|
|
return stakeRates ? stakeRates[selectedToken.toLowerCase()] * 100 : 0
|
|
}, [stakeRates, selectedToken])
|
|
|
|
const leveragedAPY = useMemo(() => {
|
|
return borrowBankStakeRate ? borrowBankStakeRate * leverage : 0
|
|
}, [borrowBankStakeRate, leverage])
|
|
|
|
const estimatedNetAPY = useMemo(() => {
|
|
return (
|
|
borrowBankStakeRate * leverage - borrowBankBorrowRate * (leverage - 1)
|
|
)
|
|
}, [borrowBankStakeRate, leverage, borrowBankBorrowRate])
|
|
|
|
// useEffect(() => {
|
|
// set((s) => {
|
|
// s.estimatedMaxAPY.current =
|
|
// borrowBankStakeRate * leverageMax -
|
|
// borrowBankBorrowRate * (leverageMax - 1)
|
|
// })
|
|
// }, [borrowBankStakeRate, borrowBankBorrowRate, leverageMax])
|
|
|
|
const estimatedMaxAPY = useMemo(() => {
|
|
return (
|
|
borrowBankStakeRate * leverageMax -
|
|
borrowBankBorrowRate * (leverageMax - 1)
|
|
)
|
|
}, [borrowBankStakeRate, borrowBankBorrowRate, leverageMax])
|
|
|
|
return {
|
|
stakeBankDepositRate,
|
|
borrowBankBorrowRate,
|
|
borrowBankStakeRate,
|
|
leveragedAPY,
|
|
estimatedNetAPY,
|
|
estimatedMaxAPY,
|
|
}
|
|
}
|