import type { DetectionResult } from './ProjectDetector.js';
/**
 * Available template names
 */
export type TemplateName = 'minimal' | 'typescript' | 'python' | 'go' | 'monorepo' | 'library' | 'api';
/**
 * Options for scaffolding a CLAUDE.md file
 */
export interface ScaffoldOptions {
    /** Template to use */
    template: TemplateName;
    /** Project name (used in template) */
    projectName?: string;
    /** Project description */
    projectDescription?: string;
    /** Overwrite existing file */
    overwrite?: boolean;
    /** Output file path */
    outputPath?: string;
    /** Detection result for smart defaults */
    detection?: DetectionResult | undefined;
}
/**
 * Result of scaffolding operation
 */
export interface ScaffoldResult {
    /** Path where file was written */
    path: string;
    /** Content that was written */
    content: string;
    /** Whether an existing file was overwritten */
    wasOverwritten: boolean;
}
/**
 * Template variable values
 */
interface TemplateVariables {
    projectName: string;
    projectDescription: string;
    packageManager: string;
    testFramework: string;
    installCommand: string;
    testCommand: string;
    buildCommand: string;
    devCommand: string;
    lintCommand: string;
    typecheckCommand: string;
    formatCommand: string;
    language: string;
    modulePath: string;
    registry: string;
    packageInstallCommand: string;
    publishCommand: string;
    license: string;
    docsCommand: string;
    apiType: string;
    framework: string;
    database: string;
    authMethod: string;
    resource: string;
    startCommand: string;
    testCoverageCommand: string;
    testFileCommand: string;
    migrationCreateCommand: string;
    migrationRunCommand: string;
    migrationRollbackCommand: string;
    seedCommand: string;
    workspaceConfig: string;
    runPackageCommand: string;
}
/**
 * Scaffolds CLAUDE.md files from templates with variable substitution.
 */
export declare class Scaffolder {
    private templatesDir;
    constructor(templatesDir?: string);
    /**
     * List all available template names
     */
    listTemplates(): TemplateName[];
    /**
     * Scaffold a CLAUDE.md file from a template
     */
    scaffold(options: ScaffoldOptions): ScaffoldResult;
    /**
     * Render a template string with variable substitution
     */
    renderTemplate(template: string, variables: Partial<TemplateVariables>): string;
    /**
     * Get the best template for a detection result
     */
    getTemplateForDetection(detection: DetectionResult): TemplateName;
    private loadTemplate;
    private buildVariables;
    private getInstallCommand;
}
export {};
//# sourceMappingURL=Scaffolder.d.ts.map