import type { AssistantMessage } from "@earendil-works/pi-ai"; import type { ContextEvent, ExtensionAPI, ExtensionContext } from "@earendil-works/pi-coding-agent"; import type { CodexConversionConfig } from "../adapter/activation/config.ts"; import type { CodexRealtimePeer } from "./conversation/peer.ts"; import type { CodexRealtimeConversation } from "./conversation/session.ts"; import { type PreparedVoiceDelegation } from "./session-messages.ts"; import type { CodexVoiceMode } from "./ui.ts"; export declare class CodexVoiceController { private readonly runtime; private readonly messages; private readonly inputMuteListeners; private delegationPreflight; constructor(pi: ExtensionAPI); setDelegationPreflight(preflight: (ctx: ExtensionContext, signal: AbortSignal) => Promise): void; get status(): string; get active(): boolean; get activeMode(): CodexVoiceMode | undefined; get inputMuted(): boolean; onInputMuteChange(listener: (muted: boolean) => void): () => void; setInputMuted(muted: boolean): boolean; resetContextAnnouncements(): void; resetSessionContext(): void; announceDictation(ctx: ExtensionContext): void; start(ctx: ExtensionContext, config: CodexConversionConfig, mode: CodexVoiceMode): Promise; startRealtimeWithPeer(ctx: ExtensionContext, config: CodexConversionConfig, peer: CodexRealtimePeer, signal?: AbortSignal): Promise; prepareRealtimePrompt(ctx: ExtensionContext): string | undefined; stopConversation(session: CodexRealtimeConversation, options?: { announce?: boolean; }): Promise; setConversationInputActive(session: CodexRealtimeConversation, active: boolean): void; private startMode; stop(options?: { announce?: boolean; }): Promise; finishDictation(options?: { announce?: boolean; }): Promise; agentStarted(): void; filterContext(messages: ContextEvent["messages"]): ContextEvent["messages"]; mirrorPiSteer(input: unknown): boolean; streamDelta(delta: string): void; finishAgentMessage(stopReason: AssistantMessage["stopReason"]): void; settleTurn(): void; private currentSession; private fail; private renderStatus; private renderCurrentStatus; }