/** * The widget's dictation hook — now a thin wrapper over the shared engine. * * ★ WHY A WRAPPER AND NOT A REPLACEMENT. This file's API (`transcript`, `reset`) * is what every shell mounting `AssistantWidget` already calls. The shared engine * has a different, better contract — it reports finalised phrases through a * callback instead of accumulating a string — so swapping it in directly would * have broken every one of those consumers at once, for a change that is meant to * FIX them. * * ★ WHAT CONSUMERS SILENTLY GAIN. This file was 122 lines and the engine it now * delegates to is 350, because that engine carries fixes this copy never got: * * - `onstart` as the real capture signal. `isListening` set after `start()` * returns only means the request was accepted, so the button reported * "listening" while the microphone was still closed. * - `isStarting`, cleared on every terminal path — the permission window used to * leave the control dead with no way to recover but a reload. * - `no-speech` and the other transient recogniser errors treated as recoverable * rather than fatal. * * Those were fixed in one product weeks ago. Every other product kept the broken * button until this wrapper landed. * * Deprecated in favour of importing the engine directly: the callback contract * loses nothing and avoids accumulating a string the caller may not want. */ export interface UseVoiceInputReturn { isSupported: boolean; isListening: boolean; transcript: string; start: () => void; stop: () => void; reset: () => void; } export declare function useVoiceInput(lang?: string): UseVoiceInputReturn; //# sourceMappingURL=useVoiceInput.d.ts.map