/**
 * Hold the gates declaration against the live ruleset, on a path a machine
 * takes on its own.
 *
 * The comparison itself was not the missing piece. A finished reconciler has
 * existed for some time, unit- and mutation-covered, reporting MISSING, EXTRA,
 * MATCHED and a distinct UNPROVEN — and nothing invoked it. Its only callers
 * were copies of prose in a skill telling a human to type the command, which
 * makes it indistinguishable from a control that was never written. This module
 * is the same comparison sitting on a scheduled, machine-invoked path.
 *
 * Two rules it does not get to bend:
 *
 * - **A source this run could not read is `warn`, never `pass`.** A comparison
 *   that silently passes when it could not reach the live ruleset is the exact
 *   defect this check exists to catch, sited on the check itself.
 * - **Nothing here proposes removing a live required context.** A context no
 *   declaration asks for is reported so it can be told apart from a third-party
 *   check, not so it can be pruned. The remedy vocabulary in
 *   `core/gate-declaration-drift` structurally contains no removal.
 * @module health/declared-checks-inspection
 */
import { type DeclarationDriftReport } from "../core/gate-declaration-drift.js";
import type { HealthFinding } from "./contract.js";
import { type RulesetReader } from "./ruleset-inspection.js";
/**
 * The finding one completed comparison produces.
 *
 * A contradiction fails: the two surfaces state opposite things, and one of
 * them is wrong. A gap warns: the declaration is silent, and silence is not
 * permission to stop requiring the context — the registry still carries gates
 * whose jobs run with no declaration anywhere, so reading silence as a defect
 * of the ruleset would point the operator at the wrong file.
 * @param report - The completed comparison
 * @returns The finding
 */
export declare function declaredChecksFinding(report: DeclarationDriftReport): HealthFinding;
/**
 * Compare the gates declaration with the live ruleset.
 * @param projectRoot - Canonical host root
 * @param config - Safe project config
 * @param reader - Structured remote ruleset reader
 * @param timeoutMs - Remaining shared deadline
 * @param signal - Shared cancellation signal
 * @returns The finding, never a pass on an unread source
 */
export declare function declaredChecksDriftFinding(projectRoot: string, config: Readonly<Record<string, unknown>>, reader: RulesetReader, timeoutMs: number, signal: AbortSignal): Promise<HealthFinding>;
//# sourceMappingURL=declared-checks-inspection.d.ts.map