import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _AVAudioBuffer } from "./AVAudioBuffer.js";
import type { _AVSpeechSynthesizerDelegate } from "./AVSpeechSynthesizerDelegate.js";
import type { _AVSpeechUtterance } from "./AVSpeechUtterance.js";
import type { AVSpeechBoundary } from "./AVSpeechBoundary.js";
import type { AVSpeechSynthesisPersonalVoiceAuthorizationStatus } from "./AVSpeechSynthesisPersonalVoiceAuthorizationStatus.js";
export declare class _AVSpeechSynthesizer extends _NSObject {
    static alloc(): _AVSpeechSynthesizer;
    static new(): _AVSpeechSynthesizer;
    init(): _AVSpeechSynthesizer;
    /**
     * Asks the user to allow your app to use personal voices for speech synthesis Call this method before performing any other tasks associated with speech synthesis using personal voices. This method executes asynchronously, returning shortly after you call it. At some point later, the system calls the provided handler block with the results. When your app's authorization status is PersonalVoiceAuthorizationStatus.notDetermined, this method causes the system to prompt the user to grant or deny permission for your app to use personal voices. The user's response is saved so that future calls to this method do not prompt the user again.
     */
    static requestPersonalVoiceAuthorizationWithCompletionHandler$(handler: (status: AVSpeechSynthesisPersonalVoiceAuthorizationStatus) => void): void;
    /**
     * Returns your app's current authorization to use personal voices. The user can reject your app's request to use personal voices, but your request can also be denied if personal voices are not supported on the device. The app can also change your app's authorization status at any time from the Settings app. The app's current authorization status value. For a list of values, see AVSpeechSynthesisPersonalVoiceAuthorizationStatus.
     */
    static personalVoiceAuthorizationStatus(): AVSpeechSynthesisPersonalVoiceAuthorizationStatus;
    /**
     * AVSpeechUtterances are queued by default. Enqueing the same AVSpeechUtterance that is already enqueued or is speaking will raise an exception.
     */
    speakUtterance$(utterance: _AVSpeechUtterance): void;
    /**
     * Use this method to receive audio buffers that can be used to store or further process synthesized speech. The dictionary provided by -[AVSpeechSynthesisVoice audioFileSettings] can be used to create an AVAudioFile.
     */
    writeUtterance$toBufferCallback$(utterance: _AVSpeechUtterance, bufferCallback: (arg0: _AVAudioBuffer) => void): void;
    /**
     * Use this method to receive audio buffers and associated metadata that can be used to store or further process synthesized speech. The dictionary provided by -[AVSpeechSynthesisVoice audioFileSettings] can be used to create an AVAudioFile.
     */
    writeUtterance$toBufferCallback$toMarkerCallback$(utterance: _AVSpeechUtterance, bufferCallback: (arg0: _AVAudioBuffer) => void, markerCallback: (arg0: _NSArray) => void): void;
    /** Call stopSpeakingAtBoundary: to interrupt current speech and clear the queue. */
    stopSpeakingAtBoundary$(boundary: AVSpeechBoundary): boolean;
    pauseSpeakingAtBoundary$(boundary: AVSpeechBoundary): boolean;
    continueSpeaking(): boolean;
    delegate(): _AVSpeechSynthesizerDelegate | null;
    setDelegate$(value: _AVSpeechSynthesizerDelegate | null): void;
    speaking(): boolean;
    paused(): boolean;
    /**
     * Specify the audio channels to be used for synthesized speech as described by the channel descriptions in AVAudioSession's current route. Speech audio will be replicated to each specified channel. Default is nil, which implies system defaults.
     */
    outputChannels(): _NSArray;
    setOutputChannels$(value: _NSArray): void;
    /**
     * The AVSpeechSynthesizer will use the AVAudioSession sharedInstance when set to YES. The AVSpeechSynthesizer will use a separate AVAudioSession for playback when set to NO. Additionally, the audio session will mix and duck other audio, and its active state will be managed automatically. The separate audio session will use AVAudioSessionRouteSharingPolicyDefault, which means that it may have a different route from the app’s shared instance session. Default is YES.
     */
    usesApplicationAudioSession(): boolean;
    setUsesApplicationAudioSession$(value: boolean): void;
    /**
     * Set to YES to send synthesized speech into an outgoing telephony audio stream. If there's no active call, setting this property has no effect.
     */
    mixToTelephonyUplink(): boolean;
    setMixToTelephonyUplink$(value: boolean): void;
}
