import { spawn } from "node:child_process"; import { savePixDictationLanguage, type DictationConfig } from "../../config.js"; export type VoiceLanguage = string; export type VoiceInputState = "idle" | "connecting" | "listening"; export type AppVoiceControllerHost = { activeInputScope(): string | undefined; insertTranscript(text: string): void; setPartialTranscript(text: string | undefined): void; addSystemMessage(message: string): void; showToast(message: string, kind: "success" | "error" | "warning" | "info"): void; render(): void; }; type RecorderCommand = { command: string; args: string[]; description: string; }; type DeepgramSocketEvent = { data?: unknown; code?: number; reason?: string; }; type DeepgramSocketListener = (event: DeepgramSocketEvent) => void; type DeepgramSocket = { readyState: number; send(data: unknown): void; close(code?: number, reason?: string): void; addEventListener(type: string, listener: DeepgramSocketListener): void; removeEventListener(type: string, listener: DeepgramSocketListener): void; }; export type DeepgramTranscript = { text: string; isFinal: boolean; }; type VoiceControllerTestDeps = { deepgramApiKey: () => string | undefined; createDeepgramSocket: typeof createDeepgramSocket; waitForSocketOpen: typeof waitForSocketOpen; selectRecorderCommand: typeof selectRecorderCommand; spawn: typeof spawn; savePixDictationLanguage: typeof savePixDictationLanguage; delay: typeof delay; }; export declare function setVoiceControllerTestDeps(overrides?: Partial): void; export declare class AppVoiceController { private readonly host; private languageDefinitions; private languages; private language; private deepgramModel; private deepgramApiKey; private state; private audioProcess; private socket; private progressMessage; private progressFrame; private progressTimer; private lastSystemProgressMessage; private partialTranscript; private partialTranscriptTimer; private startGeneration; private recordingScope; private stopPromise; private disposed; constructor(host: AppVoiceControllerHost, dictationConfig: DictationConfig); updateDictationConfig(dictationConfig: DictationConfig): void; statusWidgetText(): string; showLanguageSwitcher(): boolean; statusWidgetActive(): boolean; progressOverlayText(): string | undefined; toggleRecording(): Promise; toggleLanguage(): Promise; stopRecording(): Promise; dispose(): Promise; private startRecording; private stopRecordingNow; private bindSocket; private bindAudioProcess; private nextLanguage; private initialLanguage; private saveLanguageSelection; private languageDefinition; private deepgramLanguage; private setProgressMessage; private clearProgressMessage; private addProgressSystemMessage; private emitPartialTranscript; private clearPartialTranscript; private commitPartialTranscript; private schedulePartialTranscriptEmit; private isCurrentStart; private continueStart; private isCurrentSocket; private isCurrentAudioProcess; private isScopeActive; } export declare function buildDeepgramUrl(model: string, language: string, rawLinear16: boolean): string; export declare function parseDeepgramTranscript(data: unknown): DeepgramTranscript | undefined; declare function selectRecorderCommand(): Promise; declare function createDeepgramSocket(url: string, protocols: string[]): DeepgramSocket; declare function waitForSocketOpen(socket: DeepgramSocket): Promise; declare function delay(ms: number): Promise; export {};