interface UseVoiceInputOptions {
    /** Called when local dictation returns transcript text. */
    onTranscript?: (transcript: string, isFinal: boolean) => void;
    onError?: (message: string) => void;
    onNeedsInstall?: () => void;
    lang?: string;
}
interface UseVoiceInputResult {
    isListening: boolean;
    isTranscribing: boolean;
    isSupported: boolean;
    analyser: AnalyserNode | null;
    error: string | null;
    start: () => Promise<void>;
    stop: () => void;
}
/**
 * Owns local streaming dictation: getUserMedia + AudioContext for waveform and
 * PCM frame capture, plus a WebSocket session to the local otto server.
 *
 * The returned `analyser` is intended to be passed to <LiveWaveform>.
 */
export declare function useVoiceInput({ onTranscript, onError, onNeedsInstall, lang, }?: UseVoiceInputOptions): UseVoiceInputResult;
export {};
//# sourceMappingURL=useVoiceInput.d.ts.map