///
import { PacketType } from '../mqtt.constants';
import { RequiredConnectRequestOptions } from './connect.request.packet';
import { PacketStream } from '../packet-stream';
import { PacketWriteResult } from '../mqtt.packet';
import { PublishPacketOptions } from './publish.request.packet';
import { PublishAckPacketOptions } from './publish.ack.packet';
import { PublishReceivedPacketOptions } from './publish.received.packet';
import { PublishReleasedPacketOptions } from './publish.release.packet';
import { PublishCompletePacketOptions } from './publish.complete.packet';
import { SubscribePacketOptions } from './subscribe.request.packet';
import { UnsubscribePacketOptions } from './unsubscribe.request.packet';
export interface PacketLogger {
logPacketWrite: (packetType: PacketType, packetInfo: Record) => void;
}
export declare class PacketWriter {
protected logger: PacketLogger;
protected writeMap: PacketWriteMap;
constructor(logger: PacketLogger, writeMap?: PacketWriteMap);
write(type: T, options?: WriteOptions[T]): Buffer;
}
export declare function defaultWrite(type: T, options?: DefaultPacketWriteOptions[T]): WriteData;
export interface WriteData {
type: T;
options?: WriteMap[T];
}
export declare const DefaultPacketWriteMap: PacketWriteMap;
export declare type PacketWriteMap = {
[P in PacketType]?: (stream: PacketStream, options: Options[P]) => PacketWriteResult;
};
export declare type PacketWriteOptionsMap = {
[x in PacketType]: any;
};
export declare type DefaultPacketWriteOptions = {
[PacketType.Connect]: RequiredConnectRequestOptions;
[PacketType.ConnAck]: undefined;
[PacketType.Publish]: PublishPacketOptions;
[PacketType.PubAck]: PublishAckPacketOptions;
[PacketType.PubRec]: PublishReceivedPacketOptions;
[PacketType.PubRel]: PublishReleasedPacketOptions;
[PacketType.PubComp]: PublishCompletePacketOptions;
[PacketType.Subscribe]: SubscribePacketOptions;
[PacketType.SubAck]: undefined;
[PacketType.Unsubscribe]: UnsubscribePacketOptions;
[PacketType.UnsubAck]: undefined;
[PacketType.PingReq]: undefined;
[PacketType.PingResp]: undefined;
[PacketType.Disconnect]: undefined;
};