import { VideoCallback, AudioCallback } from './sesame-connection';
import { RPCClient } from './rpc-client';
import { sesame } from './proto/api';
import { CommandList } from './command-list';
import { EventEmitter } from 'events';
import Long from 'long';
export interface IPlaylist {
    clips: Array<{
        id: number | Long;
        recorderId: string;
        transitionTime?: number;
        speed?: number;
        audioRouting?: any;
        transitionType?: number;
        transitionFadeColor?: {
            x: number;
            y: number;
            z: number;
            w: number;
        };
        audioLevels?: number[];
        startTime?: number;
        endTime?: number;
    }>;
}
export declare enum EaseKind {
    STEPPED = "stepped",
    LINEAR = "linear",
    QUADRATIC_IN = "quadraticIn",
    QUADRATIC_OUT = "quadraticOut",
    QUADRATIC_INOUT = "quadraticInOut",
    CUBIC_IN = "cubicIn",
    CUBIC_OUT = "cubicOut",
    CUBIC_INOUT = "cubicInOut",
    QUARTIC_IN = "quarticIn",
    QUARTIC_OUT = "quarticOut",
    QUARTIC_INOUT = "quarticInOut",
    QUINTIC_IN = "quinticIn",
    QUINTIC_OUT = "quinticOut",
    QUINTIC_INOUT = "quinticInOut",
    SINUSOIDAL_IN = "sinusoidalIn",
    SINUSOIDAL_OUT = "sinusoidalOut",
    SINUSOIDAL_INOUT = "sinusoidalInOut",
    EXPONENTIAL_IN = "exponentialIn",
    EXPONENTIAL_OUT = "exponentialOut",
    EXPONENTIAL_INOUT = "exponentialInOut",
    CIRCULAR_IN = "circularIn",
    CIRCULAR_OUT = "circularOut",
    CIRCULAR_INOUT = "circularInOut",
    BOUNCE_IN = "bounceIn",
    BOUNCE_OUT = "bounceOut",
    BOUNCE_INOUT = "bounceInOut",
    ELASTIC_IN = "elasticIn",
    ELASTIC_OUT = "elasticOut",
    ELASTIC_INOUT = "elasticInOut",
    BACK_IN = "backIn",
    BACK_OUT = "backOut",
    BACK_INOUT = "backInOut"
}
interface TopicDataCallback {
    (topic: sesame.v1.common.EventTopic, msg: sesame.v1.status.Event): void;
}
interface CallbackMessage {
    (event: string, data: string): void;
}
export declare class SesameClient extends EventEmitter {
    private conn;
    private rpc;
    private video_subscription;
    private subscriptions;
    private errorIsLogged;
    onVideoPacket: VideoCallback;
    onAudioPacket: AudioCallback;
    onCallbackMessage: CallbackMessage;
    isConnected(): boolean;
    constructor(portOrUrl: number | string);
    private send_subscriptions;
    get_status(): Promise<sesame.v1.status.Status>;
    get_io_devices(): Promise<sesame.v1.status.IODeviceListResponse>;
    request_keyframe(outputId: string): Promise<void>;
    add_video_subscription(id: string): void;
    add_subscription(topic: sesame.v1.common.EventTopic, callback: TopicDataCallback): void;
    remove_subscription(topic: sesame.v1.common.EventTopic, callback: TopicDataCallback): void;
    getService(): RPCClient<sesame.v1.rpc.SesameAPIService>;
    execute(cl: CommandList): Promise<void>;
    addClip(recorderId: string, clip: sesame.v1.recorder.IRecorderClip): Promise<void>;
    copyClip(recorderId: string, clipId: number, newClipId: number): Promise<void>;
    removeClip(recorderId: string, id: number): Promise<void>;
    removeAllClips(recorderId: string, protect?: sesame.v1.recorder.IRecorderClipRange[]): Promise<void>;
    verifyClips(recorderId: string): Promise<string[]>;
    setLockedDuration(frames: number): Promise<void>;
    setMetadata(recorderId: string, metadata: sesame.v1.common.ITransportMetadata): Promise<void>;
    getClips(recorderId: string): Promise<{
        id: number;
        startTime: number;
        endTime: number;
        lockedStart: number;
        lockedEnd: number;
        userTime: number | undefined;
        name: any;
        userData: any;
    }[]>;
    getImportClipStatus(): Promise<sesame.v1.jobs.JobListResponse>;
    getExportPlaylistStatus(): Promise<sesame.v1.jobs.JobListResponse>;
    exportPlaylist(playlist: IPlaylist, config: sesame.v1.jobs.IExportConfiguration): Promise<void>;
    importClip(config: sesame.v1.jobs.IImportConfiguration): Promise<sesame.v1.jobs.JobStatusResponse>;
    abortExportJob(jobId: number): Promise<sesame.v1.jobs.JobStatusResponse>;
    abortImportJob(jobId: number): Promise<sesame.v1.jobs.JobStatusResponse>;
    disconnect(): void;
}
export {};
//# sourceMappingURL=sesame-api-client.d.ts.map