import { useRecoilState } from "recoil"; import { protocolTotalsState } from "../../../state/protocolTotals"; import { useContracts } from "../../useContracts/useContracts"; import { useWeb3Provider } from "../../useWeb3Provider/useWeb3Provider"; import { bigNumAsInt, weiBigNumAsFloat } from "../../../utils"; import { EmissionCurveABI__factory } from "digit-shared/src/types/generatedContractTypes"; export const useProtocolTotals = () => { const [protocolTotals, setProtocolTotals] = useRecoilState(protocolTotalsState); const { reliquary } = useContracts(); const { signer } = useWeb3Provider(); const fetchProtocolEmissionRate = async () => { const emissionContractAddress = await reliquary.emissionCurve(); const emissionContract = EmissionCurveABI__factory.connect( emissionContractAddress, signer! ); const rate = await emissionContract.getRate(0); return weiBigNumAsFloat(rate); }; const fetchProtocolTotals = async () => { const [emissionRate, allocationPoints] = await Promise.all([ fetchProtocolEmissionRate(), reliquary.totalAllocPoint(), ]); setProtocolTotals({ emissionRate, totalAllocPoints: bigNumAsInt(allocationPoints), }); }; return { fetchProtocolTotals, protocolTotals, }; };