/**
 * @fileoverview Probe engine for `codeman doctor`. Resolves each registry tool
 * against an injectable ProbeHost (real impl uses child_process/fs; tests inject
 * fakes) and returns structured results. Pure given the host — no global I/O.
 *
 * @module utils/dependency-checker
 */
import type { ProbeEnvironment, ToolCategory, ToolDependency } from '../config/dependency-registry.js';
export interface EnvDetectionInputs {
    platform: NodeJS.Platform;
    procVersion: string;
    hasWindowsInterop: boolean;
}
export declare function detectEnvironment(inputs: EnvDetectionInputs): ProbeEnvironment;
export declare function extractVersion(text: string, re?: RegExp): string | undefined;
/** Returns -1 if a < b, 0 if equal, 1 if a > b (numeric, component-wise). */
export declare function compareVersions(a: string, b: string): number;
export type ToolStatus = 'ok' | 'missing' | 'outdated' | 'skipped' | 'error';
export interface ToolResult {
    id: string;
    label: string;
    category: ToolCategory;
    required: boolean;
    usedBy: string[];
    status: ToolStatus;
    version?: string;
    path?: string;
    installHint?: string;
    reason?: string;
}
export interface ProbeHost {
    environment: ProbeEnvironment;
    which(bin: string): string | null;
    fileExists(path: string): boolean;
    runVersion(bin: string, args: string[]): string | null;
    windowsProgramRoots(): string[];
    windowsFileVersion(winPath: string): string | null;
}
export declare function checkTool(tool: ToolDependency, host: ProbeHost): ToolResult;
export declare function checkAll(registry: ToolDependency[], host: ProbeHost): ToolResult[];
export declare function createRealHost(): ProbeHost;
//# sourceMappingURL=dependency-checker.d.ts.map