/// import { IClientOptions, Packet } from 'mqtt'; import { LoggerService, Type } from '@nestjs/common'; import { ModuleMetadata } from '@nestjs/common/interfaces'; export type MqttMessageTransformer = (payload: Buffer) => any; export type LoggerConstructor = new (...params: any[]) => LoggerService; export interface MqttSubscribeOptions { topic: string | string[]; queue?: boolean; share?: string; transform?: 'json' | 'text' | MqttMessageTransformer; } export interface MqttSubscriberParameter { index: number; type: 'payload' | 'topic' | 'packet' | 'params'; transform?: 'json' | 'text' | MqttMessageTransformer; } export interface MqttSubscriber { topic: string; handle: any; route: string; provider: any; regexp: RegExp; options: MqttSubscribeOptions; parameters: MqttSubscriberParameter[]; } export interface MqttLoggerOptions { useValue?: LoggerService; useClass?: Type; useBuiltinLogging?: boolean; } export interface MqttModuleOptions extends IClientOptions { queue?: boolean; share?: string; logger?: MqttLoggerOptions; beforeHandle?: (topic: string, payload: Buffer, packet: Packet) => any; } export interface MqttOptionsFactory { createMqttConnectOptions(): Promise | MqttModuleOptions; } export interface MqttModuleAsyncOptions extends Pick { inject?: any[]; useExisting?: Type; useClass?: Type; useFactory?: (...args: any[]) => Promise | MqttModuleOptions; logger?: MqttLoggerOptions; }