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; /** * Indica si la configuración está cargando. */ readonly loading: import("@angular/core").WritableSignal; /** * Error de carga, si existe. */ readonly error: import("@angular/core").WritableSignal; /** * Indica si hay una nueva versión disponible. */ readonly hasUpdate: import("@angular/core").Signal; /** * Indica si la aplicación está en modo mantenimiento. */ readonly isMaintenanceMode: import("@angular/core").Signal; /** * Versión remota de la aplicación. */ readonly remoteVersion: import("@angular/core").Signal; /** * Versión actual de la aplicación (local). */ readonly currentVersion: import("@angular/core").Signal; /** * 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; /** * 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(key: string, defaultValue: T): T; /** * Recarga la configuración manualmente (one-time read). * Útil si necesitas forzar una actualización. */ refresh(): Promise; /** * 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; static ɵprov: i0.ɵɵInjectableDeclaration; }