import { type DoctorCheckGroup, type DoctorContext, type DoctorOptions, type DoctorReport } from "./types.js"; /** * The runner: turns the check library into one report. * * ── ORDER, AND WHY IT IS SEQUENTIAL ────────────────────────────────────────── * The groups run one after another, not in parallel. Two reasons, and neither is * caution for its own sake. The install write probe and the antivirus probe both * measure a filesystem that the other one is writing to, and a scanner's * response to one would land inside the other's timing window — a report in * which "the write was refused" cannot be attributed to a cause is worth less * than one that took four seconds longer. And a diagnostic's output is read by * people: a stable order is what lets two runs be diffed. * * The order itself is the order of the incident: what is installed, whether * something is eating it, whether we can reach the relay, whether we start at * boot, whether the privileged half exists, where the credentials and the log * are, and what the machine looks like. * * ── ONE FAILING CHECK CANNOT SILENCE THE OTHERS ────────────────────────────── * Every group is wrapped: a group that throws becomes one `fail` result naming * the group and the error, and the run continues. A doctor that dies on its * third check is worse than no doctor, because the user has already concluded * the product cannot describe itself — which is the finding this whole effort * came from. */ /** In the order they run and in the order they print. */ export declare const DOCTOR_GROUPS: DoctorCheckGroup[]; export declare function resolveDoctorContext(opts?: DoctorOptions): DoctorContext; export declare function runDoctor(opts?: DoctorOptions): Promise;