/** Resolve a path's age. Injectable so unit tests can avoid touching the filesystem. */ export type AgeResolver = (cwd: string, relativePath: string) => Date | undefined; export interface BuildRecallOutputArgs { /** Synthesized prose returned by `brv query`. */ content: string; /** * Structured matches surfaced by newer brv CLIs. When undefined we fall back to * regex-parsing the `**Sources**:` block in `content` for graceful degradation against * older brv CLIs that do not emit this field. */ matchedDocs?: ReadonlyArray<{ path: string; score?: number; }>; /** Project root used to resolve frontmatter timestamps and mtime fallbacks. */ cwd: string; /** Override the age resolver (test seam). Defaults to filesystem-backed resolver. */ getAge?: AgeResolver; /** Override the reference clock (test seam). */ now?: Date; } export interface RecallHookOutput { /** * Visible single-line summary rendered by Claude Code beneath the prompt. * Omitted when there are no recall paths to surface (cache hits with empty matchedDocs, * older CLIs that returned content without a Sources block). */ systemMessage?: string; hookSpecificOutput: { hookEventName: "UserPromptSubmit"; additionalContext: string; }; } /** * Assemble the dual-channel UserPromptSubmit hook output (visible systemMessage + invisible * additionalContext) from a recall result. Returns undefined when there is nothing to emit * (no synthesized content), letting the caller exit silently without writing JSON to stdout. */ export declare function buildRecallOutput(args: BuildRecallOutputArgs): RecallHookOutput | undefined;