import * as plugins from './plugins.js';
/**
 * Configuration interface for service worker settings
 */
export interface IServiceWorkerConfig {
    cache: {
        maxAge: number;
        offlineGracePeriod: number;
        runtimeCacheName: string;
    };
    update: {
        minCheckInterval: number;
        debounceTime: number;
        revalidationDebounce: number;
    };
    network: {
        requestTimeout: number;
        maxRetries: number;
        retryDelay: number;
    };
    blockedDomains: string[];
    blockedPaths: string[];
    cacheableDomains: string[];
}
/**
 * ServiceWorkerConfig manages the configuration for the service worker.
 * Configuration is persisted to WebStore and can be updated at runtime.
 */
export declare class ServiceWorkerConfig {
    private static readonly STORE_KEY;
    private config;
    private store;
    constructor(store: plugins.webstore.WebStore);
    /**
     * Loads configuration from WebStore, falling back to defaults
     */
    load(): Promise<void>;
    /**
     * Saves current configuration to WebStore
     */
    save(): Promise<void>;
    /**
     * Gets the current configuration
     */
    get(): IServiceWorkerConfig;
    /**
     * Updates configuration with partial values
     */
    update(partialConfig: Partial<IServiceWorkerConfig>): Promise<void>;
    /**
     * Resets configuration to defaults
     */
    reset(): Promise<void>;
    get cacheMaxAge(): number;
    get offlineGracePeriod(): number;
    get runtimeCacheName(): string;
    get minCheckInterval(): number;
    get updateDebounceTime(): number;
    get revalidationDebounce(): number;
    get requestTimeout(): number;
    get maxRetries(): number;
    get retryDelay(): number;
    /**
     * Checks if a URL should be blocked from service worker handling
     */
    shouldBlockUrl(url: string): boolean;
    /**
     * Checks if an external URL should be cached
     */
    shouldCacheExternalUrl(url: string): boolean;
    /**
     * Deep merges two configuration objects
     */
    private mergeConfig;
}
