/**
 * Three-tier doctor:
 *
 * Tier 1 — Reports prerequisites: the small set of things that must
 * be present for ANY dxkit CLI command to work. Node 18+ and git.
 * Failure here = dxkit can't function = exit 1.
 *
 * Tier 2 — Agent DX prerequisites: the `.vyuh-dxkit.json` manifest +
 * the `.claude/*` scaffolding that `vyuh-dxkit init` generates. These
 * only matter if you want Agent DX features. Failure here =
 * informational warn + a hint to run `init`; exit code unaffected.
 *
 * Tier 3 — Operational health: runtime state that determines whether
 * dxkit is ACTUALLY working end-to-end on this machine. Hooks active,
 * baseline captured, PATH integrity, scanner toolchain healthy,
 * `.npmrc` peer-deps state, CI workflows wired. Each failing check
 * carries fix metadata (a hint + command + skill) so an agent can
 * drive the repair without re-deriving what's wrong.
 *
 * Pre-Tier-3 the doctor counted file existence and called the system
 * "fully scaffolded" when files were present but operational signals
 * (hooks not activated, no baseline, vyuh-dxkit not on PATH, etc.)
 * were broken — actively misleading on Codespaces installs. Tier 3
 * surfaces those operational gaps with fix hints.
 *
 * --json mode prints the full structured `DoctorReport` to stdout
 * (logger prose routed to stderr by `setJsonMode`). dxkit-fix
 * consumes this format to walk the customer through repairs.
 */
export interface CheckResult {
    label: string;
    ok: boolean;
    tier: 'reports' | 'dx' | 'operational';
    /**
     * Fix metadata — present when ok=false AND a fix is known. Absent
     * on passing checks (nothing to fix) and on failures without a
     * canned repair path (some checks just inform).
     */
    fix?: {
        /** One-line human-readable description of what to do. */
        hint: string;
        /** Optional shell command an agent can run to fix it. */
        command?: string;
        /** Optional dxkit-* skill that drives the repair conversationally. */
        skill?: string;
    };
}
export interface DoctorReport {
    schema: 'doctor.v1';
    generatedAt: string;
    cwd: string;
    checks: CheckResult[];
    summary: {
        reports: {
            pass: number;
            fail: number;
            status: 'ok' | 'fail';
        };
        dx: {
            pass: number;
            fail: number;
            status: 'ok' | 'partial' | 'absent';
        };
        operational: {
            pass: number;
            fail: number;
            status: 'ok' | 'partial' | 'fail';
        };
        /**
         * Subset of `checks` where ok=false AND fix metadata is present.
         * dxkit-fix iterates this to drive the repair conversation.
         */
        fixable: CheckResult[];
    };
}
export declare function runDoctor(cwd: string, opts?: {
    json?: boolean;
}): Promise<DoctorReport>;
//# sourceMappingURL=doctor.d.ts.map