import * as prompts from '@inquirer/prompts';
import { Command } from 'commander';
import type { ContentProcessor } from '../types.js';
export declare const DEFAULT_PATH = "templates/scaffolding.yaml";
export interface ScaffoldingTemplate {
    repo: string;
    branches?: string[];
    scaffoldingPath?: string;
}
type Prompts = Omit<typeof prompts, 'Separator'>;
type PromptOptions<T extends keyof Prompts> = Prompts[T] extends (config: infer R) => any ? R : never;
export interface ScaffoldingParameter<T extends keyof Prompts = keyof Prompts> {
    name: string;
    type: T;
    options: PromptOptions<T>;
}
export type ScaffoldingLayoutWriteMode = 'append' | 'write';
export interface ScaffoldingLayoutBase {
    processors?: ContentProcessor[];
    writeMode?: ScaffoldingLayoutWriteMode;
}
export interface ScaffoldingLayoutMatcher extends ScaffoldingLayoutBase {
    match: string[];
}
export interface ScaffoldingLayoutFolder extends ScaffoldingLayoutBase {
    type: 'folder';
    matchers?: ScaffoldingLayoutMatcher[];
}
export interface ScaffoldingLayoutFile extends ScaffoldingLayoutBase {
    type: 'file';
}
export type ScaffoldingLayout = {
    source: string;
    target: string;
    when?: string;
} & (ScaffoldingLayoutFile | ScaffoldingLayoutFolder);
export interface Scaffolding {
    name: string;
    description?: string;
    parameters?: ScaffoldingParameter[];
    layout?: ScaffoldingLayout[];
}
export declare const newCommand: Command;
export {};
