import { DatapointState, Device, DeviceControlResponse, DeviceStatus, EngineControlResponse } from "jm-castle-ac-dc-types"; import { QoS } from "mqtt"; import { EngineContextConsumer } from "../../engines/Types.mjs"; import { DeviceInstance } from "../DeviceInstance.mjs"; export declare const getMqttClient: (device: Device) => MqttClient | undefined; export declare const removeMqttClient: (device: Device) => void; export declare const getOrStartMqttClient: (deviceInstance: DeviceInstance) => Promise; export declare const fetchStatusFromMqttClient: (deviceInstance: DeviceInstance) => Promise; export declare const isQos: (qos: number | undefined) => qos is QoS; export declare type PublishResponse = { success: true; error?: never; } | { success: false; error: string; }; export declare class MqttClient { constructor(deviceInstance: DeviceInstance); private subscribedTopics; private state; private deviceInstance; private client; private eventConsumers; addEventConsumer: (consumer: EngineContextConsumer) => number; start: () => Promise; stop: () => Promise; disconnect: () => Promise; private publishTopic; publish: (states: DatapointState[], retain: boolean) => Promise; private onMessageCallback; private onSubscribeCallback; subscribeTo: (topics: string[]) => Promise; unsubscribeFrom: (topics: string[]) => void; private getValues; fetchStatus: () => Promise; } export declare const executeControlRequestOnDevice: (device: Device, states: DatapointState[]) => Promise;