export type SysExMessage = Uint8Array; export type HardwareMidiPortOptions = { inputPortIndex: number; outputPortIndex: number; /** MIDI channel 0..15 (0 = channel 1). */ channel: number; /** When true, input is configured to NOT ignore SysEx. */ enableSysexReception: boolean; }; export declare class HardwareMidiPort { private readonly opts; private readonly input; private readonly output; private isOpen; readonly channel: number; constructor(opts: HardwareMidiPortOptions); open(): void; close(): void; sendBytes(message: Uint8Array): void; sendCc(cc: number, value: number, channel?: number): void; onMessage(handler: (deltaTime: number, message: Uint8Array) => void): () => void; requestSysEx(request: Uint8Array, timeoutMs: number, predicate?: (msg: SysExMessage) => boolean): Promise; }