import { type AuthResponse } from "prostgles-types";
import type { AuthHandler, PasswordLogin, PasswordRegister } from "lib/getAuthHandler";
export declare const useAuthState: ({ auth }: {
    auth: AuthHandler;
}) => {
    formHandlers: {
        onCall: PasswordLogin | undefined;
        password?: string | undefined;
        setPassword?: import("react").Dispatch<import("react").SetStateAction<string>> | undefined;
        state: "login";
        username: string;
        setUsername: import("react").Dispatch<import("react").SetStateAction<string>>;
        totpToken?: undefined;
        setTotpToken?: undefined;
        totpRecoveryCode?: undefined;
        setTotpRecoveryCode?: undefined;
        confirmPassword?: undefined;
        setConfirmPassword?: undefined;
        result?: undefined;
        emailVerificationCode?: undefined;
        setEmailVerificationCode?: undefined;
    } | {
        state: "loginTotp";
        totpToken: string;
        setTotpToken: import("react").Dispatch<import("react").SetStateAction<string>>;
        onCall: PasswordLogin;
        totpRecoveryCode?: undefined;
        setTotpRecoveryCode?: undefined;
        username?: undefined;
        setUsername?: undefined;
        password?: undefined;
        setPassword?: undefined;
        confirmPassword?: undefined;
        setConfirmPassword?: undefined;
        result?: undefined;
        emailVerificationCode?: undefined;
        setEmailVerificationCode?: undefined;
    } | {
        state: "loginTotpRecovery";
        totpRecoveryCode: string;
        setTotpRecoveryCode: import("react").Dispatch<import("react").SetStateAction<string>>;
        onCall: PasswordLogin;
        totpToken?: undefined;
        setTotpToken?: undefined;
        username?: undefined;
        setUsername?: undefined;
        password?: undefined;
        setPassword?: undefined;
        confirmPassword?: undefined;
        setConfirmPassword?: undefined;
        result?: undefined;
        emailVerificationCode?: undefined;
        setEmailVerificationCode?: undefined;
    } | {
        state: "registerWithPassword";
        username: string;
        setUsername: import("react").Dispatch<import("react").SetStateAction<string>>;
        password: string;
        setPassword: import("react").Dispatch<import("react").SetStateAction<string>>;
        confirmPassword: string;
        setConfirmPassword: import("react").Dispatch<import("react").SetStateAction<string>>;
        onCall: PasswordRegister;
        result: (import("prostgles-types").CommonAuthFailure & {
            redirect_url?: string;
        }) | ({
            success: false;
            code: "no-match";
            message?: string;
        } & {
            redirect_url?: string;
        }) | ({
            success: false;
            code: "inactive-account";
            message?: string;
        } & {
            redirect_url?: string;
        }) | ({
            success: false;
            code: "totp-token-missing" | "invalid-username" | "username-missing" | "invalid-email" | "password-missing" | "invalid-password" | "is-from-OAuth" | "is-from-magic-link" | "invalid-totp-recovery-code" | "invalid-totp-code" | "email-not-confirmed";
            message?: string;
        } & {
            redirect_url?: string;
        }) | (AuthResponse.AuthSuccess & {
            redirect_url?: string;
        }) | (AuthResponse.MagicLinkAuthSuccess & {
            redirect_url?: string;
        }) | ({
            success: false;
            code: "expired-magic-link" | "invalid-magic-link" | "used-magic-link";
            message?: string;
        } & {
            redirect_url?: string;
        }) | ({
            success: false;
            code: "provider-issue";
            message?: string;
        } & {
            redirect_url?: string;
        }) | (AuthResponse.PasswordRegisterSuccess & {
            redirect_url?: string;
        }) | ({
            success: false;
            code: "username-missing" | "password-missing" | "weak-password" | "user-already-registered" | "invalid-email-confirmation-code" | "expired-email-confirmation-code" | "inactive-account";
            message?: string;
        } & {
            redirect_url?: string;
        }) | undefined;
        totpToken?: undefined;
        setTotpToken?: undefined;
        totpRecoveryCode?: undefined;
        setTotpRecoveryCode?: undefined;
        emailVerificationCode?: undefined;
        setEmailVerificationCode?: undefined;
    } | {
        state: "registerWithPasswordConfirmationCode";
        username: string;
        emailVerificationCode: string;
        setEmailVerificationCode: import("react").Dispatch<import("react").SetStateAction<string>>;
        onCall: () => Promise<import("lib/getAuthHandler").PasswordRegisterResponse>;
        result: (import("prostgles-types").CommonAuthFailure & {
            redirect_url?: string;
        }) | ({
            success: false;
            code: "no-match";
            message?: string;
        } & {
            redirect_url?: string;
        }) | ({
            success: false;
            code: "inactive-account";
            message?: string;
        } & {
            redirect_url?: string;
        }) | ({
            success: false;
            code: "totp-token-missing" | "invalid-username" | "username-missing" | "invalid-email" | "password-missing" | "invalid-password" | "is-from-OAuth" | "is-from-magic-link" | "invalid-totp-recovery-code" | "invalid-totp-code" | "email-not-confirmed";
            message?: string;
        } & {
            redirect_url?: string;
        }) | (AuthResponse.AuthSuccess & {
            redirect_url?: string;
        }) | (AuthResponse.MagicLinkAuthSuccess & {
            redirect_url?: string;
        }) | ({
            success: false;
            code: "expired-magic-link" | "invalid-magic-link" | "used-magic-link";
            message?: string;
        } & {
            redirect_url?: string;
        }) | ({
            success: false;
            code: "provider-issue";
            message?: string;
        } & {
            redirect_url?: string;
        }) | (AuthResponse.PasswordRegisterSuccess & {
            redirect_url?: string;
        }) | ({
            success: false;
            code: "username-missing" | "password-missing" | "weak-password" | "user-already-registered" | "invalid-email-confirmation-code" | "expired-email-confirmation-code" | "inactive-account";
            message?: string;
        } & {
            redirect_url?: string;
        }) | undefined;
        totpToken?: undefined;
        setTotpToken?: undefined;
        totpRecoveryCode?: undefined;
        setTotpRecoveryCode?: undefined;
        setUsername?: undefined;
        password?: undefined;
        setPassword?: undefined;
        confirmPassword?: undefined;
        setConfirmPassword?: undefined;
    } | undefined;
    error: string;
    setState: import("react").Dispatch<import("react").SetStateAction<"login" | "loginTotp" | "loginTotpRecovery" | "registerWithPassword" | "registerWithPasswordConfirmationCode">>;
    state: "login" | "loginTotp" | "loginTotpRecovery" | "registerWithPassword" | "registerWithPasswordConfirmationCode";
    loading: boolean;
    onAuthCall: () => Promise<void | (import("prostgles-types").CommonAuthFailure & {
        redirect_url?: string;
    }) | ({
        success: false;
        code: "no-match";
        message?: string;
    } & {
        redirect_url?: string;
    }) | ({
        success: false;
        code: "totp-token-missing" | "invalid-username" | "username-missing" | "invalid-email" | "password-missing" | "invalid-password" | "is-from-OAuth" | "is-from-magic-link" | "invalid-totp-recovery-code" | "invalid-totp-code" | "email-not-confirmed";
        message?: string;
    } & {
        redirect_url?: string;
    }) | (AuthResponse.AuthSuccess & {
        redirect_url?: string;
    }) | (AuthResponse.MagicLinkAuthSuccess & {
        redirect_url?: string;
    }) | ({
        success: false;
        code: "expired-magic-link" | "invalid-magic-link" | "used-magic-link";
        message?: string;
    } & {
        redirect_url?: string;
    }) | ({
        success: false;
        code: "provider-issue";
        message?: string;
    } & {
        redirect_url?: string;
    }) | (AuthResponse.PasswordRegisterSuccess & {
        redirect_url?: string;
    }) | ({
        success: false;
        code: "username-missing" | "password-missing" | "weak-password" | "user-already-registered" | "invalid-email-confirmation-code" | "expired-email-confirmation-code" | "inactive-account";
        message?: string;
    } & {
        redirect_url?: string;
    })>;
    isOnLogin: boolean;
    registerTypeAllowed: "registerWithPassword";
    result: (import("prostgles-types").CommonAuthFailure & {
        redirect_url?: string;
    }) | ({
        success: false;
        code: "no-match";
        message?: string;
    } & {
        redirect_url?: string;
    }) | ({
        success: false;
        code: "inactive-account";
        message?: string;
    } & {
        redirect_url?: string;
    }) | ({
        success: false;
        code: "totp-token-missing" | "invalid-username" | "username-missing" | "invalid-email" | "password-missing" | "invalid-password" | "is-from-OAuth" | "is-from-magic-link" | "invalid-totp-recovery-code" | "invalid-totp-code" | "email-not-confirmed";
        message?: string;
    } & {
        redirect_url?: string;
    }) | (AuthResponse.AuthSuccess & {
        redirect_url?: string;
    }) | (AuthResponse.MagicLinkAuthSuccess & {
        redirect_url?: string;
    }) | ({
        success: false;
        code: "expired-magic-link" | "invalid-magic-link" | "used-magic-link";
        message?: string;
    } & {
        redirect_url?: string;
    }) | ({
        success: false;
        code: "provider-issue";
        message?: string;
    } & {
        redirect_url?: string;
    }) | (AuthResponse.PasswordRegisterSuccess & {
        redirect_url?: string;
    }) | ({
        success: false;
        code: "username-missing" | "password-missing" | "weak-password" | "user-already-registered" | "invalid-email-confirmation-code" | "expired-email-confirmation-code" | "inactive-account";
        message?: string;
    } & {
        redirect_url?: string;
    }) | undefined;
    authResponse: {
        success: boolean;
        message: string;
    } | undefined;
    clearAuthResponse: () => void;
};
export declare const ERR_CODE_MESSAGES: {
    "no-match": string;
    "password-missing": string;
    "totp-token-missing": string;
    "invalid-totp-recovery-code": string;
    "rate-limit-exceeded": string;
    "email-not-confirmed": string;
    "expired-magic-link": string;
    "inactive-account": string;
    "invalid-password": string;
    "invalid-totp-code": string;
    "invalid-username": string;
    "is-from-magic-link": string;
    "is-from-OAuth": string;
    "server-error": string;
    "something-went-wrong": string;
    "user-already-registered": string;
    "username-missing": string;
    "weak-password": string;
    "expired-email-confirmation-code": string;
    "invalid-email-confirmation-code": string;
    "invalid-magic-link": string;
    "used-magic-link": string;
    "invalid-email": string;
};
//# sourceMappingURL=useAuthState.d.ts.map