/** Category of a spec template (maps to common feature types across all stacks). */
export type TemplateCategory = 'auth' | 'crud' | 'api' | 'ui' | 'infra' | 'testing' | 'integration' | 'data' | 'security' | 'performance' | 'industry';
/** Template complexity score: S (<16h), M (16-40h), L (40-80h), XL (>80h). */
export type TemplateComplexity = 'S' | 'M' | 'L' | 'XL';
/** Industry subcategory for industry templates. */
export type IndustrySubcategory = 'fintech' | 'healthtech' | 'ecommerce' | 'saas';
/** Base estimation range attached to a template. */
export interface EstimationBase {
    /** Minimum hours estimate. */
    hoursMin: number;
    /** Maximum hours estimate. */
    hoursMax: number;
    /** Additional notes about the estimation. */
    notes: string;
}
/** A named criterion in a template, supporting partial selection. */
export interface TemplateCriterion {
    /** Criterion identifier (e.g. "AC-01"). */
    id: string;
    /** Short title of the criterion. */
    title: string;
    /** Whether this criterion is required and cannot be omitted. */
    required: boolean;
}
/** A variable placeholder used in template content. */
export interface TemplateVariable {
    /** Key name used in the template (e.g. "EntityName"). */
    key: string;
    /** Human-readable label shown to users. */
    label: string;
    /** Brief description of what value to provide. */
    description: string;
    /** Example value to guide the user. */
    example: string;
    /** Whether the variable is required. */
    required: boolean;
    /** Default value if the variable is optional. */
    defaultValue?: string;
}
/**
 * A single spec template entry in the built-in catalog.
 * Named SpecTemplateEntry to avoid conflict with the existing SpecTemplate in spec/inputs.ts.
 */
export interface SpecTemplateEntry {
    /** Unique identifier for the template (e.g. "auth-jwt"). */
    id: string;
    /** Display name of the template. */
    name: string;
    /** Category of the template. */
    category: TemplateCategory;
    /** Industry subcategory (only for industry templates). */
    subcategory?: IndustrySubcategory;
    /** Short description of what this template covers. */
    description: string;
    /** Language-agnostic tags for discoverability. */
    tags: string[];
    /** Complexity score: S (<16h), M (16-40h), L (40-80h), XL (>80h). */
    complexityScore: TemplateComplexity;
    /** Base estimation range for this template. */
    estimationBase: EstimationBase;
    /** Structured criteria list for partial selection support. */
    criteria: TemplateCriterion[];
    /** Variables that users need to provide when applying the template. */
    variables: TemplateVariable[];
    /** Template content for HU.md (Handlebars-style {{VariableKey}} placeholders). */
    huTemplate: string;
    /** Template content for FICHA-TECNICA.md. */
    fichaTecnicaTemplate: string;
    /** Template content for PROGRESS.md. */
    progressTemplate: string;
}
/** Result returned by the list_templates tool. */
export interface ListTemplatesResult {
    templates: TemplateListItem[];
    total: number;
    filteredBy?: string;
}
/** Summary item used in list_templates. */
export interface TemplateListItem {
    id: string;
    name: string;
    category: TemplateCategory;
    subcategory?: IndustrySubcategory;
    description: string;
    tags: string[];
    complexityScore: TemplateComplexity;
    criteriaCount: number;
    variableCount: number;
    requiredVariableCount: number;
}
/** Input type for the list_templates tool. */
export interface ListTemplatesInput {
    category?: TemplateCategory;
    search?: string;
    complexityScore?: TemplateComplexity;
}
/** A resolved variable value provided by the user when applying a template. */
export interface TemplateVariableValue {
    key: string;
    value: string;
}
/** Input type for the apply_template tool. */
export interface ApplyTemplateInput {
    templateId: string;
    projectPath: string;
    variables: TemplateVariableValue[];
    feature?: string;
    outputDir?: string;
    /** Optional list of criteria IDs to include (e.g. ["AC-01", "AC-03"]). Omit to include all. */
    includeCriteria?: string[];
}
/** Result returned by the apply_template tool. */
export interface ApplyTemplateResult {
    templateId: string;
    templateName: string;
    complexityScore: TemplateComplexity;
    specPath: string;
    fichaTecnicaPath: string;
    progressPath: string;
    variablesApplied: number;
    criteriaIncluded: number;
    criteriaTotal: number;
    missingRequired: string[];
    warnings: string[];
    message: string;
}
/** Warning entry for a malformed custom template. */
export interface CustomTemplateWarning {
    file: string;
    error: string;
}
/** Result from loading custom templates. */
export interface CustomTemplateLoadResult {
    templates: SpecTemplateEntry[];
    warnings: CustomTemplateWarning[];
}
//# sourceMappingURL=spec-templates.d.ts.map