import { useWeb3Provider } from "../useWeb3Provider/useWeb3Provider"; import { BigNumber } from "ethers"; import { Erc20ABI__factory } from "digit-shared/src/types/generatedContractTypes"; /** * A hook to hit the various functions provided by an ERC20 */ export const useErc20 = (tokenAddress: string) => { const { account, signer } = useWeb3Provider(); const approveReliquaryForAmount = async (approveAmount: BigNumber) => Erc20ABI__factory.connect(tokenAddress, signer!).approve( import.meta.env.VITE_RELIQUARY_CONTRACT_ADDRESS, approveAmount ); const approveContractForAmount = async ( contractAddress: string, approveAmount: BigNumber ) => Erc20ABI__factory.connect(tokenAddress, signer!).approve( contractAddress, approveAmount ); const decimalPoints = async () => Erc20ABI__factory.connect(tokenAddress, signer!).decimals(); const reliquaryAllowance = async () => Erc20ABI__factory.connect(tokenAddress, signer!).allowance( account!, import.meta.env.VITE_RELIQUARY_CONTRACT_ADDRESS ); const contractAllowance = async (contractAddress: string) => Erc20ABI__factory.connect(tokenAddress, signer!).allowance( account!, contractAddress ); const userBalance = async () => Erc20ABI__factory.connect(tokenAddress, signer!).balanceOf(account!); return { approveContractForAmount, approveReliquaryForAmount, contractAllowance, decimalPoints, reliquaryAllowance, userBalance, }; };