/// <reference types="node" />
import { IDeserializedCommand, ISerializableCommand } from '../commands/CommandBase';
import type { UploadBufferInfo } from './dataTransferUploadBuffer';
export interface UploadStillEncodingOptions {
    disableRLE?: boolean;
}
export declare class DataTransferManager {
    #private;
    private interval?;
    private exitUnsubscribe?;
    constructor(rawSendCommands: (cmds: ISerializableCommand[]) => Promise<void>);
    private get allLocks();
    /**
     * Start sending of commands
     * This is called once the connection has received the initial state data
     */
    startCommandSending(skipUnlockAll?: boolean): void;
    /**
     * Stop sending of commands
     * This is called once the connection is disconnected
     */
    stopCommandSending(): void;
    /**
     * Queue the handling of a received command
     * We do it via a queue as some of the handlers need to be async, and we don't want to block state updates from happening in parallel
     */
    queueHandleCommand(command: IDeserializedCommand): void;
    downloadClipFrame(clipIndex: number, frameIndex: number): Promise<Buffer>;
    downloadStill(index: number): Promise<Buffer>;
    uploadStill(index: number, data: UploadBufferInfo, name: string, description: string): Promise<void>;
    uploadClip(index: number, data: Iterable<UploadBufferInfo> | AsyncIterable<UploadBufferInfo>, name: string): Promise<void>;
    uploadAudio(index: number, data: Buffer, name: string): Promise<void>;
    downloadMacro(index: number): Promise<Buffer>;
    uploadMacro(index: number, data: Buffer, name: string): Promise<void>;
    uploadMultiViewerLabel(index: number, data: Buffer): Promise<void>;
    private getClipLock;
}
//# sourceMappingURL=index.d.ts.map