import type { NobjcObject } from "objc-js";
import type { _NSData } from "../Foundation/NSData.js";
import type { _NSObject } from "../Foundation/NSObject.js";
import type { _NSURL } from "../Foundation/NSURL.js";
export declare class _AVMIDIPlayer extends _NSObject {
    static alloc(): _AVMIDIPlayer;
    static new(): _AVMIDIPlayer;
    init(): _AVMIDIPlayer;
    /**
     * Create a player with the contents of the file specified by the URL. 'bankURL' should contain the path to a SoundFont2 or DLS bank to be used by the MIDI synthesizer. For OSX it can be set to nil for the default, but for iOS it must always refer to a valid bank file.
     */
    initWithContentsOfURL$soundBankURL$error$(inURL: _NSURL, bankURL: _NSURL | null, outError: NobjcObject | null): _AVMIDIPlayer | null;
    /**
     * Create a player with the contents of the data object 'bankURL' should contain the path to a SoundFont2 or DLS bank to be used by the MIDI synthesizer. For OSX it can be set to nil for the default, but for iOS it must always refer to a valid bank file.
     */
    initWithData$soundBankURL$error$(data: _NSData, bankURL: _NSURL | null, outError: NobjcObject | null): _AVMIDIPlayer | null;
    /**
     * Get ready to play the sequence by prerolling all events Happens automatically on play if it has not already been called, but may produce a delay in startup.
     */
    prepareToPlay(): void;
    /** Play the sequence. */
    play$(completionHandler: (() => void) | null): void;
    /** Stop playing the sequence. */
    stop(): void;
    /** The length of the currently loaded file in seconds. */
    duration(): number;
    /** Indicates whether or not the player is playing */
    playing(): boolean;
    /**
     * The playback rate of the player 1.0 is normal playback rate. Rate must be > 0.0.
     */
    rate(): number;
    setRate$(value: number): void;
    /**
     * The current playback position in seconds Setting this positions the player to the specified time. No range checking on the time value is done. This can be set while the player is playing, in which case playback will resume at the new time.
     */
    currentPosition(): number;
    setCurrentPosition$(value: number): void;
}
