/// <reference types="node" />
import { DeviceFactoryInterface, DeviceInterface } from './DeviceTypes';
import { DeviceConfiguration, DeviceStatus, DeviceActionsInterface } from '../../common/DeviceTypes';
import { LogManager } from '../LogManager';
import { EventEmitter } from 'events';
interface TallyArbiterInternalDevice {
    linkedBusses: string[];
    name: string;
    enabled: boolean;
    id: string;
}
interface TallyArbiterDeviceState {
    busId: string;
    deviceId: string;
    sources: string[];
}
interface TallyArbiterBusOption {
    label: string;
    type: string;
    id: string;
    color: string;
    priority: number;
}
export declare class TallyArbiterDeviceFactory implements DeviceFactoryInterface {
    private logger;
    constructor(logger: LogManager);
    getType(): string;
    create(config: DeviceConfiguration): DeviceInterface | undefined;
}
export declare class TallyArbiterDevice extends EventEmitter implements DeviceInterface {
    private config;
    private logger;
    private client;
    private status;
    private actionHandlers;
    private tallyStates;
    static OutputActions: {
        Tally: string;
    };
    private devices;
    private deviceStates;
    private busOptions;
    constructor(config: DeviceConfiguration, logger: LogManager);
    private initConnection;
    private setStatus;
    getConfig(): DeviceConfiguration;
    updateConfig(config: DeviceConfiguration): void;
    connect(): void;
    disconnect(): void;
    getStatus(): DeviceStatus;
    getConnected(): boolean;
    getActions(): DeviceActionsInterface;
    getParams(): {
        devices: TallyArbiterInternalDevice[];
        deviceStates: TallyArbiterDeviceState[];
        busOptions: TallyArbiterBusOption[];
    };
    trigger(actionId: string, _edge: number, _params: any): void;
    private updateTallyStates;
    addHandler(id: string, action: string, params: any, handler: (value: number) => void): void;
    removeHandler(handlerId: string): void;
    destroy(): void;
}
export {};
