import { EventEmitter } from 'eventemitter3';
import { VMixStateCommand } from './vMixCommands';
import { Response } from './vMixResponseStreamReader';
export declare enum ResponseTypes {
    Info = "INFO",
    OK = "OK",
    ClientError = "ERROR",
    ServerError = "FAILED"
}
export type ConnectionEvents = {
    data: [response: Response];
    connected: [];
    disconnected: [];
    initialized: [];
    error: [error: Error];
};
interface SentCommandArgs {
    input?: string | number;
    value?: string | number;
    extra?: string;
    duration?: number;
    mix?: number;
    selectedName?: string;
}
export declare class VMixConnection extends EventEmitter<ConnectionEvents> {
    private host;
    private port;
    private _socket?;
    private _reconnectTimeout?;
    private _connected;
    private _responseStreamReader;
    constructor(host: string, port?: number, autoConnect?: boolean);
    get connected(): boolean;
    connect(host?: string, port?: number): void;
    disconnect(): void;
    requestVMixState(): Promise<Error | undefined>;
    sendCommandFunction(func: string, args: SentCommandArgs): Promise<any>;
    private _sendCommand;
    private _triggerReconnect;
    private _setupSocket;
    private _setConnected;
}
export declare class VMixCommandSender {
    private vMixConnection;
    constructor(vMixConnection: VMixConnection);
    sendCommand(command: VMixStateCommand): Promise<any>;
    setPreviewInput(input: number | string, mix: number): Promise<any>;
    transition(input: number | string, effect: string, duration: number, mix: number): Promise<any>;
    setAudioLevel(input: number | string, volume: number, fade?: number): Promise<any>;
    setAudioBalance(input: number | string, balance: number): Promise<any>;
    setAudioOn(input: number | string): Promise<any>;
    setAudioOff(input: number | string): Promise<any>;
    setAudioAutoOn(input: number | string): Promise<any>;
    setAudioAutoOff(input: number | string): Promise<any>;
    setAudioBusOn(input: number | string, value: string): Promise<any>;
    setAudioBusOff(input: number | string, value: string): Promise<any>;
    setFader(position: number): Promise<any>;
    setPanX(input: number | string, value: number): Promise<any>;
    setPanY(input: number | string, value: number): Promise<any>;
    setZoom(input: number | string, value: number): Promise<any>;
    setAlpha(input: number | string, value: number): Promise<any>;
    startRecording(): Promise<any>;
    stopRecording(): Promise<any>;
    startStreaming(): Promise<any>;
    stopStreaming(): Promise<any>;
    fadeToBlack(): Promise<any>;
    addInput(file: string): Promise<any>;
    removeInput(name: string): Promise<any>;
    playInput(input: number | string): Promise<any>;
    pauseInput(input: number | string): Promise<any>;
    setPosition(input: number | string, value: number): Promise<any>;
    loopOn(input: number | string): Promise<any>;
    loopOff(input: number | string): Promise<any>;
    setInputName(input: number | string, value: string): Promise<any>;
    setOutput(name: string, value: string, input?: number | string): Promise<any>;
    startExternal(): Promise<any>;
    stopExternal(): Promise<any>;
    overlayInputIn(name: number, input: string | number): Promise<any>;
    overlayInputOut(name: number): Promise<any>;
    setLayerInput(input: string | number, index: number, value: string | number): Promise<any>;
    setLayerCrop(input: string | number, index: number, cropLeft: number, cropTop: number, cropRight: number, cropBottom: number): Promise<any>;
    setLayerZoom(input: string | number, index: number, value: number): Promise<any>;
    setLayerPanX(input: string | number, index: number, value: number): Promise<any>;
    setLayerPanY(input: string | number, index: number, value: number): Promise<any>;
    scriptStart(value: string): Promise<any>;
    scriptStop(value: string): Promise<any>;
    scriptStopAll(): Promise<any>;
    lastPreset(): Promise<any>;
    openPreset(file: string): Promise<any>;
    savePreset(file: string): Promise<any>;
    listAdd(input: string | number, value: string | number): Promise<any>;
    listRemoveAll(input: string | number): Promise<any>;
    restart(input: string | number): Promise<any>;
    setText(input: string | number, value: string, fieldName: string): Promise<any>;
    browserNavigate(input: string | number, value: string): Promise<any>;
    selectIndex(input: string | number, value: number): Promise<any>;
    setImage(input: string | number, value: string, fieldName: string): Promise<any>;
    private sendCommandFunction;
}
export {};
//# sourceMappingURL=connection.d.ts.map