import {useCallback, useEffect, useState} from 'react'; import {useWallet} from 'use-wallet'; import {BigNumber} from 'ethers'; import ERC20 from '../unicorn-finance/ERC20'; const useAllowance = (token: ERC20, spender: string, pendingApproval?: boolean) => { const [allowance, setAllowance] = useState(null); const {account} = useWallet(); const fetchAllowance = useCallback(async () => { const allowance = await token.allowance(account, spender); setAllowance(allowance); }, [account, spender, token]); useEffect(() => { if (account && spender && token) { fetchAllowance().catch((err) => console.error(`Failed to fetch allowance: ${err.stack}`)); } }, [account, spender, token, pendingApproval, fetchAllowance]); return allowance; }; export default useAllowance;