import { LoginProvider, OAuthProvider, ThirdPartyWallet } from './types';
export type View = 'login' | 'otp' | 'additional_providers' | 'wallet_pending' | 'oauth_pending' | 'email_otp_pending' | 'device_verification' | 'mfa_pending' | 'recovery_code' | 'lost_recovery_code' | 'login_success';
export type EmailLoginStatus = 'idle' | 'sending' | 'otp_sent' | 'verifying_otp' | 'invalid_otp' | 'expired_otp' | 'max_attempts_reached' | 'device_needs_approval' | 'device_verification_sent' | 'device_verification_expired' | 'device_approved' | 'mfa_required' | 'recovery_code' | 'success' | 'mfa_verifying' | 'mfa_invalid' | 'recovery_code_verifying' | 'lost_recovery_code' | 'error';
export interface WidgetState {
    view: View;
    email?: string;
    selectedProvider?: LoginProvider;
    error?: string;
    emailLoginStatus?: EmailLoginStatus;
}
export type WidgetAction = {
    type: 'GO_TO_LOGIN';
} | {
    type: 'EMAIL_OTP_START';
    email: string;
} | {
    type: 'EMAIL_OTP_SENT';
} | {
    type: 'EMAIL_OTP_INVALID';
} | {
    type: 'EMAIL_OTP_EXPIRED';
} | {
    type: 'EMAIL_OTP_MAX_ATTEMPTS_REACHED';
} | {
    type: 'EMAIL_OTP_VERIFYING';
} | {
    type: 'DEVICE_NEEDS_APPROVAL';
} | {
    type: 'DEVICE_VERIFICATION_SENT';
} | {
    type: 'DEVICE_VERIFICATION_EXPIRED';
} | {
    type: 'DEVICE_APPROVED';
} | {
    type: 'MFA_REQUIRED';
} | {
    type: 'MFA_VERIFYING';
} | {
    type: 'MFA_INVALID';
} | {
    type: 'LOST_DEVICE';
} | {
    type: 'RECOVERY_CODE_VERIFYING';
} | {
    type: 'RECOVERY_CODE_INVALID';
} | {
    type: 'LOST_RECOVERY_CODE';
} | {
    type: 'LOGIN_SUCCESS';
} | {
    type: 'RESET_EMAIL_ERROR';
} | {
    type: 'LOGIN_ERROR';
    error: string;
} | {
    type: 'SELECT_PROVIDER';
    provider: OAuthProvider;
} | {
    type: 'GO_TO_ADDITIONAL_PROVIDERS';
} | {
    type: 'SELECT_WALLET';
    provider: ThirdPartyWallet;
};
export declare const initialState: WidgetState;
export declare function widgetReducer(state: WidgetState, action: WidgetAction): WidgetState;
