import { byte, MutableObservableValue, ObservableOption, Observer, Option, Procedure, Subscription } from "@opendaw/lib-std";
import { SoftwareMIDIInput } from "./SoftwareMIDIInput";
export declare class MidiDevices {
    #private;
    static canRequestMidiAccess(): boolean;
    static readonly softwareMIDIInput: SoftwareMIDIInput;
    static createSoftwareMIDIOutput(procedure: Procedure<Uint8Array>, name: string, id?: string): MIDIOutput;
    static requestPermission(): Promise<undefined>;
    static get(): ObservableOption<MIDIAccess>;
    static subscribeMessageEvents(observer: Observer<MIDIMessageEvent>, channel?: byte): Subscription;
    static inputDevices(): ReadonlyArray<MIDIInput>;
    static outputDevices(): ReadonlyArray<MIDIOutput>;
    static findInputDeviceById(id: string): Option<MIDIInput>;
    static findOutputDeviceById(id: string): Option<MIDIOutput>;
    static externalInputDevices(): Option<ReadonlyArray<MIDIInput>>;
    static externalOutputDevices(): Option<ReadonlyArray<MIDIOutput>>;
    static panic(): void;
    static available(): MutableObservableValue<boolean>;
}
//# sourceMappingURL=MidiDevices.d.ts.map