import type { NobjcObject } from "objc-js";
import type { _AVAudioMixing } from "./AVAudioMixing.js";
import type { _AVAudioUnit } from "./AVAudioUnit.js";
import type { _NSData } from "../Foundation/NSData.js";
import type { AudioComponentDescription } from "../structs/AudioComponentDescription.js";
export declare class _AVAudioUnitMIDIInstrument extends _AVAudioUnit {
    static alloc(): _AVAudioUnitMIDIInstrument;
    static new(): _AVAudioUnitMIDIInstrument;
    init(): _AVAudioUnitMIDIInstrument;
    /**
     * Initialize the node with the component description for an AUv2 Audio Unit. - Parameter description: audio component description structure that describes the audio component of type kAudioUnitType_MusicDevice or kAudioUnitType_RemoteInstrument. - note: To load AUv3 audio units (or any audio unit asynchronously), use the class method ``AVAudioUnit/instantiateWithComponentDescription:options:completionHandler:`` instead.
     */
    initWithAudioComponentDescription$(description: AudioComponentDescription): _AVAudioUnitMIDIInstrument;
    /**
     * Sends a MIDI Note On event to the instrument - Parameters: - note: the note number (key) to play. Range: 0 -> 127 - velocity: specifies the volume with which the note is played. Range: 0 -> 127 - channel: the channel number to which the event is sent. Range: 0 -> 15
     */
    startNote$withVelocity$onChannel$(note: number, velocity: number, channel: number): void;
    /**
     * Sends a MIDI Note Off event to the instrument - Parameters: - note: the note number (key) to stop. Range: 0 -> 127 - channel: the channel number to which the event is sent. Range: 0 -> 15
     */
    stopNote$onChannel$(note: number, channel: number): void;
    /**
     * Sends a MIDI controller event to the instrument. - Parameters: - controller: a standard MIDI controller number. Range: 0 -> 127 - value: value for the controller. Range: 0 -> 127 - channel: the channel number to which the event is sent. Range: 0 -> 15
     */
    sendController$withValue$onChannel$(controller: number, value: number, channel: number): void;
    /**
     * Sends a MIDI controller event to the instrument. - Parameters: - controller: a standard MIDI controller number. Range: 0 -> 127 - value: value for the controller. Range: 0 -> 127 - channel: the channel number to which the event is sent. Range: 0 -> 15
     */
    sendPitchBend$onChannel$(pitchbend: number, channel: number): void;
    /**
     * Sends MIDI channel pressure event to the instrument. - Parameters: - pressure: value of the pressure. Range: 0 -> 127 - channel: the channel number to which the event is sent. Range: 0 -> 15
     */
    sendPressure$onChannel$(pressure: number, channel: number): void;
    /**
     * Sends MIDI Polyphonic key pressure event to the instrument - Parameters: - key: the key (note) number to which the pressure event applies. Range: 0 -> 127 - value: value of the pressure. Range: 0 -> 127 - channel: the channel number to which the event is sent. Range: 0 -> 15so
     */
    sendPressureForKey$withValue$onChannel$(key: number, value: number, channel: number): void;
    /**
     * Sends MIDI Program Change event to the instrument The instrument will be loaded from the bank that has been previous set by MIDI Bank Select controller messages (0 and 31). If none has been set, bank 0 will be used. - Parameters: - program: the program number. Range: 0 -> 127 - channel: the channel number to which the event is sent. Range: 0 -> 15
     */
    sendProgramChange$onChannel$(program: number, channel: number): void;
    /**
     * Sends a MIDI Program Change and Bank Select events to the instrument - Parameters: - program: specifies the program (preset) number within the bank to load. Range: 0 -> 127 - bankMSB: specifies the most significant byte value for the bank to select. Range: 0 -> 127 - bankLSB: specifies the least significant byte value for the bank to select. Range: 0 -> 127 - channel: the channel number to which the event is sent. Range: 0 -> 15
     */
    sendProgramChange$bankMSB$bankLSB$onChannel$(program: number, bankMSB: number, bankLSB: number, channel: number): void;
    /**
     * Sends a MIDI event which contains two data bytes to the instrument. - Parameters: - midiStatus: the STATUS value of the MIDI event - data1: the first data byte of the MIDI event - data2: the second data byte of the MIDI event.
     */
    sendMIDIEvent$data1$data2$(midiStatus: number, data1: number, data2: number): void;
    /**
     * Sends a MIDI event which contains one data byte to the instrument. - Parameters: - midiStatus: the STATUS value of the MIDI event - data1: the first data byte of the MIDI event
     */
    sendMIDIEvent$data1$(midiStatus: number, data1: number): void;
    /**
     * Sends a MIDI System Exclusive event to the instrument. - Parameters: - midiData: a NSData object containing the complete SysEx data including start(F0) and termination(F7) bytes.
     */
    sendMIDISysExEvent$(midiData: _NSData): void;
    /**
     * Sends a MIDI event list to the instrument. - Parameters: - eventList: the MIDIEventList
     */
    sendMIDIEventList$(eventList: NobjcObject): void;
}
export interface _AVAudioUnitMIDIInstrument extends _AVAudioMixing {
}
