import type { EndpointHealth, PowerController } from "./compat/enums.js"; import type { MqttClient } from "mqtt"; export declare enum ThermostatMode { OFF = "OFF", HEAT = "HEAT", COOL = "COOL", AUTO = "AUTO", ECO = "ECO", CUSTOM = "CUSTOM" } export declare enum TemperatureSensorScale { CELSIUS = "CELSIUS", FAHRENHEIT = "FAHRENHEIT" } interface ContextProperty { namespace: string; name: string; value: any; timeOfSample: string; uncertaintyInMilliseconds: number; instance?: string; } /** Why a ChangeReport is sent (Alexa.ChangeReport payload.change.cause.type). */ export type ChangeCause = "APP_INTERACTION" | "PHYSICAL_INTERACTION" | "PERIODIC_POLL" | "RULE_TRIGGER" | "VOICE_INTERACTION"; export declare class AlexaStatusMessage { private context; /** ChangeReport only: the properties that changed (payload.change.properties); the rest go to context. */ private changeProps; private changeCause; private target; private event; private rootTopic; private endpointId; private mqttClient; private isDeferred; /** Where a failed publish is reported (set by the Device that built this message, 1.5.2): send() never rejects. */ onPublishError?: (err: Error) => void; constructor(correlationToken: string, rootTopic: string, endpointId: string, mqttClient: MqttClient, isResponse?: boolean, isDeferred?: boolean, changeCause?: ChangeCause | null); private getTimestamp; private addProperty; /** ChangeReport: the add*Prop calls that follow describe what CHANGED (the default for a change report). */ changed(): this; /** ChangeReport: the add*Prop calls that follow describe the other, unchanged properties (context). */ unchanged(): this; /** True for a ChangeReport (Device.getChangeReport). */ isChangeReport(): boolean; /** The message as it will be published (for tests and logging). */ toJSON(): { event: any; context: { properties: ContextProperty[]; } | null; }; addModeControllerProp(instance: string, value: string, uncertaintyInMs?: number): this; addThermostatModeProp(mode: string, uncertaintyInMs?: number): this; addEstimatedDeferralTime(seconds: number): this; addThermostatControllerProp(name: "lowerSetpoint" | "upperSetpoint" | "targetSetpoint", scale: TemperatureSensorScale, value: number, uncertaintyInMs?: number): this; /** Alexa.EndpointHealth connectivity: EndpointHealth.OK / UNREACHABLE (the plain strings "OK" / "UNREACHABLE" are accepted too). */ addHealthProp(health: EndpointHealth | `${EndpointHealth}`, uncertaintyInMs?: number): this; addPowerControllerProp(power: PowerController, uncertaintyInMs?: number): this; addTemperatureSensorProp(scale: TemperatureSensorScale, value: number, uncertaintyInMs?: number): this; addBrightnessControllerProp(brightness: number, uncertaintyInMs?: number): this; addColorTemperatureControllerProp(colorTemp: number, uncertaintyInMs?: number): this; addToggleControllerProp(state: PowerController, instance: string, uncertaintyInMs?: number): this; addContextProp(prop: ContextProperty): this; /** * Publish: a Response/StateReport to //alexaResponce (sendAsync: deferredResponse), a ChangeReport * to /changeReport (Alex2MQTT adds the user's token and posts it to the Alexa event gateway). Resolves with * the topic, or "" when the publish failed - the error then goes to the bridge's "error" event (when listened to). * Never rejects (1.5.1 did, so an un-caught send() could kill the host). */ send(sendAsync?: boolean): Promise; } export {};