import type { CodexConversionConfig } from "../../adapter/activation/config.ts"; import type { CodexVoiceAuth } from "../auth.ts"; import type { RealtimeInitialMessageItem } from "../context.ts"; import { type RealtimeVoiceTurn } from "../turns.ts"; import { type RealtimeHandoffChannel } from "./handoff.ts"; import { type CodexRealtimePeer } from "./peer.ts"; export interface CodexConversationCallbacks { onError(error: Error): void; onDrop(error: Error): void; onStatus(status: string): void; onTurn(turn: RealtimeVoiceTurn): void; onUserTranscript(transcript: string): void; onTranscriptTail(transcriptDelta: string): void; } export declare class CodexRealtimeConversation { private readonly callbacks; private readonly peer; private readonly turnTracker; private readonly handoff; private state; private setupAbortController; private peerReady; private closePromise; private callSetup; private inputMuted; private established; private speakableResponsePending; private pendingCompactionAnnouncement; constructor(callbacks: CodexConversationCallbacks, peer: CodexRealtimePeer); start(auth: CodexVoiceAuth, config: CodexConversionConfig, instructions: string, initialItems?: RealtimeInitialMessageItem[], inputMuted?: boolean): Promise; markEstablished(): void; greet(contextual: boolean): void; announcePrompt(prompt: string): void; announceCompactionStart(reason: "threshold" | "overflow"): void; private appendSpeakableContext; activateDelegation(id: string): void; get microphoneMuted(): boolean; setInputMuted(muted: boolean): void; mirrorPiSteer(input: unknown): boolean; streamAgentDelta(delta: string): void; finishAgentMessage(channel: RealtimeHandoffChannel, fallback?: string): void; finishAgentProgress(fallback?: string): void; get agentProgressStreamed(): boolean; settleAgentTurn(): void; close(): Promise; private closeSession; private handlePeerEvent; private handleHelperState; private handleServerEvent; private handleCompletedTurn; private abortSetup; private drainConversation; private fail; private drop; private finishFailure; }