/** Status of a single criterion based on test coverage analysis. */
export type CriteriaStatus = 'covered' | 'superficial' | 'uncovered';
/** Coverage grade derived from score percentage. */
export type CoverageGrade = 'A' | 'B' | 'C' | 'D';
/** Strategy used to map a test to a criterion. */
export type MappingStrategy = 'direct-reference' | 'spec-reference' | 'heuristic';
/** Raw parsed acceptance criterion from HU.md. */
export interface RawCriterion {
    /** AC identifier (e.g., "AC-01"). */
    readonly acId: string;
    /** Truncated human-readable description. */
    readonly description: string;
    /** Full raw text from the markdown line. */
    readonly rawText: string;
}
/** A single test file discovered in the project (SPEC-068 coverage domain). */
export interface CoverageTestFile {
    /** Absolute or project-relative path to the test file. */
    readonly file: string;
    /** Ecosystem that owns this test file (e.g., "typescript", "python"). */
    readonly ecosystem: string;
    /** Whether the test file is detected as superficial (empty, skip, todo). */
    readonly isSuperficial: boolean;
}
/** A specific test match within a file. */
export interface TestMatch {
    /** Path to the test file. */
    readonly file: string;
    /** Name of the matching test (describe/it/test block name), if extractable. */
    readonly testName: string;
    /** Strategy that produced this match. */
    readonly strategy: MappingStrategy;
}
/** Coverage result for a single acceptance criterion. */
export interface CriterionCoverage {
    /** Acceptance criterion ID (e.g., "AC-01"). */
    readonly acId: string;
    /** Text of the criterion (truncated to 80 chars). */
    readonly description: string;
    /** Resulting coverage status. */
    readonly status: CriteriaStatus;
    /** Strategy that determined the status (undefined when uncovered). */
    readonly strategy?: MappingStrategy;
    /** Tests mapped to this criterion. */
    readonly tests: readonly TestMatch[];
}
/** Detected test runner in the project. */
export interface TestRunnerInfo {
    /** Runner identifier (e.g., "vitest", "pytest", "go test"). */
    readonly name: string;
    /** Config file that triggered detection. */
    readonly configFile: string;
    /** Ecosystem of the runner. */
    readonly ecosystem: string;
}
/** Full coverage analysis result for one spec. */
export interface SpecCoverageResult {
    /** Spec identifier (e.g., "SPEC-001"). */
    readonly specId: string;
    /** ISO 8601 timestamp of when the analysis was run. */
    readonly analyzedAt: string;
    /** Coverage score (0–100). Only high/medium confidence tests count. */
    readonly score: number;
    /** Letter grade derived from score. */
    readonly grade: CoverageGrade;
    /** Total number of acceptance criteria found in HU.md. */
    readonly totalCriteria: number;
    /** Number of criteria with at least one high/medium confidence test. */
    readonly coveredCriteria: number;
    /** Number of criteria covered only by heuristic (superficial) tests. */
    readonly superficialCriteria: number;
    /** Number of criteria with no tests at all. */
    readonly uncoveredCriteria: number;
    /** Test runners detected in the project. */
    readonly detectedRunners: readonly TestRunnerInfo[];
    /** Per-criterion breakdown. */
    readonly criteria: readonly CriterionCoverage[];
}
/** Root structure persisted to data/projects/{hash}/spec-coverage.json. */
export interface SpecCoverageStore {
    /** Schema version for future migrations. */
    readonly version: 1;
    /** ISO 8601 timestamp of last write. */
    readonly updatedAt: string;
    /** Map of specId → SpecCoverageResult. */
    readonly specs: Record<string, SpecCoverageResult>;
}
/** Input schema for the spec_coverage MCP tool. */
export interface SpecCoverageInput {
    /** Project ID. */
    readonly projectId: string;
    /** Spec ID to analyze, or "all" to analyze every spec in the project. */
    readonly specId: string;
}
//# sourceMappingURL=coverage.d.ts.map