/**
 * `opensquid hook pre-tool-use` — Claude Code PreToolUse hook handler.
 *
 * Wired in `~/.claude/settings.json`:
 *
 *   {
 *     "hooks": {
 *       "PreToolUse": [
 *         {
 *           "matcher": "Bash",
 *           "hooks": [
 *             { "type": "command",
 *               "command": "node /path/to/opensquid/dist/index.js hook pre-tool-use" }
 *           ]
 *         }
 *       ]
 *     }
 *   }
 *
 * Stdin: JSON describing the planned tool call (Claude Code's hook
 * input schema). Stdout: empty on no-op. Stderr: drift findings.
 * Exit code: 0 to proceed, 2 to block the call.
 *
 * The catalog of intercepts lives in src/hooks/drift-patterns.ts and
 * grows lesson-by-lesson as drifts are observed and the user endorses
 * the rule.
 */
import { type ToolCallInput } from "./drift-patterns.js";
/**
 * #173 — return a warning string when an active-task-gated MCP tool is
 * about to be called without an in_progress TodoWrite task in the
 * transcript. Returns `null` when the tool isn't gated, no transcript
 * path is available, or an active task is detected.
 *
 * Transcript-read failures (missing file, malformed JSONL) swallow to
 * null — the hook must never block a legitimate call on its own bug.
 * The workflow-gate fail-opens silently in this case
 * (workflow-gate.ts:97-100); this surface makes that fail-open
 * observable from the call site.
 *
 * Exported for direct testing.
 */
export declare function checkActiveTaskRequirement(call: ToolCallInput, transcriptPath: string | undefined): Promise<string | null>;
/**
 * 0.7.25 / D3 — when `chat_send` is called with a body that looks like
 * a task-completion report (starts with the agent's `🦑 #<N>` marker),
 * verify the body includes a `PHASES` heading + at least 7 phase
 * lines per `[[feedback_telegram_reports]]`. Returns a non-blocking
 * warning string when the format is missing, null otherwise.
 *
 * Catches D3: paragraph summary sent instead of the locked 7-phase
 * format. Detection is heuristic (the agent could write a real
 * non-report message starting with `🦑 #N` — accepted noise).
 *
 * Exported for direct testing.
 */
export declare function checkChatSendReportFormat(call: ToolCallInput): string | null;
/**
 * Read JSON from stdin, evaluate drifts, exit with the appropriate code.
 */
export declare function runPreToolUseHook(): Promise<void>;
//# sourceMappingURL=pre-tool-use.d.ts.map