import { AuthState, AuthUser, AuthError, MFAPendingState, StoredAuthState } from './types';
import * as i0 from "@angular/core";
/**
 * Servicio para manejo de estado de autenticación con Angular Signals.
 * Proporciona estado reactivo inmutable.
 */
export declare class AuthStateService {
    private _state;
    private _mfaPending;
    /** Estado completo de autenticación */
    readonly state: import("@angular/core").Signal<AuthState>;
    /** Estado de MFA pendiente */
    readonly mfaPending: import("@angular/core").Signal<MFAPendingState>;
    /** Usuario está autenticado */
    readonly isAuthenticated: import("@angular/core").Signal<boolean>;
    /** Estado de carga */
    readonly isLoading: import("@angular/core").Signal<boolean>;
    /** Token de acceso */
    readonly accessToken: import("@angular/core").Signal<string>;
    /** Roles del usuario */
    readonly roles: import("@angular/core").Signal<string[]>;
    /** Permisos del usuario */
    readonly permissions: import("@angular/core").Signal<string[]>;
    /** Usuario es super admin */
    readonly isSuperAdmin: import("@angular/core").Signal<boolean>;
    /** Usuario tiene suscripción premium activa (no ve ads) */
    readonly isPremium: import("@angular/core").Signal<boolean>;
    /** Error actual */
    readonly error: import("@angular/core").Signal<AuthError>;
    /** Información del usuario */
    readonly user: import("@angular/core").Signal<AuthUser>;
    /**
     * Establece el estado de carga.
     */
    setLoading(isLoading: boolean): void;
    /**
     * Establece el estado de autenticación exitosa.
     */
    setAuthenticated(data: {
        accessToken: string;
        refreshToken: string;
        userId?: string;
        email?: string;
        roles: string[];
        permissions: string[];
        isSuperAdmin: boolean;
        isPremium?: boolean;
        expiresAt: number;
    }): void;
    /**
     * Actualiza solo el access token (después de refresh).
     */
    updateAccessToken(accessToken: string, expiresIn: number): void;
    /**
     * Actualiza el refresh token (token rotation).
     */
    updateRefreshToken(refreshToken: string): void;
    /**
     * Actualiza los permisos.
     */
    updatePermissions(roles: string[], permissions: string[], isSuperAdmin: boolean): void;
    /**
     * Establece un error de autenticación.
     */
    setError(error: AuthError): void;
    /**
     * Limpia el error.
     */
    clearError(): void;
    /**
     * Establece estado de MFA pendiente.
     */
    setMFAPending(mfaState: MFAPendingState): void;
    /**
     * Limpia el estado de MFA pendiente.
     */
    clearMFAPending(): void;
    /**
     * Resetea todo el estado a valores iniciales.
     */
    reset(): void;
    /**
     * Restaura estado desde datos almacenados.
     */
    restoreFromStorage(stored: Partial<StoredAuthState>): void;
    /**
     * Actualiza el userId y email (después de parsear el token).
     */
    updateUserInfo(userId: string, email: string): void;
    /**
     * Actualiza la organización activa del usuario.
     * Invocado tras parsear el JWT (claim "org") o tras switchOrg exitoso.
     */
    updateActiveOrg(activeOrg: string | null): void;
    /**
     * Hidrata el state con campos del profile (nombre, handle, avatar, phone).
     * Invocado tras `getProfile()` o `updateProfile()` para que consumers de
     * `auth.user()` vean los campos enriched automáticamente.
     *
     * Cualquier campo `undefined` se ignora (no sobrescribe con null). Campos
     * `null` explícitos se persisten (signal de "limpiado").
     */
    updateProfileFields(fields: {
        name?: string | null;
        handle?: string | null;
        avatarUrl?: string | null;
        phone?: string | null;
    }): void;
    static ɵfac: i0.ɵɵFactoryDeclaration<AuthStateService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AuthStateService>;
}
