import { byte, int, ObservableValue, Observer, Option, Subscription, Terminable, unitValue } from "@opendaw/lib-std";
import { AudioUnitBox, CaptureMidiBox } from "@opendaw/studio-boxes";
import { NoteSignal } from "@opendaw/studio-adapters";
import { ppqn } from "@opendaw/lib-dsp";
import { Capture } from "./Capture";
import { CaptureDevices } from "./CaptureDevices";
export type ResolvedNote = {
    pitch: byte;
    velocity: unitValue;
    position: ppqn;
    duration: ppqn;
};
export type CaptureResult = {
    mode: "stopped" | "playing";
    origin: number;
    notes: ReadonlyArray<ResolvedNote>;
};
export declare class CaptureMidi extends Capture<CaptureMidiBox> {
    #private;
    constructor(manager: CaptureDevices, audioUnitBox: AudioUnitBox, captureMidiBox: CaptureMidiBox);
    get captureNoteOnCount(): ObservableValue<int>;
    resolveCapture(): Option<CaptureResult>;
    resetCapture(): void;
    notify(signal: NoteSignal): void;
    subscribeNotes(observer: Observer<NoteSignal>): Subscription;
    get label(): string;
    get deviceLabel(): Option<string>;
    prepareRecording(): Promise<void>;
    startRecording(): Terminable;
}
//# sourceMappingURL=CaptureMidi.d.ts.map