import { TFileItem } from '../store/type';
declare class BlobCache {
    private cache;
    private pending;
    /**
     * Generates a cache key from media parameters
     */
    private getCacheKey;
    /**
     * Gets a cached blob URL if it exists
     */
    get(channel: string, sessionId: string, messageId: string): {
        url: string | null;
        type: TFileItem | null;
        hasError: boolean;
    } | null;
    /**
     * Gets a pending request if it exists
     */
    getPending(channel: string, sessionId: string, messageId: string): Promise<{
        url: string | null;
        type: TFileItem | null;
    } | null> | null;
    /**
     * Sets a pending request
     */
    setPending(channel: string, sessionId: string, messageId: string, promise: Promise<{
        url: string | null;
        type: TFileItem | null;
    } | null>): void;
    /**
     * Clears a pending request
     */
    clearPending(channel: string, sessionId: string, messageId: string): void;
    /**
     * Stores a blob URL in the cache
     */
    set(channel: string, sessionId: string, messageId: string, url: string, type: TFileItem): void;
    /**
     * Marks a media entry as having an error (failed to load)
     */
    setError(channel: string, sessionId: string, messageId: string): void;
    /**
     * Decrements reference count and optionally revokes the blob URL
     * Returns true if the entry was removed
     */
    release(channel: string, sessionId: string, messageId: string): boolean;
    /**
     * Clears all cached blob URLs
     */
    clear(): void;
    /**
     * Gets the current cache size
     */
    size(): number;
    /**
     * Removes least recently used entries if cache exceeds size limit
     */
    cleanup(maxSize?: number): void;
}
export declare const blobCache: BlobCache;
export {};
