import type { ObjectUrlAdapter, ResolveResourceInput, ResolvedCachedResource, ResourceCacheConfig, ResourceCacheHttpClient, ResourceCacheMetadataStore, ResourceCacheStats, ResourceCacheStorage } from './types';
export interface ResourceCacheManagerDependencies {
    options?: ResourceCacheConfig;
    metadataStore?: ResourceCacheMetadataStore;
    storage?: ResourceCacheStorage;
    http?: ResourceCacheHttpClient;
    objectUrl?: ObjectUrlAdapter;
    now?: () => number;
    cacheKeyBuilder?: (input: Pick<ResolveResourceInput, 'sourceKey' | 'url'>) => Promise<string>;
    onEvent?: (eventName: string, data: Record<string, unknown>) => void;
}
export declare class ResourceCacheManager {
    private readonly options;
    private readonly metadataStore;
    private readonly storagePromise;
    private readonly http;
    private readonly objectUrl;
    private readonly now;
    private readonly cacheKeyBuilder;
    private readonly onEvent?;
    private readonly objectUrls;
    private readonly inflightDownloads;
    constructor(dependencies?: ResourceCacheManagerDependencies);
    resolve(input: ResolveResourceInput): Promise<ResolvedCachedResource>;
    resolvePlayableUrl(input: ResolveResourceInput): Promise<ResolvedCachedResource>;
    revokeObjectUrl(url: string): void;
    cleanupExpired(): Promise<void>;
    clear(): Promise<void>;
    getStats(): Promise<ResourceCacheStats>;
    private resolveExpired;
    private probeCacheable;
    private probeAndDownload;
    private getOrCreateDownload;
    private downloadAndStore;
    private evictForWrite;
    private deleteEntry;
    private blobResult;
    private emitEvent;
}
