/**
 * photoFilters.ts — Canvas-based photo filter engine.
 *
 * Pure functions that operate on ImageData pixel arrays.
 * Each filter takes ImageData + optional params and returns a new ImageData.
 * Composable via `applyFilterChain`.
 */
export interface FilterParams {
    /** Intensity 0..1 (default 1 = full effect) */
    intensity?: number;
    [key: string]: unknown;
}
export interface FilterDefinition {
    id: string;
    name: string;
    /** Category for UI grouping */
    category: 'color' | 'light' | 'artistic' | 'vintage' | 'fun' | 'adjustment';
    /** Emoji icon for quick visual */
    icon: string;
    /** Apply filter to pixel data */
    apply: (data: ImageData, params?: FilterParams) => ImageData;
    /** Default params */
    defaults?: FilterParams;
}
export interface AdjustmentValues {
    brightness: number;
    contrast: number;
    saturation: number;
    temperature: number;
    tint: number;
    exposure: number;
    highlights: number;
    shadows: number;
    sharpness: number;
    vignette: number;
    grain: number;
    blur: number;
}
export declare const DEFAULT_ADJUSTMENTS: AdjustmentValues;
export declare function applyVignette(ctx: CanvasRenderingContext2D, w: number, h: number, amount: number): void;
export declare function applyGrain(ctx: CanvasRenderingContext2D, w: number, h: number, amount: number): void;
export declare const PHOTO_FILTERS: FilterDefinition[];
/** Get filter by ID */
export declare function getFilter(id: string): FilterDefinition | undefined;
/** Apply adjustments to ImageData */
export declare function applyAdjustments(data: ImageData, adj: Partial<AdjustmentValues>): ImageData;
/** Full pipeline: filter + adjustments → canvas, then vignette & grain via context */
export declare function renderToCanvas(canvas: HTMLCanvasElement, sourceImage: HTMLImageElement, filterId: string, filterParams: FilterParams, adjustments: Partial<AdjustmentValues>, cropRect?: {
    x: number;
    y: number;
    w: number;
    h: number;
} | null, rotation?: number, flipH?: boolean, flipV?: boolean): void;
/** Export canvas as File (for upload) */
export declare function canvasToFile(canvas: HTMLCanvasElement, filename?: string, quality?: number): Promise<File>;
