import type { VoiceProps, VoiceOptions } from './NativeSpeech';
export default class Speech {
    /**
     * Gets a list of all available voices on the device
     * @param language - Optional language code to filter voices (e.g., 'en', 'fr', 'en-US', 'fr-FR').
     *                  If not provided, returns all available voices.
     * @returns Promise<VoiceProps[]> Array of voice properties matching the language filter
     * @example
     * // Get all available voices
     * const allVoices = await Speech.getAvailableVoices();
     * // Get only English voices
     * const englishVoices = await Speech.getAvailableVoices('en-US');
     * // or
     * const englishVoices = await Speech.getAvailableVoices('en');
     */
    static getAvailableVoices(language?: string): Promise<VoiceProps[]>;
    /**
     * Sets the global options for all subsequent speak() calls
     * @param options - Voice configuration options
     * @example
     * Speech.initialize({
     *   pitch: 1.2,
     *   rate: 0.8,
     *   volume: 1.0,
     *   language: 'en-US'
     * });
     */
    static initialize(options: VoiceOptions): void;
    /**
     * Resets all speech options to their default values
     * @example
     * Speech.reset();
     */
    static reset(): void;
    /**
     * Immediately stops any ongoing or in queue speech synthesis
     * @returns Promise<void> Resolves when speech is stopped
     * @example
     * await Speech.stop();
     */
    static stop(): Promise<void>;
    /**
     * Pauses the current speech at the next word boundary
     * @note on Android, API 26+ required due to missing onRangeStart support
     * @returns Promise<boolean> Resolves to true if speech was paused, false if nothing to pause
     * @example
     * const isPaused = await Speech.pause();
     * console.log(isPaused ? 'Speech paused' : 'Nothing to pause');
     */
    static pause(): Promise<boolean>;
    /**
     * Resumes previously paused speech
     * @note on Android, API 26+ required due to missing onRangeStart support
     * @returns Promise<boolean> Resolves to true if speech was resumed, false if nothing to resume
     * @example
     * const isResumed = await Speech.resume();
     * console.log(isResumed ? 'Speech resumed' : 'Nothing to resume');
     */
    static resume(): Promise<boolean>;
    /**
     * Checks if speech is currently being synthesized
     * @returns Promise<boolean> Resolves to true if speaking or paused, false otherwise
     * @example
     * const speaking = await Speech.isSpeaking();
     * console.log(speaking ? 'Speaking' : 'Not speaking');
     */
    static isSpeaking(): Promise<boolean>;
    /**
     * Speaks text using current global options
     * @param text - The text to synthesize
     * @returns Promise<void> Resolves when speech completes
     * @throws If text is null or undefined
     * @example
     * await Speech.speak('Hello, world!');
     */
    static speak(text: string): Promise<void>;
    /**
     * Speaks text with custom options for this utterance only. Uses global options for any settings not provided.
     * @param text - The text to synthesize
     * @param options - Voice options overriding global settings
     * @returns Promise<void> Resolves when speech completes
     * @throws If text is null or undefined
     * @example
     * await Speech.speakWithOptions('Hello!', {
     *   pitch: 1.5,
     *   rate: 0.8,
     *   language: 'en-US'
     * });
     */
    static speakWithOptions(text: string, options: VoiceOptions): Promise<void>;
    /**
     * Called when an error occurs during speech synthesis
     * @example
     * // Add listener
     * const subscription = Speech.onError(({id}) => console.log('Speech error', id));
     * // Later, cleanup when no longer needed
     * subscription.remove();
     */
    static onError: import("react-native/Libraries/Types/CodegenTypes").EventEmitter<import("./NativeSpeech").EventProps>;
    /**
     * Called when speech synthesis begins
     * @example
     * // Add listener
     * const subscription = Speech.onStart(({id}) => console.log('Started speaking', id));
     * // Later, cleanup when no longer needed
     * subscription.remove();
     */
    static onStart: import("react-native/Libraries/Types/CodegenTypes").EventEmitter<import("./NativeSpeech").EventProps>;
    /**
     * Called when speech synthesis completes successfully
     * @example
     * const subscription = Speech.onFinish(({id}) => console.log('Finished speaking', id));
     * // Cleanup
     * subscription.remove();
     */
    static onFinish: import("react-native/Libraries/Types/CodegenTypes").EventEmitter<import("./NativeSpeech").EventProps>;
    /**
     * Called when speech is paused
     * @note on Android, API 26+ required due to missing onRangeStart support
     * @example
     * const subscription = Speech.onPause(({id}) => console.log('Speech paused', id));
     * // Cleanup
     * subscription.remove();
     */
    static onPause: import("react-native/Libraries/Types/CodegenTypes").EventEmitter<import("./NativeSpeech").EventProps>;
    /**
     * Called when speech is resumed
     * @note on Android, API 26+ required due to missing onRangeStart support
     * @example
     * const subscription = Speech.onResume(({id}) => console.log('Speech resumed', id));
     * // Cleanup
     * subscription.remove();
     */
    static onResume: import("react-native/Libraries/Types/CodegenTypes").EventEmitter<import("./NativeSpeech").EventProps>;
    /**
     * Called when speech is stopped
     * @example
     * const subscription = Speech.onStopped(({id}) => console.log('Speech stopped', id));
     * // Cleanup
     * subscription.remove();
     */
    static onStopped: import("react-native/Libraries/Types/CodegenTypes").EventEmitter<import("./NativeSpeech").EventProps>;
    /**
     * Called during speech with progress information
     * @note on Android, API 26+ required due to missing onRangeStart support
     * @example
     * const subscription = Speech.onProgress(progress => {
     *   console.log(`Speaking progress`, progress);
     * });
     * // Cleanup when component unmounts or listener is no longer needed
     * subscription.remove();
     */
    static onProgress: import("react-native/Libraries/Types/CodegenTypes").EventEmitter<import("./NativeSpeech").ProgressEventProps>;
}
//# sourceMappingURL=Speech.d.ts.map