import { usb, Device } from 'usb';
import { IAntDevice, AntDeviceProps, IChannel, AntOpenResult } from './types';
import Channel from './ant-channel';
export declare class AntDevice implements IAntDevice {
    private device;
    private iface;
    private detachedKernelDriver;
    private inEp;
    private outEp;
    private leftover;
    protected props: AntDeviceProps;
    protected maxChannels: number;
    protected canScan: boolean;
    protected waitingFor: {
        msgId?: number;
        event?: number;
        resolve: any;
    };
    protected deviceNo: any;
    protected channels: Channel[];
    protected static devices: {
        device: Device;
        inUse: boolean;
    }[];
    constructor(props?: AntDeviceProps);
    logEvent(event: any): void;
    getMaxChannels(): number;
    isScanEnabled(): boolean;
    getDeviceNumber(): number;
    protected getDevices(): {
        device: Device;
        inUse: boolean;
    }[];
    protected markAsUsed(deviceNo: number): void;
    protected releaseFromUsed(deviceNo: number): void;
    open(): Promise<boolean | AntOpenResult>;
    close(): Promise<boolean>;
    openUSBDevice(device: usb.Device): Promise<boolean>;
    startup(timeout?: number): Promise<boolean>;
    closeUSBDevice(): Promise<boolean>;
    getChannel(): IChannel;
    freeChannel(channel: IChannel): void;
    write(data: Buffer): void;
    sendMessage(data: Buffer, waitFor: {
        msgId?: number;
        event?: number;
    }): Promise<Buffer>;
    onMessage(data: Buffer): void;
    onError(error: string, message: Buffer): void;
}
