import { HealthMetrics, HealthReport } from './types';
import type { AnalysisResult, AnalysisResultBody } from '../analysis-result';
/** Default values for all HealthMetrics fields. */
export declare function defaultMetrics(): HealthMetrics;
/** Options for analyzeHealth. */
export interface AnalyzeHealthOptions {
    /** Print per-tool timing to stderr. */
    verbose?: boolean;
}
/**
 * Run a full health analysis on a repository, returning both the summary
 * report and the underlying metrics. Used by --detailed to feed the
 * remediation planner without re-running the tool gather.
 */
export declare function analyzeHealthWithMetrics(repoPath: string, options?: AnalyzeHealthOptions): Promise<{
    report: HealthReport;
    metrics: HealthMetrics;
}>;
/** Run a full health analysis on a repository. */
export declare function analyzeHealth(repoPath: string, options?: AnalyzeHealthOptions): Promise<HealthReport>;
/**
 * The gather pipeline — everything that produces an `AnalysisResultBody`
 * for a given repo. Pure with respect to the working tree: same SHA +
 * same `.dxkit-ignore` + same dxkit version means same output. Scoring
 * and formatting are deliberately NOT part of this — they live in
 * `scoreAndFormatHealth` so cache hits skip the tool gather entirely
 * but still re-render the report (cheap, deterministic, decoupled from
 * I/O).
 *
 * Called by the cache layer (`readOrBuildAnalysisResult`) on a miss.
 * Exported so other analyzers can drop into the same pattern in
 * subsequent migrations: each subcommand asks the cache for a
 * `AnalysisResult`, builder is supplied as `gatherAnalysisResultBody`,
 * and the subcommand renders its own report from the body.
 */
export declare function gatherAnalysisResultBody(repoPath: string, options?: AnalyzeHealthOptions): Promise<AnalysisResultBody>;
/**
 * Score the six dimensions and format the result into a `HealthReport`.
 * Pure function over a cached `AnalysisResult` — no I/O, no tool
 * shell-outs. Provenance fields (commitSha, branch, analyzedAt) come
 * directly from the cached result, which means two `health` calls on
 * the same commit produce reports with the SAME `analyzedAt`
 * timestamp: it's "when this gather was built," not "when this read
 * happened." That's the cross-process-consistency contract.
 */
export declare function scoreAndFormatHealth(result: AnalysisResult): HealthReport;
//# sourceMappingURL=health.d.ts.map