/** * The Zigbee `DeviceSource`, layered over the `DeviceRegistry` (design.md * D2, D22; task 6.3). * * A device's stable identity is its IEEE address, which does not change * when Zigbee2MQTT renames it — the display name and command dispatch both * key on the *current* friendly name, looked up by IEEE address, so a * rename in Zigbee2MQTT is invisible to a consumer holding the qualified * identifier. */ import type { Logger } from "pino"; import type { MqttService } from "../mqtt/mqtt-service.js"; import type { DeviceRegistry } from "../zigbee/device-registry.js"; import type { DeviceChangeListener, DeviceCommandOutcome, DeviceDescriptor, DeviceSource } from "./device-source.js"; export declare const ZIGBEE_SOURCE_ID = "zigbee"; export declare class ZigbeeDeviceSource implements DeviceSource { private readonly registry; private readonly mqtt; private readonly logger; readonly id = "zigbee"; private readonly listeners; private readonly stateHandlers; private onAddedCb; private onRemovedCb; constructor(registry: DeviceRegistry | null, mqtt: MqttService, logger: Logger); get available(): boolean; start(): void; stop(): void; list(): DeviceDescriptor[]; get(deviceId: string): DeviceDescriptor | undefined; command(deviceId: string, properties: Record): Promise; subscribe(listener: DeviceChangeListener): () => void; private findByIeeeAddress; private subscribeDevice; private unsubscribeDevice; private notify; private toDescriptor; } //# sourceMappingURL=zigbee-source.d.ts.map