/** Imperative handle exposed via `controllerRef` — surfaces the playback controls * so the `` facade can forward them as instance methods. Both * the native (speechSynthesis) and model (synthesize → Audio) paths run through * these, so manual clicks and programmatic calls behave identically. */ export interface VoiceOutputController { /** Speak the current `text` (native by default, model if `synthesize` is set). */ speak(): void; /** Pause playback (resumable). */ pause(): void; /** Resume paused playback. */ resume(): void; /** Stop playback and reset. */ stop(): void; } export interface VoiceOutputProps { /** The utterance to read aloud. */ text: string; /** Speak automatically when `text` is set/changed. */ autoplay?: boolean; /** TTS model seam: given text, return an audio Blob to play. When set, the * native speechSynthesis path is bypassed. Mirrors VoiceInput's `onTranscribe`. */ onSynthesize?: (text: string) => Promise; /** Fires whenever playback starts or stops. */ onSpeakingChange?: (speaking: boolean) => void; /** Fires once the model path resolves audio (model path only). */ onSynthesized?: (blob: Blob) => void; disabled?: boolean; class?: string; /** Receive the imperative controller once mounted. The `` * facade forwards these as element methods (speak/pause/resume/stop). */ controllerRef?: (controller: VoiceOutputController) => void; } export declare function VoiceOutput(props: VoiceOutputProps): import("solid-js").JSX.Element;