import type { ExtensionContext } from "@earendil-works/pi-coding-agent"; import type { CodexConversionConfig } from "../adapter/activation/config.ts"; import { type VoiceState } from "./controller-support.ts"; import type { CodexRealtimePeer } from "./conversation/peer.ts"; import type { CodexRealtimeConversation } from "./conversation/session.ts"; import type { CodexVoiceSessionMessages } from "./session-messages.ts"; import type { CodexVoiceMode } from "./ui.ts"; export interface VoiceControllerRuntime { state: VoiceState; context?: ExtensionContext | undefined; config?: CodexConversionConfig | undefined; announcedMode?: CodexVoiceMode | undefined; startGeneration: number; startAbortController?: AbortController | undefined; voiceStatus: string; } export declare function startControllerMode(options: { runtime: VoiceControllerRuntime; messages: CodexVoiceSessionMessages; ctx: ExtensionContext; config: CodexConversionConfig; mode: CodexVoiceMode; peer?: CodexRealtimePeer | undefined; signal?: AbortSignal | undefined; prepareRealtimePrompt(ctx: ExtensionContext): string | undefined; stopCurrent(): Promise; finishCurrentDictation(): Promise; onError(error: Error): void; onStatus(status: string): void; }): Promise;