import { IClientPublishOptions } from "mqtt"; import { Observable } from "rxjs"; import { SimpleLogger } from "./misc"; import { HomieElementDescription, HomieElementPointer, HomieID, BaseAttributes } from "./model"; import { MqttMessage } from "./mqtt"; import { RXObject } from "./RXObject"; export declare abstract class HomieElement extends RXObject { protected readonly log: SimpleLogger; abstract readonly topic: string; abstract readonly pointer: POINTER; get id(): HomieID; get attributes(): T; protected set attributes(value: T); protected _isInitialized: boolean; get isInitialized(): boolean; protected abstract set descriptionUpdateNeeded(value: boolean); constructor(attributes: T); abstract getDescription(): DESC; protected abstract mqttPublish$(path: string, value: string | null | undefined, options: IClientPublishOptions, publishEmpty: boolean): Observable; publish$(path: string, value: string | null | undefined, options?: IClientPublishOptions, publishEmpty?: boolean): Observable; protected abstract mqttSubscribe(path: string, retained: boolean): Observable; subscribe(path: string, retained?: boolean): Observable; abstract wipe$(): Observable; onDestroy(): Promise; }