import { ConnectRequestOptions } from './packets'; import { MqttTransformer } from './mqtt.parser'; import { Transport } from './transport'; import { XOR } from 'ts-xor'; import { MqttMessage } from './mqtt.message'; import { DefaultPacketReadResultMap, PacketReadMap, PacketReadResultMap, DefaultPacketWriteOptions, PacketWriteMap, PacketWriteOptionsMap, PacketWriter } from './packets'; import { TransformerFn, ValidatorFn } from './mqtt.listener'; import { MqttsReconnectStrategy } from './reconnect-strategy'; export declare type MqttClientConstructorOptions = XOR<{ transport: Transport; }, { host: string; port: number; enableTrace?: boolean; }> & { readMap?: PacketReadMap; createTransformer?: () => MqttTransformer; writeMap?: PacketWriteMap; packetWriter?: PacketWriter; autoReconnect?: MqttsReconnectStrategy | boolean; }; export interface MqttSubscription { topic: string; qosLevel?: number; } export declare type RegisterClientOptions = ConnectRequestOptions; export declare type TimerRef = any; export declare type ExecutePeriodically = (timeInMs: number, action: () => void) => TimerRef; export declare type ExecuteDelayed = (timeInMs: number, action: () => void) => TimerRef; export declare type StopExecuting = (ref: TimerRef) => void; export declare type AsyncLike = (data: TIn) => TOut | PromiseLike; export interface ListenerInfo { eventName: string; validator: (data: TIn) => boolean | PromiseLike; transformer?: (data: TIn) => TOut | PromiseLike; onData: (data: TOut) => void | PromiseLike; } export interface ListenOptions> { topic: string; validator?: ValidatorFn; transformer?: TransformerFn; } export interface ListenSubscribeOptions> extends ListenOptions { subscriptionInfo?: Partial; } export interface IncomingListenMessage = Record> extends MqttMessage { params?: T; } export declare type Resolvable> = (() => Promise) | (() => T) | T; export interface IdentifierData { identifier: number; }