/// <reference types="node" />
import { EventEmitter } from 'events';
import { ViscaCommand } from "./command";
import { Camera } from "./camera";
import { SerialTransport } from './visca-serial';
import { UDPData, ViscaServer } from "./visca-ip";
export interface ViscaCameraConfig {
    name: string;
    id: number;
    ip: string;
    port: number;
}
export interface ViscaControllerConfig {
    viscaSerial: {
        port: string;
        baud: number;
    };
    viscaServer: {
        basePort: number;
    };
}
export declare class ViscaController extends EventEmitter {
    config: ViscaControllerConfig;
    serialConnection: SerialTransport;
    ipServers: ViscaServer[];
    serialBroadcastCommands: ViscaCommand[];
    cameras: {
        [index: string]: Camera;
    };
    cameraCount: number;
    constructor(config: ViscaControllerConfig);
    init(): void;
    addIPCamera(c: ViscaCameraConfig, doInquire?: boolean): Camera;
    restartSerial(): void;
    closeSerial(): void;
    startSerial(portname?: string, baudRate?: number, timeout?: number, debug?: boolean): void;
    onSerialOpen(): void;
    onSerialClose(): void;
    onSerialError(e: string): void;
    onSerialData(viscaCommand: ViscaCommand): void;
    onUDPData({ uuid, viscaCommand }: UDPData): void;
    onCameraData(camera: Camera, v: ViscaCommand): void;
    sendSerial(viscaCommand: ViscaCommand): void;
    broadcastSerial(viscaCommand: ViscaCommand): void;
    sendToCamera(camera: Camera, viscaCommand: ViscaCommand): void;
    enumerateSerial(): void;
    ifClearAllSerial(): void;
    inquireAllSerial(): void;
    inquireAllIP(): void;
    inquireAll(): void;
    setupIPProxies(): void;
    dump(packet: number[], title?: string): void;
}
