/// <reference types="node" />
import { usb } from 'usb';
import EventEmitter from 'events';
import IDeviceDiscovery from '@huddly/sdk-interfaces/lib/interfaces/IDeviceDiscovery';
import HuddlyHEX from '@huddly/sdk-interfaces/lib/enums/HuddlyHex';
export interface UsbDevice {
    id: string;
    busNumber: number;
    deviceAddress: number;
    portNumbers: Array<number>;
    interfaces: any;
    serialNumber: string;
    productName: string;
    productId: number;
    vendorId: number;
}
export default class DeviceDiscoveryManager implements IDeviceDiscovery {
    private readonly className;
    private attachedDevices;
    private eventEmitter;
    private pidsToIgnore;
    constructor(pidsToIgnore?: HuddlyHEX[]);
    private newDeviceAttached;
    private newDeviceDetached;
    private isDeviceWithUUIDCached;
    get cachedDevices(): Array<UsbDevice>;
    generateUsbUniqueId(props: {
        usbBusNumber: number;
        usbDeviceAddress: number;
        usbPortNumbers: Array<Number>;
    }): string;
    getDeviceUUID(device: usb.Device): string;
    fetchAndPopulateDeviceParams(device: usb.Device): Promise<boolean>;
    registerForHotplugEvents(eventEmitter: EventEmitter): void;
    /**
     * Helper method for aiding unit testing of device list feature
     *
     * @return {*}  {usb.Device[]} A list of usb devices returned by node-usb library
     * @memberof DeviceDiscoveryManager
     */
    getUnfilteredDeviceList(): usb.Device[];
    deviceList(doEmitNewDevices?: boolean): Promise<usb.Device[]>;
    getDevice(serialNumber?: string | undefined): Promise<usb.Device | undefined>;
    isValidHuddlyDevice(device: any): boolean;
}
