import { useErc20 } from '@/hooks'; import { motion } from 'framer-motion'; import React, { useEffect, useState } from 'react'; /** * Props for the ERC20TotalSupplyDisplay component. * * @interface ERC20TotalSupplyDisplayProps * @property {string} tokenAddress - The address of the ERC20 token. * @property {string} chainId - The ID of the blockchain network. * @property {string} [className] - Optional CSS class name for styling. */ export interface ERC20TotalSupplyDisplayProps { tokenAddress: string; chainId: string; className?: string; } /** * ERC20TotalSupplyDisplay is a React functional component that displays the total supply of an ERC20 token. * It fetches the total supply using the `getTotalSupplyErc20` function from the `useErc20` hook. * The total supply is fetched based on the provided `tokenAddress` and `chainId` props. * * @component * @param {ERC20TotalSupplyDisplayProps} props - The properties for the component. * @param {string} props.tokenAddress - The address of the ERC20 token. * @param {number} props.chainId - The chain ID of the blockchain network. * @param {string} [props.className] - Additional CSS classes to apply to the component. * * @example * * * @returns {JSX.Element} The rendered component displaying the total supply of the ERC20 token. */ export const ERC20TotalSupplyDisplay: React.FC< ERC20TotalSupplyDisplayProps > = ({ tokenAddress, chainId, className = '' }) => { const { getTotalSupplyErc20 } = useErc20(); const [totalSupply, setTotalSupply] = useState(''); useEffect(() => { const fetchTotalSupply = async () => { try { const result = await getTotalSupplyErc20({ account: '0x0000000000000000000000000000000000000000', // Use a dummy address to get the total supply address: tokenAddress, chainId, }); setTotalSupply(result); } catch (error) { console.error('Failed to fetch total supply:', error); } }; fetchTotalSupply(); }, [tokenAddress, chainId]); return ( Total Supply: {totalSupply} ); }; export default ERC20TotalSupplyDisplay;