/**
 * Project Scaffolder - New project generation
 * Handles directory structure and boilerplate file creation
 */
export interface ProjectScaffoldOptions {
    name: string;
    force?: boolean;
    overwrite?: boolean;
    template?: string;
    port?: number;
    author?: string;
    description?: string;
    git?: boolean;
    install?: boolean;
    database?: string;
    driver?: string;
}
export type ProjectOptions = ProjectScaffoldOptions;
export interface ProjectTemplate {
    name: string;
    description: string;
    directories: string[];
    files: Record<string, string>;
}
export interface ProjectScaffoldResult {
    success: boolean;
    projectPath: string;
    filesCreated: number;
    directoriesCreated: number;
    message: string;
    error?: Error;
}
export interface IProjectScaffolder {
    prepareContext(options: ProjectScaffoldOptions): void;
    getVariables(): Record<string, unknown>;
    getTemplateInfo(templateName?: string): ProjectTemplate | undefined;
    getProjectPath(): string;
    projectDirectoryExists(): boolean;
    createDirectories(): number;
    createFiles(options?: ProjectScaffoldOptions): number;
    createConfigFile(): boolean;
    createEnvFile(): boolean;
    scaffold(options: ProjectScaffoldOptions): Promise<ProjectScaffoldResult>;
}
export declare function getAvailableTemplates(): string[];
export declare function getTemplate(name: string): ProjectTemplate | undefined;
export declare function validateOptions(options: ProjectScaffoldOptions): {
    valid: boolean;
    errors: string[];
};
/**
 * Plain-function scaffolder creator (replaces the function-object factory).
 */
export declare function createProjectScaffolder(projectPath?: string): IProjectScaffolder;
export declare function scaffoldProject(projectPath: string, options: ProjectScaffoldOptions): Promise<ProjectScaffoldResult>;
/**
 * Sealed namespace for ProjectScaffolder
 */
export declare const ProjectScaffolder: Readonly<{
    create: typeof createProjectScaffolder;
    getAvailableTemplates: typeof getAvailableTemplates;
    getTemplate: typeof getTemplate;
    validateOptions: typeof validateOptions;
    scaffold: typeof scaffoldProject;
}>;
//# sourceMappingURL=ProjectScaffolder.d.ts.map