import { type ImageOptions, type ImageFormat, type ProcessedImage, type ImageVariant } from './processor';
import type { BuildPlugin } from '../production-build';
/**
 * Create the image optimization build plugin
 */
export declare function createImagePlugin(options?: ImageBuildOptions): BuildPlugin;
/**
 * Optimize a single image
 */
export declare function optimizeImage(inputPath: string, outputDir: string, options?: ImageOptions): Promise<ProcessedImage>;
/**
 * Optimize all images in a directory
 // eslint-disable-next-line pickier/no-unused-vars
 */
export declare function optimizeDirectory(inputDir: string, outputDir: string, options?: ImageBuildOptions): Promise<{
  processed: ProcessedImage[]
  stats: ImageBuildContext['stats']
}>;
/**
 * Generate image manifest for build
 */
export declare function generateImageManifest(images: ProcessedImage[]): Record<string, { variants: ImageVariant[]; placeholder?: string }>;
/**
 * Write image manifest to file
 */
export declare function writeImageManifest(images: ProcessedImage[], outputPath: string): Promise<void>;
// ============================================================================
// Types
// ============================================================================
export declare interface ImageBuildOptions {
  inputDirs?: string[]
  outputDir?: string
  baseUrl?: string
  defaults?: ImageOptions
  cache?: boolean
  cacheDir?: string
  concurrency?: number
  referencedOnly?: boolean
  formats?: ImageFormat[]
  widths?: number[]
  quality?: number
  placeholder?: 'blur' | 'dominant-color' | 'none'
  verbose?: boolean
}
export declare interface ImageBuildContext {
  imageReferences: Set<string>
  processedImages: Map<string, ProcessedImage>
  stats: {
    totalImages: number
    optimizedImages: number
    savedBytes: number
    variants: number
  }
}
