import { IImageOptimizerOptions } from "../i-image-optimizer-options";
import { ICombinedImageOptimizer } from "./i-combined-image-optimizer";
import { ISharpImageOptimizer } from "../sharp-image-optimizer/i-sharp-image-optimizer";
import { ISvgoImageOptimizer } from "../svgo-image-optimizer/i-svgo-image-optimizer";
import { IBuildLogger } from "../../../build-debugger/i-build-logger";
import { OptimizerResult } from "../../i-optimizer-result";
import { IIcoImageOptimizer } from "../ico-image-optimizer/i-ico-image-optimizer";
/**
 * An Image optimizer combines other image optimizers to produce a buffer
 */
export declare class CombinedImageOptimizer implements ICombinedImageOptimizer {
    private readonly buildLogger;
    private readonly sharpImageOptimizer;
    private readonly svgoImageOptimizer;
    private readonly icoImageOptimizer;
    constructor(buildLogger: IBuildLogger, sharpImageOptimizer: ISharpImageOptimizer, svgoImageOptimizer: ISvgoImageOptimizer, icoImageOptimizer: IIcoImageOptimizer);
    /**
     * Optimizes an image using any of the embedded optimizers.
     * 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 optimizing the given input. Will pass it through the given optimizers until
     * one of them successfully encodes it.
     * @param {IImageOptimizerOptions} options
     * @param {IImageOptimizer[]} optimizers
     * @returns {Promise<OptimizerResult>}
     */
    private qualifyOptimization(options, optimizers);
}
