import { Signal } from '@angular/core';
import { AppVersionStatus } from './types';
import * as i0 from "@angular/core";
export declare class AppVersionService {
    /** SwUpdate solo existe si el SW está registrado (prod build). */
    private readonly swUpdate;
    /** AppConfigService es opcional: la app puede no wirearlo. */
    private readonly appConfig;
    private readonly serviceConfig;
    private readonly document;
    private readonly destroyRef;
    /** True cuando el SW reportó un bundle nuevo listo (`VERSION_READY`). */
    private readonly swUpdateReady;
    /**
     * True cuando el usuario descartó el banner de actualización opcional.
     * El banner obligatorio (`update-required`) ignora este flag.
     */
    private readonly _dismissed;
    readonly dismissed: Signal<boolean>;
    /**
     * Versión local del build actual de la app.
     * Proviene del provider `provideValtechAppVersion({ currentVersion })`.
     */
    readonly currentVersion: Signal<string>;
    /**
     * Última versión publicada según el config remoto.
     * `null` si `AppConfigService` no está disponible o aún no cargó.
     */
    readonly latestVersion: Signal<string | null>;
    /**
     * Estado de la versión:
     * - `update-required` — la versión local quedó por debajo de `minVersion`
     *   del config remoto. Hard gate. Solo si `AppConfigService` tiene datos.
     * - `update-available` — el SW descargó un bundle nuevo (`VERSION_READY`)
     *   o `AppConfigService.hasUpdate` es true.
     * - `up-to-date` — en cualquier otro caso.
     */
    readonly status: Signal<AppVersionStatus>;
    constructor();
    /**
     * Aplica la actualización pendiente.
     *
     * Si el SW está habilitado, activa la versión descargada y recarga; si no,
     * solo recarga la página (la web obtiene el bundle nuevo del servidor).
     */
    applyUpdate(): Promise<void>;
    /**
     * Descarta el banner de actualización opcional.
     * No tiene efecto sobre el estado `update-required` (hard gate).
     */
    dismiss(): void;
    /**
     * Fuerza un chequeo de actualización del service worker.
     * No-op si el SW no está habilitado.
     */
    checkNow(): Promise<void>;
    /**
     * Suscribe `versionUpdates`, programa chequeos periódicos y reacciona al
     * volver la app a foreground. Solo actúa si el SW está habilitado.
     */
    private wireServiceWorker;
    static ɵfac: i0.ɵɵFactoryDeclaration<AppVersionService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<AppVersionService>;
}
