export type ImageFormat = "png" | "jpeg" | "gif" | "webp"; export interface ImageDimensions { width: number; height: number; } export interface SharpResizeResult { buffer: Buffer; mediaType: ImageFormat; width: number; height: number; changed: boolean; } export interface ResizeOptions { maxWidth: number; maxHeight: number; maxBytes: number; } export declare function imageMediaType(format: ImageFormat): string; export declare function formatBytes(bytes: number): string; export declare function detectImageFormatFromBuffer(buffer: Buffer): ImageFormat | null; export declare function readImageDimensions(buffer: Buffer): ImageDimensions | null; interface SharpLike { metadata(): Promise<{ width?: number; height?: number; format?: string; }>; resize(width: number, height: number, options?: { fit?: string; withoutEnlargement?: boolean; }): SharpLike; jpeg(options?: { quality?: number; }): SharpLike; png(options?: { compressionLevel?: number; palette?: boolean; quality?: number; }): SharpLike; webp(options?: { quality?: number; lossless?: boolean; }): SharpLike; toBuffer(): Promise; } export type SharpFactory = (input: Buffer) => SharpLike; export declare function resetSharpCacheForTest(): void; export declare function setSharpFactoryForTest(factory: SharpFactory | null): void; export declare function tryResizeWithSharp(input: Buffer, format: ImageFormat, options: ResizeOptions): Promise; export type CompressLevel = "lossy" | "normal" | "clear"; export interface CompressImageOptions { normalMaxBytes: number; clearMaxBytes: number; } export interface CompressImageResult { buffer: Buffer; mediaType: ImageFormat; width: number; height: number; compressed: boolean; level: CompressLevel | null; originalSize: number; compressedSize: number; savedPercent: number; } export declare function tryCompressImageWithSharp(input: Buffer, format: ImageFormat, options: CompressImageOptions): Promise; export {};