import { useCallback, useMemo, useState } from 'react' import StakeForm from '@components/StakeForm' import mangoStore from '@store/mangoStore' import { getStakableTokensDataForTokenName } from 'utils/tokens' import { ArrowLeftIcon, XMarkIcon } from '@heroicons/react/20/solid' import DespositForm from './DepositForm' import { EnterBottomExitBottom } from './shared/Transitions' import TokenSelect from './TokenSelect' import { IconButton } from './shared/Button' import HeroTokenButton from './HeroTokenButton' import useStakeableTokens, { StakeableToken } from 'hooks/useStakeableTokens' import { useTheme } from 'next-themes' const set = mangoStore.getState().set export const YIELD_BUTTON_CLASSES = `flex items-center justify-center rounded-xl raised-button-neutral group after:rounded-xl h-32 px-6 md:px-6 w-full after:border after:border-th-bkg-3 focus:outline-none disabled:cursor-not-allowed disabled:opacity-50` export const SOL_YIELD = [ 'bSOL', 'MSOL', 'JitoSOL', 'JSOL', 'INF', 'hubSOL', 'digitSOL', 'dualSOL', 'mangoSOL', 'compassSOL', ] const Stake = () => { const { theme } = useTheme() const [showTokenSelect, setShowTokenSelect] = useState(false) const selectedToken = mangoStore((s) => s.selectedToken) const { stakeableTokens } = useStakeableTokens() const handleTokenSelect = useCallback((token: string) => { set((state) => { state.selectedToken = token }) setShowTokenSelect(false) }, []) const selectableTokens = useMemo(() => { return stakeableTokens.sort((a: StakeableToken, b: StakeableToken) => { const aApy = a.estNetApy const bApy = b.estNetApy return bApy - aApy }) }, [stakeableTokens]) // const swapUrl = `https://app.mango.markets/swap?in=USDC&out=${selectedToken}&walletSwap=true` return ( <>

Select token to Boost!

setShowTokenSelect(false)} hideBg size="medium" >

Token

Wallet Balance

{selectableTokens.map((token) => ( handleTokenSelect(token.token.symbol)} tokenInfo={token} clientContext={ getStakableTokensDataForTokenName(token.token.symbol) .clientContext } /> ))}
{selectableTokens.length ? ( !selectedToken ? ( <>

Welcome yield fan 👋

It's time to leverage up your liquid staking yield.

Select to earn leveraged yield

{selectableTokens.map((token) => { const { symbol } = token.token return ( set((state) => { state.selectedToken = symbol }) } tokenInfo={token} /> ) })}
) : ( <>
set((state) => { state.selectedToken = '' }) } size="small" isPrimary >

Add {selectedToken}

{selectedToken === 'USDC' ? ( ) : ( )} ) ) : (

No positions to remove

)}
) } export default Stake