import { EventArgs } from 'mira-app-core';
import { ILibraryServerData } from 'mira-app-core/storage/sqlite';
import { MiraWebsocketServer } from '../WebSocketServer';
export interface ThumbnailGenerator {
    name: string;
    supportedExtensions: string[];
    generate(srcPath: string, destPath: string): Promise<void>;
}
export declare class ThumbnailService {
    private generators;
    private extMap;
    private taskQueue;
    private progress;
    private wsServer;
    private readonly imageMagickPath;
    private readonly ghostscriptPath;
    private readonly ffmpegPath;
    private readonly ffprobePath;
    private previewTasks;
    private hlsMetadataTasks;
    private hlsSegmentTasks;
    constructor();
    setWebSocketServer(server: MiraWebsocketServer): void;
    registerGenerator(generator: ThumbnailGenerator): void;
    unregisterGenerator(name: string): void;
    getGenerators(): ThumbnailGenerator[];
    hasImageMagick(): boolean;
    getPreviewPath(srcPath: string, cacheDir: string, cacheKey: string): Promise<string>;
    getHlsPlaylist(srcPath: string, cacheDir: string, cacheKey: string, segmentQuery?: string): Promise<string>;
    getHlsSegmentPath(srcPath: string, cacheDir: string, cacheKey: string, segmentIndex: number): Promise<string>;
    private getHlsMetadata;
    private getGeneratorForFile;
    onFileCreated(libraryId: string, event: EventArgs, dbService: ILibraryServerData): void;
    onFileDeleted(libraryId: string, item: any, dbService: ILibraryServerData): void;
    scanPending(libraryId: string, dbService: ILibraryServerData, reason?: string): Promise<void>;
    private incrementProgress;
    cancelScan(): void;
    getStats(libraryId: string, dbService: ILibraryServerData): Promise<{
        totalFiles: number;
        withThumbnails: number;
        withoutThumbnails: number;
        thumbnailRate: number;
    }>;
    getProgressData(libraryId: string, dbService: ILibraryServerData): Promise<{
        totalPending: number;
        queueLength: number;
        processing: boolean;
        completed: number;
        progress: number;
    }>;
    syncThumbStatus(libraryId: string, dbService: ILibraryServerData, reason?: string): Promise<{
        total: number;
        synced: number;
    }>;
    private getPendingFiles;
}
//# sourceMappingURL=ThumbnailService.d.ts.map