import { int, MutableObservableValue, Nullable, ObservableValue, Observer, Procedure, Subscription, UUID } from "@opendaw/lib-std";
import { AudioData, bpm, ppqn } from "@opendaw/lib-dsp";
import { ClipNotification, EngineSettings, ExportStemsConfiguration, NoteSignal, PreferencesHost, ProcessorOptions } from "@opendaw/studio-adapters";
import { Engine } from "./Engine";
import { Project } from "./project";
export declare class EngineWorklet extends AudioWorkletNode implements Engine {
    #private;
    static ID: int;
    readonly id: number;
    constructor(context: BaseAudioContext, project: Project, exportConfiguration?: ExportStemsConfiguration, options?: ProcessorOptions);
    play(): void;
    stop(reset?: boolean): void;
    setPosition(position: ppqn): void;
    prepareRecordingState(countIn: boolean): void;
    stopRecording(): void;
    panic(): void;
    sleep(): void;
    wake(): void;
    loadClickSound(index: 0 | 1, data: AudioData): void;
    setFrozenAudio(uuid: UUID.Bytes, audioData: Nullable<AudioData>): void;
    get isPlaying(): ObservableValue<boolean>;
    get isRecording(): ObservableValue<boolean>;
    get isCountingIn(): ObservableValue<boolean>;
    get countInBeatsRemaining(): ObservableValue<number>;
    get position(): ObservableValue<ppqn>;
    get bpm(): ObservableValue<bpm>;
    get playbackTimestamp(): MutableObservableValue<number>;
    get markerState(): ObservableValue<Nullable<[UUID.Bytes, int]>>;
    get project(): Project;
    get preferences(): PreferencesHost<EngineSettings>;
    get cpuLoad(): ObservableValue<number>;
    get perfBuffer(): Float32Array;
    get perfIndex(): number;
    isReady(): Promise<void>;
    queryLoadingComplete(): Promise<boolean>;
    noteSignal(signal: NoteSignal): void;
    subscribeNotes(observer: Observer<NoteSignal>): Subscription;
    ignoreNoteRegion(uuid: UUID.Bytes): void;
    scheduleClipPlay(clipIds: ReadonlyArray<UUID.Bytes>): void;
    scheduleClipStop(trackIds: ReadonlyArray<UUID.Bytes>): void;
    subscribeClipNotification(observer: Observer<ClipNotification>): Subscription;
    subscribeDeviceMessage(uuid: string, listener: Procedure<string>): Subscription;
    registerMonitoringSource(uuid: UUID.Bytes, node: AudioNode, numChannels: 1 | 2, destinationNode: AudioNode): void;
    unregisterMonitoringSource(uuid: UUID.Bytes): void;
    terminate(): void;
}
//# sourceMappingURL=EngineWorklet.d.ts.map