import type { NobjcObject } from "objc-js";
import type { _NSArray } from "../Foundation/NSArray.js";
import type { _NSData } from "../Foundation/NSData.js";
import type { _NSDictionary } from "../Foundation/NSDictionary.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSString } from "../Foundation/NSString.js";
import type { _NSURL } from "../Foundation/NSURL.js";
import type { _AVAudioFormat } from "./AVAudioFormat.js";
import type { _AVAudioPlayerDelegate } from "./AVAudioPlayerDelegate.js";
export declare class _AVAudioPlayer extends _NSObject {
    static alloc(): _AVAudioPlayer;
    static new(): _AVAudioPlayer;
    init(): _AVAudioPlayer;
    /** all data must be in the form of an audio file understood by CoreAudio */
    initWithContentsOfURL$error$(url: _NSURL, outError: NobjcObject | null): _AVAudioPlayer | null;
    initWithData$error$(data: _NSData, outError: NobjcObject | null): _AVAudioPlayer | null;
    /**
     * The file type hint is a constant defined in AVMediaFormat.h whose value is a UTI for a file format. e.g. AVFileTypeAIFF. Sometimes the type of a file cannot be determined from the data, or it is actually corrupt. The file type hint tells the parser what kind of data to look for so that files which are not self identifying or possibly even corrupt can be successfully parsed.
     */
    initWithContentsOfURL$fileTypeHint$error$(url: _NSURL, utiString: _NSString | null, outError: NobjcObject | null): _AVAudioPlayer | null;
    initWithData$fileTypeHint$error$(data: _NSData, utiString: _NSString | null, outError: NobjcObject | null): _AVAudioPlayer | null;
    /**
     * Transport control Methods that return BOOL return YES on success and NO on failure. Get ready to play the sound. This happens automatically on play.
     */
    prepareToPlay(): boolean;
    /**
     * This method starts the audio hardware synchronously (if not already running), and triggers the sound playback which is streamed asynchronously.
     */
    play(): boolean;
    /**
     * This method starts the audio hardware synchronously (if not already running), and triggers the sound playback which is streamed asynchronously at the specified time in the future. Time is an absolute time based on and greater than deviceCurrentTime.
     */
    playAtTime$(time: number): boolean;
    /** Pauses playback, but remains ready to play. */
    pause(): void;
    /**
     * Synchronously stops playback, no longer ready to play. NOTE: - This will block while releasing the audio hardware that was acquired upon calling play() or prepareToPlay()
     */
    stop(): void;
    /** fade to a new volume over a duration */
    setVolume$fadeDuration$(volume: number, duration: number): void;
    /** call to refresh meter values */
    updateMeters(): void;
    /** returns peak power in decibels for a given channel */
    peakPowerForChannel$(channelNumber: number): number;
    /** returns average power in decibels for a given channel */
    averagePowerForChannel$(channelNumber: number): number;
    /** is it playing or not? */
    playing(): boolean;
    /** @property(readonly, getter=isPlaying) BOOL playing; is it playing or not? */
    numberOfChannels(): number;
    /** the duration of the sound. */
    duration(): number;
    /** the UID of the current audio device (as a string) */
    currentDevice(): _NSString;
    setCurrentDevice$(value: _NSString): void;
    /** the delegate will be sent messages from the AVAudioPlayerDelegate protocol */
    delegate(): _AVAudioPlayerDelegate | null;
    setDelegate$(value: _AVAudioPlayerDelegate | null): void;
    /** returns nil if object was not created with a URL */
    url(): _NSURL | null;
    /** returns nil if object was not created with a data object */
    data(): _NSData | null;
    /** set panning. -1.0 is left, 0.0 is center, 1.0 is right. */
    pan(): number;
    setPan$(value: number): void;
    /** The volume for the sound. The nominal range is from 0.0 to 1.0. */
    volume(): number;
    setVolume$(value: number): void;
    /**
     * You must set enableRate to YES for the rate property to take effect. You must set this before calling prepareToPlay.
     */
    enableRate(): boolean;
    setEnableRate$(value: boolean): void;
    /**
     * See enableRate. The playback rate for the sound. 1.0 is normal, 0.5 is half speed, 2.0 is double speed.
     */
    rate(): number;
    setRate$(value: number): void;
    /**
     * If the sound is playing, currentTime is the offset into the sound of the current playback position. If the sound is not playing, currentTime is the offset into the sound where playing would start.
     */
    currentTime(): number;
    setCurrentTime$(value: number): void;
    /** returns the current time associated with the output device */
    deviceCurrentTime(): number;
    /**
     * "numberOfLoops" is the number of times that the sound will return to the beginning upon reaching the end. A value of zero means to play the sound just once. A value of one will result in playing the sound twice, and so on.. Any negative number will loop indefinitely until stopped.
     */
    numberOfLoops(): number;
    setNumberOfLoops$(value: number): void;
    /** returns a settings dictionary with keys as described in AVAudioSettings.h */
    settings(): _NSDictionary;
    /** returns the format of the audio data */
    format(): _AVAudioFormat;
    /** turns level metering on or off. default is off. */
    meteringEnabled(): boolean;
    setMeteringEnabled$(value: boolean): void;
    /** Array of AVAudioSessionChannelDescription objects */
    channelAssignments(): _NSArray;
    setChannelAssignments$(value: _NSArray): void;
    /**
     * The AVAudioPlayer's intended CASpatialAudioExperience. If unspecified, the property value defaults to CAAutomaticSpatialAudio.
     */
    intendedSpatialExperience(): NobjcObject;
    setIntendedSpatialExperience$(value: NobjcObject): void;
}
