import { type MicrophoneCapture, type MicrophoneCaptureOptions } from './recordings/direct-recording-capture.js'; import type { DictationTarget } from './dictation-target.js'; import { type RealtimeDictationHandle } from '../realtime-dictation-contract.js'; import type { RealtimeDictationOptions } from '../realtime-dictation-client.js'; export type DictationPhase = 'idle' | 'starting' | 'listening' | 'finishing' | 'failed'; export interface DictationState { phase: DictationPhase; pending: number; error: string; level: number; } export interface DictationDependencies { capture(options: MicrophoneCaptureOptions): Promise; connect(options: RealtimeDictationOptions): Promise; acquire(cancel: () => void): Promise<() => void>; } /** One live stream per editor; upstream hypotheses replace only this dictation range. */ export declare class DictationSession { private target; private userId; private onState; private state; private controller; private microphone; private captureRelease; private stream; private release; private stopped; private closed; private latestText; private insertedText; private insertionFailed; private levelListener; setLevelListener(listener: (level: number) => void): void; private deps; constructor(target: DictationTarget, userId: number, onState: (state: DictationState) => void, dependencies?: Partial); private update; start(): Promise; private result; private releaseCapture; private fail; stop(message?: string): Promise; retry(): void; get recoverableText(): string; get canRetry(): boolean; get busy(): boolean; cancel(): void; } //# sourceMappingURL=dictation-session.d.ts.map