import { DefaultObservableValue, int, Nullable, ObservableValue, Observer, Procedure, Subscription, UUID } from "@opendaw/lib-std";
import { AudioData, bpm, ppqn } from "@opendaw/lib-dsp";
import { ClipNotification, EnginePreferences, NoteSignal } from "@opendaw/studio-adapters";
import { Engine } from "./Engine";
import { EngineWorklet } from "./EngineWorklet";
import { Project } from "./project";
export declare class EngineFacade implements Engine {
    #private;
    constructor();
    setWorklet(worklet: EngineWorklet): void;
    assertWorklet(): void;
    releaseWorklet(): void;
    play(): void;
    stop(reset?: boolean): void;
    setPosition(position: ppqn): void;
    prepareRecordingState(countIn: boolean): void;
    stopRecording(): void;
    get position(): ObservableValue<ppqn>;
    get bpm(): ObservableValue<bpm>;
    get isPlaying(): ObservableValue<boolean>;
    get isRecording(): ObservableValue<boolean>;
    get isCountingIn(): ObservableValue<boolean>;
    get playbackTimestamp(): ObservableValue<ppqn>;
    get countInBeatsRemaining(): ObservableValue<int>;
    get markerState(): DefaultObservableValue<Nullable<[UUID.Bytes, int]>>;
    get cpuLoad(): ObservableValue<number>;
    get project(): Project;
    get sampleRate(): number;
    get preferences(): EnginePreferences;
    get perfBuffer(): Float32Array;
    get perfIndex(): number;
    isReady(): Promise<void>;
    queryLoadingComplete(): Promise<boolean>;
    panic(): void;
    sleep(): void;
    wake(): void;
    loadClickSound(index: 0 | 1, data: AudioData): void;
    setFrozenAudio(uuid: UUID.Bytes, audioData: Nullable<AudioData>): void;
    subscribeClipNotification(observer: Observer<ClipNotification>): Subscription;
    subscribeNotes(observer: Observer<NoteSignal>): Subscription;
    ignoreNoteRegion(uuid: UUID.Bytes): void;
    noteSignal(signal: NoteSignal): void;
    scheduleClipPlay(clipIds: ReadonlyArray<UUID.Bytes>): void;
    scheduleClipStop(trackIds: ReadonlyArray<UUID.Bytes>): void;
    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=EngineFacade.d.ts.map