/// <reference types="node" />
import events from 'events';
import { Command, parameterT, ApsDataRequest, ReceivedDataResponse } from './constants';
declare var busyQueue: Array<object>;
declare var apsBusyQueue: Array<object>;
export { busyQueue, apsBusyQueue };
declare class Driver extends events.EventEmitter {
    private path;
    private serialPort;
    private initialized;
    private writer;
    private parser;
    private frameParserEvent;
    private seqNumber;
    private timeoutResetTimeout;
    private apsRequestFreeSlots;
    constructor(path: string);
    static isValidPath(path: string): Promise<boolean>;
    static autoDetectPath(): Promise<string>;
    open(): Promise<void>;
    close(): void;
    readParameterRequest(parameterId: number): Promise<Command>;
    writeParameterRequest(parameterId: number, parameter: parameterT): Promise<void>;
    readFirmwareVersionRequest(): Promise<number[]>;
    private sendReadParameterRequest;
    private sendWriteParameterRequest;
    private getLengthOfParameter;
    private parameterBuffer;
    private sendReadFirmwareVersionRequest;
    private sendReadDeviceStateRequest;
    private sendRequest;
    private processQueue;
    private processBusyQueue;
    changeNetworkStateRequest(networkState: number): Promise<void>;
    private sendChangeNetworkStateRequest;
    private deviceStateRequest;
    private checkDeviceStatus;
    private readReceivedDataRequest;
    enqueueSendDataRequest(request: ApsDataRequest): Promise<void | ReceivedDataResponse>;
    private querySendDataStateRequest;
    private processApsQueue;
    private sendQueryDataStateRequest;
    private sendReadReceivedDataRequest;
    private sendEnqueueSendDataRequest;
    private processApsBusyQueue;
    private calcCrc;
    macAddrStringToArray(addr: string): Array<number>;
    macAddrArrayToString(addr: Array<number>): string;
    /**
     *  generalArrayToString result is not reversed!
     */
    generalArrayToString(key: Array<number>, length: number): string;
    private nextSeqNumber;
    private onParsed;
    private sleep;
    private resetTimeoutCounterAfter1min;
}
export default Driver;
//# sourceMappingURL=driver.d.ts.map