import type { ChatComposerInputHandle } from './ChatComposerInput';
export interface UseChatDictationOptions {
    /** BCP-47 language tag. @default InternationalizationProvider locale */
    lang?: string;
    /** Whether recognition continues until explicitly stopped. @default true */
    continuous?: boolean;
    /** Whether interim results are reported. @default true */
    interimResults?: boolean;
    /** Transform transcript text before it's reported. Applied before CAPS LOCK. */
    transformTranscript?: (transcript: string) => string;
    /** Called on each transcript result (interim or final). */
    onTranscript?: (transcript: string, isFinal: boolean) => void;
    /** Called when a final result is produced. */
    onResult?: (transcript: string) => void;
    /** Called when a recognition error occurs. */
    onError?: (error: {
        error: string;
        message?: string;
    }) => void;
    /** Called when recognition starts. */
    onStart?: () => void;
    /** Called when recognition ends. */
    onEnd?: () => void;
    /** Play subtle audio cues on start/stop. @default false */
    hasSounds?: boolean;
    /** Shared AudioContext — uses an internal lazy singleton by default. */
    audioContext?: AudioContext;
    /** Ref to ChatComposerInput. If provided, manages interim ghost text in the input. */
    inputRef?: React.RefObject<ChatComposerInputHandle | null>;
}
export interface UseChatDictationReturn {
    /** Whether the browser supports SpeechRecognition. */
    isSupported: boolean;
    /** Whether recognition is currently active. */
    isListening: boolean;
    /** Whether speech is currently being detected. */
    isSpeaking: boolean;
    /** Real-time microphone volume level, 0 to 1. Updates ~60fps while listening. */
    volume: number;
    /** Frequency band levels (low to high), each 0-1. Updates ~60fps while listening. */
    bands: number[];
    /** Raw (uncalibrated) band levels for debugging. */
    rawBands: number[];
    /** The current interim transcript text. */
    interimTranscript: string;
    /** Start speech recognition. */
    start: () => void;
    /** Stop speech recognition gracefully (waits for final result). */
    stop: () => void;
    /** Abort speech recognition immediately. */
    abort: () => void;
    /** Toggle between start and stop. */
    toggle: () => void;
}
export declare function useChatDictation(options?: UseChatDictationOptions): UseChatDictationReturn;
//# sourceMappingURL=useChatDictation.d.ts.map