/**
 * `cached_audit` primitive — persistent, content-hash-keyed memoization of an
 * adversarial LLM audit verdict.
 *
 * WHY (F0c spawn exhaustion): the coding-flow SCOPE/AUTHOR gates run their
 * audit via `subagent_call` (llm.ts) on EVERY pre-research / spec write. Its
 * `if` keys only on the file PATH, so re-editing the SAME artifact cold-spawns
 * `claude -p` again. In a long session those spawns contend on one subscription
 * bucket and start HANGING at the 170s timeout. This primitive caches the
 * verdict keyed by the audit prompt's sha256 (the prompt embeds the artifact,
 * so identical content → identical key) in SESSION STATE — which persists
 * across turns / short-lived hook subprocesses, unlike the evaluator's per-run
 * memo. A re-fire on UNCHANGED content returns the cached verdict with NO spawn.
 *
 * Cache discipline:
 *   - Only a REAL verdict (output contains "VERDICT:") is cached. A timeout /
 *     spawn error is returned as `err` and NEVER cached — so the skill's
 *     `on_error: continue` still routes it to the AUDIT-UNAVAILABLE branch and
 *     the NEXT turn retries the spawn (F0c fresh-session recovery preserved).
 *   - Key = sha256(prompt). The prompt includes BOTH the audit instruction and
 *     the artifact, so a changed artifact OR a changed instruction → cache miss
 *     → fresh audit. No stale verdict can be reused.
 *
 * NOT `memoizable` (the evaluator memo is per-run; THIS cache is the explicit
 * cross-turn one) and NOT `durable` (the state write IS its durability).
 *
 * Imports from: zod, ../models/load_config.js, ../models/dispatcher.js,
 *   ../runtime/paths.js, ../runtime/durable/run_id.js, ../runtime/result.js.
 * Imported by: src/functions/index.ts (registry wiring).
 */
import type { FunctionRegistry } from './registry.js';
export declare function registerCachedAuditFunction(registry: FunctionRegistry): void;
//# sourceMappingURL=cached_audit.d.ts.map