import { HomieID, MQTTConnectOpts } from "./model"; import { HomieDevice } from "./HomieDevice"; import { Observable, Subject } from "rxjs"; import { RxMqtt } from "./mqtt"; import { LifecycleBase } from "./misc"; import { SimpleLogger } from "./misc/Logger"; export declare type DiscoveryEventType = 'add' | 'remove' | 'error'; export interface BaseDiscoveryEvent { type: T; } export interface AddDiscoveryEvent extends BaseDiscoveryEvent<'add'> { deviceId: HomieID; retained: boolean; makeDevice: () => HomieDevice; } export interface RemoveDiscoveryEvent extends BaseDiscoveryEvent<'remove'> { deviceId: HomieID; } export interface ErrorDiscoveryEvent extends BaseDiscoveryEvent<'error'> { error?: Error; } export declare type DiscoveryEvent = AddDiscoveryEvent | RemoveDiscoveryEvent | ErrorDiscoveryEvent; export declare class DeviceDiscovery extends LifecycleBase { protected mqttOpts: MQTTConnectOpts; protected sharedMQTTClient?: RxMqtt | undefined; protected nonRetainedDiscoveryDelay: number; protected rateLimit: number; protected bufferTimeLimit: number; protected bufferSize: number; protected readonly log: SimpleLogger; protected mqtt: RxMqtt; protected _discoveryEvents$: Subject>; constructor(mqttOpts: MQTTConnectOpts, sharedMQTTClient?: RxMqtt | undefined, nonRetainedDiscoveryDelay?: number, rateLimit?: number, bufferTimeLimit?: number, bufferSize?: number); events$: Observable; onInit(): Promise; onDestroy(): Promise; protected nextEvent(event: DiscoveryEvent): void; makeDevice(id: HomieID): HomieDevice; }