/// <reference types="node" />
import { EventEmitter } from 'events';
import { DeviceInterface, DeviceFactoryInterface } from './DeviceTypes';
import { DeviceStatus, DeviceConfiguration } from '../../common/DeviceTypes';
import { LogManager } from '../LogManager';
import { InputChannel } from 'atem-connection/dist/state/input';
export interface AtemTallyOptions {
    Previews: number[];
    Programs: number[];
    SuperSources: number[];
    DSKs: boolean;
    USKs: boolean;
    Outputs: number[];
}
interface AtemParamsInputs {
    tally: InputChannel[];
    aux: InputChannel[];
}
interface AtemParams {
    inputs: AtemParamsInputs;
    keys: any[];
    aux: any[];
    macros: any[];
    videohubActions: any[];
}
export interface AtemKeyState {
    onAir: boolean;
    inTransition: boolean;
}
export declare class AtemDeviceFactory implements DeviceFactoryInterface {
    private logger;
    constructor(logger: LogManager);
    getType(): string;
    create(config: DeviceConfiguration): DeviceInterface | undefined;
}
export declare class AtemDevice extends EventEmitter implements DeviceInterface {
    private client;
    private state;
    private config;
    private logger;
    private connected;
    private status;
    private actionHandlers;
    private tallyStates;
    private keyStates;
    private auxStates;
    private momentaryAuxStore;
    static OutputActions: {
        Tally: string;
        Key: string;
        Aux: string;
    };
    static InputActions: {
        Key: string;
        Macro: string;
        Aux: string;
    };
    private static includesPath;
    private static isPath;
    constructor(config: DeviceConfiguration, logger: LogManager);
    updateConfig(config: DeviceConfiguration): void;
    getConfig(): DeviceConfiguration;
    getType(): string;
    getActions(): {
        in: string[];
        out: string[];
    };
    getParams(): AtemParams;
    connect(): void;
    disconnect(): void;
    destroy(): void;
    getStatus(): DeviceStatus;
    getConnected(): boolean;
    trigger(actionId: string, edge: number, params: any): void;
    getKeyerState(keyId: string): AtemKeyState | undefined;
    setKeyerState(keyId: string, desiredState: AtemKeyState): void;
    addHandler(id: string, action: string, params: any, handler: (value: number) => void): void;
    getAuxInput(auxBusId: string): number | undefined;
    removeHandler(handlerId: string): void;
    private setStatus;
    private updateAllStates;
    private updateTallyStates;
    private updateKeyStates;
    private updateAuxStates;
}
export {};
