/** Task complexity category based on criteria count, hours, and file count. */
export type ComplexityCategory = 'trivial' | 'small' | 'medium' | 'large';
/** Input metrics for complexity analysis. */
export interface ComplexityInput {
    /** Number of acceptance criteria in the spec. */
    criteriaCount: number;
    /** Estimated hours for the task. */
    estimatedHours: number;
    /** Number of files to create or modify. */
    filesToModify: number;
    /** One-line description of the task (used for trivial detection). */
    description?: string;
    /** Tags associated with the spec (used for similarity matching). */
    tags?: string[];
}
/** Result of the complexity categorizer. */
export interface ComplexityReport {
    category: ComplexityCategory;
    /** Ratio of criteria to files (criteriaCount / max(filesToModify, 1)). */
    criteriaToFilesRatio: number;
    reasoning: string;
    /** If true, the task should be captured as a backlog idea rather than a full spec. */
    suggestBacklogIdea: boolean;
}
/** A single over-specification warning. */
export interface OverSpecWarning {
    type: 'criteria-hours-mismatch' | 'criteria-files-ratio';
    message: string;
    /** Suggested action to resolve the warning. */
    suggestion: string;
    /** The metric value that triggered the warning. */
    metricValue: number;
    /** The threshold that was exceeded. */
    threshold: number;
}
/** Result of the over-specification detector. */
export interface OverSpecReport {
    isOverSpecified: boolean;
    warnings: OverSpecWarning[];
    /** Ratio of criteria to files. */
    criteriaToFilesRatio: number;
}
/** Result of the trivial task detector. */
export interface TrivialDetectionResult {
    isTrivial: boolean;
    reason: string;
    /** Number of words in the description. */
    wordCount: number;
    /** Technical terms found in the description (if any). */
    foundTechTerms: string[];
}
/** A historical spec snapshot used for similarity matching. */
export interface HistoricalSpec {
    specId: string;
    criteriaCount: number;
    filesCount: number;
    estimatedHours: number;
    /** Actual hours spent (if available). */
    actualHours?: number;
    tags?: string[];
    category?: ComplexityCategory;
}
/** Result of the similar-specs advisor. */
export interface SimilarSpecsAdvice {
    suggestedCategory: ComplexityCategory;
    reasoning: string;
    /** Number of similar specs used for the suggestion. */
    similarSpecsCount: number;
    /** Average criteria count of similar specs. */
    avgCriteriaCount: number;
    /** Average hours of similar specs. */
    avgHours: number;
}
//# sourceMappingURL=complexity-budget.d.ts.map