import * as plugins from './plugins.js';
import * as interfaces from '../dist_ts_interfaces/index.js';
import { ServiceWorker } from './classes.serviceworker.js';
import { CacheManager } from './classes.cachemanager.js';
export declare class UpdateManager {
    lastUpdateCheck: number;
    lastVersionInfo: interfaces.serviceworker.IRequest_Serviceworker_Backend_VersionInfo['response'];
    serviceworkerRef: ServiceWorker;
    private isCheckInProgress;
    private pendingCheckPromise;
    constructor(serviceWorkerRefArg: ServiceWorker);
    /**
     * checks wether an update is needed
     */
    private readonly MAX_CACHE_AGE;
    private readonly MIN_CHECK_INTERVAL;
    private readonly OFFLINE_GRACE_PERIOD;
    private lastCacheTimestamp;
    /**
     * Public method to trigger an update check (rate-limited)
     */
    checkUpdate(_cacheManager: CacheManager): Promise<boolean>;
    /**
     * Internal method that performs the actual update check
     */
    private performUpdateCheck;
    /**
     * gets the apphash from the server
     */
    getVersionInfoFromServer(): Promise<{
        appHash: string;
        appSemVer: string;
    }>;
    /**
     * this task is executed once we know that there is a new version available
     */
    private forceUpdate;
    performAsyncUpdateDebouncedTask: plugins.taskbuffer.TaskDebounced<unknown>;
    performAsyncCacheRevalidationDebouncedTask: plugins.taskbuffer.TaskDebounced<unknown>;
}
