import { IGenerator } from "./i-generator";
import { TemplateFile } from "./template-generator/template-file";
/**
 * The abstract base class for generators
 */
export declare abstract class Generator implements IGenerator {
    /**
     * The 'generate' method must return an array of TemplateFiles and be implemented by derived classes
     * @param args
     * @returns {Promise<TemplateFile[]>}
     */
    generate(...args: any[]): Promise<TemplateFile[]>;
    /**
     * The 'onGenerate' method must return an array of TemplateFiles and be implemented by derived classes
     * @param args
     * @returns {Promise<TemplateFile[]>}
     */
    abstract onGenerate(...args: any[]): Promise<TemplateFile[]>;
    /**
     * Upgrade the given template files
     * @param {TemplateFile[]} templateFiles
     * @returns {TemplateFile[]}
     */
    private upgrade(templateFiles);
    /**
     * Updates the names of all of the given template files
     * @param {TemplateFile[]} templateFiles
     * @returns {TemplateFile[]}
     */
    private updateNames(templateFiles);
    /**
     * Sets the parents for all of the given template files
     * @param {TemplateFile[]} templateFiles
     * @returns {TemplateFile[]}
     */
    private setParents(templateFiles);
}
