import { ReactNode } from 'react';
import { AuthUser, EmailCodePurpose, OAuthProvider, UpdateProfileRequest } from '../lib/api/types';
interface AuthState {
    user: AuthUser | null;
    loading: boolean;
    isAuthenticated: boolean;
}
interface AuthContextValue extends AuthState {
    login: (email: string, password: string) => Promise<string>;
    loginWithEmailCode: (email: string, verificationCode: string) => Promise<string>;
    register: (email: string, password: string, verificationCode: string) => Promise<string>;
    sendEmailCode: (email: string, purpose: EmailCodePurpose) => Promise<string>;
    loginWithProvider: (provider: OAuthProvider) => Promise<string>;
    logout: () => Promise<string>;
    updateProfile: (payload: UpdateProfileRequest) => Promise<string>;
    uploadAvatar: (file: File) => Promise<string>;
}
declare function getStoredAccessToken(): string | null;
export declare function AuthProvider({ children }: {
    children: ReactNode;
}): import("react/jsx-runtime").JSX.Element;
export declare function useAuth(): AuthContextValue;
export { getStoredAccessToken };
//# sourceMappingURL=useAuth.d.ts.map