import React, { useState } from 'react'; import { useSelector } from 'react-redux'; import BN from 'bn.js'; import Select from '@material-ui/core/Select'; import MenuItem from '@material-ui/core/MenuItem'; import { PublicKey } from '@solana/web3.js'; import { State as StoreState, ProgramAccount } from '../../store/reducer'; import { toDisplay } from '../../utils/tokens'; type Props = { style?: any; mint?: PublicKey | null; decimals: number; variant?: 'outlined' | 'standard'; onChange: (from: PublicKey, maxAmount: BN) => void; deposit?: boolean; }; export default function VestingAccountsSelect(p: Props) { const { mint, decimals, variant, onChange, style, deposit } = p; const vestings: ProgramAccount[] = useSelector((state: StoreState) => { if (!mint) { return []; } return state.lockup.vestings .map(v => { return { publicKey: v, account: state.accounts[v.toString()] }; }) .filter(v => v.account.mint.equals(mint)); }); const [fromAccount, setFromAccount] = useState(''); return ( ); } function availableAmount(v: ProgramAccount, deposit?: boolean): BN { return deposit ? v.account.outstanding.sub(v.account.whitelistOwned) : v.account.whitelistOwned; }