import { ICreateTask } from "./i-create-task";
import { IPackageJsonGenerator } from "../../generator/package-generator/i-package-json-generator";
import { IStringUtil } from "@wessberg/stringutil";
import { ICreateTaskExecuteOptions } from "./i-create-task-execute-options";
import { IProjectPathUtil } from "../../util/project-path-util/i-project-path-util";
import { IEnvironmentGenerator } from "../../generator/environment-generator/i-environment-generator";
import { IConfigGenerator } from "../../generator/config-generator/i-config-generator";
import { IFoveaCliConfigGenerator } from "../../generator/fovea-cli-config-generator/i-fovea-cli-config-generator";
import { IBuildConfig } from "../../build-config/i-build-config";
import { ITemplateGenerator } from "../../generator/template-generator/i-template-generator";
import { IFileSaver } from "@wessberg/filesaver";
import { IManifestGenerator } from "../../generator/manifest-generator/i-manifest-generator";
import { IIndexHtmlGenerator } from "../../generator/index-html-generator/i-index-html-generator";
import { IStyleGenerator } from "../../generator/style-generator/i-style-generator";
import { ITsconfigGenerator } from "../../generator/tsconfig-generator/i-tsconfig-generator";
import { ITslintGenerator } from "../../generator/tslint-generator/i-tslint-generator";
import { IGitignoreGenerator } from "../../generator/gitignore-generator/i-gitignore-generator";
import { INpmignoreGenerator } from "../../generator/npmignore-generator/i-npmignore-generator";
import { IAssetGenerator } from "../../generator/asset-generator/i-asset-generator";
import { IBuildLogger } from "../../build-debugger/i-build-logger";
/**
 * A task used for creating a new Fovea project
 */
export declare class CreateTask implements ICreateTask {
    private readonly config;
    private readonly buildLogger;
    private readonly fileSaver;
    private readonly packageJsonGenerator;
    private readonly tsconfigGenerator;
    private readonly tslintGenerator;
    private readonly environmentGenerator;
    private readonly configGenerator;
    private readonly foveaCliConfigGenerator;
    private readonly manifestGenerator;
    private readonly indexHtmlGenerator;
    private readonly templateGenerator;
    private readonly gitignoreGenerator;
    private readonly npmignoreGenerator;
    private readonly assetGenerator;
    private readonly styleGenerator;
    private readonly stringUtil;
    private readonly projectPathUtil;
    constructor(config: IBuildConfig, buildLogger: IBuildLogger, fileSaver: IFileSaver, packageJsonGenerator: IPackageJsonGenerator, tsconfigGenerator: ITsconfigGenerator, tslintGenerator: ITslintGenerator, environmentGenerator: IEnvironmentGenerator, configGenerator: IConfigGenerator, foveaCliConfigGenerator: IFoveaCliConfigGenerator, manifestGenerator: IManifestGenerator, indexHtmlGenerator: IIndexHtmlGenerator, templateGenerator: ITemplateGenerator, gitignoreGenerator: IGitignoreGenerator, npmignoreGenerator: INpmignoreGenerator, assetGenerator: IAssetGenerator, styleGenerator: IStyleGenerator, stringUtil: IStringUtil, projectPathUtil: IProjectPathUtil);
    /**
     * Executes a 'create' task
     * @param {ICreateTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    execute(options: ICreateTaskExecuteOptions): Promise<void>;
    /**
     * Installs all package dependencies
     * @param {string} folder
     * @param {boolean} yarn
     * @returns {Promise<void>}
     */
    private install({folder, yarn});
    /**
     * Creates the folder given by the options
     * @param {string} folder
     * @param {boolean} verbose
     * @param {boolean} debug
     * @returns {Promise<void>}
     */
    private createFolderStructure({folder, verbose, debug});
    /**
     * Creates the folder given by the options
     * @param {ICreateTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    private createTemplate(options);
    /**
     * Writes all of the given template files to disk inside the project root
     * @param {TemplateFile[]} templateFiles
     * @param {ICreateTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    private writeTemplateFiles(templateFiles, options);
    /**
     * Writes the given template file to disk inside the project root
     * @param {TemplateFile} templateFile
     * @param {ICreateTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    private writeTemplateFile(templateFile, options);
    /**
     * Creates the tsconfig.json file
     * @param {ICreateTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    private createTsconfig(options);
    /**
     * Creates the tslint.json file
     * @param {ICreateTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    private createTslintConfig(options);
    /**
     * Creates the .gitignore file
     * @param {ICreateTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    private createGitignore(options);
    /**
     * Creates the .npmignore file
     * @param {ICreateTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    private createNpmignore(options);
    /**
     * Creates the environment folder and default environments
     * @param {ICreateTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    private createEnvironments(options);
    /**
     * Creates the default assets
     * @param {ICreateTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    private createAssets(options);
    /**
     * Creates the styles folder and default styles
     * @param {ICreateTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    private createStyles(options);
    /**
     * Creates the manifest.json.ts file
     * @param {ICreateTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    private createManifest(options);
    /**
     * Creates the index.html.ts file
     * @param {ICreateTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    private createIndexHtml(options);
    /**
     * Creates the config folder and the config file
     * @param {ICreateTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    private createConfig(options);
    /**
     * Creates the config folder and the config file
     * @param {ICreateTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    private createFoveaCliConfig(options);
    /**
     * Creates a package.json file
     * @param {ICreateTaskExecuteOptions} options
     * @returns {Promise<void>}
     */
    private createPackageJson(options);
    /**
     * Generates a name for the project
     * @param {string} folder
     * @returns {string}
     */
    private getProjectName({folder});
}
