/**
 * batchProcessing.ts
 * Batch image processing utilities for PhotoEditor
 */
/** Image processing operation */
export interface ProcessingOperation {
    type: string;
    params: Record<string, unknown>;
}
/** Single batch item */
export interface BatchItem {
    id: string;
    file: File;
    status: 'pending' | 'processing' | 'completed' | 'error';
    progress: number;
    result?: Blob;
    error?: string;
    preview?: string;
}
/** Batch processing settings */
export interface BatchSettings {
    /** Operations to apply */
    operations: ProcessingOperation[];
    /** Output format */
    outputFormat: 'jpeg' | 'png' | 'webp';
    /** Output quality (0-1) */
    quality: number;
    /** Resize settings */
    resize?: {
        enabled: boolean;
        width: number;
        height: number;
        maintainAspect: boolean;
        mode: 'fit' | 'fill' | 'stretch';
    };
    /** Naming pattern */
    namingPattern: string;
    /** Preserve metadata */
    preserveMetadata: boolean;
}
/** Processing result */
export interface BatchResult {
    totalFiles: number;
    completedFiles: number;
    failedFiles: number;
    totalTime: number;
    results: BatchItem[];
}
/** Available filter types */
export type FilterType = 'brightness' | 'contrast' | 'saturation' | 'hue' | 'grayscale' | 'sepia' | 'invert' | 'blur' | 'sharpen' | 'vignette' | 'exposure' | 'gamma' | 'temperature' | 'posterize' | 'noise';
/** Filter presets */
export interface FilterPreset {
    name: string;
    operations: ProcessingOperation[];
}
/**
 * Apply single operation to image data
 */
export declare function applyOperation(imageData: ImageData, operation: ProcessingOperation): void;
/**
 * Process single image file
 */
export declare function processImage(file: File, settings: BatchSettings, onProgress?: (progress: number) => void): Promise<Blob>;
/**
 * Process multiple images in batch
 */
export declare function processBatch(files: File[], settings: BatchSettings, onItemProgress?: (itemId: string, progress: number) => void, onItemComplete?: (item: BatchItem) => void): Promise<BatchResult>;
/**
 * Generate output filename
 */
export declare function generateOutputFilename(original: string, pattern: string, index: number, format: string): string;
/**
 * Download all batch results as ZIP
 */
export declare function downloadBatchAsZip(result: BatchResult, settings: BatchSettings): Promise<void>;
export declare const FILTER_PRESETS: FilterPreset[];
export declare const DEFAULT_BATCH_SETTINGS: BatchSettings;
export interface UseBatchProcessingOptions {
    onComplete?: (result: BatchResult) => void;
}
export declare function useBatchProcessing(options?: UseBatchProcessingOptions): {
    files: File[];
    items: BatchItem[];
    settings: BatchSettings;
    setSettings: import("react").Dispatch<import("react").SetStateAction<BatchSettings>>;
    isProcessing: boolean;
    result: BatchResult | null;
    addFiles: (newFiles: File[]) => void;
    removeFile: (index: number) => void;
    clearFiles: () => void;
    addOperation: (operation: ProcessingOperation) => void;
    removeOperation: (index: number) => void;
    applyPreset: (preset: FilterPreset) => void;
    process: () => Promise<void>;
};
