import { Schematic } from "../Schematic";
import { SchematicKind } from "../SchematicKind";
import { ScaffoldingData } from "./ScaffoldingData";
import { ScaffoldingFile, ScaffoldingFileContent } from "./ScaffoldingFile";
export interface ScaffoldOptions {
    schematicKinds: Map<string, SchematicKind>;
    basePath?: string;
    basePackage?: string;
    baseDir?: string;
}
export type Scaffolder<TScaffoldingData extends ScaffoldingData = ScaffoldingData> = (schematic: Schematic, data: TScaffoldingData) => void;
export interface ScaffoldedFile extends Omit<ScaffoldingFile, "getContent"> {
    path: string;
    content: ScaffoldingFileContent | Promise<ScaffoldingFileContent>;
}
export declare function scaffold(schematic: Schematic, scaffolders: Scaffolder<any>[], options: ScaffoldOptions): ScaffoldedFile[];
