import { MqttClient } from './client' import { Store } from './store' import { QoS } from 'mqtt-packet' export declare type StorePutCallback = () => void export interface IClientOptions extends ISecureClientOptions { port?: number // port is made into a number subsequently host?: string // host does NOT include port hostname?: string path?: string protocol?: 'wss' | 'ws' | 'mqtt' | 'mqtts' | 'tcp' | 'ssl' | 'wx' | 'wxs' wsOptions?: { [x: string]: any } /** * 10 seconds, set to 0 to disable */ keepalive?: number /** * 'mqttjs_' + Math.random().toString(16).substr(2, 8) */ clientId?: string /** * 'MQTT' */ protocolId?: string /** * 4 */ protocolVersion?: number /** * true, set to false to receive QoS 1 and 2 messages while offline */ clean?: boolean /** * 1000 milliseconds, interval between two reconnections */ reconnectPeriod?: number /** * 30 * 1000 milliseconds, time to wait before a CONNACK is received */ connectTimeout?: number /** * the username required by your broker, if any */ username?: string /** * the password required by your broker, if any */ password?: string /** * a Store for the incoming packets */ incomingStore?: Store /** * a Store for the outgoing packets */ outgoingStore?: Store queueQoSZero?: boolean reschedulePings?: boolean servers?: Array<{ host: string port: number protocol?: 'wss' | 'ws' | 'mqtt' | 'mqtts' | 'tcp' | 'ssl' | 'wx' | 'wxs' }> /** * true, set to false to disable re-subscribe functionality */ resubscribe?: boolean /** * a message that will sent by the broker automatically when the client disconnect badly. */ will?: { /** * the topic to publish */ topic: string /** * the message to publish */ payload: string /** * the QoS */ qos: QoS /** * the retain flag */ retain: boolean, /* * properies object of will * */ properties?: { willDelayInterval?: number, payloadFormatIndicator?: number, messageExpiryInterval?: number, contentType?: string, responseTopic?: string, correlationData?: Buffer, userProperties?: Object } } transformWsUrl?: (url: string, options: IClientOptions, client: MqttClient) => string, properties?: { sessionExpiryInterval?: number, receiveMaximum?: number, maximumPacketSize?: number, topicAliasMaximum?: number, requestResponseInformation?: boolean, requestProblemInformation?: boolean, userProperties?: Object, authenticationMethod?: string, authenticationData?: Buffer } } export interface ISecureClientOptions { /** * optional private keys in PEM format */ key?: string | string[] | Buffer | Buffer[] | Object[] /** * optional cert chains in PEM format */ cert?: string | string[] | Buffer | Buffer[] /** * Optionally override the trusted CA certificates in PEM format */ ca?: string | string[] | Buffer | Buffer[] rejectUnauthorized?: boolean } export interface IClientPublishOptions { /** * the QoS */ qos: QoS /** * the retain flag */ retain?: boolean /** * whether or not mark a message as duplicate */ dup?: boolean /** * callback called when message is put into `outgoingStore` */ cbStorePut?: StorePutCallback } export interface IClientSubscribeOptions { /** * the QoS */ qos: QoS, /* * no local flag * */ nl?: boolean, /* * Retain As Published flag * */ rap?: boolean, /* * Retain Handling option * */ rh?: number } export interface IClientReconnectOptions { /** * a Store for the incoming packets */ incomingStore?: Store /** * a Store for the outgoing packets */ outgoingStore?: Store }