import { EventEmitter } from 'events';
export type MediaType = 'image' | 'audio' | 'video' | 'document' | 'unknown';
export interface MediaFile {
    id: string;
    originalPath: string;
    tempPath: string;
    type: MediaType;
    mimeType: string;
    sizeBytes: number;
    createdAt: number;
    metadata: Record<string, unknown>;
}
export interface MediaPipelineConfig {
    tempDir: string;
    maxFileSizeMb: number;
    maxTotalSizeMb: number;
    autoCleanupMs: number;
    allowedTypes: MediaType[];
}
export interface TranscriptionHook {
    name: string;
    mediaTypes: MediaType[];
    process: (file: MediaFile) => Promise<string | null>;
}
export declare class MediaPipeline extends EventEmitter {
    private config;
    private files;
    private hooks;
    private cleanupTimer;
    private totalSize;
    constructor(config?: Partial<MediaPipelineConfig>);
    ingest(filePath: string): Promise<MediaFile | {
        error: string;
    }>;
    get(id: string): MediaFile | undefined;
    list(type?: MediaType): MediaFile[];
    remove(id: string): boolean;
    registerHook(hook: TranscriptionHook): void;
    processHooks(id: string): Promise<string[]>;
    cleanup(): number;
    getTotalSize(): number;
    static detectType(filePath: string): MediaType;
    static detectMimeType(filePath: string): string;
    dispose(): void;
}
