/**
 * Per-call memory for the realtime (speech-to-speech) voice agent.
 *
 * Decides, once per call and before anything else is wired, whether this call
 * may be remembered: the room metadata must carry a memory binding that
 * verifies against the shared secret and the actual room name. If it does, a
 * NeuroLink instance is built, the conversation's recent history is read for
 * seeding, and a turn recorder is created that writes each finished exchange
 * through `recordConversationTurn`. If it does not, the call proceeds exactly
 * as it would without memory, and a warning says why (never the ids).
 *
 * The shutdown flush is registered here, before the job lifecycle installs its
 * process reaper. LiveKit starts every shutdown callback in registration order
 * and the reaper exits the process about a second later, so the flush gets a
 * budget below that second and starts first.
 *
 * See docs/features/livekit-voice-agent.md.
 */
import type { JobContext } from "@livekit/agents";
import type { RealtimeCallMemory, RealtimeVoiceMemoryConfig } from "../../types/index.js";
/** Verify the call's binding and prepare its recorder; `undefined` means "no memory for this call". */
export declare function setUpRealtimeCallMemory(ctx: Pick<JobContext, "room" | "addShutdownCallback">, config: RealtimeVoiceMemoryConfig | undefined, model?: string): Promise<RealtimeCallMemory | undefined>;
