import { AnyTokenSelectorModal, Button, ChainSelector, ChainSelectorModal, ChatBot, LifiChainSelectorModal, LifiTokenSelectorModal, SwapInterface, UserTokenManager, WalletSelector, WalletSelectorModal, } from "@/components"; import { useAave, useChains, useMoonAccount } from "@/hooks"; import type { Chains } from "@moonup/moon-sdk"; import type { Session } from "@supabase/supabase-js"; import React from "react"; import { useAccount } from "wagmi"; import { useMoonAuth } from "../../context"; import { useMoonSDK } from "../../hooks/old/useMoonSDK"; interface AccountInfoProps { session: Session | null; address: string | undefined; status: string | undefined; selectedChain: Chains | null; } interface WalletSectionProps { accounts: string[]; createAccount: (input: any) => void; deleteAccount: (wallet: string) => Promise; getBalance: (wallet: string) => void; } interface LifiSectionProps { setLifiChainKey: React.Dispatch>; lifiChainKey: string | undefined; } interface ChatBotSectionProps { setChatOpen: (isOpen: boolean) => Promise; chatOpen: boolean; } interface AaveSectionProps { getAaveV3PoolAddress: ( accountName: string, chainId: string, ) => Promise; accounts: string[]; } export function Account() { const { address, status } = useAccount(); const { setChatOpen, chatOpen } = useMoonSDK(); const { moon, session, signOut } = useMoonAuth(); const { fetchChains, selectedChain } = useChains(); const { accounts, createAccount, deleteAccount, listAccounts, getBalance } = useMoonAccount(); const [lifiChainKey, setLifiChainKey] = React.useState(); const { getAaveV3PoolAddress } = useAave(); React.useEffect(() => { listAccounts(); fetchChains(); }, [listAccounts, fetchChains]); if (!moon || !session) { return
Loading...
; } return (
); } function AccountInfo({ session, address, status, selectedChain, }: AccountInfoProps) { return (

Welcome, {session?.user?.email}

{address &&

Address: {address}

} {status &&

Status: {status}

} {selectedChain &&

Chain: {selectedChain.name}

}
); } function WalletSection({ accounts, createAccount, deleteAccount, getBalance, }: WalletSectionProps) { return (
{accounts && accounts.length > 0 ? (
Wallets
{accounts.map((wallet) => (
getBalance(wallet)} > {wallet}{" "}
))}
) : (
No wallets connected
)}
); } function ChainSection() { return (
Moon Chains
); } function LifiSection({ setLifiChainKey, lifiChainKey }: LifiSectionProps) { return (
Lifi
{ console.log(chainId); setLifiChainKey(chainId); }} /> { console.log(chainId); }} />
); } function TokenManagerSection() { return (
Token Manager
); } function SwapSection() { return (
Swap Interface
); } function AnyTokenSelectorSection() { return (
Any Token Selector
{ console.log(tokenAddress); }} />
); } function ChatBotSection({ setChatOpen, chatOpen }: ChatBotSectionProps) { return ( <> ); } function AaveSection({ getAaveV3PoolAddress, accounts }: AaveSectionProps) { return ( ); } function SignOutButton({ signOut, }: { signOut: () => void; }) { return ( ); } export default Account;