/**
 * Quality analyzer types.
 */
import { Evidence } from '../evidence';
/** One side of a jscpd duplicate pair. */
export interface CloneSide {
    file: string;
    startLine: number;
    endLine: number;
}
/** A single duplicate block reported by jscpd. */
export interface CloneGroup {
    lines: number;
    tokens: number;
    a: CloneSide;
    b: CloneSide;
}
/** File-level hygiene offender (console.log / TODO / etc count per file). */
export interface FileOffender {
    file: string;
    count: number;
}
export interface DuplicationStats {
    totalLines: number;
    duplicatedLines: number;
    percentage: number;
    cloneCount: number;
    /** Top duplicate pairs, sorted by size descending. Populated on --detailed runs. */
    topClones?: CloneGroup[];
}
export interface QualityMetrics {
    sourceFiles: number;
    filesOver500Lines: number;
    largestFileLines: number;
    anyTypeCount: number;
    typeErrors: number | null;
    lintErrors: number;
    lintWarnings: number;
    lintTool: string | null;
    duplication: DuplicationStats | null;
    maxFunctionsInFile: number | null;
    maxFunctionsFilePath: string | null;
    avgCohesion: number | null;
    communityCount: number | null;
    functionCount: number | null;
    deadImportCount: number | null;
    orphanModuleCount: number | null;
    todoCount: number;
    fixmeCount: number;
    hackCount: number;
    consoleLogCount: number;
    commentRatio: number | null;
    staleFiles: string[];
    mixedLanguages: boolean;
    slopScore: number;
    topConsoleFiles?: FileOffender[];
    topTodoFiles?: FileOffender[];
    topGodFiles?: FileOffender[];
    hygieneEvidence?: Evidence[];
}
export interface QualityReport {
    repo: string;
    analyzedAt: string;
    commitSha: string;
    branch: string;
    metrics: QualityMetrics;
    slopScore: number;
    toolsUsed: string[];
    toolsUnavailable: string[];
    /**
     * Pack ids of every active language pack at scan time (derived from
     * the cached DetectedStack). The renderer reads this to decide
     * whether structural-graph signals like `orphanModuleCount` need an
     * informational qualifier — graphify can't follow C# `using`
     * directives across assemblies, so on csharp-dominant repos every
     * .cs file looks orphaned and the raw count misleads.
     */
    activeLanguages?: string[];
}
//# sourceMappingURL=types.d.ts.map