import { VertesiaClient } from '@vertesia/client';
import { AuthTokenPayload } from '@vertesia/common';
import { TypeRegistry } from './TypeRegistry';
import { LastSelectedAccountId_KEY, LastSelectedProjectId_KEY } from './constants';
export { LastSelectedAccountId_KEY, LastSelectedProjectId_KEY };
declare class UserSession {
    isLoading: boolean;
    client: VertesiaClient;
    authError?: Error;
    authToken?: AuthTokenPayload;
    typeRegistry?: TypeRegistry;
    setSession?: (session: UserSession) => void;
    lastSelectedAccount?: string | null;
    lastSelectedProject?: string | null;
    onboardingComplete?: boolean;
    constructor(client?: VertesiaClient, setSession?: (session: UserSession) => void);
    get store(): import("@vertesia/client").ZenoClient;
    get user(): AuthTokenPayload | undefined;
    get account(): import("@vertesia/common").AccountRef | undefined;
    get project(): import("@vertesia/common").ProjectRef | undefined;
    get accounts(): import("@vertesia/common").AccountRef[] | undefined;
    get authCallback(): Promise<string>;
    get rawAuthToken(): Promise<string>;
    signOut(): void;
    getAccount(): import("@vertesia/common").AccountRef | undefined;
    login(token: string): Promise<void>;
    isLoggedIn(): boolean;
    logout(): void;
    switchAccount(targetAccountId: string): Promise<void>;
    switchProject(targetProjectId: string): Promise<void>;
    _loadTypes(): Promise<TypeRegistry | undefined>;
    reloadTypes(): Promise<void>;
    fetchAccounts(): Promise<void>;
    fetchOnboardingStatus(): Promise<boolean>;
    clone(): UserSession;
}
declare const UserSessionContext: import("react").Context<UserSession>;
export declare function useUserSession(): UserSession;
export { UserSession, UserSessionContext };
//# sourceMappingURL=UserSession.d.ts.map