import { type ChangeEvent, type FormEvent } from 'react';
interface LoginFormData {
    email: string;
    password: string;
}
interface LoginFormState {
    formData: LoginFormData;
    errors: {
        email?: string;
        password?: string;
        form?: string;
    };
    isSubmitting: boolean;
}
interface UseLoginFormResult {
    formData: LoginFormData;
    errors: LoginFormState['errors'];
    isSubmitting: boolean;
    handleChange: (event: ChangeEvent<HTMLInputElement>) => void;
    handleSubmit: (event: FormEvent<HTMLFormElement>) => Promise<void>;
}
export interface LoginFormAuthAdapter {
    login: (credentials: LoginFormData) => Promise<'success' | 'mfa-required' | 'error'>;
    beginAuthentication?: (email: string) => Promise<{
        methods: readonly string[];
        lockedUntil: string | null;
    }>;
    isLoading: boolean;
    nextStep?: string | null;
    error: {
        message: string;
    } | null;
    lockedUntil?: string | null;
    availableMethods?: string[];
}
export declare function useLoginForm(auth: LoginFormAuthAdapter, onSuccess?: () => void, defaultEmail?: string): UseLoginFormResult;
export {};
//# sourceMappingURL=useLoginForm.d.ts.map