import { AsyncSeriesHook } from 'tapable';
import { GeneratorPlugin } from './plugins/type';
import { GeneratorState, Lang, TemplateConfig, UI, Execute } from './types';
export default class Generator {
    private state;
    absoluteProjectDir: string;
    tempDir: string;
    template: TemplateConfig;
    lang: Lang;
    execute: Execute;
    environment: string;
    private ui;
    private _plugins;
    readonly hooks: {
        start: AsyncSeriesHook<[Generator], import("tapable").UnsetAdditionalOptions>;
        prompt: AsyncSeriesHook<[Generator, UI], import("tapable").UnsetAdditionalOptions>;
        render: AsyncSeriesHook<[Generator], import("tapable").UnsetAdditionalOptions>;
        output: AsyncSeriesHook<[Generator], import("tapable").UnsetAdditionalOptions>;
        afterOutput: AsyncSeriesHook<[Generator], import("tapable").UnsetAdditionalOptions>;
    };
    constructor({ template, tempDir, projectPath, ui, plugins, lang, execute, environment, }: {
        template: TemplateConfig;
        tempDir: string;
        projectPath: string;
        ui: UI;
        plugins: GeneratorPlugin[];
        lang: Lang;
        execute: Execute;
        environment: string;
    });
    private _applyPlugins;
    private _output;
    run(): Promise<void>;
    setState(state: Partial<GeneratorState>): void;
    getState(): GeneratorState;
    protected addPlugins(plugins: GeneratorPlugin[]): void;
}
