import React, {useCallback, useMemo, useState} from 'react'; import Button from '../../../components/Button'; import Modal, {ModalProps} from '../../../components/Modal'; import ModalActions from '../../../components/ModalActions'; import ModalTitle from '../../../components/ModalTitle'; import TokenInput from '../../../components/TokenInput'; import {getFullDisplayBalance} from '../../../utils/formatBalance'; import {BigNumber} from 'ethers'; import Label from '../../../components/Label'; interface ExchangeModalProps extends ModalProps { max: BigNumber; onConfirm: (amount: string) => void; title: string; description: string; action: string; tokenName: string; } const ExchangeModal: React.FC = ({ max, title, description, onConfirm, onDismiss, action, tokenName, }) => { const [val, setVal] = useState(''); const fullBalance = useMemo(() => getFullDisplayBalance(max), [max]); const handleChange = useCallback((e: React.FormEvent) => setVal(e.currentTarget.value), [setVal]); const handleSelectMax = useCallback(() => { setVal(fullBalance); }, [fullBalance, setVal]); return (