import { ImageMetadata } from '../../atoms/image/types';
import { OAuthProvider } from '../../../services/auth/types';
import { AuthUser } from '../../../services/auth/types';
/**
 * Configuration for legal notice displayed in the login component
 */
export interface LoginLegalConfig {
    /** Company name to display */
    companyName: string;
    /** Link for company name (optional) */
    companyLink?: string;
    /** Link to terms and conditions page */
    termsLink?: string;
    /** Link to privacy policy page */
    privacyLink?: string;
}
/**
 * Main configuration for the Login component
 */
export interface LoginMetadata {
    /** Logo to display at the top of the form */
    logo?: ImageMetadata;
    /** Show OAuth login buttons (default: true) */
    showOAuth?: boolean;
    /** OAuth providers to show (default: ['google']) */
    oauthProviders?: OAuthProvider[];
    /** Show register link and modal (default: true) */
    showRegister?: boolean;
    /** Show forgot password link and modal (default: true) */
    showForgotPassword?: boolean;
    /** Wrap component in card-style container with background, shadow, rounded corners (default: false) */
    showCard?: boolean;
    /** Legal notice configuration */
    legal?: LoginLegalConfig;
    /** Route to redirect after successful login (optional - if not set, emits event) */
    redirectOnSuccess?: string;
}
/**
 * Event emitted when login is successful
 */
export interface LoginSuccessEvent {
    /** The authenticated user */
    user: AuthUser | null;
    /** Whether MFA was required and completed */
    mfaCompleted?: boolean;
    /** Whether this was an OAuth login */
    oauthProvider?: OAuthProvider;
}
/**
 * Event emitted when login fails
 */
export interface LoginErrorEvent {
    /** Error code from the backend */
    code?: string;
    /** Human-readable error message */
    message: string;
    /** The operation that failed */
    operation: 'signin' | 'signup' | 'verify' | 'forgot' | 'reset' | 'mfa' | 'oauth';
}
/**
 * Event emitted when MFA verification is required
 */
export interface MFARequiredEvent {
    /** MFA method required */
    method: 'TOTP' | 'EMAIL' | 'SMS';
}
/**
 * Default values for LoginMetadata
 */
export declare const LOGIN_DEFAULTS: Required<Omit<LoginMetadata, 'logo' | 'legal' | 'redirectOnSuccess'>>;
