import { EventEmitter } from 'eventemitter3';
interface SisyfosApiEvents {
    error: [Error];
    initialized: [];
    mixerOnline: [boolean];
    connected: [];
    disconnected: [];
}
export declare class SisyfosApi extends EventEmitter<SisyfosApiEvents> {
    private _oscClient;
    private _state?;
    private _labelToChannel;
    private _connectivityCheckInterval;
    private _pingCounter;
    private _connectivityTimeout;
    private _connected;
    private _mixerOnline;
    /**
     * Connnects to the OSC server.
     * @param host ip to connect to
     * @param port port the osc server is hosted on
     */
    connect(host: string, port: number): Promise<void>;
    dispose(): void;
    send(command: SisyfosCommand): void;
    disconnect(): void;
    isInitialized(): boolean;
    reInitialize(): void;
    reSyncOneChannel(channel: number): void;
    setSisyfosChannel(channel: number, apiState: Partial<SisyfosChannelAPI>): void;
    getChannelByLabel(label: string): number | undefined;
    get connected(): boolean;
    get state(): SisyfosAPIState | undefined;
    get mixerOnline(): boolean;
    setMixerOnline(state: boolean): void;
    private _monitorConnectivity;
    private _clearPingTimer;
    private receiver;
    private updateIsConnected;
    private parseChannelCommand;
    private parseSisyfosState;
    protected sendLoadMixerPresetCommand(presetName: string): void;
}
export declare enum SisyfosCommandType {
    TOGGLE_PGM = "togglePgm",
    TOGGLE_PST = "togglePst",
    SET_FADER = "setFader",
    SET_INPUT_GAIN = "setInputGain",
    SET_INPUT_SELECTOR = "setInputSelector",
    SET_MUTE = "setMute",
    CLEAR_PST_ROW = "clearPstRow",
    LABEL = "label",
    TAKE = "take",
    VISIBLE = "visible",
    RESYNC = "resync",
    RESYNC_CHANNEL = "resyncChannel",
    SET_CHANNEL = "setChannel",
    LOAD_MIXER_PRESET = "loadMixerPreset"
}
export interface BaseCommand {
    type: SisyfosCommandType;
}
export interface SetChannelCommand {
    type: SisyfosCommandType.SET_CHANNEL;
    channel: number;
    values: Partial<SisyfosChannelAPI>;
}
export interface LoadMixerPresetCommand {
    type: SisyfosCommandType.LOAD_MIXER_PRESET;
    presetName: string;
}
export interface ChannelCommand extends BaseCommand {
    type: SisyfosCommandType.SET_FADER | SisyfosCommandType.TOGGLE_PGM | SisyfosCommandType.TOGGLE_PST | SisyfosCommandType.LABEL | SisyfosCommandType.VISIBLE | SisyfosCommandType.RESYNC_CHANNEL | SisyfosCommandType.SET_INPUT_SELECTOR | SisyfosCommandType.SET_INPUT_GAIN | SisyfosCommandType.SET_MUTE;
    channel: number;
}
export interface GlobalCommand extends BaseCommand {
    type: SisyfosCommandType.CLEAR_PST_ROW | SisyfosCommandType.TAKE | SisyfosCommandType.RESYNC;
}
export interface GlobalCommand extends BaseCommand {
    type: SisyfosCommandType.CLEAR_PST_ROW | SisyfosCommandType.TAKE | SisyfosCommandType.RESYNC;
}
export interface BoolCommand extends ChannelCommand {
    type: SisyfosCommandType.VISIBLE | SisyfosCommandType.SET_MUTE;
    value: boolean;
}
export interface ValueCommand extends ChannelCommand {
    type: SisyfosCommandType.TOGGLE_PST | SisyfosCommandType.VISIBLE | SisyfosCommandType.RESYNC_CHANNEL | SisyfosCommandType.SET_INPUT_SELECTOR | SisyfosCommandType.SET_INPUT_GAIN;
    value: number;
}
export interface ValuesCommand extends ChannelCommand {
    type: SisyfosCommandType.TOGGLE_PGM | SisyfosCommandType.SET_FADER;
    values: number[];
}
export interface StringCommand extends ChannelCommand {
    type: SisyfosCommandType.LABEL;
    value: string;
}
export type SisyfosCommand = GlobalCommand | ValueCommand | ValuesCommand | BoolCommand | StringCommand | SetChannelCommand | LoadMixerPresetCommand;
export interface SisyfosChannel extends SisyfosChannelAPI {
    timelineObjIds: string[];
    triggerValue?: string;
}
export interface SisyfosState {
    channels: {
        [index: string]: SisyfosChannel;
    };
    resync: boolean;
    triggerValue?: string;
}
export interface SisyfosChannelAPI {
    faderLevel: number;
    pgmOn: number;
    pstOn: number;
    label: string;
    visible: boolean;
    fadeTime?: number;
    muteOn: boolean;
    inputGain: number;
    inputSelector: number;
}
export interface SisyfosChannelOSCAPI {
    faderLevel?: number;
    pgmOn?: boolean;
    voOn?: boolean;
    pstOn?: boolean;
    label?: string;
    showChannel?: boolean;
    fadeTime?: number;
    muteOn?: boolean;
    inputGain?: number;
    inputSelector?: number;
}
export interface SisyfosAPIState {
    channels: {
        [index: string]: SisyfosChannelAPI;
    };
}
export {};
//# sourceMappingURL=connection.d.ts.map