import { useCallback, MouseEvent, useMemo } from 'react' import InteractiveInputRow from './InteractiveInputRow' import { Token } from '@types' import { cleanNumberInput } from '@utils/cleanNumberInput' import { formatBigIntToString } from '@/utils/bigint/format' import { useSelector } from 'react-redux' import { RootState } from '@/store/store' import { useAccount } from 'wagmi' export const DepositTokenInput = ({ token, balanceStr, rawBalance, inputValueStr, onChange, chainId, address, }: { token: Token balanceStr: string rawBalance: bigint inputValueStr: string onChange: (v: string) => void chainId: number address: string }) => { const onClickMax = useCallback( (e: MouseEvent) => { e.preventDefault() const adjustedValue = rawBalance === 0n ? formatBigIntToString(rawBalance, token.decimals[chainId], 5) : formatBigIntToString(rawBalance, token.decimals[chainId]) onChange(adjustedValue) }, [onChange, balanceStr, token] ) return (
onChange(cleanNumberInput(e.target.value))} disabled={rawBalance === 0n} icon={token?.icon?.src} />
) } export const WithdrawTokenInput = ({ onChange, }: { onChange: (v: string) => void }) => { const { pool } = useSelector((state: RootState) => state.poolData) const { poolUserData } = useSelector((state: RootState) => state.poolUserData) const { inputValue } = useSelector((state: RootState) => state.poolWithdraw) const { address } = useAccount() const balanceStr = useMemo(() => { return poolUserData?.lpTokenBalance ? formatBigIntToString( poolUserData?.lpTokenBalance, pool.decimals[pool.chainId], 5 ) : '0.00000' }, [inputValue]) const onClickMax = useCallback( (e: MouseEvent) => { e.preventDefault() const adjustedValue = formatBigIntToString( poolUserData?.lpTokenBalance, pool.decimals[pool.chainId] ) onChange(adjustedValue) }, [onChange, balanceStr, pool] ) return (
onChange(cleanNumberInput(e.target.value))} disabled={poolUserData?.lpTokenBalance === 0n} icon={pool?.icon?.src} />
) }