/**
 * Coverage artifact import.
 *
 * Detects and parses coverage reports produced by the project's test runner
 * so dxkit can report line-level truth instead of fabricating coverage from
 * filename matches.
 *
 * Supported formats per language pack (src/languages/*.ts):
 *   - typescript  → Istanbul summary + final
 *   - python      → coverage.py JSON
 *   - go          → coverprofile (coverage.out / cover.out)
 *   - rust        → lcov.info + cobertura XML (cargo llvm-cov)
 *   - csharp      → cobertura (dotnet test --collect:XPlat)
 *
 * `loadCoverage` is a thin wrapper over the capability dispatcher —
 * active language packs produce `CoverageResult` envelopes, the
 * descriptor's aggregator (last-wins in mixed-stack repos) reduces to
 * one, and we unwrap `.coverage` for callers. Returns null when no
 * artifact exists or parsing fails; callers (tests analyzer) should
 * treat a null return as "fall back to filename matching."
 */
export type CoverageSource = 'istanbul-summary' | 'istanbul-final' | 'coverage-py' | 'go' | 'cobertura' | 'lcov' | 'jacoco' | 'simplecov';
export interface FileCoverage {
    /** Project-relative path (normalized to forward slashes). */
    path: string;
    /** Covered lines or statements. */
    covered: number;
    /** Total lines or statements considered. */
    total: number;
    /** covered / total * 100, rounded to one decimal place. */
    pct: number;
}
export interface Coverage {
    /** Which artifact we read. */
    source: CoverageSource;
    /** Project-relative path of the artifact. */
    sourceFile: string;
    /** Overall line coverage 0-100, rounded to one decimal. */
    linePercent: number;
    /** Per-file coverage, keyed by project-relative path. */
    files: Map<string, FileCoverage>;
}
/**
 * Locate and parse a coverage artifact for the given repo root by
 * dispatching to every active language pack's coverage capability.
 * Returns null when no artifact is found or parsing fails.
 *
 * Mixed-stack repos: the COVERAGE descriptor's aggregator is
 * last-wins — if Node + Python both produce artifacts the later
 * provider wins. Cross-language coverage merging is out of scope for
 * now (would need per-language file weighting).
 */
export declare function loadCoverage(cwd: string): Promise<Coverage | null>;
/** Round to one decimal place. Used by every coverage parser for the linePercent contract. */
export declare function round1(n: number): number;
/** Turn an absolute or prefixed coverage path into a project-relative path. */
export declare function toRelative(p: string, cwd: string): string;
//# sourceMappingURL=coverage.d.ts.map