import type { CodexConversionConfig } from "../adapter/activation/config.ts"; import type { CodexVoiceAuth } from "./auth.ts"; import type { RealtimeInitialMessageItem } from "./context.ts"; import type { CodexRealtimePeer } from "./conversation/peer.ts"; import type { CodexRealtimeConversation } from "./conversation/session.ts"; import type { CodexDictationSession } from "./dictation/session.ts"; import type { RealtimeVoiceTurn } from "./turns.ts"; interface SessionLifecycle { stillAuthorizing(): boolean; onCreated(session: T): void; isCurrent(session: T): boolean; onActive(session: T): void; onError(session: T, error: Error): void; onStatus(status: string): void; } interface RealtimeSessionLifecycle extends SessionLifecycle { onTurn(turn: RealtimeVoiceTurn): void; onUserTranscript(transcript: string): void; onTranscriptTail(transcript: string): void; } interface DictationSessionLifecycle extends SessionLifecycle { onTranscript(transcript: string): void; } export declare function startControllerConversation(options: { auth: CodexVoiceAuth; config: CodexConversionConfig; instructions: string; initialItems?: RealtimeInitialMessageItem[] | undefined; peer?: CodexRealtimePeer | undefined; signal?: AbortSignal | undefined; lifecycle: RealtimeSessionLifecycle; }): Promise; export declare function startControllerDictation(options: { auth: CodexVoiceAuth; config: CodexConversionConfig; lifecycle: DictationSessionLifecycle; }): Promise; export {};