import type { ILibraryServerData } from 'mira-app-core/storage/sqlite';
export interface MetadataRule {
    name: string;
    supportedExtensions: string[];
    parse(raw: Record<string, any>, filePath: string): Record<string, any> | Promise<Record<string, any>>;
    extractCover?: boolean;
}
export declare const BUILTIN_METADATA_RULES: MetadataRule[];
export declare class MetadataService {
    private readonly queue;
    private readonly rules;
    private readonly extensionRules;
    private readonly progress;
    private readonly exiftoolPath;
    constructor(exiftoolPath?: string | null);
    registerRule(rule: MetadataRule): void;
    unregisterRule(name: string): void;
    enqueue(file: Record<string, any>, dbService: ILibraryServerData, onSettled?: () => void): boolean;
    getStats(dbService: ILibraryServerData): Promise<Record<string, number | boolean>>;
    scanPending(libraryId: string, dbService: ILibraryServerData): Promise<{
        available: boolean;
        queued: number;
    }>;
    getProgressData(libraryId: string): Record<string, number | boolean>;
    clear(): void;
    private rebuildExtensionRules;
    private getSupportedFiles;
    private extractCover;
}
//# sourceMappingURL=MetadataService.d.ts.map