import { IImageOptimizerOptions } from "../i-image-optimizer-options";
import { ISharpImageOptimizer } from "./i-sharp-image-optimizer";
import { OptimizerResult } from "../../i-optimizer-result";
/**
 * An ImageEncoder that uses Sharp as its' underlying implementation
 */
export declare class SharpImageOptimizer implements ISharpImageOptimizer {
    /**
     * The minimum supported compression level for zlib
     * @type {number}
     */
    private static readonly ZLIB_MIN_COMPRESSION_LEVEL;
    /**
     * The maximum supported compression level for zlib
     * @type {number}
     */
    private static readonly ZLIB_MAX_COMPRESSION_LEVEL;
    /**
     * The minimum supported quality level for JPEG
     * @type {number}
     */
    private static readonly JPEG_MIN_QUALITY;
    /**
     * The maximum supported quality level for JPEG
     * @type {number}
     */
    private static readonly JPEG_MAX_QUALITY;
    /**
     * The minimum supported quality level for WEBP
     * @type {number}
     */
    private static readonly WEBP_MIN_QUALITY;
    /**
     * The maximum supported quality level for WEBP
     * @type {number}
     */
    private static readonly WEBP_MAX_QUALITY;
    /**
     * The minimum supported quality level for TIFF
     * @type {number}
     */
    private static readonly TIFF_MIN_QUALITY;
    /**
     * The maximum supported quality level for TIFF
     * @type {number}
     */
    private static readonly TIFF_MAX_QUALITY;
    /**
     * Encodes an image using Sharp.
     * If the image format is unsupported, an un-manipulated Buffer will be returned.
     * @param {IImageOptimizerOptions} options
     * @returns {Promise<OptimizerResult>}
     */
    optimize(options: IImageOptimizerOptions): Promise<OptimizerResult>;
    /**
     * Qualifies encoding the given input paths depending on its' kind
     * @param {IImageOptimizerOptions} options
     * @returns {Promise<OptimizerResult>}
     */
    private qualifyOptimization;
    /**
     * Encodes an image using Sharp
     * @param {IImageOptimizerOptions} options
     * @returns {Promise<Buffer>}
     */
    private runOptimizer;
    /**
     * Normalizes the quality level to use depending on the input format
     * @param {ImageFormatKind} outputFormat
     * @param {number} quality
     * @returns {number}
     */
    private normalizeQualityLevel;
    /**
     * Sets a Sharp-compatible format from the given options
     * @param {IImageOptimizerOptions} options
     * @param {SharpInstance} sharpInstance
     * @returns {SharpInstance}
     */
    private setFormat;
}
