import { CacheStats, ManifestResponse, VideoMetadata } from '../types/index.js';
export declare class CacheManager {
    private maxSize;
    private segmentCache;
    private metadataCache;
    private manifestCache;
    private initSegmentCache;
    private cacheAccessOrder;
    private cacheHits;
    private cacheMisses;
    private totalRequests;
    constructor(maxSize: number);
    /**
     * Cache a segment with LRU eviction
     */
    cacheSegment(cacheKey: string, buffer: ArrayBuffer): void;
    /**
     * Get a segment from cache
     */
    getSegment(cacheKey: string): ArrayBuffer | undefined;
    /**
     * Check if a segment exists in cache
     */
    hasSegment(cacheKey: string): boolean;
    /**
     * Cache metadata
     */
    cacheMetadata(url: string, metadata: VideoMetadata): void;
    /**
     * Get metadata from cache
     */
    getMetadata(url: string): VideoMetadata | undefined;
    /**
     * Cache manifest
     */
    cacheManifest(url: string, manifest: ManifestResponse): void;
    /**
     * Get manifest from cache
     */
    getManifest(url: string): ManifestResponse | undefined;
    /**
     * Cache init segment
     */
    cacheInitSegment(cacheKey: string, buffer: ArrayBuffer): void;
    /**
     * Get init segment from cache
     */
    getInitSegment(cacheKey: string): ArrayBuffer | undefined;
    /**
     * Get comprehensive cache statistics
     */
    getCacheStats(): CacheStats;
    /**
     * Clear all caches
     */
    clearAll(): void;
    /**
     * Get cache sizes for each cache type
     */
    getCacheSizes(): {
        segments: number;
        metadata: number;
        manifests: number;
        initSegments: number;
    };
    /**
     * Clear specific cache type
     */
    clearSegmentCache(): void;
    clearMetadataCache(): void;
    clearManifestCache(): void;
    clearInitSegmentCache(): void;
}
