/**
 * Anti-drift evaluator (0.7.34 — unified-evaluator track).
 *
 * Single orchestrator that replaces the per-file hook handlers in
 * src/hooks/. Binds the 4 Claude Code hook events (PreToolUse, Stop,
 * UserPromptSubmit, SessionEnd) to the declarative RULES list from
 * rules.ts.
 *
 * Each runner:
 *   1. Reads JSON from stdin (Claude Code's hook payload)
 *   2. Builds a HookContext from the payload + transcript scan
 *   3. Calls evaluateRules(ctx) to walk applicable rules
 *   4. Aggregates verdicts per event semantic:
 *        PreToolUse → exit 2 on first block; warns → stderr + exit 0
 *        Stop       → surfaces → violations.log (UPS picks up); +
 *                     honesty-reconcile + heartbeat-arm legacy
 *        UPS        → surfaces → stdout (Claude Code injects);
 *                     + resume detection + broken-promises +
 *                     heartbeat-pending consume (preexisting)
 *        SessionEnd → auto-actions only (catalog + cleanup)
 *
 * Lives alongside src/hooks/ until the 0.7.35 cutover deletes the
 * old per-file handlers and points hooks-cli at this entrypoint.
 */
import { type Verdict } from "./rules.js";
interface HookPayload {
    hook_event_name?: string;
    session_id?: string;
    transcript_path?: string;
    cwd?: string;
    tool_name?: string;
    tool_input?: Record<string, unknown>;
    prompt?: string;
}
/**
 * PreToolUse: walk PreToolUse rules. First block-verdict short-circuits
 * exit 2; warns accumulate to stderr; pass through otherwise.
 *
 * Exported for direct testing.
 */
export declare function runPreToolUseEvaluator(payload: HookPayload): Promise<{
    exit: 0 | 2;
    stderr: string;
}>;
export declare function aggregatePreToolUse(verdicts: Verdict[]): {
    exit: 0 | 2;
    stderr: string;
};
/**
 * Stop: walk Stop rules. Surfaces → violations.log (next UPS picks up).
 * Always exit 0 (Stop is observational, not blocking — exit 2 would
 * trigger Claude Code's re-prompt loop which is D9 territory).
 *
 * Exported for direct testing.
 */
export declare function runStopEvaluator(payload: HookPayload): Promise<{
    stderr: string;
}>;
/**
 * UserPromptSubmit: walk UPS rules. Surfaces → stdout (Claude Code
 * injects into agent context). Always exit 0.
 *
 * Exported for direct testing.
 */
export declare function runUserPromptSubmitEvaluator(payload: HookPayload): Promise<{
    stdout: string;
}>;
/**
 * SessionEnd: walk SessionEnd rules (auto-actions like drift-catalog
 * scan + state cleanup). Always exit 0.
 *
 * Exported for direct testing.
 */
export declare function runSessionEndEvaluator(payload: HookPayload): Promise<{
    stderr: string;
}>;
export type HookEventName = "pre-tool-use" | "stop" | "user-prompt-submit" | "session-end";
/**
 * Run the evaluator for the specified hook event by reading stdin,
 * dispatching to the right runner, writing the output, and exiting.
 *
 * Wired into the CLI as `opensquid anti-drift <event>` at the 0.7.35
 * cutover; until then, the existing `opensquid hook <event>` handlers
 * in src/hooks/* run.
 */
export declare function runEvaluator(event: HookEventName): Promise<void>;
export {};
//# sourceMappingURL=evaluator.d.ts.map