import { Input, IProjectPackage } from './command';
import { PluginInterface, Schema, TypeRef } from './interface';
import { ITemplateData } from './utility/template';
export interface ITemplate {
    graphidocsPackageJSON: any;
    plugins: PluginInterface[];
    projectPackageJSON: IProjectPackage;
    schema: Schema;
}
export interface ITemplateFileMap {
    [name: string]: string;
}
export declare const defaultTemplate = "classic";
export default class Template {
    static determineTemplate(_input: Input, projectPackageJSON: IProjectPackage): any;
    static resolveTemplate(projectPackageJSON: IProjectPackage, graphidocsPackageJSON: any, config: any): Template;
    protected graphidocsPackageJSON: any;
    protected plugins: PluginInterface[];
    protected projectPackageJSON: IProjectPackage;
    protected schema: Schema;
    protected _templateFiles: any;
    constructor(config: ITemplate);
    templateFiles: any;
    parseTemplateFiles(files: string[]): Promise<ITemplateFileMap>;
    readTemplateFile(file: string): Promise<string>;
    render(): Promise<void[]>;
    renderFile(file: string, type?: TypeRef): Promise<void>;
    /** Subclass required methods */
    getTemplateFiles(): Promise<string[]>;
    renderDirective(_type: TypeRef): Promise<void>;
    renderIndex(): Promise<void>;
    renderType(_type: TypeRef): Promise<void>;
    serialize(_templateData: ITemplateData, _templateFiles: ITemplateFileMap): string;
}
