declare enum Events { BOUNDARY = "boundary", END = "end", ERROR = "error", PAUSED = "paused", PITCH = "pitch", PLAYING = "playing", RATE = "rate", READY = "ready", VOLUME = "volume" } interface PollySpeechMark { end: number; start: number; time: number; type: string; value: string; } interface TTSBoundaryUpdate { word: string; startChar: number; endChar: number; } interface TTSAudioData { audio: string; marks?: PollySpeechMark[]; } interface FetchAudioData { (text: string): Promise; } interface ControllerOptions { lang?: string; voice?: SpeechSynthesisVoice; dispatchBoundaries?: boolean; fetchAudioData?: FetchAudioData; } type Target = HTMLAudioElement | SpeechSynthesisUtterance; type Synthesizer = HTMLAudioElement | SpeechSynthesis; type TTSEvent = SpeechSynthesisEvent | Event; declare class Controller extends EventTarget { #private; constructor(options?: ControllerOptions); get synthesizer(): Synthesizer; get target(): Target; set text(value: string); get paused(): boolean; get rate(): number; set rate(value: number); get pitch(): number; set pitch(value: number); get volumeMin(): number; get volumeMax(): number; get volume(): number; set volume(value: number); get preservesPitch(): boolean; set preservesPitch(value: boolean); get lang(): string; set lang(value: string); /** * Allows listeners for controller events to be registered * before instances start firing events related to underlying API's, * for instance in a useEffect block. * * Run it as async to allow for the fetchAudioData call to be awaited. */ init(): Promise; play(): Promise; pause(): void; resume(): Promise; replay(): Promise; cancel(): void; mute(): Promise; unmute(volume?: number): Promise; } /** * Stub for when speech synthesis is not supported. */ declare class ControllerStub { lang: string; rate: number; pitch: number; volume: number; volumeMin: number; preservesPitch: boolean; text: string; cancel(): void; init(): Promise; mute(): Promise; unmute(): Promise; play(): Promise; pause(): void; resume(): Promise; replay(): Promise; addEventListener(): void; removeEventListener(): void; } export { Controller, ControllerStub, Events }; export type { TTSAudioData, PollySpeechMark, ControllerOptions, TTSBoundaryUpdate, TTSEvent };