export interface Template {
    name: string;
    path: string;
    description?: string;
    variables?: TemplateVariable[];
    transforms?: Transform[];
    files?: TemplateFile[];
}
export interface TemplateVariable {
    name: string;
    type: 'string' | 'boolean' | 'array' | 'select';
    required?: boolean;
    default?: any;
    options?: string[];
    description?: string;
}
export interface Transform {
    type: 'replace' | 'inject' | 'conditional' | 'case';
    config: TransformConfig;
}
export interface TransformConfig {
    pattern?: string | RegExp;
    replacement?: string;
    condition?: (vars: Record<string, any>) => boolean;
    caseType?: 'pascal' | 'camel' | 'snake' | 'kebab';
}
export interface TemplateFile {
    source: string;
    destination: string;
    condition?: (vars: Record<string, any>) => boolean;
    transforms?: Transform[];
}
export interface Feature {
    id: string;
    name: string;
    description?: string;
    dependencies?: string[];
    devDependencies?: string[];
    peerDependencies?: string[];
    config?: Record<string, any>;
    files?: TemplateFile[];
    postInstall?: (context: FeatureContext) => Promise<void>;
}
export interface FeatureContext {
    projectPath: string;
    packageManager: 'npm' | 'yarn' | 'pnpm';
    variables: Record<string, any>;
    features: string[];
}
export interface TemplateConfig {
    name: string;
    description: string;
    type: 'feature' | 'app' | 'component';
    variables: TemplateVariable[];
    files: TemplateFile[];
    features?: Feature[];
}
export interface GenerateOptions {
    outputPath: string;
    overwrite?: boolean;
    dryRun?: boolean;
    silent?: boolean;
}
export interface PackageManager {
    install: (packages: string[], dev?: boolean) => Promise<void>;
    addScript: (name: string, command: string) => Promise<void>;
    updatePackageJson: (updates: Record<string, any>) => Promise<void>;
}
//# sourceMappingURL=types.d.ts.map