import type { Clip, ClipConfig, PreviewMediaSource } from '../models/types';
type SourceLike = Pick<Clip, 'src' | 'externalId'> | Pick<ClipConfig, 'src' | 'externalId'>;
type ThumbnailLike = Pick<Clip, 'src' | 'externalId' | 'startTimeAtSource' | 'endTimeAtSource' | 'duration' | 'type'>;
export declare class SourceMediaRegistry {
    private readonly durationCache;
    private readonly thumbnailCache;
    private readonly previewSourceCache;
    static buildSourceKey(source: SourceLike): string;
    static buildThumbnailKey(clip: ThumbnailLike): string;
    getDuration(sourceKey: string, loader: () => Promise<number>, options?: {
        force?: boolean;
    }): Promise<number>;
    primeDuration(sourceKey: string, duration: number): void;
    getThumbnails(thumbnailKey: string, loader: () => Promise<string[]>, options?: {
        force?: boolean;
    }): Promise<string[]>;
    primeThumbnails(thumbnailKey: string, thumbnails: string[]): void;
    clearThumbnailCache(): void;
    getPreviewSource(sourceKey: string, loader: () => PreviewMediaSource | null | Promise<PreviewMediaSource | null>, options?: {
        force?: boolean;
    }): PreviewMediaSource | null | Promise<PreviewMediaSource | null>;
    primePreviewSource(sourceKey: string, value: PreviewMediaSource | null): void;
}
export {};
