/** Category of a missing or incomplete acceptance criterion. */
export type AcGapCategory = 'error-handling' | 'edge-cases' | 'security' | 'performance' | 'accessibility' | 'data-validation' | 'observability' | 'rollback';
/** Priority of a suggested AC gap. */
export type AcGapPriority = 'critical' | 'high' | 'medium' | 'low';
/** A single suggested acceptance criterion that appears to be missing from the spec. */
export interface AcGapSuggestion {
    /** Short unique identifier within the report (e.g. "EH-01"). */
    id: string;
    /** Category this suggestion belongs to. */
    category: AcGapCategory;
    /** Priority level for addressing this gap. */
    priority: AcGapPriority;
    /** Human-readable description of the missing AC (in BDD-friendly wording). */
    suggestion: string;
    /** Reason why this AC is recommended for this spec. */
    rationale: string;
    /** Example BDD-style criterion text. */
    example: string;
}
/** Complete report returned by the AC gap detector. */
export interface AcGapReport {
    /** Spec ID that was analyzed. */
    specId: string;
    /** Total number of existing ACs found in the spec. */
    existingAcCount: number;
    /** Suggested missing ACs. */
    gaps: AcGapSuggestion[];
    /** Coverage score 0–100: how complete the existing ACs appear to be. */
    coverageScore: number;
    /** ISO timestamp of when the analysis ran. */
    analyzedAt: string;
}
/** A gap rule returns a suggestion when a gap is found, or null otherwise. */
export type GapRule = (ctx: GapRuleContext) => AcGapSuggestion | null;
/** Context passed to each AC gap rule so it can make an informed decision. */
export interface GapRuleContext {
    /** Combined text of the spec (spec.md + technical.md), already lower-cased. */
    fullText: string;
    /** Existing AC lines extracted from the spec. */
    acLines: string[];
    /** Whether this spec appears to have a web UI component. */
    hasWebUi: boolean;
    /** Counter for generating unique suggestion IDs. */
    idCounter: {
        value: number;
    };
}
/** Arguments for the detect_ac_gaps tool. */
export interface DetectAcGapsArgs {
    projectId: string;
    specId: string;
    /** Optional categories to focus on. If omitted, all categories are checked. */
    categories?: AcGapCategory[];
    /** Minimum priority to include in the output (default: medium). */
    minPriority?: AcGapPriority;
}
//# sourceMappingURL=ac-gap.d.ts.map