/** * AppVersion Types * * Tipos para el servicio de verificación de versión de la aplicación. */ /** * Estado de la versión de la aplicación respecto a la versión publicada. * * - `up-to-date` — la app está al día, no hay nada que hacer. * - `update-available` — hay una versión nueva (bundle del SW listo o config * remoto más nuevo). El usuario puede actualizar pero NO está obligado. * - `update-required` — la versión local quedó por debajo de `minVersion` * del config remoto (hard gate). El usuario DEBE actualizar para continuar. */ export type AppVersionStatus = 'up-to-date' | 'update-available' | 'update-required'; /** * Configuración para el proveedor de AppVersionService. * * @property currentVersion - Versión del build actual de la app (semver string). * Normalmente proviene del `version` de `package.json`. * @property checkIntervalMs - Intervalo (ms) entre llamadas a * `SwUpdate.checkForUpdate()`. Default: 30 minutos. */ export interface AppVersionServiceConfig { currentVersion: string; checkIntervalMs?: number; } /** * Intervalo por defecto de chequeo de actualizaciones: 30 minutos. */ export declare const DEFAULT_CHECK_INTERVAL_MS: number; /** * Configuración por defecto del servicio. */ export declare const DEFAULT_APP_VERSION_SERVICE_CONFIG: Required; /** * Plugin de plataforma para comportamiento nativo de actualizaciones. * * Implementado por la app consumidora y provisto via `APP_VERSION_PLATFORM_PLUGIN`. * Permite redirigir al Play Store / App Store en lugar de recargar la página. * * @example * ```typescript * // android-update.plugin.ts * @Injectable({ providedIn: 'root' }) * export class AndroidUpdatePlugin implements AppVersionPlatformPlugin { * async applyUpdate(): Promise { * window.open('https://play.google.com/store/apps/details?id=com.myapp', '_system'); * } * } * ``` */ export interface AppVersionPlatformPlugin { applyUpdate(): Promise; } /** * Config remota de versiones retornada por el plugin HTTP o AppConfigService. * * Contrato mínimo esperado del endpoint: * ``` * GET /api/version * { "version": "1.2.3", "minVersion": "1.0.0" } * ``` * Si el response tiene otra forma, usar `mapResponse` en `provideValtechAppVersionHttp`. */ export interface AppVersionRemoteConfig { version: string; minVersion?: string; } /** * Plugin de config remota para apps sin Firebase/Firestore. * * Implementado por la app consumidora (o generado con `provideValtechAppVersionHttp`) * y provisto via `APP_VERSION_REMOTE_PLUGIN`. */ export interface AppVersionRemotePlugin { getRemoteConfig(): Promise; } /** * Configuración para `provideValtechAppVersionHttp`. * * @property url - URL del endpoint de versiones. * @property mapResponse - Transforma el response de la API al contrato estándar. * Útil cuando el endpoint existente tiene otra forma (ej. `{ android, web }`). */ export interface AppVersionHttpConfig { url: string; mapResponse?: (data: unknown) => AppVersionRemoteConfig; }