zigbee-clusters 2.8.0 → 2.8.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/index.d.ts CHANGED
@@ -14,27 +14,44 @@ type ConstructorOptions = {
14
14
  sendFrame: (endpointId: number, clusterId: number, frame: Buffer) => Promise<void>;
15
15
  };
16
16
 
17
+ type ClusterCommandOptions = {
18
+ timeout?: number;
19
+ waitForResponse?: boolean;
20
+ disableDefaultResponse?: boolean;
21
+ };
22
+
23
+ type ZCLNodeConstructorInput = {
24
+ endpointDescriptors?: EndpointDescriptor[];
25
+ sendFrame: (endpointId: number, clusterId: number, frame: Buffer) => Promise<void>;
26
+ handleFrame?: (
27
+ endpointId: number,
28
+ clusterId: number,
29
+ frame: Buffer,
30
+ meta?: unknown
31
+ ) => Promise<void>;
32
+ };
33
+
17
34
  export interface ZCLNodeCluster extends EventEmitter {
18
- discoverCommandsGenerated(opts?: {
35
+ discoverCommandsGenerated(params?: {
19
36
  startValue?: number;
20
37
  maxResults?: number;
21
- }): Promise<number[]>;
38
+ }, opts?: { timeout?: number }): Promise<(string | number)[]>;
22
39
 
23
- discoverCommandsReceived(opts?: {
40
+ discoverCommandsReceived(params?: {
24
41
  startValue?: number;
25
42
  maxResults?: number;
26
- }): Promise<number[]>;
43
+ }, opts?: { timeout?: number }): Promise<(string | number)[]>;
27
44
 
28
45
  readAttributes(
29
- attributeNames: string[],
46
+ attributes: Array<string | number>,
30
47
  opts?: { timeout?: number }
31
48
  ): Promise<{ [x: string]: unknown }>;
32
49
 
33
- writeAttributes(attributes?: object): Promise<void>;
50
+ writeAttributes(attributes?: object, opts?: { timeout?: number }): Promise<unknown>;
34
51
 
35
- configureReporting(attributes?: object): Promise<void>;
52
+ configureReporting(attributes?: object, opts?: { timeout?: number }): Promise<void>;
36
53
 
37
- readReportingConfiguration(attributes?: (string | number)[]): Promise<{
54
+ readReportingConfiguration(attributes?: (string | number)[], opts?: { timeout?: number }): Promise<{
38
55
  status: string;
39
56
  direction: 'reported' | 'received';
40
57
  attributeId: number;
@@ -45,19 +62,20 @@ export interface ZCLNodeCluster extends EventEmitter {
45
62
  timeoutPeriod?: number;
46
63
  }[]>;
47
64
 
48
- discoverAttributes(): Promise<(string | number)[]>;
65
+ discoverAttributes(opts?: { timeout?: number }): Promise<(string | number)[]>;
49
66
 
50
- discoverAttributesExtended(): Promise<{
67
+ discoverAttributesExtended(opts?: { timeout?: number }): Promise<{
51
68
  name?: string;
52
69
  id: number;
70
+ dataTypeId: number;
53
71
  acl: { readable: boolean; writable: boolean; reportable: boolean };
54
72
  }[]>;
55
73
  }
56
74
 
57
75
  export interface AlarmsCluster extends ZCLNodeCluster {
58
- resetAllAlarms(): Promise<void>;
59
- getAlarm(): Promise<void>;
60
- resetAlarmLog(): Promise<void>;
76
+ resetAllAlarms(opts?: ClusterCommandOptions): Promise<void>;
77
+ getAlarm(opts?: ClusterCommandOptions): Promise<void>;
78
+ resetAlarmLog(opts?: ClusterCommandOptions): Promise<void>;
61
79
  }
62
80
 
63
81
  export interface AnalogInputClusterAttributes {
@@ -74,7 +92,10 @@ export interface AnalogInputClusterAttributes {
74
92
 
75
93
  export interface AnalogInputCluster extends ZCLNodeCluster {
76
94
  readAttributes<K extends 'description' | 'maxPresentValue' | 'minPresentValue' | 'outOfService' | 'presentValue' | 'reliability' | 'resolution' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<AnalogInputClusterAttributes, K>>;
77
- writeAttributes(attributes: Partial<AnalogInputClusterAttributes>): Promise<void>;
95
+ readAttributes(attributeNames: Array<keyof AnalogInputClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<AnalogInputClusterAttributes> & Record<number, unknown>>;
96
+ writeAttributes(attributes: Partial<AnalogInputClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
97
+ on<K extends keyof AnalogInputClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: AnalogInputClusterAttributes[K]) => void): this;
98
+ once<K extends keyof AnalogInputClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: AnalogInputClusterAttributes[K]) => void): this;
78
99
  }
79
100
 
80
101
  export interface AnalogOutputClusterAttributes {
@@ -92,7 +113,10 @@ export interface AnalogOutputClusterAttributes {
92
113
 
93
114
  export interface AnalogOutputCluster extends ZCLNodeCluster {
94
115
  readAttributes<K extends 'description' | 'maxPresentValue' | 'minPresentValue' | 'outOfService' | 'presentValue' | 'reliability' | 'relinquishDefault' | 'resolution' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<AnalogOutputClusterAttributes, K>>;
95
- writeAttributes(attributes: Partial<AnalogOutputClusterAttributes>): Promise<void>;
116
+ readAttributes(attributeNames: Array<keyof AnalogOutputClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<AnalogOutputClusterAttributes> & Record<number, unknown>>;
117
+ writeAttributes(attributes: Partial<AnalogOutputClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
118
+ on<K extends keyof AnalogOutputClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: AnalogOutputClusterAttributes[K]) => void): this;
119
+ once<K extends keyof AnalogOutputClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: AnalogOutputClusterAttributes[K]) => void): this;
96
120
  }
97
121
 
98
122
  export interface AnalogValueClusterAttributes {
@@ -107,7 +131,10 @@ export interface AnalogValueClusterAttributes {
107
131
 
108
132
  export interface AnalogValueCluster extends ZCLNodeCluster {
109
133
  readAttributes<K extends 'description' | 'outOfService' | 'presentValue' | 'reliability' | 'relinquishDefault' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<AnalogValueClusterAttributes, K>>;
110
- writeAttributes(attributes: Partial<AnalogValueClusterAttributes>): Promise<void>;
134
+ readAttributes(attributeNames: Array<keyof AnalogValueClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<AnalogValueClusterAttributes> & Record<number, unknown>>;
135
+ writeAttributes(attributes: Partial<AnalogValueClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
136
+ on<K extends keyof AnalogValueClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: AnalogValueClusterAttributes[K]) => void): this;
137
+ once<K extends keyof AnalogValueClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: AnalogValueClusterAttributes[K]) => void): this;
111
138
  }
112
139
 
113
140
  export interface BallastConfigurationClusterAttributes {
@@ -131,7 +158,10 @@ export interface BallastConfigurationClusterAttributes {
131
158
 
132
159
  export interface BallastConfigurationCluster extends ZCLNodeCluster {
133
160
  readAttributes<K extends 'physicalMinLevel' | 'physicalMaxLevel' | 'ballastStatus' | 'minLevel' | 'maxLevel' | 'powerOnLevel' | 'powerOnFadeTime' | 'intrinsicBallastFactor' | 'ballastFactorAdjustment' | 'lampQuantity' | 'lampType' | 'lampManufacturer' | 'lampRatedHours' | 'lampBurnHours' | 'lampAlarmMode' | 'lampBurnHoursTripPoint'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<BallastConfigurationClusterAttributes, K>>;
134
- writeAttributes(attributes: Partial<BallastConfigurationClusterAttributes>): Promise<void>;
161
+ readAttributes(attributeNames: Array<keyof BallastConfigurationClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<BallastConfigurationClusterAttributes> & Record<number, unknown>>;
162
+ writeAttributes(attributes: Partial<BallastConfigurationClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
163
+ on<K extends keyof BallastConfigurationClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: BallastConfigurationClusterAttributes[K]) => void): this;
164
+ once<K extends keyof BallastConfigurationClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: BallastConfigurationClusterAttributes[K]) => void): this;
135
165
  }
136
166
 
137
167
  export interface BasicClusterAttributes {
@@ -154,8 +184,11 @@ export interface BasicClusterAttributes {
154
184
 
155
185
  export interface BasicCluster extends ZCLNodeCluster {
156
186
  readAttributes<K extends 'zclVersion' | 'appVersion' | 'stackVersion' | 'hwVersion' | 'manufacturerName' | 'modelId' | 'dateCode' | 'powerSource' | 'appProfileVersion' | 'locationDesc' | 'physicalEnv' | 'deviceEnabled' | 'alarmMask' | 'disableLocalConfig' | 'swBuildId'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<BasicClusterAttributes, K>>;
157
- writeAttributes(attributes: Partial<BasicClusterAttributes>): Promise<void>;
158
- factoryReset(): Promise<void>;
187
+ readAttributes(attributeNames: Array<keyof BasicClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<BasicClusterAttributes> & Record<number, unknown>>;
188
+ writeAttributes(attributes: Partial<BasicClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
189
+ on<K extends keyof BasicClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: BasicClusterAttributes[K]) => void): this;
190
+ once<K extends keyof BasicClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: BasicClusterAttributes[K]) => void): this;
191
+ factoryReset(opts?: ClusterCommandOptions): Promise<void>;
159
192
  }
160
193
 
161
194
  export interface BinaryInputClusterAttributes {
@@ -172,7 +205,10 @@ export interface BinaryInputClusterAttributes {
172
205
 
173
206
  export interface BinaryInputCluster extends ZCLNodeCluster {
174
207
  readAttributes<K extends 'activeText' | 'description' | 'inactiveText' | 'outOfService' | 'polarity' | 'presentValue' | 'reliability' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<BinaryInputClusterAttributes, K>>;
175
- writeAttributes(attributes: Partial<BinaryInputClusterAttributes>): Promise<void>;
208
+ readAttributes(attributeNames: Array<keyof BinaryInputClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<BinaryInputClusterAttributes> & Record<number, unknown>>;
209
+ writeAttributes(attributes: Partial<BinaryInputClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
210
+ on<K extends keyof BinaryInputClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: BinaryInputClusterAttributes[K]) => void): this;
211
+ once<K extends keyof BinaryInputClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: BinaryInputClusterAttributes[K]) => void): this;
176
212
  }
177
213
 
178
214
  export interface BinaryOutputClusterAttributes {
@@ -192,7 +228,10 @@ export interface BinaryOutputClusterAttributes {
192
228
 
193
229
  export interface BinaryOutputCluster extends ZCLNodeCluster {
194
230
  readAttributes<K extends 'activeText' | 'description' | 'inactiveText' | 'minimumOffTime' | 'minimumOnTime' | 'outOfService' | 'polarity' | 'presentValue' | 'reliability' | 'relinquishDefault' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<BinaryOutputClusterAttributes, K>>;
195
- writeAttributes(attributes: Partial<BinaryOutputClusterAttributes>): Promise<void>;
231
+ readAttributes(attributeNames: Array<keyof BinaryOutputClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<BinaryOutputClusterAttributes> & Record<number, unknown>>;
232
+ writeAttributes(attributes: Partial<BinaryOutputClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
233
+ on<K extends keyof BinaryOutputClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: BinaryOutputClusterAttributes[K]) => void): this;
234
+ once<K extends keyof BinaryOutputClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: BinaryOutputClusterAttributes[K]) => void): this;
196
235
  }
197
236
 
198
237
  export interface BinaryValueClusterAttributes {
@@ -212,7 +251,10 @@ export interface BinaryValueClusterAttributes {
212
251
 
213
252
  export interface BinaryValueCluster extends ZCLNodeCluster {
214
253
  readAttributes<K extends 'activeText' | 'description' | 'inactiveText' | 'minimumOffTime' | 'minimumOnTime' | 'outOfService' | 'polarity' | 'presentValue' | 'reliability' | 'relinquishDefault' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<BinaryValueClusterAttributes, K>>;
215
- writeAttributes(attributes: Partial<BinaryValueClusterAttributes>): Promise<void>;
254
+ readAttributes(attributeNames: Array<keyof BinaryValueClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<BinaryValueClusterAttributes> & Record<number, unknown>>;
255
+ writeAttributes(attributes: Partial<BinaryValueClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
256
+ on<K extends keyof BinaryValueClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: BinaryValueClusterAttributes[K]) => void): this;
257
+ once<K extends keyof BinaryValueClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: BinaryValueClusterAttributes[K]) => void): this;
216
258
  }
217
259
 
218
260
  export interface ColorControlClusterAttributes {
@@ -229,12 +271,15 @@ export interface ColorControlClusterAttributes {
229
271
 
230
272
  export interface ColorControlCluster extends ZCLNodeCluster {
231
273
  readAttributes<K extends 'currentHue' | 'currentSaturation' | 'currentX' | 'currentY' | 'colorTemperatureMireds' | 'colorMode' | 'colorCapabilities' | 'colorTempPhysicalMinMireds' | 'colorTempPhysicalMaxMireds'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<ColorControlClusterAttributes, K>>;
232
- writeAttributes(attributes: Partial<ColorControlClusterAttributes>): Promise<void>;
233
- moveToHue(args: { hue: number; direction: 'shortestDistance' | 'longestDistance' | 'up' | 'down'; transitionTime: number }): Promise<void>;
234
- moveToSaturation(args: { saturation: number; transitionTime: number }): Promise<void>;
235
- moveToHueAndSaturation(args: { hue: number; saturation: number; transitionTime: number }): Promise<void>;
236
- moveToColor(args: { colorX: number; colorY: number; transitionTime: number }): Promise<void>;
237
- moveToColorTemperature(args: { colorTemperature: number; transitionTime: number }): Promise<void>;
274
+ readAttributes(attributeNames: Array<keyof ColorControlClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<ColorControlClusterAttributes> & Record<number, unknown>>;
275
+ writeAttributes(attributes: Partial<ColorControlClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
276
+ on<K extends keyof ColorControlClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: ColorControlClusterAttributes[K]) => void): this;
277
+ once<K extends keyof ColorControlClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: ColorControlClusterAttributes[K]) => void): this;
278
+ moveToHue(args: { hue: number; direction: 'shortestDistance' | 'longestDistance' | 'up' | 'down'; transitionTime: number }, opts?: ClusterCommandOptions): Promise<void>;
279
+ moveToSaturation(args: { saturation: number; transitionTime: number }, opts?: ClusterCommandOptions): Promise<void>;
280
+ moveToHueAndSaturation(args: { hue: number; saturation: number; transitionTime: number }, opts?: ClusterCommandOptions): Promise<void>;
281
+ moveToColor(args: { colorX: number; colorY: number; transitionTime: number }, opts?: ClusterCommandOptions): Promise<void>;
282
+ moveToColorTemperature(args: { colorTemperature: number; transitionTime: number }, opts?: ClusterCommandOptions): Promise<void>;
238
283
  }
239
284
 
240
285
  export interface DehumidificationControlCluster extends ZCLNodeCluster {
@@ -254,7 +299,10 @@ export interface DeviceTemperatureClusterAttributes {
254
299
 
255
300
  export interface DeviceTemperatureCluster extends ZCLNodeCluster {
256
301
  readAttributes<K extends 'currentTemperature' | 'minTempExperienced' | 'maxTempExperienced' | 'overTempTotalDwell' | 'deviceTempAlarmMask' | 'lowTempThreshold' | 'highTempThreshold' | 'lowTempDwellTripPoint' | 'highTempDwellTripPoint'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<DeviceTemperatureClusterAttributes, K>>;
257
- writeAttributes(attributes: Partial<DeviceTemperatureClusterAttributes>): Promise<void>;
302
+ readAttributes(attributeNames: Array<keyof DeviceTemperatureClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<DeviceTemperatureClusterAttributes> & Record<number, unknown>>;
303
+ writeAttributes(attributes: Partial<DeviceTemperatureClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
304
+ on<K extends keyof DeviceTemperatureClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: DeviceTemperatureClusterAttributes[K]) => void): this;
305
+ once<K extends keyof DeviceTemperatureClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: DeviceTemperatureClusterAttributes[K]) => void): this;
258
306
  }
259
307
 
260
308
  export interface DiagnosticsCluster extends ZCLNodeCluster {
@@ -308,35 +356,38 @@ export interface DoorLockClusterAttributes {
308
356
 
309
357
  export interface DoorLockCluster extends ZCLNodeCluster {
310
358
  readAttributes<K extends 'lockState' | 'lockType' | 'actuatorEnabled' | 'doorState' | 'doorOpenEvents' | 'doorClosedEvents' | 'openPeriod' | 'numberOfLogRecordsSupported' | 'numberOfTotalUsersSupported' | 'numberOfPINUsersSupported' | 'numberOfRFIDUsersSupported' | 'numberOfWeekDaySchedulesSupportedPerUser' | 'numberOfYearDaySchedulesSupportedPerUser' | 'numberOfHolidaySchedulesSupported' | 'maxPINCodeLength' | 'minPINCodeLength' | 'maxRFIDCodeLength' | 'minRFIDCodeLength' | 'enableLogging' | 'language' | 'ledSettings' | 'autoRelockTime' | 'soundVolume' | 'operatingMode' | 'supportedOperatingModes' | 'defaultConfigurationRegister' | 'enableLocalProgramming' | 'enableOneTouchLocking' | 'enableInsideStatusLED' | 'enablePrivacyModeButton' | 'wrongCodeEntryLimit' | 'userCodeTemporaryDisableTime' | 'sendPINOverTheAir' | 'requirePINforRFOperation' | 'securityLevel' | 'alarmMask' | 'keypadOperationEventMask' | 'rfOperationEventMask' | 'manualOperationEventMask' | 'rfidOperationEventMask' | 'keypadProgrammingEventMask' | 'rfProgrammingEventMask' | 'rfidProgrammingEventMask'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<DoorLockClusterAttributes, K>>;
311
- writeAttributes(attributes: Partial<DoorLockClusterAttributes>): Promise<void>;
312
- lockDoor(args?: { pinCode?: Buffer }): Promise<{ status: number }>;
313
- unlockDoor(args?: { pinCode?: Buffer }): Promise<{ status: number }>;
314
- toggle(args?: { pinCode?: Buffer }): Promise<{ status: number }>;
315
- unlockWithTimeout(args: { timeout: number; pinCode?: Buffer }): Promise<{ status: number }>;
316
- getLogRecord(args: { logIndex: number }): Promise<{ logEntryId: number; timestamp: number; eventType: number; source: number; eventIdOrAlarmCode: number; userId: number; pin: Buffer }>;
317
- setPINCode(args: { userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported'; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported'; pinCode?: Buffer }): Promise<{ status: number }>;
318
- getPINCode(args: { userId: number }): Promise<{ userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported'; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported'; pinCode: Buffer }>;
319
- clearPINCode(args: { userId: number }): Promise<{ status: number }>;
320
- clearAllPINCodes(): Promise<{ status: number }>;
321
- setUserStatus(args: { userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported' }): Promise<{ status: number }>;
322
- getUserStatus(args: { userId: number }): Promise<{ userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported' }>;
323
- setWeekDaySchedule(args: { scheduleId: number; userId: number; daysMask: Partial<{ sunday: boolean; monday: boolean; tuesday: boolean; wednesday: boolean; thursday: boolean; friday: boolean; saturday: boolean }>; startHour: number; startMinute: number; endHour: number; endMinute: number }): Promise<{ status: number }>;
324
- getWeekDaySchedule(args: { scheduleId: number; userId: number }): Promise<{ scheduleId: number; userId: number; status: number; daysMask: Partial<{ sunday: boolean; monday: boolean; tuesday: boolean; wednesday: boolean; thursday: boolean; friday: boolean; saturday: boolean }>; startHour: number; startMinute: number; endHour: number; endMinute: number }>;
325
- clearWeekDaySchedule(args: { scheduleId: number; userId: number }): Promise<{ status: number }>;
326
- setYearDaySchedule(args: { scheduleId: number; userId: number; localStartTime: number; localEndTime: number }): Promise<{ status: number }>;
327
- getYearDaySchedule(args: { scheduleId: number; userId: number }): Promise<{ scheduleId: number; userId: number; status: number; localStartTime: number; localEndTime: number }>;
328
- clearYearDaySchedule(args: { scheduleId: number; userId: number }): Promise<{ status: number }>;
329
- setHolidaySchedule(args: { holidayScheduleId: number; localStartTime: number; localEndTime: number; operatingModeDuringHoliday: 'normal' | 'vacation' | 'privacy' | 'noRFLockOrUnlock' | 'passage' }): Promise<{ status: number }>;
330
- getHolidaySchedule(args: { holidayScheduleId: number }): Promise<{ holidayScheduleId: number; status: number; localStartTime: number; localEndTime: number; operatingMode: 'normal' | 'vacation' | 'privacy' | 'noRFLockOrUnlock' | 'passage' }>;
331
- clearHolidaySchedule(args: { holidayScheduleId: number }): Promise<{ status: number }>;
332
- setUserType(args: { userId: number; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported' }): Promise<{ status: number }>;
333
- getUserType(args: { userId: number }): Promise<{ userId: number; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported' }>;
334
- setRFIDCode(args: { userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported'; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported'; rfidCode?: Buffer }): Promise<{ status: number }>;
335
- getRFIDCode(args: { userId: number }): Promise<{ userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported'; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported'; rfidCode: Buffer }>;
336
- clearRFIDCode(args: { userId: number }): Promise<{ status: number }>;
337
- clearAllRFIDCodes(): Promise<{ status: number }>;
338
- operationEventNotification(args: { operationEventSource: number; operationEventCode: number; userId: number; pin?: Buffer; zigBeeLocalTime: number; data?: Buffer }): Promise<void>;
339
- programmingEventNotification(args: { programEventSource: number; programEventCode: number; userId: number; pin?: Buffer; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported'; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported'; zigBeeLocalTime: number; data?: Buffer }): Promise<void>;
359
+ readAttributes(attributeNames: Array<keyof DoorLockClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<DoorLockClusterAttributes> & Record<number, unknown>>;
360
+ writeAttributes(attributes: Partial<DoorLockClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
361
+ on<K extends keyof DoorLockClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: DoorLockClusterAttributes[K]) => void): this;
362
+ once<K extends keyof DoorLockClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: DoorLockClusterAttributes[K]) => void): this;
363
+ lockDoor(args?: { pinCode?: Buffer }, opts?: ClusterCommandOptions): Promise<{ status: number }>;
364
+ unlockDoor(args?: { pinCode?: Buffer }, opts?: ClusterCommandOptions): Promise<{ status: number }>;
365
+ toggle(args?: { pinCode?: Buffer }, opts?: ClusterCommandOptions): Promise<{ status: number }>;
366
+ unlockWithTimeout(args: { timeout: number; pinCode?: Buffer }, opts?: ClusterCommandOptions): Promise<{ status: number }>;
367
+ getLogRecord(args: { logIndex: number }, opts?: ClusterCommandOptions): Promise<{ logEntryId: number; timestamp: number; eventType: number; source: number; eventIdOrAlarmCode: number; userId: number; pin: Buffer }>;
368
+ setPINCode(args: { userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported'; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported'; pinCode?: Buffer }, opts?: ClusterCommandOptions): Promise<{ status: number }>;
369
+ getPINCode(args: { userId: number }, opts?: ClusterCommandOptions): Promise<{ userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported'; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported'; pinCode: Buffer }>;
370
+ clearPINCode(args: { userId: number }, opts?: ClusterCommandOptions): Promise<{ status: number }>;
371
+ clearAllPINCodes(opts?: ClusterCommandOptions): Promise<{ status: number }>;
372
+ setUserStatus(args: { userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported' }, opts?: ClusterCommandOptions): Promise<{ status: number }>;
373
+ getUserStatus(args: { userId: number }, opts?: ClusterCommandOptions): Promise<{ userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported' }>;
374
+ setWeekDaySchedule(args: { scheduleId: number; userId: number; daysMask: Partial<{ sunday: boolean; monday: boolean; tuesday: boolean; wednesday: boolean; thursday: boolean; friday: boolean; saturday: boolean }>; startHour: number; startMinute: number; endHour: number; endMinute: number }, opts?: ClusterCommandOptions): Promise<{ status: number }>;
375
+ getWeekDaySchedule(args: { scheduleId: number; userId: number }, opts?: ClusterCommandOptions): Promise<{ scheduleId: number; userId: number; status: number; daysMask: Partial<{ sunday: boolean; monday: boolean; tuesday: boolean; wednesday: boolean; thursday: boolean; friday: boolean; saturday: boolean }>; startHour: number; startMinute: number; endHour: number; endMinute: number }>;
376
+ clearWeekDaySchedule(args: { scheduleId: number; userId: number }, opts?: ClusterCommandOptions): Promise<{ status: number }>;
377
+ setYearDaySchedule(args: { scheduleId: number; userId: number; localStartTime: number; localEndTime: number }, opts?: ClusterCommandOptions): Promise<{ status: number }>;
378
+ getYearDaySchedule(args: { scheduleId: number; userId: number }, opts?: ClusterCommandOptions): Promise<{ scheduleId: number; userId: number; status: number; localStartTime: number; localEndTime: number }>;
379
+ clearYearDaySchedule(args: { scheduleId: number; userId: number }, opts?: ClusterCommandOptions): Promise<{ status: number }>;
380
+ setHolidaySchedule(args: { holidayScheduleId: number; localStartTime: number; localEndTime: number; operatingModeDuringHoliday: 'normal' | 'vacation' | 'privacy' | 'noRFLockOrUnlock' | 'passage' }, opts?: ClusterCommandOptions): Promise<{ status: number }>;
381
+ getHolidaySchedule(args: { holidayScheduleId: number }, opts?: ClusterCommandOptions): Promise<{ holidayScheduleId: number; status: number; localStartTime: number; localEndTime: number; operatingMode: 'normal' | 'vacation' | 'privacy' | 'noRFLockOrUnlock' | 'passage' }>;
382
+ clearHolidaySchedule(args: { holidayScheduleId: number }, opts?: ClusterCommandOptions): Promise<{ status: number }>;
383
+ setUserType(args: { userId: number; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported' }, opts?: ClusterCommandOptions): Promise<{ status: number }>;
384
+ getUserType(args: { userId: number }, opts?: ClusterCommandOptions): Promise<{ userId: number; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported' }>;
385
+ setRFIDCode(args: { userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported'; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported'; rfidCode?: Buffer }, opts?: ClusterCommandOptions): Promise<{ status: number }>;
386
+ getRFIDCode(args: { userId: number }, opts?: ClusterCommandOptions): Promise<{ userId: number; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported'; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported'; rfidCode: Buffer }>;
387
+ clearRFIDCode(args: { userId: number }, opts?: ClusterCommandOptions): Promise<{ status: number }>;
388
+ clearAllRFIDCodes(opts?: ClusterCommandOptions): Promise<{ status: number }>;
389
+ operationEventNotification(args: { operationEventSource: number; operationEventCode: number; userId: number; pin?: Buffer; zigBeeLocalTime: number; data?: Buffer }, opts?: ClusterCommandOptions): Promise<void>;
390
+ programmingEventNotification(args: { programEventSource: number; programEventCode: number; userId: number; pin?: Buffer; userType: 'unrestricted' | 'yearDayScheduleUser' | 'weekDayScheduleUser' | 'masterUser' | 'nonAccessUser' | 'notSupported'; userStatus: 'available' | 'occupiedEnabled' | 'occupiedDisabled' | 'notSupported'; zigBeeLocalTime: number; data?: Buffer }, opts?: ClusterCommandOptions): Promise<void>;
340
391
  }
341
392
 
342
393
  export interface ElectricalMeasurementClusterAttributes {
@@ -364,7 +415,10 @@ export interface ElectricalMeasurementClusterAttributes {
364
415
 
365
416
  export interface ElectricalMeasurementCluster extends ZCLNodeCluster {
366
417
  readAttributes<K extends 'measurementType' | 'acFrequency' | 'measuredPhase1stHarmonicCurrent' | 'acFrequencyMultiplier' | 'acFrequencyDivisor' | 'phaseHarmonicCurrentMultiplier' | 'rmsVoltage' | 'rmsCurrent' | 'activePower' | 'reactivePower' | 'acVoltageMultiplier' | 'acVoltageDivisor' | 'acCurrentMultiplier' | 'acCurrentDivisor' | 'acPowerMultiplier' | 'acPowerDivisor' | 'acAlarmsMask' | 'acVoltageOverload' | 'acCurrentOverload' | 'acActivePowerOverload'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<ElectricalMeasurementClusterAttributes, K>>;
367
- writeAttributes(attributes: Partial<ElectricalMeasurementClusterAttributes>): Promise<void>;
418
+ readAttributes(attributeNames: Array<keyof ElectricalMeasurementClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<ElectricalMeasurementClusterAttributes> & Record<number, unknown>>;
419
+ writeAttributes(attributes: Partial<ElectricalMeasurementClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
420
+ on<K extends keyof ElectricalMeasurementClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: ElectricalMeasurementClusterAttributes[K]) => void): this;
421
+ once<K extends keyof ElectricalMeasurementClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: ElectricalMeasurementClusterAttributes[K]) => void): this;
368
422
  }
369
423
 
370
424
  export interface FanControlCluster extends ZCLNodeCluster {
@@ -379,7 +433,10 @@ export interface FlowMeasurementClusterAttributes {
379
433
 
380
434
  export interface FlowMeasurementCluster extends ZCLNodeCluster {
381
435
  readAttributes<K extends 'measuredValue' | 'minMeasuredValue' | 'maxMeasuredValue' | 'tolerance'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<FlowMeasurementClusterAttributes, K>>;
382
- writeAttributes(attributes: Partial<FlowMeasurementClusterAttributes>): Promise<void>;
436
+ readAttributes(attributeNames: Array<keyof FlowMeasurementClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<FlowMeasurementClusterAttributes> & Record<number, unknown>>;
437
+ writeAttributes(attributes: Partial<FlowMeasurementClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
438
+ on<K extends keyof FlowMeasurementClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: FlowMeasurementClusterAttributes[K]) => void): this;
439
+ once<K extends keyof FlowMeasurementClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: FlowMeasurementClusterAttributes[K]) => void): this;
383
440
  }
384
441
 
385
442
  export interface GroupsClusterAttributes {
@@ -388,22 +445,25 @@ export interface GroupsClusterAttributes {
388
445
 
389
446
  export interface GroupsCluster extends ZCLNodeCluster {
390
447
  readAttributes<K extends 'nameSupport'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<GroupsClusterAttributes, K>>;
391
- writeAttributes(attributes: Partial<GroupsClusterAttributes>): Promise<void>;
392
- addGroup(args: { groupId: number; groupName: string }): Promise<{ status: 'SUCCESS' | 'FAILURE' | 'NOT_AUTHORIZED' | 'RESERVED_FIELD_NOT_ZERO' | 'MALFORMED_COMMAND' | 'UNSUP_CLUSTER_COMMAND' | 'UNSUP_GENERAL_COMMAND' | 'UNSUP_MANUF_CLUSTER_COMMAND' | 'UNSUP_MANUF_GENERAL_COMMAND' | 'INVALID_FIELD' | 'UNSUPPORTED_ATTRIBUTE' | 'INVALID_VALUE' | 'READ_ONLY' | 'INSUFFICIENT_SPACE' | 'DUPLICATE_EXISTS' | 'NOT_FOUND' | 'UNREPORTABLE_ATTRIBUTE' | 'INVALID_DATA_TYPE' | 'INVALID_SELECTOR' | 'WRITE_ONLY' | 'INCONSISTENT_STARTUP_STATE' | 'DEFINED_OUT_OF_BAND' | 'INCONSISTENT' | 'ACTION_DENIED' | 'TIMEOUT' | 'ABORT' | 'INVALID_IMAGE' | 'WAIT_FOR_DATA' | 'NO_IMAGE_AVAILABLE' | 'REQUIRE_MORE_IMAGE' | 'NOTIFICATION_PENDING' | 'HARDWARE_FAILURE' | 'SOFTWARE_FAILURE' | 'CALIBRATION_ERROR' | 'UNSUPPORTED_CLUSTER'; groupId: number }>;
393
- viewGroup(args: { groupId: number }): Promise<{ status: 'SUCCESS' | 'FAILURE' | 'NOT_AUTHORIZED' | 'RESERVED_FIELD_NOT_ZERO' | 'MALFORMED_COMMAND' | 'UNSUP_CLUSTER_COMMAND' | 'UNSUP_GENERAL_COMMAND' | 'UNSUP_MANUF_CLUSTER_COMMAND' | 'UNSUP_MANUF_GENERAL_COMMAND' | 'INVALID_FIELD' | 'UNSUPPORTED_ATTRIBUTE' | 'INVALID_VALUE' | 'READ_ONLY' | 'INSUFFICIENT_SPACE' | 'DUPLICATE_EXISTS' | 'NOT_FOUND' | 'UNREPORTABLE_ATTRIBUTE' | 'INVALID_DATA_TYPE' | 'INVALID_SELECTOR' | 'WRITE_ONLY' | 'INCONSISTENT_STARTUP_STATE' | 'DEFINED_OUT_OF_BAND' | 'INCONSISTENT' | 'ACTION_DENIED' | 'TIMEOUT' | 'ABORT' | 'INVALID_IMAGE' | 'WAIT_FOR_DATA' | 'NO_IMAGE_AVAILABLE' | 'REQUIRE_MORE_IMAGE' | 'NOTIFICATION_PENDING' | 'HARDWARE_FAILURE' | 'SOFTWARE_FAILURE' | 'CALIBRATION_ERROR' | 'UNSUPPORTED_CLUSTER'; groupId: number; groupNames: string }>;
394
- getGroupMembership(args: { groupIds: number[] }): Promise<{ capacity: number; groups: number[] }>;
395
- removeGroup(args: { groupId: number }): Promise<{ status: 'SUCCESS' | 'FAILURE' | 'NOT_AUTHORIZED' | 'RESERVED_FIELD_NOT_ZERO' | 'MALFORMED_COMMAND' | 'UNSUP_CLUSTER_COMMAND' | 'UNSUP_GENERAL_COMMAND' | 'UNSUP_MANUF_CLUSTER_COMMAND' | 'UNSUP_MANUF_GENERAL_COMMAND' | 'INVALID_FIELD' | 'UNSUPPORTED_ATTRIBUTE' | 'INVALID_VALUE' | 'READ_ONLY' | 'INSUFFICIENT_SPACE' | 'DUPLICATE_EXISTS' | 'NOT_FOUND' | 'UNREPORTABLE_ATTRIBUTE' | 'INVALID_DATA_TYPE' | 'INVALID_SELECTOR' | 'WRITE_ONLY' | 'INCONSISTENT_STARTUP_STATE' | 'DEFINED_OUT_OF_BAND' | 'INCONSISTENT' | 'ACTION_DENIED' | 'TIMEOUT' | 'ABORT' | 'INVALID_IMAGE' | 'WAIT_FOR_DATA' | 'NO_IMAGE_AVAILABLE' | 'REQUIRE_MORE_IMAGE' | 'NOTIFICATION_PENDING' | 'HARDWARE_FAILURE' | 'SOFTWARE_FAILURE' | 'CALIBRATION_ERROR' | 'UNSUPPORTED_CLUSTER'; groupId: number }>;
396
- removeAllGroups(): Promise<void>;
397
- addGroupIfIdentify(args: { groupId: number; groupName: string }): Promise<void>;
448
+ readAttributes(attributeNames: Array<keyof GroupsClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<GroupsClusterAttributes> & Record<number, unknown>>;
449
+ writeAttributes(attributes: Partial<GroupsClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
450
+ on<K extends keyof GroupsClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: GroupsClusterAttributes[K]) => void): this;
451
+ once<K extends keyof GroupsClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: GroupsClusterAttributes[K]) => void): this;
452
+ addGroup(args: { groupId: number; groupName: string }, opts?: ClusterCommandOptions): Promise<{ status: 'SUCCESS' | 'FAILURE' | 'NOT_AUTHORIZED' | 'RESERVED_FIELD_NOT_ZERO' | 'MALFORMED_COMMAND' | 'UNSUP_CLUSTER_COMMAND' | 'UNSUP_GENERAL_COMMAND' | 'UNSUP_MANUF_CLUSTER_COMMAND' | 'UNSUP_MANUF_GENERAL_COMMAND' | 'INVALID_FIELD' | 'UNSUPPORTED_ATTRIBUTE' | 'INVALID_VALUE' | 'READ_ONLY' | 'INSUFFICIENT_SPACE' | 'DUPLICATE_EXISTS' | 'NOT_FOUND' | 'UNREPORTABLE_ATTRIBUTE' | 'INVALID_DATA_TYPE' | 'INVALID_SELECTOR' | 'WRITE_ONLY' | 'INCONSISTENT_STARTUP_STATE' | 'DEFINED_OUT_OF_BAND' | 'INCONSISTENT' | 'ACTION_DENIED' | 'TIMEOUT' | 'ABORT' | 'INVALID_IMAGE' | 'WAIT_FOR_DATA' | 'NO_IMAGE_AVAILABLE' | 'REQUIRE_MORE_IMAGE' | 'NOTIFICATION_PENDING' | 'HARDWARE_FAILURE' | 'SOFTWARE_FAILURE' | 'CALIBRATION_ERROR' | 'UNSUPPORTED_CLUSTER'; groupId: number }>;
453
+ viewGroup(args: { groupId: number }, opts?: ClusterCommandOptions): Promise<{ status: 'SUCCESS' | 'FAILURE' | 'NOT_AUTHORIZED' | 'RESERVED_FIELD_NOT_ZERO' | 'MALFORMED_COMMAND' | 'UNSUP_CLUSTER_COMMAND' | 'UNSUP_GENERAL_COMMAND' | 'UNSUP_MANUF_CLUSTER_COMMAND' | 'UNSUP_MANUF_GENERAL_COMMAND' | 'INVALID_FIELD' | 'UNSUPPORTED_ATTRIBUTE' | 'INVALID_VALUE' | 'READ_ONLY' | 'INSUFFICIENT_SPACE' | 'DUPLICATE_EXISTS' | 'NOT_FOUND' | 'UNREPORTABLE_ATTRIBUTE' | 'INVALID_DATA_TYPE' | 'INVALID_SELECTOR' | 'WRITE_ONLY' | 'INCONSISTENT_STARTUP_STATE' | 'DEFINED_OUT_OF_BAND' | 'INCONSISTENT' | 'ACTION_DENIED' | 'TIMEOUT' | 'ABORT' | 'INVALID_IMAGE' | 'WAIT_FOR_DATA' | 'NO_IMAGE_AVAILABLE' | 'REQUIRE_MORE_IMAGE' | 'NOTIFICATION_PENDING' | 'HARDWARE_FAILURE' | 'SOFTWARE_FAILURE' | 'CALIBRATION_ERROR' | 'UNSUPPORTED_CLUSTER'; groupId: number; groupNames: string }>;
454
+ getGroupMembership(args: { groupIds: number[] }, opts?: ClusterCommandOptions): Promise<{ capacity: number; groups: number[] }>;
455
+ removeGroup(args: { groupId: number }, opts?: ClusterCommandOptions): Promise<{ status: 'SUCCESS' | 'FAILURE' | 'NOT_AUTHORIZED' | 'RESERVED_FIELD_NOT_ZERO' | 'MALFORMED_COMMAND' | 'UNSUP_CLUSTER_COMMAND' | 'UNSUP_GENERAL_COMMAND' | 'UNSUP_MANUF_CLUSTER_COMMAND' | 'UNSUP_MANUF_GENERAL_COMMAND' | 'INVALID_FIELD' | 'UNSUPPORTED_ATTRIBUTE' | 'INVALID_VALUE' | 'READ_ONLY' | 'INSUFFICIENT_SPACE' | 'DUPLICATE_EXISTS' | 'NOT_FOUND' | 'UNREPORTABLE_ATTRIBUTE' | 'INVALID_DATA_TYPE' | 'INVALID_SELECTOR' | 'WRITE_ONLY' | 'INCONSISTENT_STARTUP_STATE' | 'DEFINED_OUT_OF_BAND' | 'INCONSISTENT' | 'ACTION_DENIED' | 'TIMEOUT' | 'ABORT' | 'INVALID_IMAGE' | 'WAIT_FOR_DATA' | 'NO_IMAGE_AVAILABLE' | 'REQUIRE_MORE_IMAGE' | 'NOTIFICATION_PENDING' | 'HARDWARE_FAILURE' | 'SOFTWARE_FAILURE' | 'CALIBRATION_ERROR' | 'UNSUPPORTED_CLUSTER'; groupId: number }>;
456
+ removeAllGroups(opts?: ClusterCommandOptions): Promise<void>;
457
+ addGroupIfIdentify(args: { groupId: number; groupName: string }, opts?: ClusterCommandOptions): Promise<void>;
398
458
  }
399
459
 
400
- export interface IasACECluster extends ZCLNodeCluster {
460
+ export interface IASACECluster extends ZCLNodeCluster {
401
461
  }
402
462
 
403
- export interface IasWDCluster extends ZCLNodeCluster {
463
+ export interface IASWDCluster extends ZCLNodeCluster {
404
464
  }
405
465
 
406
- export interface IasZoneClusterAttributes {
466
+ export interface IASZoneClusterAttributes {
407
467
  zoneState?: 'notEnrolled' | 'enrolled';
408
468
  zoneType?: 'standardCIE' | 'motionSensor' | 'contactSwitch' | 'fireSensor' | 'waterSensor' | 'cabonMonoxideSensor' | 'personalEmergencyDevice' | 'vibrationMovementSensor' | 'remoteControl' | 'keyfob' | 'keypad' | 'standardWarningDevice' | 'glassBreakSensor' | 'securityRepeater' | 'invalidZoneType';
409
469
  zoneStatus?: Partial<{ alarm1: boolean; alarm2: boolean; tamper: boolean; battery: boolean; supervisionReports: boolean; restoreReports: boolean; trouble: boolean; acMains: boolean; test: boolean; batteryDefect: boolean }>;
@@ -411,13 +471,16 @@ export interface IasZoneClusterAttributes {
411
471
  zoneId?: number;
412
472
  }
413
473
 
414
- export interface IasZoneCluster extends ZCLNodeCluster {
415
- readAttributes<K extends 'zoneState' | 'zoneType' | 'zoneStatus' | 'iasCIEAddress' | 'zoneId'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<IasZoneClusterAttributes, K>>;
416
- writeAttributes(attributes: Partial<IasZoneClusterAttributes>): Promise<void>;
417
- zoneStatusChangeNotification(args: { zoneStatus: Partial<{ alarm1: boolean; alarm2: boolean; tamper: boolean; battery: boolean; supervisionReports: boolean; restoreReports: boolean; trouble: boolean; acMains: boolean; test: boolean; batteryDefect: boolean }>; extendedStatus: number; zoneId: number; delay: number }): Promise<void>;
418
- zoneEnrollResponse(args: { enrollResponseCode: 'success' | 'notSupported' | 'noEnrollPermit' | 'tooManyZones'; zoneId: number }): Promise<void>;
419
- zoneEnrollRequest(args: { zoneType: 'standard' | 'motionSensor' | 'contactSwitch' | 'fireSensor' | 'waterSensor' | 'carbonMonoxideSensor' | 'personalEmergencyDevice' | 'vibrationMovementSensor' | 'remoteControl' | 'keyFob' | 'keyPad' | 'standardWarningDevice' | 'glassBreakSensor' | 'securityRepeater' | 'invalid'; manufacturerCode: number }): Promise<void>;
420
- initiateNormalOperationMode(): Promise<void>;
474
+ export interface IASZoneCluster extends ZCLNodeCluster {
475
+ readAttributes<K extends 'zoneState' | 'zoneType' | 'zoneStatus' | 'iasCIEAddress' | 'zoneId'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<IASZoneClusterAttributes, K>>;
476
+ readAttributes(attributeNames: Array<keyof IASZoneClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<IASZoneClusterAttributes> & Record<number, unknown>>;
477
+ writeAttributes(attributes: Partial<IASZoneClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
478
+ on<K extends keyof IASZoneClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: IASZoneClusterAttributes[K]) => void): this;
479
+ once<K extends keyof IASZoneClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: IASZoneClusterAttributes[K]) => void): this;
480
+ zoneStatusChangeNotification(args: { zoneStatus: Partial<{ alarm1: boolean; alarm2: boolean; tamper: boolean; battery: boolean; supervisionReports: boolean; restoreReports: boolean; trouble: boolean; acMains: boolean; test: boolean; batteryDefect: boolean }>; extendedStatus: number; zoneId: number; delay: number }, opts?: ClusterCommandOptions): Promise<void>;
481
+ zoneEnrollResponse(args: { enrollResponseCode: 'success' | 'notSupported' | 'noEnrollPermit' | 'tooManyZones'; zoneId: number }, opts?: ClusterCommandOptions): Promise<void>;
482
+ zoneEnrollRequest(args: { zoneType: 'standard' | 'motionSensor' | 'contactSwitch' | 'fireSensor' | 'waterSensor' | 'carbonMonoxideSensor' | 'personalEmergencyDevice' | 'vibrationMovementSensor' | 'remoteControl' | 'keyFob' | 'keyPad' | 'standardWarningDevice' | 'glassBreakSensor' | 'securityRepeater' | 'invalid'; manufacturerCode: number }, opts?: ClusterCommandOptions): Promise<void>;
483
+ initiateNormalOperationMode(opts?: ClusterCommandOptions): Promise<void>;
421
484
  }
422
485
 
423
486
  export interface IdentifyClusterAttributes {
@@ -426,10 +489,13 @@ export interface IdentifyClusterAttributes {
426
489
 
427
490
  export interface IdentifyCluster extends ZCLNodeCluster {
428
491
  readAttributes<K extends 'identifyTime'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<IdentifyClusterAttributes, K>>;
429
- writeAttributes(attributes: Partial<IdentifyClusterAttributes>): Promise<void>;
430
- identify(args: { identifyTime: number }): Promise<void>;
431
- identifyQuery(): Promise<{ timeout: number }>;
432
- triggerEffect(args: { effectIdentifier: 'blink' | 'breathe' | 'okay' | 'channelChange' | 'finish' | 'stop'; effectVariant: number }): Promise<void>;
492
+ readAttributes(attributeNames: Array<keyof IdentifyClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<IdentifyClusterAttributes> & Record<number, unknown>>;
493
+ writeAttributes(attributes: Partial<IdentifyClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
494
+ on<K extends keyof IdentifyClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: IdentifyClusterAttributes[K]) => void): this;
495
+ once<K extends keyof IdentifyClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: IdentifyClusterAttributes[K]) => void): this;
496
+ identify(args: { identifyTime: number }, opts?: ClusterCommandOptions): Promise<void>;
497
+ identifyQuery(opts?: ClusterCommandOptions): Promise<{ timeout: number }>;
498
+ triggerEffect(args: { effectIdentifier: 'blink' | 'breathe' | 'okay' | 'channelChange' | 'finish' | 'stop'; effectVariant: number }, opts?: ClusterCommandOptions): Promise<void>;
433
499
  }
434
500
 
435
501
  export interface IlluminanceLevelSensingClusterAttributes {
@@ -440,7 +506,10 @@ export interface IlluminanceLevelSensingClusterAttributes {
440
506
 
441
507
  export interface IlluminanceLevelSensingCluster extends ZCLNodeCluster {
442
508
  readAttributes<K extends 'levelStatus' | 'lightSensorType' | 'illuminanceTargetLevel'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<IlluminanceLevelSensingClusterAttributes, K>>;
443
- writeAttributes(attributes: Partial<IlluminanceLevelSensingClusterAttributes>): Promise<void>;
509
+ readAttributes(attributeNames: Array<keyof IlluminanceLevelSensingClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<IlluminanceLevelSensingClusterAttributes> & Record<number, unknown>>;
510
+ writeAttributes(attributes: Partial<IlluminanceLevelSensingClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
511
+ on<K extends keyof IlluminanceLevelSensingClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: IlluminanceLevelSensingClusterAttributes[K]) => void): this;
512
+ once<K extends keyof IlluminanceLevelSensingClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: IlluminanceLevelSensingClusterAttributes[K]) => void): this;
444
513
  }
445
514
 
446
515
  export interface IlluminanceMeasurementClusterAttributes {
@@ -453,7 +522,10 @@ export interface IlluminanceMeasurementClusterAttributes {
453
522
 
454
523
  export interface IlluminanceMeasurementCluster extends ZCLNodeCluster {
455
524
  readAttributes<K extends 'measuredValue' | 'minMeasuredValue' | 'maxMeasuredValue' | 'tolerance' | 'lightSensorType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<IlluminanceMeasurementClusterAttributes, K>>;
456
- writeAttributes(attributes: Partial<IlluminanceMeasurementClusterAttributes>): Promise<void>;
525
+ readAttributes(attributeNames: Array<keyof IlluminanceMeasurementClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<IlluminanceMeasurementClusterAttributes> & Record<number, unknown>>;
526
+ writeAttributes(attributes: Partial<IlluminanceMeasurementClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
527
+ on<K extends keyof IlluminanceMeasurementClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: IlluminanceMeasurementClusterAttributes[K]) => void): this;
528
+ once<K extends keyof IlluminanceMeasurementClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: IlluminanceMeasurementClusterAttributes[K]) => void): this;
457
529
  }
458
530
 
459
531
  export interface LevelControlClusterAttributes {
@@ -468,15 +540,18 @@ export interface LevelControlClusterAttributes {
468
540
 
469
541
  export interface LevelControlCluster extends ZCLNodeCluster {
470
542
  readAttributes<K extends 'currentLevel' | 'remainingTime' | 'onOffTransitionTime' | 'onLevel' | 'onTransitionTime' | 'offTransitionTime' | 'defaultMoveRate'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<LevelControlClusterAttributes, K>>;
471
- writeAttributes(attributes: Partial<LevelControlClusterAttributes>): Promise<void>;
472
- moveToLevel(args: { level: number; transitionTime: number }): Promise<void>;
473
- move(args: { moveMode: 'up' | 'down'; rate: number }): Promise<void>;
474
- step(args: { mode: 'up' | 'down'; stepSize: number; transitionTime: number }): Promise<void>;
475
- stop(): Promise<void>;
476
- moveToLevelWithOnOff(args: { level: number; transitionTime: number }): Promise<void>;
477
- moveWithOnOff(args: { moveMode: 'up' | 'down'; rate: number }): Promise<void>;
478
- stepWithOnOff(args: { mode: 'up' | 'down'; stepSize: number; transitionTime: number }): Promise<void>;
479
- stopWithOnOff(): Promise<void>;
543
+ readAttributes(attributeNames: Array<keyof LevelControlClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<LevelControlClusterAttributes> & Record<number, unknown>>;
544
+ writeAttributes(attributes: Partial<LevelControlClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
545
+ on<K extends keyof LevelControlClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: LevelControlClusterAttributes[K]) => void): this;
546
+ once<K extends keyof LevelControlClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: LevelControlClusterAttributes[K]) => void): this;
547
+ moveToLevel(args: { level: number; transitionTime: number }, opts?: ClusterCommandOptions): Promise<void>;
548
+ move(args: { moveMode: 'up' | 'down'; rate: number }, opts?: ClusterCommandOptions): Promise<void>;
549
+ step(args: { mode: 'up' | 'down'; stepSize: number; transitionTime: number }, opts?: ClusterCommandOptions): Promise<void>;
550
+ stop(opts?: ClusterCommandOptions): Promise<void>;
551
+ moveToLevelWithOnOff(args: { level: number; transitionTime: number }, opts?: ClusterCommandOptions): Promise<void>;
552
+ moveWithOnOff(args: { moveMode: 'up' | 'down'; rate: number }, opts?: ClusterCommandOptions): Promise<void>;
553
+ stepWithOnOff(args: { mode: 'up' | 'down'; stepSize: number; transitionTime: number }, opts?: ClusterCommandOptions): Promise<void>;
554
+ stopWithOnOff(opts?: ClusterCommandOptions): Promise<void>;
480
555
  }
481
556
 
482
557
  export interface MeteringClusterAttributes {
@@ -685,7 +760,10 @@ export interface MeteringClusterAttributes {
685
760
 
686
761
  export interface MeteringCluster extends ZCLNodeCluster {
687
762
  readAttributes<K extends 'currentSummationDelivered' | 'currentSummationReceived' | 'currentMaxDemandDelivered' | 'currentMaxDemandReceived' | 'dftSummation' | 'dailyFreezeTime' | 'powerFactor' | 'readingSnapShotTime' | 'currentMaxDemandDeliveredTime' | 'currentMaxDemandReceivedTime' | 'defaultUpdatePeriod' | 'fastPollUpdatePeriod' | 'currentBlockPeriodConsumptionDelivered' | 'dailyConsumptionTarget' | 'currentBlock' | 'profileIntervalPeriod' | 'currentTier1SummationDelivered' | 'currentTier1SummationReceived' | 'currentTier2SummationDelivered' | 'currentTier2SummationReceived' | 'currentTier3SummationDelivered' | 'currentTier3SummationReceived' | 'currentTier4SummationDelivered' | 'currentTier4SummationReceived' | 'status' | 'remainingBatteryLife' | 'hoursInOperation' | 'hoursInFault' | 'extendedStatus' | 'unitOfMeasure' | 'multiplier' | 'divisor' | 'summationFormatting' | 'demandFormatting' | 'historicalConsumptionFormatting' | 'meteringDeviceType' | 'siteId' | 'meterSerialNumber' | 'energyCarrierUnitOfMeasure' | 'energyCarrierSummationFormatting' | 'energyCarrierDemandFormatting' | 'temperatureUnitOfMeasure' | 'temperatureFormatting' | 'moduleSerialNumber' | 'operatingTariffLabelDelivered' | 'operatingTariffLabelReceived' | 'customerIdNumber' | 'alternativeUnitOfMeasure' | 'alternativeDemandFormatting' | 'alternativeConsumptionFormatting' | 'instantaneousDemand' | 'currentDayConsumptionDelivered' | 'currentDayConsumptionReceived' | 'previousDayConsumptionDelivered' | 'previousDayConsumptionReceived' | 'currentPartialProfileIntervalStartTimeDelivered' | 'currentPartialProfileIntervalStartTimeReceived' | 'currentPartialProfileIntervalValueDelivered' | 'currentPartialProfileIntervalValueReceived' | 'currentDayMaxPressure' | 'currentDayMinPressure' | 'previousDayMaxPressure' | 'previousDayMinPressure' | 'currentDayMaxDemand' | 'previousDayMaxDemand' | 'currentMonthMaxDemand' | 'currentYearMaxDemand' | 'currentDayMaxEnergyCarrierDemand' | 'previousDayMaxEnergyCarrierDemand' | 'currentMonthMaxEnergyCarrierDemand' | 'currentMonthMinEnergyCarrierDemand' | 'currentYearMaxEnergyCarrierDemand' | 'currentYearMinEnergyCarrierDemand' | 'maxNumberOfPeriodsDelivered' | 'currentDemandDelivered' | 'demandLimit' | 'demandIntegrationPeriod' | 'numberOfDemandSubintervals' | 'demandLimitArmDuration' | 'currentNoTierBlock1SummationDelivered' | 'currentNoTierBlock2SummationDelivered' | 'currentNoTierBlock3SummationDelivered' | 'currentNoTierBlock4SummationDelivered' | 'currentNoTierBlock5SummationDelivered' | 'currentNoTierBlock6SummationDelivered' | 'currentNoTierBlock7SummationDelivered' | 'currentNoTierBlock8SummationDelivered' | 'currentNoTierBlock9SummationDelivered' | 'currentNoTierBlock10SummationDelivered' | 'currentNoTierBlock11SummationDelivered' | 'currentNoTierBlock12SummationDelivered' | 'currentNoTierBlock13SummationDelivered' | 'currentNoTierBlock14SummationDelivered' | 'currentNoTierBlock15SummationDelivered' | 'currentNoTierBlock16SummationDelivered' | 'currentTier1Block1SummationDelivered' | 'currentTier1Block2SummationDelivered' | 'currentTier1Block3SummationDelivered' | 'currentTier1Block4SummationDelivered' | 'currentTier1Block5SummationDelivered' | 'currentTier1Block6SummationDelivered' | 'currentTier1Block7SummationDelivered' | 'currentTier1Block8SummationDelivered' | 'currentTier1Block9SummationDelivered' | 'currentTier1Block10SummationDelivered' | 'currentTier1Block11SummationDelivered' | 'currentTier1Block12SummationDelivered' | 'currentTier1Block13SummationDelivered' | 'currentTier1Block14SummationDelivered' | 'currentTier1Block15SummationDelivered' | 'currentTier1Block16SummationDelivered' | 'currentTier2Block1SummationDelivered' | 'currentTier2Block2SummationDelivered' | 'currentTier2Block3SummationDelivered' | 'currentTier2Block4SummationDelivered' | 'currentTier2Block5SummationDelivered' | 'currentTier2Block6SummationDelivered' | 'currentTier2Block7SummationDelivered' | 'currentTier2Block8SummationDelivered' | 'currentTier2Block9SummationDelivered' | 'currentTier2Block10SummationDelivered' | 'currentTier2Block11SummationDelivered' | 'currentTier2Block12SummationDelivered' | 'currentTier2Block13SummationDelivered' | 'currentTier2Block14SummationDelivered' | 'currentTier2Block15SummationDelivered' | 'currentTier2Block16SummationDelivered' | 'currentTier3Block1SummationDelivered' | 'currentTier3Block2SummationDelivered' | 'currentTier3Block3SummationDelivered' | 'currentTier3Block4SummationDelivered' | 'currentTier3Block5SummationDelivered' | 'currentTier3Block6SummationDelivered' | 'currentTier3Block7SummationDelivered' | 'currentTier3Block8SummationDelivered' | 'currentTier3Block9SummationDelivered' | 'currentTier3Block10SummationDelivered' | 'currentTier3Block11SummationDelivered' | 'currentTier3Block12SummationDelivered' | 'currentTier3Block13SummationDelivered' | 'currentTier3Block14SummationDelivered' | 'currentTier3Block15SummationDelivered' | 'currentTier3Block16SummationDelivered' | 'currentTier4Block1SummationDelivered' | 'currentTier4Block2SummationDelivered' | 'currentTier4Block3SummationDelivered' | 'currentTier4Block4SummationDelivered' | 'currentTier4Block5SummationDelivered' | 'currentTier4Block6SummationDelivered' | 'currentTier4Block7SummationDelivered' | 'currentTier4Block8SummationDelivered' | 'currentTier4Block9SummationDelivered' | 'currentTier4Block10SummationDelivered' | 'currentTier4Block11SummationDelivered' | 'currentTier4Block12SummationDelivered' | 'currentTier4Block13SummationDelivered' | 'currentTier4Block14SummationDelivered' | 'currentTier4Block15SummationDelivered' | 'currentTier4Block16SummationDelivered' | 'genericAlarmMask' | 'electricityAlarmMask' | 'genericFlowPressureAlarmMask' | 'waterSpecificAlarmMask' | 'heatAndCoolingSpecificAlarmMask' | 'gasSpecificAlarmMask' | 'extendedGenericAlarmMask' | 'manufacturerAlarmMask' | 'currentNoTierBlock1SummationReceived' | 'currentNoTierBlock2SummationReceived' | 'currentNoTierBlock3SummationReceived' | 'currentNoTierBlock4SummationReceived' | 'currentNoTierBlock5SummationReceived' | 'currentNoTierBlock6SummationReceived' | 'currentNoTierBlock7SummationReceived' | 'currentNoTierBlock8SummationReceived' | 'currentNoTierBlock9SummationReceived' | 'currentNoTierBlock10SummationReceived' | 'currentNoTierBlock11SummationReceived' | 'currentNoTierBlock12SummationReceived' | 'currentNoTierBlock13SummationReceived' | 'currentNoTierBlock14SummationReceived' | 'currentNoTierBlock15SummationReceived' | 'currentNoTierBlock16SummationReceived' | 'billToDateDelivered' | 'billToDateTimeStampDelivered' | 'projectedBillDelivered' | 'projectedBillTimeStampDelivered' | 'billDeliveredTrailingDigit' | 'billToDateReceived' | 'billToDateTimeStampReceived' | 'projectedBillReceived' | 'projectedBillTimeStampReceived' | 'billReceivedTrailingDigit' | 'proposedChangeSupplyImplementationTime' | 'proposedChangeSupplyStatus' | 'uncontrolledFlowThreshold' | 'uncontrolledFlowThresholdUnitOfMeasure' | 'uncontrolledFlowMultiplier' | 'uncontrolledFlowDivisor' | 'flowStabilisationPeriod' | 'flowMeasurementPeriod'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<MeteringClusterAttributes, K>>;
688
- writeAttributes(attributes: Partial<MeteringClusterAttributes>): Promise<void>;
763
+ readAttributes(attributeNames: Array<keyof MeteringClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<MeteringClusterAttributes> & Record<number, unknown>>;
764
+ writeAttributes(attributes: Partial<MeteringClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
765
+ on<K extends keyof MeteringClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: MeteringClusterAttributes[K]) => void): this;
766
+ once<K extends keyof MeteringClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: MeteringClusterAttributes[K]) => void): this;
689
767
  }
690
768
 
691
769
  export interface MultistateInputClusterAttributes {
@@ -700,7 +778,10 @@ export interface MultistateInputClusterAttributes {
700
778
 
701
779
  export interface MultistateInputCluster extends ZCLNodeCluster {
702
780
  readAttributes<K extends 'description' | 'numberOfStates' | 'outOfService' | 'presentValue' | 'reliability' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<MultistateInputClusterAttributes, K>>;
703
- writeAttributes(attributes: Partial<MultistateInputClusterAttributes>): Promise<void>;
781
+ readAttributes(attributeNames: Array<keyof MultistateInputClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<MultistateInputClusterAttributes> & Record<number, unknown>>;
782
+ writeAttributes(attributes: Partial<MultistateInputClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
783
+ on<K extends keyof MultistateInputClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: MultistateInputClusterAttributes[K]) => void): this;
784
+ once<K extends keyof MultistateInputClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: MultistateInputClusterAttributes[K]) => void): this;
704
785
  }
705
786
 
706
787
  export interface MultistateOutputClusterAttributes {
@@ -716,7 +797,10 @@ export interface MultistateOutputClusterAttributes {
716
797
 
717
798
  export interface MultistateOutputCluster extends ZCLNodeCluster {
718
799
  readAttributes<K extends 'description' | 'numberOfStates' | 'outOfService' | 'presentValue' | 'reliability' | 'relinquishDefault' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<MultistateOutputClusterAttributes, K>>;
719
- writeAttributes(attributes: Partial<MultistateOutputClusterAttributes>): Promise<void>;
800
+ readAttributes(attributeNames: Array<keyof MultistateOutputClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<MultistateOutputClusterAttributes> & Record<number, unknown>>;
801
+ writeAttributes(attributes: Partial<MultistateOutputClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
802
+ on<K extends keyof MultistateOutputClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: MultistateOutputClusterAttributes[K]) => void): this;
803
+ once<K extends keyof MultistateOutputClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: MultistateOutputClusterAttributes[K]) => void): this;
720
804
  }
721
805
 
722
806
  export interface MultistateValueClusterAttributes {
@@ -732,7 +816,10 @@ export interface MultistateValueClusterAttributes {
732
816
 
733
817
  export interface MultistateValueCluster extends ZCLNodeCluster {
734
818
  readAttributes<K extends 'description' | 'numberOfStates' | 'outOfService' | 'presentValue' | 'reliability' | 'relinquishDefault' | 'statusFlags' | 'applicationType'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<MultistateValueClusterAttributes, K>>;
735
- writeAttributes(attributes: Partial<MultistateValueClusterAttributes>): Promise<void>;
819
+ readAttributes(attributeNames: Array<keyof MultistateValueClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<MultistateValueClusterAttributes> & Record<number, unknown>>;
820
+ writeAttributes(attributes: Partial<MultistateValueClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
821
+ on<K extends keyof MultistateValueClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: MultistateValueClusterAttributes[K]) => void): this;
822
+ once<K extends keyof MultistateValueClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: MultistateValueClusterAttributes[K]) => void): this;
736
823
  }
737
824
 
738
825
  export interface OccupancySensingClusterAttributes {
@@ -752,7 +839,10 @@ export interface OccupancySensingClusterAttributes {
752
839
 
753
840
  export interface OccupancySensingCluster extends ZCLNodeCluster {
754
841
  readAttributes<K extends 'occupancy' | 'occupancySensorType' | 'occupancySensorTypeBitmap' | 'pirOccupiedToUnoccupiedDelay' | 'pirUnoccupiedToOccupiedDelay' | 'pirUnoccupiedToOccupiedThreshold' | 'ultrasonicOccupiedToUnoccupiedDelay' | 'ultrasonicUnoccupiedToOccupiedDelay' | 'ultrasonicUnoccupiedToOccupiedThreshold' | 'physicalContactOccupiedToUnoccupiedDelay' | 'physicalContactUnoccupiedToOccupiedDelay' | 'physicalContactUnoccupiedToOccupiedThreshold'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<OccupancySensingClusterAttributes, K>>;
755
- writeAttributes(attributes: Partial<OccupancySensingClusterAttributes>): Promise<void>;
842
+ readAttributes(attributeNames: Array<keyof OccupancySensingClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<OccupancySensingClusterAttributes> & Record<number, unknown>>;
843
+ writeAttributes(attributes: Partial<OccupancySensingClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
844
+ on<K extends keyof OccupancySensingClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: OccupancySensingClusterAttributes[K]) => void): this;
845
+ once<K extends keyof OccupancySensingClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: OccupancySensingClusterAttributes[K]) => void): this;
756
846
  }
757
847
 
758
848
  export interface OnOffClusterAttributes {
@@ -763,19 +853,22 @@ export interface OnOffClusterAttributes {
763
853
 
764
854
  export interface OnOffCluster extends ZCLNodeCluster {
765
855
  readAttributes<K extends 'onOff' | 'onTime' | 'offWaitTime'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<OnOffClusterAttributes, K>>;
766
- writeAttributes(attributes: Partial<OnOffClusterAttributes>): Promise<void>;
767
- setOff(): Promise<void>;
768
- setOn(): Promise<void>;
769
- toggle(): Promise<void>;
770
- offWithEffect(args: { effectIdentifier: number; effectVariant: number }): Promise<void>;
771
- onWithRecallGlobalScene(): Promise<void>;
772
- onWithTimedOff(args: { onOffControl: number; onTime: number; offWaitTime: number }): Promise<void>;
856
+ readAttributes(attributeNames: Array<keyof OnOffClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<OnOffClusterAttributes> & Record<number, unknown>>;
857
+ writeAttributes(attributes: Partial<OnOffClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
858
+ on<K extends keyof OnOffClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: OnOffClusterAttributes[K]) => void): this;
859
+ once<K extends keyof OnOffClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: OnOffClusterAttributes[K]) => void): this;
860
+ setOff(opts?: ClusterCommandOptions): Promise<void>;
861
+ setOn(opts?: ClusterCommandOptions): Promise<void>;
862
+ toggle(opts?: ClusterCommandOptions): Promise<void>;
863
+ offWithEffect(args: { effectIdentifier: number; effectVariant: number }, opts?: ClusterCommandOptions): Promise<void>;
864
+ onWithRecallGlobalScene(opts?: ClusterCommandOptions): Promise<void>;
865
+ onWithTimedOff(args: { onOffControl: number; onTime: number; offWaitTime: number }, opts?: ClusterCommandOptions): Promise<void>;
773
866
  }
774
867
 
775
868
  export interface OnOffSwitchCluster extends ZCLNodeCluster {
776
869
  }
777
870
 
778
- export interface OtaCluster extends ZCLNodeCluster {
871
+ export interface OTACluster extends ZCLNodeCluster {
779
872
  }
780
873
 
781
874
  export interface PollControlClusterAttributes {
@@ -790,10 +883,13 @@ export interface PollControlClusterAttributes {
790
883
 
791
884
  export interface PollControlCluster extends ZCLNodeCluster {
792
885
  readAttributes<K extends 'checkInInterval' | 'longPollInterval' | 'shortPollInterval' | 'fastPollTimeout' | 'checkInIntervalMin' | 'longPollIntervalMin' | 'fastPollTimeoutMax'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<PollControlClusterAttributes, K>>;
793
- writeAttributes(attributes: Partial<PollControlClusterAttributes>): Promise<void>;
794
- fastPollStop(): Promise<void>;
795
- setLongPollInterval(args: { newLongPollInterval: number }): Promise<void>;
796
- setShortPollInterval(args: { newShortPollInterval: number }): Promise<void>;
886
+ readAttributes(attributeNames: Array<keyof PollControlClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<PollControlClusterAttributes> & Record<number, unknown>>;
887
+ writeAttributes(attributes: Partial<PollControlClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
888
+ on<K extends keyof PollControlClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: PollControlClusterAttributes[K]) => void): this;
889
+ once<K extends keyof PollControlClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: PollControlClusterAttributes[K]) => void): this;
890
+ fastPollStop(opts?: ClusterCommandOptions): Promise<void>;
891
+ setLongPollInterval(args: { newLongPollInterval: number }, opts?: ClusterCommandOptions): Promise<void>;
892
+ setShortPollInterval(args: { newShortPollInterval: number }, opts?: ClusterCommandOptions): Promise<void>;
797
893
  }
798
894
 
799
895
  export interface PowerConfigurationClusterAttributes {
@@ -808,7 +904,10 @@ export interface PowerConfigurationClusterAttributes {
808
904
 
809
905
  export interface PowerConfigurationCluster extends ZCLNodeCluster {
810
906
  readAttributes<K extends 'batteryVoltage' | 'batteryPercentageRemaining' | 'batterySize' | 'batteryQuantity' | 'batteryRatedVoltage' | 'batteryVoltageMinThreshold' | 'batteryAlarmState'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<PowerConfigurationClusterAttributes, K>>;
811
- writeAttributes(attributes: Partial<PowerConfigurationClusterAttributes>): Promise<void>;
907
+ readAttributes(attributeNames: Array<keyof PowerConfigurationClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<PowerConfigurationClusterAttributes> & Record<number, unknown>>;
908
+ writeAttributes(attributes: Partial<PowerConfigurationClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
909
+ on<K extends keyof PowerConfigurationClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: PowerConfigurationClusterAttributes[K]) => void): this;
910
+ once<K extends keyof PowerConfigurationClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: PowerConfigurationClusterAttributes[K]) => void): this;
812
911
  }
813
912
 
814
913
  export interface PowerProfileCluster extends ZCLNodeCluster {
@@ -828,7 +927,10 @@ export interface PressureMeasurementClusterAttributes {
828
927
 
829
928
  export interface PressureMeasurementCluster extends ZCLNodeCluster {
830
929
  readAttributes<K extends 'measuredValue' | 'minMeasuredValue' | 'maxMeasuredValue' | 'tolerance' | 'scaledValue' | 'minScaledValue' | 'maxScaledValue' | 'scaledTolerance' | 'scale'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<PressureMeasurementClusterAttributes, K>>;
831
- writeAttributes(attributes: Partial<PressureMeasurementClusterAttributes>): Promise<void>;
930
+ readAttributes(attributeNames: Array<keyof PressureMeasurementClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<PressureMeasurementClusterAttributes> & Record<number, unknown>>;
931
+ writeAttributes(attributes: Partial<PressureMeasurementClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
932
+ on<K extends keyof PressureMeasurementClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: PressureMeasurementClusterAttributes[K]) => void): this;
933
+ once<K extends keyof PressureMeasurementClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: PressureMeasurementClusterAttributes[K]) => void): this;
832
934
  }
833
935
 
834
936
  export interface PumpConfigurationAndControlCluster extends ZCLNodeCluster {
@@ -843,7 +945,10 @@ export interface RelativeHumidityClusterAttributes {
843
945
 
844
946
  export interface RelativeHumidityCluster extends ZCLNodeCluster {
845
947
  readAttributes<K extends 'measuredValue' | 'minMeasuredValue' | 'maxMeasuredValue' | 'tolerance'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<RelativeHumidityClusterAttributes, K>>;
846
- writeAttributes(attributes: Partial<RelativeHumidityClusterAttributes>): Promise<void>;
948
+ readAttributes(attributeNames: Array<keyof RelativeHumidityClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<RelativeHumidityClusterAttributes> & Record<number, unknown>>;
949
+ writeAttributes(attributes: Partial<RelativeHumidityClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
950
+ on<K extends keyof RelativeHumidityClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: RelativeHumidityClusterAttributes[K]) => void): this;
951
+ once<K extends keyof RelativeHumidityClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: RelativeHumidityClusterAttributes[K]) => void): this;
847
952
  }
848
953
 
849
954
  export interface ScenesCluster extends ZCLNodeCluster {
@@ -860,7 +965,10 @@ export interface TemperatureMeasurementClusterAttributes {
860
965
 
861
966
  export interface TemperatureMeasurementCluster extends ZCLNodeCluster {
862
967
  readAttributes<K extends 'measuredValue' | 'minMeasuredValue' | 'maxMeasuredValue'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<TemperatureMeasurementClusterAttributes, K>>;
863
- writeAttributes(attributes: Partial<TemperatureMeasurementClusterAttributes>): Promise<void>;
968
+ readAttributes(attributeNames: Array<keyof TemperatureMeasurementClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<TemperatureMeasurementClusterAttributes> & Record<number, unknown>>;
969
+ writeAttributes(attributes: Partial<TemperatureMeasurementClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
970
+ on<K extends keyof TemperatureMeasurementClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: TemperatureMeasurementClusterAttributes[K]) => void): this;
971
+ once<K extends keyof TemperatureMeasurementClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: TemperatureMeasurementClusterAttributes[K]) => void): this;
864
972
  }
865
973
 
866
974
  export interface ThermostatClusterAttributes {
@@ -891,15 +999,18 @@ export interface ThermostatClusterAttributes {
891
999
 
892
1000
  export interface ThermostatCluster extends ZCLNodeCluster {
893
1001
  readAttributes<K extends 'localTemperature' | 'outdoorTemperature' | 'occupancy' | 'absMinHeatSetpointLimit' | 'absMaxHeatSetpointLimit' | 'absMinCoolSetpointLimit' | 'absMaxCoolSetpointLimit' | 'pICoolingDemand' | 'pIHeatingDemand' | 'localTemperatureCalibration' | 'occupiedCoolingSetpoint' | 'occupiedHeatingSetpoint' | 'unoccupiedCoolingSetpoint' | 'unoccupiedHeatingSetpoint' | 'minHeatSetpointLimit' | 'maxHeatSetpointLimit' | 'minCoolSetpointLimit' | 'maxCoolSetpointLimit' | 'minSetpointDeadBand' | 'remoteSensing' | 'controlSequenceOfOperation' | 'systemMode' | 'alarmMask'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<ThermostatClusterAttributes, K>>;
894
- writeAttributes(attributes: Partial<ThermostatClusterAttributes>): Promise<void>;
895
- setSetpoint(args: { mode: 'heat' | 'cool' | 'both'; amount: number }): Promise<void>;
1002
+ readAttributes(attributeNames: Array<keyof ThermostatClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<ThermostatClusterAttributes> & Record<number, unknown>>;
1003
+ writeAttributes(attributes: Partial<ThermostatClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
1004
+ on<K extends keyof ThermostatClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: ThermostatClusterAttributes[K]) => void): this;
1005
+ once<K extends keyof ThermostatClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: ThermostatClusterAttributes[K]) => void): this;
1006
+ setSetpoint(args: { mode: 'heat' | 'cool' | 'both'; amount: number }, opts?: ClusterCommandOptions): Promise<void>;
896
1007
  }
897
1008
 
898
1009
  export interface TimeCluster extends ZCLNodeCluster {
899
1010
  }
900
1011
 
901
- export interface TouchlinkCluster extends ZCLNodeCluster {
902
- getGroups(args: { startIdx: number }): Promise<{ total: number; startIndex: number; groups: unknown[] }>;
1012
+ export interface TouchLinkCluster extends ZCLNodeCluster {
1013
+ getGroups(args: { startIdx: number }, opts?: ClusterCommandOptions): Promise<{ total: number; startIndex: number; groups: unknown[] }>;
903
1014
  }
904
1015
 
905
1016
  export interface WindowCoveringClusterAttributes {
@@ -927,14 +1038,17 @@ export interface WindowCoveringClusterAttributes {
927
1038
 
928
1039
  export interface WindowCoveringCluster extends ZCLNodeCluster {
929
1040
  readAttributes<K extends 'windowCoveringType' | 'physicalClosedLimitLift' | 'physicalClosedLimitTilt' | 'currentPositionLift' | 'currentPositionTilt' | 'numberofActuationsLift' | 'numberofActuationsTilt' | 'configStatus' | 'currentPositionLiftPercentage' | 'currentPositionTiltPercentage' | 'installedOpenLimitLift' | 'installedClosedLimitLift' | 'installedOpenLimitTilt' | 'installedClosedLimitTilt' | 'velocityLift' | 'accelerationTimeLift' | 'decelerationTimeLift' | 'mode' | 'intermediateSetpointsLift' | 'intermediateSetpointsTilt'>(attributeNames: K[], opts?: { timeout?: number }): Promise<Pick<WindowCoveringClusterAttributes, K>>;
930
- writeAttributes(attributes: Partial<WindowCoveringClusterAttributes>): Promise<void>;
931
- upOpen(): Promise<void>;
932
- downClose(): Promise<void>;
933
- stop(): Promise<void>;
934
- goToLiftValue(args: { liftValue: number }): Promise<void>;
935
- goToLiftPercentage(args: { percentageLiftValue: number }): Promise<void>;
936
- goToTiltValue(args: { tiltValue: number }): Promise<void>;
937
- goToTiltPercentage(args: { percentageTiltValue: number }): Promise<void>;
1041
+ readAttributes(attributeNames: Array<keyof WindowCoveringClusterAttributes | number>, opts?: { timeout?: number }): Promise<Partial<WindowCoveringClusterAttributes> & Record<number, unknown>>;
1042
+ writeAttributes(attributes: Partial<WindowCoveringClusterAttributes>, opts?: { timeout?: number }): Promise<unknown>;
1043
+ on<K extends keyof WindowCoveringClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: WindowCoveringClusterAttributes[K]) => void): this;
1044
+ once<K extends keyof WindowCoveringClusterAttributes & string>(eventName: `attr.${K}`, listener: (value: WindowCoveringClusterAttributes[K]) => void): this;
1045
+ upOpen(opts?: ClusterCommandOptions): Promise<void>;
1046
+ downClose(opts?: ClusterCommandOptions): Promise<void>;
1047
+ stop(opts?: ClusterCommandOptions): Promise<void>;
1048
+ goToLiftValue(args: { liftValue: number }, opts?: ClusterCommandOptions): Promise<void>;
1049
+ goToLiftPercentage(args: { percentageLiftValue: number }, opts?: ClusterCommandOptions): Promise<void>;
1050
+ goToTiltValue(args: { tiltValue: number }, opts?: ClusterCommandOptions): Promise<void>;
1051
+ goToTiltPercentage(args: { percentageTiltValue: number }, opts?: ClusterCommandOptions): Promise<void>;
938
1052
  }
939
1053
 
940
1054
  /** Type-safe cluster registry */
@@ -957,9 +1071,9 @@ export interface ClusterRegistry {
957
1071
  fanControl?: FanControlCluster;
958
1072
  flowMeasurement?: FlowMeasurementCluster;
959
1073
  groups?: GroupsCluster;
960
- iasACE?: IasACECluster;
961
- iasWD?: IasWDCluster;
962
- iasZone?: IasZoneCluster;
1074
+ iasACE?: IASACECluster;
1075
+ iasWD?: IASWDCluster;
1076
+ iasZone?: IASZoneCluster;
963
1077
  identify?: IdentifyCluster;
964
1078
  illuminanceLevelSensing?: IlluminanceLevelSensingCluster;
965
1079
  illuminanceMeasurement?: IlluminanceMeasurementCluster;
@@ -971,7 +1085,7 @@ export interface ClusterRegistry {
971
1085
  occupancySensing?: OccupancySensingCluster;
972
1086
  onOff?: OnOffCluster;
973
1087
  onOffSwitch?: OnOffSwitchCluster;
974
- ota?: OtaCluster;
1088
+ ota?: OTACluster;
975
1089
  pollControl?: PollControlCluster;
976
1090
  powerConfiguration?: PowerConfigurationCluster;
977
1091
  powerProfile?: PowerProfileCluster;
@@ -983,10 +1097,122 @@ export interface ClusterRegistry {
983
1097
  temperatureMeasurement?: TemperatureMeasurementCluster;
984
1098
  thermostat?: ThermostatCluster;
985
1099
  time?: TimeCluster;
986
- touchlink?: TouchlinkCluster;
1100
+ touchlink?: TouchLinkCluster;
987
1101
  windowCovering?: WindowCoveringCluster;
988
1102
  }
989
1103
 
1104
+ /** Cluster type lookup by cluster NAME */
1105
+ export interface ClusterTypeByName {
1106
+ alarms: AlarmsCluster;
1107
+ analogInput: AnalogInputCluster;
1108
+ analogOutput: AnalogOutputCluster;
1109
+ analogValue: AnalogValueCluster;
1110
+ ballastConfiguration: BallastConfigurationCluster;
1111
+ basic: BasicCluster;
1112
+ binaryInput: BinaryInputCluster;
1113
+ binaryOutput: BinaryOutputCluster;
1114
+ binaryValue: BinaryValueCluster;
1115
+ colorControl: ColorControlCluster;
1116
+ dehumidificationControl: DehumidificationControlCluster;
1117
+ deviceTemperature: DeviceTemperatureCluster;
1118
+ diagnostics: DiagnosticsCluster;
1119
+ doorLock: DoorLockCluster;
1120
+ electricalMeasurement: ElectricalMeasurementCluster;
1121
+ fanControl: FanControlCluster;
1122
+ flowMeasurement: FlowMeasurementCluster;
1123
+ groups: GroupsCluster;
1124
+ iasACE: IASACECluster;
1125
+ iasWD: IASWDCluster;
1126
+ iasZone: IASZoneCluster;
1127
+ identify: IdentifyCluster;
1128
+ illuminanceLevelSensing: IlluminanceLevelSensingCluster;
1129
+ illuminanceMeasurement: IlluminanceMeasurementCluster;
1130
+ levelControl: LevelControlCluster;
1131
+ metering: MeteringCluster;
1132
+ multistateInput: MultistateInputCluster;
1133
+ multistateOutput: MultistateOutputCluster;
1134
+ multistateValue: MultistateValueCluster;
1135
+ occupancySensing: OccupancySensingCluster;
1136
+ onOff: OnOffCluster;
1137
+ onOffSwitch: OnOffSwitchCluster;
1138
+ ota: OTACluster;
1139
+ pollControl: PollControlCluster;
1140
+ powerConfiguration: PowerConfigurationCluster;
1141
+ powerProfile: PowerProfileCluster;
1142
+ pressureMeasurement: PressureMeasurementCluster;
1143
+ pumpConfigurationAndControl: PumpConfigurationAndControlCluster;
1144
+ relativeHumidity: RelativeHumidityCluster;
1145
+ scenes: ScenesCluster;
1146
+ shadeConfiguration: ShadeConfigurationCluster;
1147
+ temperatureMeasurement: TemperatureMeasurementCluster;
1148
+ thermostat: ThermostatCluster;
1149
+ time: TimeCluster;
1150
+ touchlink: TouchLinkCluster;
1151
+ windowCovering: WindowCoveringCluster;
1152
+ }
1153
+
1154
+ /** Cluster attributes lookup by cluster NAME */
1155
+ export interface ClusterAttributesByName {
1156
+ alarms: Record<string, unknown>;
1157
+ analogInput: AnalogInputClusterAttributes;
1158
+ analogOutput: AnalogOutputClusterAttributes;
1159
+ analogValue: AnalogValueClusterAttributes;
1160
+ ballastConfiguration: BallastConfigurationClusterAttributes;
1161
+ basic: BasicClusterAttributes;
1162
+ binaryInput: BinaryInputClusterAttributes;
1163
+ binaryOutput: BinaryOutputClusterAttributes;
1164
+ binaryValue: BinaryValueClusterAttributes;
1165
+ colorControl: ColorControlClusterAttributes;
1166
+ dehumidificationControl: Record<string, unknown>;
1167
+ deviceTemperature: DeviceTemperatureClusterAttributes;
1168
+ diagnostics: Record<string, unknown>;
1169
+ doorLock: DoorLockClusterAttributes;
1170
+ electricalMeasurement: ElectricalMeasurementClusterAttributes;
1171
+ fanControl: Record<string, unknown>;
1172
+ flowMeasurement: FlowMeasurementClusterAttributes;
1173
+ groups: GroupsClusterAttributes;
1174
+ iasACE: Record<string, unknown>;
1175
+ iasWD: Record<string, unknown>;
1176
+ iasZone: IASZoneClusterAttributes;
1177
+ identify: IdentifyClusterAttributes;
1178
+ illuminanceLevelSensing: IlluminanceLevelSensingClusterAttributes;
1179
+ illuminanceMeasurement: IlluminanceMeasurementClusterAttributes;
1180
+ levelControl: LevelControlClusterAttributes;
1181
+ metering: MeteringClusterAttributes;
1182
+ multistateInput: MultistateInputClusterAttributes;
1183
+ multistateOutput: MultistateOutputClusterAttributes;
1184
+ multistateValue: MultistateValueClusterAttributes;
1185
+ occupancySensing: OccupancySensingClusterAttributes;
1186
+ onOff: OnOffClusterAttributes;
1187
+ onOffSwitch: Record<string, unknown>;
1188
+ ota: Record<string, unknown>;
1189
+ pollControl: PollControlClusterAttributes;
1190
+ powerConfiguration: PowerConfigurationClusterAttributes;
1191
+ powerProfile: Record<string, unknown>;
1192
+ pressureMeasurement: PressureMeasurementClusterAttributes;
1193
+ pumpConfigurationAndControl: Record<string, unknown>;
1194
+ relativeHumidity: RelativeHumidityClusterAttributes;
1195
+ scenes: Record<string, unknown>;
1196
+ shadeConfiguration: Record<string, unknown>;
1197
+ temperatureMeasurement: TemperatureMeasurementClusterAttributes;
1198
+ thermostat: ThermostatClusterAttributes;
1199
+ time: Record<string, unknown>;
1200
+ touchlink: Record<string, unknown>;
1201
+ windowCovering: WindowCoveringClusterAttributes;
1202
+ }
1203
+
1204
+ /** Infer a typed cluster interface from a CLUSTER definition object. */
1205
+ export type ClusterTypeFromDefinition<TDef extends { NAME: string; ID: number }> =
1206
+ TDef['NAME'] extends keyof ClusterTypeByName
1207
+ ? ClusterTypeByName[TDef['NAME']]
1208
+ : ZCLNodeCluster;
1209
+
1210
+ /** Infer typed cluster attribute map from a CLUSTER definition object. */
1211
+ export type ClusterAttributesFromDefinition<TDef extends { NAME: string; ID: number }> =
1212
+ TDef['NAME'] extends keyof ClusterAttributesByName
1213
+ ? ClusterAttributesByName[TDef['NAME']]
1214
+ : Record<string, unknown>;
1215
+
990
1216
  export type ZCLNodeEndpoint = {
991
1217
  clusters: ClusterRegistry & {
992
1218
  [clusterName: string]: ZCLNodeCluster | undefined;
@@ -1003,58 +1229,654 @@ export interface ZCLNode {
1003
1229
  ) => Promise<void>;
1004
1230
  }
1005
1231
 
1006
- declare module "zigbee-clusters" {
1007
- export const ZCLNode: {
1008
- new (options: ConstructorOptions): ZCLNode;
1232
+ export const ZCLNode: {
1233
+ new (node: ZCLNodeConstructorInput): ZCLNode;
1234
+ };
1235
+
1236
+ export const CLUSTER: {
1237
+
1238
+ ALARMS: {
1239
+ ID: number;
1240
+ NAME: 'alarms';
1241
+ ATTRIBUTES: unknown;
1242
+ COMMANDS: unknown;
1243
+ };
1244
+ ANALOG_INPUT: {
1245
+ ID: number;
1246
+ NAME: 'analogInput';
1247
+ ATTRIBUTES: unknown;
1248
+ COMMANDS: unknown;
1249
+ };
1250
+ ANALOG_OUTPUT: {
1251
+ ID: number;
1252
+ NAME: 'analogOutput';
1253
+ ATTRIBUTES: unknown;
1254
+ COMMANDS: unknown;
1255
+ };
1256
+ ANALOG_VALUE: {
1257
+ ID: number;
1258
+ NAME: 'analogValue';
1259
+ ATTRIBUTES: unknown;
1260
+ COMMANDS: unknown;
1261
+ };
1262
+ BALLAST_CONFIGURATION: {
1263
+ ID: number;
1264
+ NAME: 'ballastConfiguration';
1265
+ ATTRIBUTES: unknown;
1266
+ COMMANDS: unknown;
1267
+ };
1268
+ BASIC: {
1269
+ ID: number;
1270
+ NAME: 'basic';
1271
+ ATTRIBUTES: unknown;
1272
+ COMMANDS: unknown;
1273
+ };
1274
+ BINARY_INPUT: {
1275
+ ID: number;
1276
+ NAME: 'binaryInput';
1277
+ ATTRIBUTES: unknown;
1278
+ COMMANDS: unknown;
1279
+ };
1280
+ BINARY_OUTPUT: {
1281
+ ID: number;
1282
+ NAME: 'binaryOutput';
1283
+ ATTRIBUTES: unknown;
1284
+ COMMANDS: unknown;
1285
+ };
1286
+ BINARY_VALUE: {
1287
+ ID: number;
1288
+ NAME: 'binaryValue';
1289
+ ATTRIBUTES: unknown;
1290
+ COMMANDS: unknown;
1291
+ };
1292
+ COLOR_CONTROL: {
1293
+ ID: number;
1294
+ NAME: 'colorControl';
1295
+ ATTRIBUTES: unknown;
1296
+ COMMANDS: unknown;
1297
+ };
1298
+ DEVICE_TEMPERATURE: {
1299
+ ID: number;
1300
+ NAME: 'deviceTemperature';
1301
+ ATTRIBUTES: unknown;
1302
+ COMMANDS: unknown;
1303
+ };
1304
+ DIAGNOSTICS: {
1305
+ ID: number;
1306
+ NAME: 'diagnostics';
1307
+ ATTRIBUTES: unknown;
1308
+ COMMANDS: unknown;
1309
+ };
1310
+ DOOR_LOCK: {
1311
+ ID: number;
1312
+ NAME: 'doorLock';
1313
+ ATTRIBUTES: unknown;
1314
+ COMMANDS: unknown;
1315
+ };
1316
+ ELECTRICAL_MEASUREMENT: {
1317
+ ID: number;
1318
+ NAME: 'electricalMeasurement';
1319
+ ATTRIBUTES: unknown;
1320
+ COMMANDS: unknown;
1321
+ };
1322
+ FAN_CONTROL: {
1323
+ ID: number;
1324
+ NAME: 'fanControl';
1325
+ ATTRIBUTES: unknown;
1326
+ COMMANDS: unknown;
1327
+ };
1328
+ FLOW_MEASUREMENT: {
1329
+ ID: number;
1330
+ NAME: 'flowMeasurement';
1331
+ ATTRIBUTES: unknown;
1332
+ COMMANDS: unknown;
1333
+ };
1334
+ GROUPS: {
1335
+ ID: number;
1336
+ NAME: 'groups';
1337
+ ATTRIBUTES: unknown;
1338
+ COMMANDS: unknown;
1339
+ };
1340
+ IAS_ACE: {
1341
+ ID: number;
1342
+ NAME: 'iasACE';
1343
+ ATTRIBUTES: unknown;
1344
+ COMMANDS: unknown;
1345
+ };
1346
+ IAS_WD: {
1347
+ ID: number;
1348
+ NAME: 'iasWD';
1349
+ ATTRIBUTES: unknown;
1350
+ COMMANDS: unknown;
1351
+ };
1352
+ IAS_ZONE: {
1353
+ ID: number;
1354
+ NAME: 'iasZone';
1355
+ ATTRIBUTES: unknown;
1356
+ COMMANDS: unknown;
1357
+ };
1358
+ IDENTIFY: {
1359
+ ID: number;
1360
+ NAME: 'identify';
1361
+ ATTRIBUTES: unknown;
1362
+ COMMANDS: unknown;
1363
+ };
1364
+ ILLUMINANCE_LEVEL_SENSING: {
1365
+ ID: number;
1366
+ NAME: 'illuminanceLevelSensing';
1367
+ ATTRIBUTES: unknown;
1368
+ COMMANDS: unknown;
1369
+ };
1370
+ ILLUMINANCE_MEASUREMENT: {
1371
+ ID: number;
1372
+ NAME: 'illuminanceMeasurement';
1373
+ ATTRIBUTES: unknown;
1374
+ COMMANDS: unknown;
1375
+ };
1376
+ LEVEL_CONTROL: {
1377
+ ID: number;
1378
+ NAME: 'levelControl';
1379
+ ATTRIBUTES: unknown;
1380
+ COMMANDS: unknown;
1381
+ };
1382
+ METERING: {
1383
+ ID: number;
1384
+ NAME: 'metering';
1385
+ ATTRIBUTES: unknown;
1386
+ COMMANDS: unknown;
1387
+ };
1388
+ MULTI_STATE_INPUT: {
1389
+ ID: number;
1390
+ NAME: 'multistateInput';
1391
+ ATTRIBUTES: unknown;
1392
+ COMMANDS: unknown;
1393
+ };
1394
+ MULTI_STATE_OUTPUT: {
1395
+ ID: number;
1396
+ NAME: 'multistateOutput';
1397
+ ATTRIBUTES: unknown;
1398
+ COMMANDS: unknown;
1399
+ };
1400
+ MULTI_STATE_VALUE: {
1401
+ ID: number;
1402
+ NAME: 'multistateValue';
1403
+ ATTRIBUTES: unknown;
1404
+ COMMANDS: unknown;
1405
+ };
1406
+ OCCUPANCY_SENSING: {
1407
+ ID: number;
1408
+ NAME: 'occupancySensing';
1409
+ ATTRIBUTES: unknown;
1410
+ COMMANDS: unknown;
1411
+ };
1412
+ ON_OFF: {
1413
+ ID: number;
1414
+ NAME: 'onOff';
1415
+ ATTRIBUTES: unknown;
1416
+ COMMANDS: unknown;
1417
+ };
1418
+ ON_OFF_SWITCH: {
1419
+ ID: number;
1420
+ NAME: 'onOffSwitch';
1421
+ ATTRIBUTES: unknown;
1422
+ COMMANDS: unknown;
1423
+ };
1424
+ OTA: {
1425
+ ID: number;
1426
+ NAME: 'ota';
1427
+ ATTRIBUTES: unknown;
1428
+ COMMANDS: unknown;
1429
+ };
1430
+ POLL_CONTROL: {
1431
+ ID: number;
1432
+ NAME: 'pollControl';
1433
+ ATTRIBUTES: unknown;
1434
+ COMMANDS: unknown;
1435
+ };
1436
+ POWER_CONFIGURATION: {
1437
+ ID: number;
1438
+ NAME: 'powerConfiguration';
1439
+ ATTRIBUTES: unknown;
1440
+ COMMANDS: unknown;
1441
+ };
1442
+ POWER_PROFILE: {
1443
+ ID: number;
1444
+ NAME: 'powerProfile';
1445
+ ATTRIBUTES: unknown;
1446
+ COMMANDS: unknown;
1447
+ };
1448
+ PRESSURE_MEASUREMENT: {
1449
+ ID: number;
1450
+ NAME: 'pressureMeasurement';
1451
+ ATTRIBUTES: unknown;
1452
+ COMMANDS: unknown;
1453
+ };
1454
+ PUMP_CONFIGURATION_AND_CONTROL: {
1455
+ ID: number;
1456
+ NAME: 'pumpConfigurationAndControl';
1457
+ ATTRIBUTES: unknown;
1458
+ COMMANDS: unknown;
1459
+ };
1460
+ RELATIVE_HUMIDITY_MEASUREMENT: {
1461
+ ID: number;
1462
+ NAME: 'relativeHumidity';
1463
+ ATTRIBUTES: unknown;
1464
+ COMMANDS: unknown;
1465
+ };
1466
+ SCENES: {
1467
+ ID: number;
1468
+ NAME: 'scenes';
1469
+ ATTRIBUTES: unknown;
1470
+ COMMANDS: unknown;
1471
+ };
1472
+ SHADE_CONFIGURATION: {
1473
+ ID: number;
1474
+ NAME: 'shadeConfiguration';
1475
+ ATTRIBUTES: unknown;
1476
+ COMMANDS: unknown;
1009
1477
  };
1010
- export const CLUSTER: {
1011
- [key: string]: { ID: number; NAME: string; ATTRIBUTES: unknown; COMMANDS: unknown };
1478
+ TEMPERATURE_MEASUREMENT: {
1479
+ ID: number;
1480
+ NAME: 'temperatureMeasurement';
1481
+ ATTRIBUTES: unknown;
1482
+ COMMANDS: unknown;
1012
1483
  };
1013
- export { ZCLNodeCluster };
1014
- export const AlarmsCluster: AlarmsCluster;
1015
- export const AnalogInputCluster: AnalogInputCluster;
1016
- export const AnalogOutputCluster: AnalogOutputCluster;
1017
- export const AnalogValueCluster: AnalogValueCluster;
1018
- export const BallastConfigurationCluster: BallastConfigurationCluster;
1019
- export const BasicCluster: BasicCluster;
1020
- export const BinaryInputCluster: BinaryInputCluster;
1021
- export const BinaryOutputCluster: BinaryOutputCluster;
1022
- export const BinaryValueCluster: BinaryValueCluster;
1023
- export const ColorControlCluster: ColorControlCluster;
1024
- export const DehumidificationControlCluster: DehumidificationControlCluster;
1025
- export const DeviceTemperatureCluster: DeviceTemperatureCluster;
1026
- export const DiagnosticsCluster: DiagnosticsCluster;
1027
- export const DoorLockCluster: DoorLockCluster;
1028
- export const ElectricalMeasurementCluster: ElectricalMeasurementCluster;
1029
- export const FanControlCluster: FanControlCluster;
1030
- export const FlowMeasurementCluster: FlowMeasurementCluster;
1031
- export const GroupsCluster: GroupsCluster;
1032
- export const IasACECluster: IasACECluster;
1033
- export const IasWDCluster: IasWDCluster;
1034
- export const IasZoneCluster: IasZoneCluster;
1035
- export const IdentifyCluster: IdentifyCluster;
1036
- export const IlluminanceLevelSensingCluster: IlluminanceLevelSensingCluster;
1037
- export const IlluminanceMeasurementCluster: IlluminanceMeasurementCluster;
1038
- export const LevelControlCluster: LevelControlCluster;
1039
- export const MeteringCluster: MeteringCluster;
1040
- export const MultistateInputCluster: MultistateInputCluster;
1041
- export const MultistateOutputCluster: MultistateOutputCluster;
1042
- export const MultistateValueCluster: MultistateValueCluster;
1043
- export const OccupancySensingCluster: OccupancySensingCluster;
1044
- export const OnOffCluster: OnOffCluster;
1045
- export const OnOffSwitchCluster: OnOffSwitchCluster;
1046
- export const OtaCluster: OtaCluster;
1047
- export const PollControlCluster: PollControlCluster;
1048
- export const PowerConfigurationCluster: PowerConfigurationCluster;
1049
- export const PowerProfileCluster: PowerProfileCluster;
1050
- export const PressureMeasurementCluster: PressureMeasurementCluster;
1051
- export const PumpConfigurationAndControlCluster: PumpConfigurationAndControlCluster;
1052
- export const RelativeHumidityCluster: RelativeHumidityCluster;
1053
- export const ScenesCluster: ScenesCluster;
1054
- export const ShadeConfigurationCluster: ShadeConfigurationCluster;
1055
- export const TemperatureMeasurementCluster: TemperatureMeasurementCluster;
1056
- export const ThermostatCluster: ThermostatCluster;
1057
- export const TimeCluster: TimeCluster;
1058
- export const TouchlinkCluster: TouchlinkCluster;
1059
- export const WindowCoveringCluster: WindowCoveringCluster;
1060
- }
1484
+ THERMOSTAT: {
1485
+ ID: number;
1486
+ NAME: 'thermostat';
1487
+ ATTRIBUTES: unknown;
1488
+ COMMANDS: unknown;
1489
+ };
1490
+ TIME: {
1491
+ ID: number;
1492
+ NAME: 'time';
1493
+ ATTRIBUTES: unknown;
1494
+ COMMANDS: unknown;
1495
+ };
1496
+ TOUCHLINK: {
1497
+ ID: number;
1498
+ NAME: 'touchlink';
1499
+ ATTRIBUTES: unknown;
1500
+ COMMANDS: unknown;
1501
+ };
1502
+ WINDOW_COVERING: {
1503
+ ID: number;
1504
+ NAME: 'windowCovering';
1505
+ ATTRIBUTES: unknown;
1506
+ COMMANDS: unknown;
1507
+ };
1508
+ };
1509
+ export const AlarmsCluster: {
1510
+ new (...args: any[]): AlarmsCluster;
1511
+ ID: 9;
1512
+ NAME: 'alarms';
1513
+ ATTRIBUTES: unknown;
1514
+ COMMANDS: unknown;
1515
+ };
1516
+ export const AnalogInputCluster: {
1517
+ new (...args: any[]): AnalogInputCluster;
1518
+ ID: 12;
1519
+ NAME: 'analogInput';
1520
+ ATTRIBUTES: unknown;
1521
+ COMMANDS: unknown;
1522
+ };
1523
+ export const AnalogOutputCluster: {
1524
+ new (...args: any[]): AnalogOutputCluster;
1525
+ ID: 13;
1526
+ NAME: 'analogOutput';
1527
+ ATTRIBUTES: unknown;
1528
+ COMMANDS: unknown;
1529
+ };
1530
+ export const AnalogValueCluster: {
1531
+ new (...args: any[]): AnalogValueCluster;
1532
+ ID: 14;
1533
+ NAME: 'analogValue';
1534
+ ATTRIBUTES: unknown;
1535
+ COMMANDS: unknown;
1536
+ };
1537
+ export const BallastConfigurationCluster: {
1538
+ new (...args: any[]): BallastConfigurationCluster;
1539
+ ID: 769;
1540
+ NAME: 'ballastConfiguration';
1541
+ ATTRIBUTES: unknown;
1542
+ COMMANDS: unknown;
1543
+ };
1544
+ export const BasicCluster: {
1545
+ new (...args: any[]): BasicCluster;
1546
+ ID: 0;
1547
+ NAME: 'basic';
1548
+ ATTRIBUTES: unknown;
1549
+ COMMANDS: unknown;
1550
+ };
1551
+ export const BinaryInputCluster: {
1552
+ new (...args: any[]): BinaryInputCluster;
1553
+ ID: 15;
1554
+ NAME: 'binaryInput';
1555
+ ATTRIBUTES: unknown;
1556
+ COMMANDS: unknown;
1557
+ };
1558
+ export const BinaryOutputCluster: {
1559
+ new (...args: any[]): BinaryOutputCluster;
1560
+ ID: 16;
1561
+ NAME: 'binaryOutput';
1562
+ ATTRIBUTES: unknown;
1563
+ COMMANDS: unknown;
1564
+ };
1565
+ export const BinaryValueCluster: {
1566
+ new (...args: any[]): BinaryValueCluster;
1567
+ ID: 17;
1568
+ NAME: 'binaryValue';
1569
+ ATTRIBUTES: unknown;
1570
+ COMMANDS: unknown;
1571
+ };
1572
+ export const ColorControlCluster: {
1573
+ new (...args: any[]): ColorControlCluster;
1574
+ ID: 768;
1575
+ NAME: 'colorControl';
1576
+ ATTRIBUTES: unknown;
1577
+ COMMANDS: unknown;
1578
+ };
1579
+ export const DehumidificationControlCluster: {
1580
+ new (...args: any[]): DehumidificationControlCluster;
1581
+ ID: 515;
1582
+ NAME: 'dehumidificationControl';
1583
+ ATTRIBUTES: unknown;
1584
+ COMMANDS: unknown;
1585
+ };
1586
+ export const DeviceTemperatureCluster: {
1587
+ new (...args: any[]): DeviceTemperatureCluster;
1588
+ ID: 2;
1589
+ NAME: 'deviceTemperature';
1590
+ ATTRIBUTES: unknown;
1591
+ COMMANDS: unknown;
1592
+ };
1593
+ export const DiagnosticsCluster: {
1594
+ new (...args: any[]): DiagnosticsCluster;
1595
+ ID: 2821;
1596
+ NAME: 'diagnostics';
1597
+ ATTRIBUTES: unknown;
1598
+ COMMANDS: unknown;
1599
+ };
1600
+ export const DoorLockCluster: {
1601
+ new (...args: any[]): DoorLockCluster;
1602
+ ID: 257;
1603
+ NAME: 'doorLock';
1604
+ ATTRIBUTES: unknown;
1605
+ COMMANDS: unknown;
1606
+ };
1607
+ export const ElectricalMeasurementCluster: {
1608
+ new (...args: any[]): ElectricalMeasurementCluster;
1609
+ ID: 2820;
1610
+ NAME: 'electricalMeasurement';
1611
+ ATTRIBUTES: unknown;
1612
+ COMMANDS: unknown;
1613
+ };
1614
+ export const FanControlCluster: {
1615
+ new (...args: any[]): FanControlCluster;
1616
+ ID: 514;
1617
+ NAME: 'fanControl';
1618
+ ATTRIBUTES: unknown;
1619
+ COMMANDS: unknown;
1620
+ };
1621
+ export const FlowMeasurementCluster: {
1622
+ new (...args: any[]): FlowMeasurementCluster;
1623
+ ID: 1028;
1624
+ NAME: 'flowMeasurement';
1625
+ ATTRIBUTES: unknown;
1626
+ COMMANDS: unknown;
1627
+ };
1628
+ export const GroupsCluster: {
1629
+ new (...args: any[]): GroupsCluster;
1630
+ ID: 4;
1631
+ NAME: 'groups';
1632
+ ATTRIBUTES: unknown;
1633
+ COMMANDS: unknown;
1634
+ };
1635
+ export const IASACECluster: {
1636
+ new (...args: any[]): IASACECluster;
1637
+ ID: 1281;
1638
+ NAME: 'iasACE';
1639
+ ATTRIBUTES: unknown;
1640
+ COMMANDS: unknown;
1641
+ };
1642
+ export const IASWDCluster: {
1643
+ new (...args: any[]): IASWDCluster;
1644
+ ID: 1282;
1645
+ NAME: 'iasWD';
1646
+ ATTRIBUTES: unknown;
1647
+ COMMANDS: unknown;
1648
+ };
1649
+ export const IASZoneCluster: {
1650
+ new (...args: any[]): IASZoneCluster;
1651
+ ID: 1280;
1652
+ NAME: 'iasZone';
1653
+ ATTRIBUTES: unknown;
1654
+ COMMANDS: unknown;
1655
+ };
1656
+ export const IdentifyCluster: {
1657
+ new (...args: any[]): IdentifyCluster;
1658
+ ID: 3;
1659
+ NAME: 'identify';
1660
+ ATTRIBUTES: unknown;
1661
+ COMMANDS: unknown;
1662
+ };
1663
+ export const IlluminanceLevelSensingCluster: {
1664
+ new (...args: any[]): IlluminanceLevelSensingCluster;
1665
+ ID: 1025;
1666
+ NAME: 'illuminanceLevelSensing';
1667
+ ATTRIBUTES: unknown;
1668
+ COMMANDS: unknown;
1669
+ };
1670
+ export const IlluminanceMeasurementCluster: {
1671
+ new (...args: any[]): IlluminanceMeasurementCluster;
1672
+ ID: 1024;
1673
+ NAME: 'illuminanceMeasurement';
1674
+ ATTRIBUTES: unknown;
1675
+ COMMANDS: unknown;
1676
+ };
1677
+ export const LevelControlCluster: {
1678
+ new (...args: any[]): LevelControlCluster;
1679
+ ID: 8;
1680
+ NAME: 'levelControl';
1681
+ ATTRIBUTES: unknown;
1682
+ COMMANDS: unknown;
1683
+ };
1684
+ export const MeteringCluster: {
1685
+ new (...args: any[]): MeteringCluster;
1686
+ ID: 1794;
1687
+ NAME: 'metering';
1688
+ ATTRIBUTES: unknown;
1689
+ COMMANDS: unknown;
1690
+ };
1691
+ export const MultistateInputCluster: {
1692
+ new (...args: any[]): MultistateInputCluster;
1693
+ ID: 18;
1694
+ NAME: 'multistateInput';
1695
+ ATTRIBUTES: unknown;
1696
+ COMMANDS: unknown;
1697
+ };
1698
+ export const MultistateOutputCluster: {
1699
+ new (...args: any[]): MultistateOutputCluster;
1700
+ ID: 19;
1701
+ NAME: 'multistateOutput';
1702
+ ATTRIBUTES: unknown;
1703
+ COMMANDS: unknown;
1704
+ };
1705
+ export const MultistateValueCluster: {
1706
+ new (...args: any[]): MultistateValueCluster;
1707
+ ID: 20;
1708
+ NAME: 'multistateValue';
1709
+ ATTRIBUTES: unknown;
1710
+ COMMANDS: unknown;
1711
+ };
1712
+ export const OccupancySensingCluster: {
1713
+ new (...args: any[]): OccupancySensingCluster;
1714
+ ID: 1030;
1715
+ NAME: 'occupancySensing';
1716
+ ATTRIBUTES: unknown;
1717
+ COMMANDS: unknown;
1718
+ };
1719
+ export const OnOffCluster: {
1720
+ new (...args: any[]): OnOffCluster;
1721
+ ID: 6;
1722
+ NAME: 'onOff';
1723
+ ATTRIBUTES: unknown;
1724
+ COMMANDS: unknown;
1725
+ };
1726
+ export const OnOffSwitchCluster: {
1727
+ new (...args: any[]): OnOffSwitchCluster;
1728
+ ID: 7;
1729
+ NAME: 'onOffSwitch';
1730
+ ATTRIBUTES: unknown;
1731
+ COMMANDS: unknown;
1732
+ };
1733
+ export const OTACluster: {
1734
+ new (...args: any[]): OTACluster;
1735
+ ID: 25;
1736
+ NAME: 'ota';
1737
+ ATTRIBUTES: unknown;
1738
+ COMMANDS: unknown;
1739
+ };
1740
+ export const PollControlCluster: {
1741
+ new (...args: any[]): PollControlCluster;
1742
+ ID: 32;
1743
+ NAME: 'pollControl';
1744
+ ATTRIBUTES: unknown;
1745
+ COMMANDS: unknown;
1746
+ };
1747
+ export const PowerConfigurationCluster: {
1748
+ new (...args: any[]): PowerConfigurationCluster;
1749
+ ID: 1;
1750
+ NAME: 'powerConfiguration';
1751
+ ATTRIBUTES: unknown;
1752
+ COMMANDS: unknown;
1753
+ };
1754
+ export const PowerProfileCluster: {
1755
+ new (...args: any[]): PowerProfileCluster;
1756
+ ID: 26;
1757
+ NAME: 'powerProfile';
1758
+ ATTRIBUTES: unknown;
1759
+ COMMANDS: unknown;
1760
+ };
1761
+ export const PressureMeasurementCluster: {
1762
+ new (...args: any[]): PressureMeasurementCluster;
1763
+ ID: 1027;
1764
+ NAME: 'pressureMeasurement';
1765
+ ATTRIBUTES: unknown;
1766
+ COMMANDS: unknown;
1767
+ };
1768
+ export const PumpConfigurationAndControlCluster: {
1769
+ new (...args: any[]): PumpConfigurationAndControlCluster;
1770
+ ID: 512;
1771
+ NAME: 'pumpConfigurationAndControl';
1772
+ ATTRIBUTES: unknown;
1773
+ COMMANDS: unknown;
1774
+ };
1775
+ export const RelativeHumidityCluster: {
1776
+ new (...args: any[]): RelativeHumidityCluster;
1777
+ ID: 1029;
1778
+ NAME: 'relativeHumidity';
1779
+ ATTRIBUTES: unknown;
1780
+ COMMANDS: unknown;
1781
+ };
1782
+ export const ScenesCluster: {
1783
+ new (...args: any[]): ScenesCluster;
1784
+ ID: 5;
1785
+ NAME: 'scenes';
1786
+ ATTRIBUTES: unknown;
1787
+ COMMANDS: unknown;
1788
+ };
1789
+ export const ShadeConfigurationCluster: {
1790
+ new (...args: any[]): ShadeConfigurationCluster;
1791
+ ID: 256;
1792
+ NAME: 'shadeConfiguration';
1793
+ ATTRIBUTES: unknown;
1794
+ COMMANDS: unknown;
1795
+ };
1796
+ export const TemperatureMeasurementCluster: {
1797
+ new (...args: any[]): TemperatureMeasurementCluster;
1798
+ ID: 1026;
1799
+ NAME: 'temperatureMeasurement';
1800
+ ATTRIBUTES: unknown;
1801
+ COMMANDS: unknown;
1802
+ };
1803
+ export const ThermostatCluster: {
1804
+ new (...args: any[]): ThermostatCluster;
1805
+ ID: 513;
1806
+ NAME: 'thermostat';
1807
+ ATTRIBUTES: unknown;
1808
+ COMMANDS: unknown;
1809
+ };
1810
+ export const TimeCluster: {
1811
+ new (...args: any[]): TimeCluster;
1812
+ ID: 10;
1813
+ NAME: 'time';
1814
+ ATTRIBUTES: unknown;
1815
+ COMMANDS: unknown;
1816
+ };
1817
+ export const TouchLinkCluster: {
1818
+ new (...args: any[]): TouchLinkCluster;
1819
+ ID: 4096;
1820
+ NAME: 'touchlink';
1821
+ ATTRIBUTES: unknown;
1822
+ COMMANDS: unknown;
1823
+ };
1824
+ export const WindowCoveringCluster: {
1825
+ new (...args: any[]): WindowCoveringCluster;
1826
+ ID: 258;
1827
+ NAME: 'windowCovering';
1828
+ ATTRIBUTES: unknown;
1829
+ COMMANDS: unknown;
1830
+ };
1831
+
1832
+ declare const _default: {
1833
+ ZCLNode: typeof ZCLNode;
1834
+ CLUSTER: typeof CLUSTER;
1835
+ AlarmsCluster: typeof AlarmsCluster;
1836
+ AnalogInputCluster: typeof AnalogInputCluster;
1837
+ AnalogOutputCluster: typeof AnalogOutputCluster;
1838
+ AnalogValueCluster: typeof AnalogValueCluster;
1839
+ BallastConfigurationCluster: typeof BallastConfigurationCluster;
1840
+ BasicCluster: typeof BasicCluster;
1841
+ BinaryInputCluster: typeof BinaryInputCluster;
1842
+ BinaryOutputCluster: typeof BinaryOutputCluster;
1843
+ BinaryValueCluster: typeof BinaryValueCluster;
1844
+ ColorControlCluster: typeof ColorControlCluster;
1845
+ DehumidificationControlCluster: typeof DehumidificationControlCluster;
1846
+ DeviceTemperatureCluster: typeof DeviceTemperatureCluster;
1847
+ DiagnosticsCluster: typeof DiagnosticsCluster;
1848
+ DoorLockCluster: typeof DoorLockCluster;
1849
+ ElectricalMeasurementCluster: typeof ElectricalMeasurementCluster;
1850
+ FanControlCluster: typeof FanControlCluster;
1851
+ FlowMeasurementCluster: typeof FlowMeasurementCluster;
1852
+ GroupsCluster: typeof GroupsCluster;
1853
+ IASACECluster: typeof IASACECluster;
1854
+ IASWDCluster: typeof IASWDCluster;
1855
+ IASZoneCluster: typeof IASZoneCluster;
1856
+ IdentifyCluster: typeof IdentifyCluster;
1857
+ IlluminanceLevelSensingCluster: typeof IlluminanceLevelSensingCluster;
1858
+ IlluminanceMeasurementCluster: typeof IlluminanceMeasurementCluster;
1859
+ LevelControlCluster: typeof LevelControlCluster;
1860
+ MeteringCluster: typeof MeteringCluster;
1861
+ MultistateInputCluster: typeof MultistateInputCluster;
1862
+ MultistateOutputCluster: typeof MultistateOutputCluster;
1863
+ MultistateValueCluster: typeof MultistateValueCluster;
1864
+ OccupancySensingCluster: typeof OccupancySensingCluster;
1865
+ OnOffCluster: typeof OnOffCluster;
1866
+ OnOffSwitchCluster: typeof OnOffSwitchCluster;
1867
+ OTACluster: typeof OTACluster;
1868
+ PollControlCluster: typeof PollControlCluster;
1869
+ PowerConfigurationCluster: typeof PowerConfigurationCluster;
1870
+ PowerProfileCluster: typeof PowerProfileCluster;
1871
+ PressureMeasurementCluster: typeof PressureMeasurementCluster;
1872
+ PumpConfigurationAndControlCluster: typeof PumpConfigurationAndControlCluster;
1873
+ RelativeHumidityCluster: typeof RelativeHumidityCluster;
1874
+ ScenesCluster: typeof ScenesCluster;
1875
+ ShadeConfigurationCluster: typeof ShadeConfigurationCluster;
1876
+ TemperatureMeasurementCluster: typeof TemperatureMeasurementCluster;
1877
+ ThermostatCluster: typeof ThermostatCluster;
1878
+ TimeCluster: typeof TimeCluster;
1879
+ TouchLinkCluster: typeof TouchLinkCluster;
1880
+ WindowCoveringCluster: typeof WindowCoveringCluster;
1881
+ };
1882
+ export default _default;