import { DuplicationStats, FileOffender } from './types';
/**
 * Duplication is a global capability: the DUPLICATION dispatcher routes
 * to `jscpdProvider` (tools/jscpd.ts). This layer only reshapes the
 * envelope into the legacy `DuplicationStats` shape for the quality
 * report. Field names are 1:1 (topClones is already
 * `DuplicationClone[]` which is structurally identical to the
 * analyzer's `CloneGroup[]`).
 */
export declare function gatherDuplication(cwd: string): Promise<{
    stats: DuplicationStats | null;
    toolUsed: string | null;
}>;
/**
 * Structural metrics are a global capability: the STRUCTURAL dispatcher
 * routes to `graphifyProvider` (tools/graphify.ts). Like COVERAGE, the
 * dispatcher caches per-(cwd, capability) so two analyzers in the same
 * run don't re-shell graphify (it takes ~60s on a medium repo); the
 * gatherGraphifyResult helper memoizes per-cwd below that, so the Layer
 * 2 reshape path in `tools/parallel.ts` shares the same outcome.
 *
 * This layer reshapes the envelope into the analyzer's 7-field report
 * shape. The full envelope carries three additional fields
 * (classCount, godNodeCount, commentedCodeRatio) that the health
 * report's `capabilities.structural` exposes directly.
 */
export declare function gatherStructuralMetrics(cwd: string): Promise<{
    maxFunctionsInFile: number | null;
    maxFunctionsFilePath: string | null;
    avgCohesion: number | null;
    communityCount: number | null;
    functionCount: number | null;
    deadImportCount: number | null;
    orphanModuleCount: number | null;
    toolUsed: string | null;
}>;
export declare function gatherCommentRatio(cwd: string): {
    ratio: number | null;
    toolUsed: string | null;
};
/** Collect per-file top offenders for detailed reports. */
export declare function gatherHygieneTopOffenders(cwd: string): {
    topConsoleFiles: FileOffender[];
    topTodoFiles: FileOffender[];
};
export declare function gatherHygieneMarkers(cwd: string): {
    todoCount: number;
    fixmeCount: number;
    hackCount: number;
    consoleLogCount: number;
    staleFiles: string[];
    mixedLanguages: boolean;
};
//# sourceMappingURL=gather.d.ts.map