import { AppConfig } from './types';
import * as i0 from "@angular/core";
/**
 * Servicio de configuración remota de la aplicación.
 *
 * Lee la configuración desde Firestore (apps/{appId}/config/app) y provee:
 * - Feature flags reactivos
 * - Variables dinámicas de configuración
 * - Detección de nuevas versiones
 * - Modo mantenimiento
 *
 * @example
 * ```typescript
 * @Component({...})
 * export class MyComponent {
 *   private appConfig = inject(AppConfigService);
 *
 *   // Verificar feature flag
 *   showNewFeature = computed(() =>
 *     this.appConfig.isFeatureEnabled('newDashboard')
 *   );
 *
 *   // Obtener variable
 *   maxSize = this.appConfig.getVariable('maxUploadSize', 5242880);
 * }
 * ```
 */
export declare class AppConfigService {
    private firestore;
    private serviceConfig;
    private subscription;
    /**
     * Configuración actual de la aplicación.
     * null si no se ha cargado o no está configurado.
     */
    readonly appConfig: import("@angular/core").WritableSignal<AppConfig>;
    /**
     * Indica si la configuración está cargando.
     */
    readonly loading: import("@angular/core").WritableSignal<boolean>;
    /**
     * Error de carga, si existe.
     */
    readonly error: import("@angular/core").WritableSignal<string>;
    /**
     * Indica si hay una nueva versión disponible.
     */
    readonly hasUpdate: import("@angular/core").Signal<boolean>;
    /**
     * Indica si la aplicación está en modo mantenimiento.
     */
    readonly isMaintenanceMode: import("@angular/core").Signal<boolean>;
    /**
     * Versión remota de la aplicación.
     */
    readonly remoteVersion: import("@angular/core").Signal<string>;
    /**
     * Versión actual de la aplicación (local).
     */
    readonly currentVersion: import("@angular/core").Signal<string>;
    /**
     * Inicializa el servicio y comienza a escuchar cambios en la configuración.
     * Se llama automáticamente via APP_INITIALIZER si se usa provideValtechAppConfig().
     */
    initialize(): Promise<void>;
    /**
     * Verifica si un feature flag está habilitado.
     *
     * @param feature - Nombre del feature flag
     * @param defaultValue - Valor por defecto si no existe (default: false)
     * @returns true si el feature está habilitado
     *
     * @example
     * ```typescript
     * if (appConfig.isFeatureEnabled('darkMode')) {
     *   // Mostrar toggle de dark mode
     * }
     * ```
     */
    isFeatureEnabled(feature: string, defaultValue?: boolean): boolean;
    /**
     * Obtiene una variable de configuración.
     *
     * @param key - Clave de la variable
     * @param defaultValue - Valor por defecto si no existe
     * @returns Valor de la variable o el valor por defecto
     *
     * @example
     * ```typescript
     * const maxSize = appConfig.getVariable('maxUploadSize', 5242880);
     * const supportEmail = appConfig.getVariable('supportEmail', 'support@example.com');
     * ```
     */
    getVariable<T>(key: string, defaultValue: T): T;
    /**
     * Recarga la configuración manualmente (one-time read).
     * Útil si necesitas forzar una actualización.
     */
    refresh(): Promise<void>;
    /**
     * Desuscribe del listener de Firestore.
     * Se llama automáticamente cuando el servicio se destruye.
     */
    destroy(): void;
    /**
     * Compara dos versiones semver y retorna true si remote > current.
     *
     * @param remote - Versión remota (ej: "1.2.3")
     * @param current - Versión actual (ej: "1.2.0")
     * @returns true si remote es mayor que current
     */
    private isNewerVersion;
    static ɵfac: i0.ɵɵFactoryDeclaration<AppConfigService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AppConfigService>;
}
