import { CropData, ImageCompressOptions, ImageValidateOptions, ImageValidationResult, ProcessedImage } from './types';
import * as i0 from "@angular/core";
/**
 * ImageService
 *
 * Service for image processing including compression, thumbnails, cropping and validation.
 * Uses HTML Canvas for all operations - no external dependencies.
 *
 * @example
 * ```typescript
 * const imageService = inject(ImageService);
 *
 * // Compress an image
 * const compressed = await imageService.compress(file, { maxWidth: 800, quality: 0.8 });
 *
 * // Generate thumbnail
 * const thumb = await imageService.thumbnail(file, 150);
 *
 * // Validate before processing
 * const validation = imageService.validate(file, { maxSize: 5 * 1024 * 1024 });
 * if (!validation.valid) {
 *   console.error(validation.message);
 * }
 * ```
 */
export declare class ImageService {
    /**
     * Compress an image maintaining aspect ratio
     * @param file - File or Blob to compress
     * @param options - Compression options
     * @returns Promise with processed image data
     */
    compress(file: File | Blob, options?: ImageCompressOptions): Promise<ProcessedImage>;
    /**
     * Generate a square thumbnail from an image
     * @param file - File or Blob to process
     * @param size - Thumbnail size in pixels (default: 150)
     * @returns Promise with processed thumbnail
     */
    thumbnail(file: File | Blob, size?: number): Promise<ProcessedImage>;
    /**
     * Crop an image with specific coordinates
     * @param file - File or Blob to crop
     * @param cropData - Crop coordinates and dimensions
     * @param options - Optional compression options for output
     * @returns Promise with cropped image
     */
    crop(file: File | Blob, cropData: CropData, options?: ImageCompressOptions): Promise<ProcessedImage>;
    /**
     * Validate an image file before processing
     * @param file - File to validate
     * @param options - Validation options
     * @returns Validation result with error details if invalid
     */
    validate(file: File, options?: ImageValidateOptions): ImageValidationResult;
    /**
     * Validate image dimensions (async - requires loading image)
     * @param file - File to validate
     * @param options - Validation options with minWidth/minHeight
     * @returns Promise with validation result
     */
    validateDimensions(file: File, options: Pick<ImageValidateOptions, 'minWidth' | 'minHeight'>): Promise<ImageValidationResult>;
    /**
     * Convert a Blob/File to a data URL
     */
    toDataUrl(file: File | Blob): Promise<string>;
    /**
     * Convert a data URL to a Blob
     */
    dataUrlToBlob(dataUrl: string): Blob;
    private loadImage;
    private calculateDimensions;
    private canvasToBlob;
    static ɵfac: i0.ɵɵFactoryDeclaration<ImageService, never>;
    static ɵprov: i0.ɵɵInjectableDeclaration<ImageService>;
}
