///
import { ExecuteDelayed, ExecutePeriodically, IncomingListenMessage, ListenOptions, ListenSubscribeOptions, MqttClientConstructorOptions, MqttSubscription, RegisterClientOptions, Resolvable, StopExecuting, TimerRef } from './mqtt.types';
import { PacketFlowData, PacketFlowFunc } from './flow';
import { MqttParseResult, MqttTransformer } from './mqtt.parser';
import { Transport } from './transport';
import { ConnectRequestOptions, ConnectResponsePacket, DefaultPacketReadResultMap, DefaultPacketWriteOptions, PacketReadResultMap, PacketWriteOptionsMap, PacketWriter, PublishRequestPacket, SubscribeReturnCode } from './packets';
import { MqttMessageOutgoing } from './mqtt.message';
import { Writable } from 'stream';
import { PacketType } from './mqtt.constants';
import { MqttBaseClient } from './mqtt.base-client';
import { HandlerFn, MqttListener, RemoveHandlerFn } from './mqtt.listener';
export declare class MqttClient extends MqttBaseClient {
private mqttDebug;
private receiveDebug;
private pingDebug;
protected executePeriodically: ExecutePeriodically;
protected stopExecuting: StopExecuting;
protected executeDelayed: ExecuteDelayed;
protected flowCounter: {
next(): number;
} | {
next(): bigint;
};
get keepAlive(): number;
set keepAlive(value: number);
protected transport: Transport;
protected transformer: MqttTransformer;
protected createTransformer: () => MqttTransformer;
protected pipeline?: Writable;
protected writer: PacketWriter;
protected keepAliveTimer?: TimerRef;
private reconnectStrategy?;
protected activeFlows: PacketFlowData[];
protected messageListener: MqttListener;
constructor(options: MqttClientConstructorOptions);
private _connect;
connect(options?: Resolvable): Promise;
protected createPipeline(): void;
publish(message: MqttMessageOutgoing): Promise;
subscribe(subscription: MqttSubscription): Promise;
unsubscribe(subscription: MqttSubscription): Promise;
disconnect(force?: boolean): Promise;
listenSubscribe(topic: string, handlerFn: HandlerFn): Promise;
listenSubscribe = Record>(options: ListenSubscribeOptions, handlerFn: HandlerFn): Promise;
listen(topic: string, handlerFn: HandlerFn): RemoveHandlerFn;
listen>(options: ListenOptions, handlerFn: HandlerFn): RemoveHandlerFn;
startFlow(flow: PacketFlowFunc): Promise & {
flowId: bigint | number;
};
stopFlow(flowId: bigint | number, rejection?: Error): boolean;
/**
* Run the accept and next function of all active flows
* @param packet
* @returns true if a flow has been found
*/
protected continueFlows(packet: MqttParseResult): boolean;
protected clearFinishedFlows(): void;
protected stopExecutingFlows(error: Error): void;
protected getFlowById(id: number | bigint): PacketFlowData | undefined;
protected registerClient(options: RegisterClientOptions): Promise;
protected getConnectFlow(options: ConnectRequestOptions): PacketFlowFunc;
protected updateKeepAlive(value: number): void;
protected sendData(data: Buffer): void;
protected handlePacket(packet: MqttParseResult): Promise;
protected onConnAck(connAck: ConnectResponsePacket): void;
protected onPublish(publish: PublishRequestPacket): void;
protected onPingReq(): void;
protected logReceivedPacket(packet: {
type: PacketType;
data: any;
}): void;
protected reset(): void;
protected setReady(): void;
protected reconnect(): Promise;
protected setDisconnected(reason?: string | Error): Promise;
}