import { IBuildTask } from "./i-build-task";
import { IBuildTaskExecuteOptions } from "./i-build-task-execute-options";
import { IProjectPathUtil } from "../../util/project-path-util/i-project-path-util";
import { IPackageJsonParser } from "../../parser/package-json-parser/i-package-json-parser";
import { IStylesParser } from "../../parser/styles-parser/i-styles-parser";
import { IManifestJsonParser } from "../../parser/manifest-json-parser/i-manifest-json-parser";
import { IHasher } from "../../hasher/i-hasher";
import { IIndexHtmlParser } from "../../parser/index-html-parser/i-index-html-parser";
import { IAssetOptimizer } from "../../asset-optimizer/i-asset-optimizer";
import { IArrayUtil } from "@wessberg/arrayutil";
import { IBuildLogger } from "../../build-debugger/i-build-logger";
import { IBundler } from "../../bundler/i-bundler";
import { IFileSaver } from "@wessberg/filesaver";
import { ICacher } from "../../cacher/i-cacher";
import { IManifestJsonWriter } from "../../writer/manifest-json-writer/i-manifest-json-writer";
import { IIndexHtmlWriter } from "../../writer/index-html-writer/i-index-html-writer";
import { IFileLoader } from "@wessberg/fileloader";
import { IAssetWriter } from "../../writer/asset-writer/i-asset-writer";
import { IBuildConfig } from "../../build-config/i-build-config";
import { IBabelMinifyOptions } from "../../minify/i-babel-minify-options";
import { ICompressor } from "../../compression/i-compressor";
import { IProjectParser } from "../../parser/project-parser/i-project-parser";
/**
 * A task used for building a Fovea project
 */
export declare class BuildTask implements IBuildTask {
    private readonly buildLogger;
    private readonly config;
    private readonly projectParser;
    private readonly packageJsonParser;
    private readonly projectPathUtil;
    private readonly stylesParser;
    private readonly manifestJsonParser;
    private readonly indexHtmlParser;
    private readonly hasher;
    private readonly assetOptimizer;
    private readonly arrayUtil;
    private readonly bundler;
    private readonly fileSaver;
    private readonly fileLoader;
    private readonly cacher;
    private readonly manifestJsonWriter;
    private readonly indexHtmlWriter;
    private readonly assetWriter;
    private readonly minifyOptions;
    private readonly compressor;
    constructor(buildLogger: IBuildLogger, config: IBuildConfig, projectParser: IProjectParser, packageJsonParser: IPackageJsonParser, projectPathUtil: IProjectPathUtil, stylesParser: IStylesParser, manifestJsonParser: IManifestJsonParser, indexHtmlParser: IIndexHtmlParser, hasher: IHasher, assetOptimizer: IAssetOptimizer, arrayUtil: IArrayUtil, bundler: IBundler, fileSaver: IFileSaver, fileLoader: IFileLoader, cacher: ICacher, manifestJsonWriter: IManifestJsonWriter, indexHtmlWriter: IIndexHtmlWriter, assetWriter: IAssetWriter, minifyOptions: IBabelMinifyOptions, compressor: ICompressor);
    /**
     * Executes a 'build' task
     * @param {IBuildTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    execute(options: IBuildTaskExecuteOptions): Promise<void>;
    /**
     * Clears the given directory unless it has been cleared previously
     * @param {string} directory
     * @param {Set<string>} clearedDirectories
     * @returns {Promise<void>}
     */
    private clearDestinationDirectory(directory, clearedDirectories);
    /**
     * Takes the given outputPath and retrieves an IOutputResource from it
     * @param {IOutputPath} outputPath
     * @param {string[]} generatedChunkNames
     * @returns {IOutputResource}
     */
    private getOutputResourceFromOutputPath(outputPath, generatedChunkNames);
}
