import React__default, { ReactNode } from 'react';
import { MoonProvider } from '@moonup/ethers';
import { MoonSDK, Chains } from '@moonup/moon-sdk';
import { Session, SupabaseClient } from '@supabase/supabase-js';
import { Store } from 'mipd';
import { AuthModalConfig, TransactionResult } from '../types/types.js';
import { DBAdapterBase, DbWalletAlias } from '../database/DBAdapterBase.js';
import '../components/public/TokenManager/types.js';

type State = {
    moon: MoonSDK | null;
    dbAdapter: DBAdapterBase;
    authConfig: AuthModalConfig;
    session: Session | null;
    supabase: SupabaseClient | null;
    wallets: string[];
    aliases: DbWalletAlias[];
    chains: Chains[];
    chain: Chains | null;
    ethers?: MoonProvider | null;
    loading: boolean;
    wallet?: string;
    chatOpen: boolean;
    transactionHistory: TransactionResult[];
    signOut: () => Promise<void>;
    createWallet: () => Promise<void>;
    listWallets: () => Promise<void>;
    fetchAliases: () => Promise<void>;
    setWallet: (wallet: string) => Promise<void>;
    store: Store;
    connect: (accessToken?: string, refreshToken?: string) => Promise<void>;
    disconnect: () => Promise<void>;
    getUserSession: () => Promise<any>;
    connectEthers: () => Promise<void>;
    disconnectEthers: () => Promise<void>;
    request: (args: any) => Promise<any>;
    listChains: () => Promise<void>;
    setChain: (chain: Chains) => Promise<void>;
    setChatOpen: (isOpen: boolean) => Promise<void>;
    addTransactionResult: (result: TransactionResult) => void;
};
declare const MoonSDKContext: React__default.Context<State | undefined>;
declare global {
    interface Window {
        moon: MoonProvider;
    }
}
type MoonSDKProviderProps = {
    authConfig?: AuthModalConfig;
    children: ReactNode;
};
declare const MoonSDKProvider: React__default.FC<MoonSDKProviderProps>;

export { MoonSDKContext, MoonSDKProvider, State };
