import { HomieDevice } from "./HomieDevice"; import { Observable } from "rxjs"; import { HomieNode } from "./HomieNode"; import { HomieProperty } from "./HomieProperty"; import { DeviceQuery, NodeQuery, PropertyQuery, Query } from "./model/Query.model"; import { DictionaryStore, OnDestroy } from "./misc"; import { DeviceSelector, HomieID, NodeSelector, ObjectMap, PropertySelector } from "./model"; import { SimpleLogger } from "./misc/Logger"; export interface IHomieDeviceManager { readonly devices: ObjectMap; readonly devices$: Observable>; } export declare class HomieDeviceManager implements IHomieDeviceManager, OnDestroy { protected readonly log: SimpleLogger; get devices(): ObjectMap; protected deviceStore: DictionaryStore; devices$: Observable>; devicesChanged$: Observable>; devicesList$: Observable; constructor(); hasDevice(deviceId: string): boolean; add(device: T): T; removeDevice(deviceId: string): HomieDevice | undefined; destroyAllDevices(): Promise[]>; findDevice(selector: DeviceSelector, debounce?: number, distinct?: boolean): Observable; findNode(selector: NodeSelector, debounce?: number, distinct?: boolean): Observable; findProperty(selector: PropertySelector, debounce?: number, distinct?: boolean): Observable; selectDevice(selector: DeviceSelector, debounce?: number, distinct?: boolean): Observable; selectNode(selector: NodeSelector, debounce?: number, distinct?: boolean): Observable; selectProperty(selector: PropertySelector, debounce?: number, distinct?: boolean): Observable; queryDevices(query: DeviceQuery, debounce?: number): Observable; queryNodes(query: NodeQuery, debounce?: number): Observable; queryProperties(query: PropertyQuery, debounce?: number): Observable; query(q: Query, debounce?: number): Observable; getDevice(selector: DeviceSelector): HomieDevice | undefined; getNode(selector: NodeSelector): HomieNode | undefined; getProperty(selector: PropertySelector | undefined | null): HomieProperty | undefined; getPropertyValue(selector: PropertySelector): string | undefined; onDestroy(): Promise; }