/**
 * `recall_pre_inject` primitive — pre-inject top-K memory hits into the
 * current `UserPromptSubmit` context.
 *
 * Composes the same recall path as the `recall` MCP tool: pulls the user's
 * prompt from the `prompt_submit` event, queries the configured RAG backend,
 * filters by `min_score`, applies a whole-hit token-budget guard, and emits
 * the formatted hit list as a `RuleResult.inject_context` payload.
 *
 * Cross-harness portability: this primitive is harness-AGNOSTIC. It only
 * returns structured data (a `content: string`). The host-specific framing
 * (Claude Code's `hookSpecificOutput.additionalContext` JSON envelope,
 * Cursor's equivalent, Pack CLI's equivalent) lives in the per-host hook
 * binary (currently `src/runtime/hooks/user-prompt-submit.ts`). Other hooks
 * that emit this kind of result get a stderr warning at dispatch time
 * (`dispatch.ts`) — only `UserPromptSubmit` actually writes it out.
 *
 * Special evaluator integration: returning the shape
 * `{ kind: 'inject_context', content }` from this primitive makes the
 * evaluator (`evaluator.ts`) treat it as a TERMINAL `RuleResult` — the same
 * pattern the `verdict` primitive uses. No bindings, no fall-through. An
 * empty / no-hit recall returns `null`, which the evaluator's `isEmpty`
 * branch handles as no-verdict.
 *
 * Token-budget guard model (per task spec G.4):
 *   - Crude estimate `Math.ceil(content.length / 4)` (4 chars/token); real
 *     tokenizer is a deliberate follow-up. 4000 conservative for Claude.
 *   - Score filter (cheaper signal) runs FIRST, then the token guard. This
 *     keeps the loop bounded even if the backend returns many low-quality
 *     hits — they're filtered before we start counting tokens.
 *   - Whole-hit granularity only — never split a hit mid-string. If hit N+1
 *     would push us past `max_tokens`, we keep N and stop.
 *
 * Imports from: zod, ../rag/types.js, ../runtime/result.js, ./registry.js.
 * Imported by: src/runtime/bootstrap.ts (registry wiring).
 */
import type { RagBackend } from '../rag/types.js';
import type { FunctionRegistry } from './registry.js';
export declare function registerRecallPreInjectFunction(registry: FunctionRegistry, backend: RagBackend): void;
//# sourceMappingURL=recall_pre_inject.d.ts.map