///
///
import * as TsType from './tstype';
import { ZclDataPayload } from './events';
import events from 'events';
import { ZclFrame, FrameType, Direction } from '../zcl';
import { LoggerStub } from "../controller/logger-stub";
import * as Models from "../models";
declare abstract class Adapter extends events.EventEmitter {
readonly greenPowerGroup = 2948;
protected networkOptions: TsType.NetworkOptions;
protected adapterOptions: TsType.AdapterOptions;
protected serialPortOptions: TsType.SerialPortOptions;
protected backupPath: string;
protected logger?: LoggerStub;
protected constructor(networkOptions: TsType.NetworkOptions, serialPortOptions: TsType.SerialPortOptions, backupPath: string, adapterOptions: TsType.AdapterOptions, logger?: LoggerStub);
/**
* Utility
*/
static create(networkOptions: TsType.NetworkOptions, serialPortOptions: TsType.SerialPortOptions, backupPath: string, adapterOptions: TsType.AdapterOptions, logger?: LoggerStub): Promise;
abstract start(): Promise;
abstract stop(): Promise;
abstract getCoordinator(): Promise;
abstract getCoordinatorVersion(): Promise;
abstract reset(type: 'soft' | 'hard'): Promise;
abstract supportsBackup(): Promise;
abstract backup(ieeeAddressesInDatabase: string[]): Promise;
abstract getNetworkParameters(): Promise;
abstract supportsChangeChannel(): Promise;
abstract changeChannel(newChannel: number): Promise;
abstract setTransmitPower(value: number): Promise;
abstract addInstallCode(ieeeAddress: string, key: Buffer): Promise;
abstract waitFor(networkAddress: number, endpoint: number, frameType: FrameType, direction: Direction, transactionSequenceNumber: number, clusterID: number, commandIdentifier: number, timeout: number): {
promise: Promise;
cancel: () => void;
};
/**
* ZDO
*/
abstract permitJoin(seconds: number, networkAddress: number): Promise;
abstract lqi(networkAddress: number): Promise;
abstract routingTable(networkAddress: number): Promise;
abstract nodeDescriptor(networkAddress: number): Promise;
abstract activeEndpoints(networkAddress: number): Promise;
abstract simpleDescriptor(networkAddress: number, endpointID: number): Promise;
abstract bind(destinationNetworkAddress: number, sourceIeeeAddress: string, sourceEndpoint: number, clusterID: number, destinationAddressOrGroup: string | number, type: 'endpoint' | 'group', destinationEndpoint?: number): Promise;
abstract unbind(destinationNetworkAddress: number, sourceIeeeAddress: string, sourceEndpoint: number, clusterID: number, destinationAddressOrGroup: string | number, type: 'endpoint' | 'group', destinationEndpoint: number): Promise;
abstract removeDevice(networkAddress: number, ieeeAddr: string): Promise;
/**
* ZCL
*/
abstract sendZclFrameToEndpoint(ieeeAddr: string, networkAddress: number, endpoint: number, zclFrame: ZclFrame, timeout: number, disableResponse: boolean, disableRecovery: boolean, sourceEndpoint?: number): Promise;
abstract sendZclFrameToGroup(groupID: number, zclFrame: ZclFrame, sourceEndpoint?: number): Promise;
abstract sendZclFrameToAll(endpoint: number, zclFrame: ZclFrame, sourceEndpoint: number): Promise;
/**
* InterPAN
*/
abstract setChannelInterPAN(channel: number): Promise;
abstract sendZclFrameInterPANToIeeeAddr(zclFrame: ZclFrame, ieeeAddress: string): Promise;
abstract sendZclFrameInterPANBroadcast(zclFrame: ZclFrame, timeout: number): Promise;
abstract restoreChannelInterPAN(): Promise;
}
export default Adapter;
//# sourceMappingURL=adapter.d.ts.map