import { AlexaInterface, AlexaInterfaceType } from "./AlexaInterface"; import { DisplayCategory } from "./DisplayCategory"; import { EventEmitter } from "events"; import { MqttClient } from "mqtt"; import { AlexaStatusMessage, ChangeCause } from "./AlexaStatusMessage"; import { AlexaErrorResponse } from "./AlexaErrorResponse"; declare class Device extends EventEmitter { private mqttClient; private rootTopic; name: string; endpointId: string; displayCategory: Array | null; description: string; manufacturerName: string; manufacturer: string; model: string; protected softwareVersion: string; private capabilities; /** Where a failed publish from this device or a message it built is reported; Alex2MQTT sets it (1.5.2). */ onPublishError?: (err: Error) => void; constructor(mqttClient: MqttClient, rootTopic: string, name: string, endpointId: string, displayCategory: Array | null, description?: string, manufacturerName?: string, manufacturer?: string, model?: string); /** Internal (1.5.2): Alex2MQTT.connect() re-binds every registered device to its new broker client after a disconnect(). */ setMqttClient(client: MqttClient): void; getName(): string; setName(name: string): void; getEndpointId(): string; setDisplayCategory(category: DisplayCategory | DisplayCategory[]): void; getDisplayCategory(): Array; setDescription(description: string): void; getDescription(): string; getErrorMessage(correlationToken: string): AlexaErrorResponse; getStatusMessage(correlationToken: string, isResponse?: boolean, isDeferred?: boolean): AlexaStatusMessage; /** * A proactive Alexa.ChangeReport (1.5.1): add the changed properties (the default target), optionally * .unchanged() then the others, and .send() - it goes to /changeReport, which Alex2MQTT forwards to the Alexa * event gateway with the user's token. Alexa only accepts it for capabilities registered with proactivelyReported. */ getChangeReport(cause?: ChangeCause): AlexaStatusMessage; /** * Alexa.SceneController: answer an Activate / Deactivate directive with ActivationStarted / DeactivationStarted * (1.5.1). Resolves with the topic published to, or "" when the publish failed (never rejects, 1.5.2). */ sendSceneResponse(correlationToken: string, activated: boolean, cause?: ChangeCause, sendAsync?: boolean): Promise; getCapabilities(): AlexaInterface[]; setManufacturerName(name: string): void; getManufacturerName(): string; setManufacturer(manufacturer: string): void; getManufacturer(): string; setModel(model: string): void; getModel(): string; getSoftwareVersion(): string; /** Add a capability. 1.5.1: options.retrievable / proactivelyReported / instance (a change report needs proactivelyReported). */ addCapability(type: AlexaInterfaceType, options?: { retrievable?: boolean; proactivelyReported?: boolean; instance?: string; }): AlexaInterface; getJSON(): Record; } export default Device;