/// <reference types="node" />
import EventEmitter from 'events';
import { usb, Device } from 'usb';
import { ICancellationToken, BaseSensor } from './types';
export interface DeviceInfo extends usb.Device {
    inUse: boolean;
}
export declare function getSticks(filterFn?: (d: Device) => boolean): usb.Device[];
export interface StickProps {
    debug: boolean;
    logger: {
        logEvent: (event: any) => void;
    };
}
export default class Stick extends EventEmitter {
    private idVendor;
    private idProduct;
    private static deviceInUse;
    private device;
    private iface;
    private detachedKernelDriver;
    private inEp;
    private outEp;
    private leftover;
    private usedChannels;
    private attachedSensors;
    maxChannels: number;
    canScan: boolean;
    props: any;
    waitingForStartup: boolean;
    constructor(idVendor: number, idProduct: number, props?: {});
    private getDevices;
    static listDevices(filterFn?: (d: Device) => boolean): usb.Device[];
    logEvent(event: any): void;
    blockDevice(device: Device): void;
    unblockDevice(device: Device): void;
    is_present(): boolean;
    open(): Promise<boolean>;
    openAsync(cb: (err: Error) => void): ICancellationToken;
    close(): void;
    reset(): void;
    isScanning(): boolean;
    attach(sensor: BaseSensor, forScan: boolean): boolean;
    stopScan(): void;
    detach(sensor: BaseSensor): boolean;
    detach_all(): void;
    write(data: Buffer): void;
    read(data: Buffer): void;
}
