@willieee802/zigbee-herdsman 0.49.3 → 0.50.0

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.
Files changed (211) hide show
  1. package/.github/dependabot.yml +0 -3
  2. package/.github/workflows/ci.yml +1 -2
  3. package/.github/workflows/release-please.yml +1 -1
  4. package/.github/workflows/typedoc.yaml +3 -3
  5. package/.release-please-manifest.json +1 -1
  6. package/CHANGELOG.md +143 -0
  7. package/biome.json +1 -1
  8. package/dist/adapter/adapter.d.ts +14 -1
  9. package/dist/adapter/adapter.d.ts.map +1 -1
  10. package/dist/adapter/adapter.js +17 -0
  11. package/dist/adapter/adapter.js.map +1 -1
  12. package/dist/adapter/adapterDiscovery.d.ts.map +1 -1
  13. package/dist/adapter/adapterDiscovery.js.map +1 -1
  14. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts +1 -3
  15. package/dist/adapter/deconz/adapter/deconzAdapter.d.ts.map +1 -1
  16. package/dist/adapter/deconz/adapter/deconzAdapter.js +14 -29
  17. package/dist/adapter/deconz/adapter/deconzAdapter.js.map +1 -1
  18. package/dist/adapter/deconz/driver/constants.d.ts +1 -1
  19. package/dist/adapter/deconz/driver/constants.d.ts.map +1 -1
  20. package/dist/adapter/ember/adapter/emberAdapter.d.ts +1 -1
  21. package/dist/adapter/ember/adapter/emberAdapter.d.ts.map +1 -1
  22. package/dist/adapter/ember/adapter/emberAdapter.js +19 -10
  23. package/dist/adapter/ember/adapter/emberAdapter.js.map +1 -1
  24. package/dist/adapter/ember/adapter/oneWaitress.d.ts +2 -0
  25. package/dist/adapter/ember/adapter/oneWaitress.d.ts.map +1 -1
  26. package/dist/adapter/ember/adapter/oneWaitress.js +13 -5
  27. package/dist/adapter/ember/adapter/oneWaitress.js.map +1 -1
  28. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts +1 -3
  29. package/dist/adapter/ezsp/adapter/ezspAdapter.d.ts.map +1 -1
  30. package/dist/adapter/ezsp/adapter/ezspAdapter.js +17 -30
  31. package/dist/adapter/ezsp/adapter/ezspAdapter.js.map +1 -1
  32. package/dist/adapter/ezsp/driver/index.d.ts +1 -1
  33. package/dist/adapter/ezsp/driver/index.d.ts.map +1 -1
  34. package/dist/adapter/ezsp/driver/index.js +1 -1
  35. package/dist/adapter/ezsp/driver/index.js.map +1 -1
  36. package/dist/adapter/ezsp/driver/types/index.d.ts +1 -1
  37. package/dist/adapter/ezsp/driver/types/index.d.ts.map +1 -1
  38. package/dist/adapter/ezsp/driver/types/index.js +3 -3
  39. package/dist/adapter/ezsp/driver/types/index.js.map +1 -1
  40. package/dist/adapter/serialPort.d.ts.map +1 -1
  41. package/dist/adapter/serialPort.js +7 -0
  42. package/dist/adapter/serialPort.js.map +1 -1
  43. package/dist/adapter/z-stack/adapter/adapter-backup.js +1 -1
  44. package/dist/adapter/z-stack/adapter/adapter-backup.js.map +1 -1
  45. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js +1 -1
  46. package/dist/adapter/z-stack/adapter/adapter-nv-memory.js.map +1 -1
  47. package/dist/adapter/z-stack/adapter/manager.d.ts.map +1 -1
  48. package/dist/adapter/z-stack/adapter/manager.js +12 -2
  49. package/dist/adapter/z-stack/adapter/manager.js.map +1 -1
  50. package/dist/adapter/z-stack/adapter/tstype.d.ts.map +1 -1
  51. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts +1 -3
  52. package/dist/adapter/z-stack/adapter/zStackAdapter.d.ts.map +1 -1
  53. package/dist/adapter/z-stack/adapter/zStackAdapter.js +20 -34
  54. package/dist/adapter/z-stack/adapter/zStackAdapter.js.map +1 -1
  55. package/dist/adapter/z-stack/constants/index.d.ts +1 -1
  56. package/dist/adapter/z-stack/constants/index.d.ts.map +1 -1
  57. package/dist/adapter/z-stack/constants/index.js +1 -1
  58. package/dist/adapter/z-stack/constants/index.js.map +1 -1
  59. package/dist/adapter/z-stack/unpi/constants.d.ts +1 -1
  60. package/dist/adapter/z-stack/unpi/constants.d.ts.map +1 -1
  61. package/dist/adapter/z-stack/unpi/constants.js +1 -1
  62. package/dist/adapter/z-stack/unpi/constants.js.map +1 -1
  63. package/dist/adapter/zboss/adapter/zbossAdapter.d.ts +7 -8
  64. package/dist/adapter/zboss/adapter/zbossAdapter.d.ts.map +1 -1
  65. package/dist/adapter/zboss/adapter/zbossAdapter.js +12 -30
  66. package/dist/adapter/zboss/adapter/zbossAdapter.js.map +1 -1
  67. package/dist/adapter/zboss/driver.d.ts.map +1 -1
  68. package/dist/adapter/zboss/driver.js +8 -1
  69. package/dist/adapter/zboss/driver.js.map +1 -1
  70. package/dist/adapter/zboss/uart.d.ts.map +1 -1
  71. package/dist/adapter/zboss/uart.js +14 -2
  72. package/dist/adapter/zboss/uart.js.map +1 -1
  73. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts +1 -3
  74. package/dist/adapter/zigate/adapter/zigateAdapter.d.ts.map +1 -1
  75. package/dist/adapter/zigate/adapter/zigateAdapter.js +8 -29
  76. package/dist/adapter/zigate/adapter/zigateAdapter.js.map +1 -1
  77. package/dist/adapter/zoh/adapter/zohAdapter.d.ts +1 -3
  78. package/dist/adapter/zoh/adapter/zohAdapter.d.ts.map +1 -1
  79. package/dist/adapter/zoh/adapter/zohAdapter.js +18 -33
  80. package/dist/adapter/zoh/adapter/zohAdapter.js.map +1 -1
  81. package/dist/controller/controller.d.ts.map +1 -1
  82. package/dist/controller/controller.js +10 -2
  83. package/dist/controller/controller.js.map +1 -1
  84. package/dist/controller/greenPower.d.ts.map +1 -1
  85. package/dist/controller/greenPower.js +15 -9
  86. package/dist/controller/greenPower.js.map +1 -1
  87. package/dist/controller/helpers/ota.d.ts +4 -4
  88. package/dist/controller/helpers/ota.d.ts.map +1 -1
  89. package/dist/controller/helpers/ota.js +28 -9
  90. package/dist/controller/helpers/ota.js.map +1 -1
  91. package/dist/controller/helpers/zclFrameConverter.d.ts.map +1 -1
  92. package/dist/controller/helpers/zclFrameConverter.js +17 -16
  93. package/dist/controller/helpers/zclFrameConverter.js.map +1 -1
  94. package/dist/controller/model/device.d.ts +14 -4
  95. package/dist/controller/model/device.d.ts.map +1 -1
  96. package/dist/controller/model/device.js +167 -85
  97. package/dist/controller/model/device.js.map +1 -1
  98. package/dist/controller/model/endpoint.d.ts +7 -3
  99. package/dist/controller/model/endpoint.d.ts.map +1 -1
  100. package/dist/controller/model/endpoint.js +34 -21
  101. package/dist/controller/model/endpoint.js.map +1 -1
  102. package/dist/controller/model/group.d.ts +0 -1
  103. package/dist/controller/model/group.d.ts.map +1 -1
  104. package/dist/controller/model/group.js +14 -19
  105. package/dist/controller/model/group.js.map +1 -1
  106. package/dist/controller/touchlink.js +3 -3
  107. package/dist/controller/touchlink.js.map +1 -1
  108. package/dist/utils/timeService.js +2 -2
  109. package/dist/utils/timeService.js.map +1 -1
  110. package/dist/zspec/zcl/buffaloZcl.d.ts +3 -3
  111. package/dist/zspec/zcl/buffaloZcl.d.ts.map +1 -1
  112. package/dist/zspec/zcl/buffaloZcl.js +198 -96
  113. package/dist/zspec/zcl/buffaloZcl.js.map +1 -1
  114. package/dist/zspec/zcl/definition/cluster.d.ts +2 -2
  115. package/dist/zspec/zcl/definition/cluster.d.ts.map +1 -1
  116. package/dist/zspec/zcl/definition/cluster.js +2699 -2808
  117. package/dist/zspec/zcl/definition/cluster.js.map +1 -1
  118. package/dist/zspec/zcl/definition/clusters-types.d.ts +63 -1109
  119. package/dist/zspec/zcl/definition/clusters-types.d.ts.map +1 -1
  120. package/dist/zspec/zcl/definition/enums.d.ts +0 -1
  121. package/dist/zspec/zcl/definition/enums.d.ts.map +1 -1
  122. package/dist/zspec/zcl/definition/enums.js +0 -1
  123. package/dist/zspec/zcl/definition/enums.js.map +1 -1
  124. package/dist/zspec/zcl/definition/foundation.d.ts +306 -7
  125. package/dist/zspec/zcl/definition/foundation.d.ts.map +1 -1
  126. package/dist/zspec/zcl/definition/foundation.js +552 -207
  127. package/dist/zspec/zcl/definition/foundation.js.map +1 -1
  128. package/dist/zspec/zcl/definition/status.d.ts +21 -10
  129. package/dist/zspec/zcl/definition/status.d.ts.map +1 -1
  130. package/dist/zspec/zcl/definition/status.js +11 -0
  131. package/dist/zspec/zcl/definition/status.js.map +1 -1
  132. package/dist/zspec/zcl/definition/tstype.d.ts +57 -48
  133. package/dist/zspec/zcl/definition/tstype.d.ts.map +1 -1
  134. package/dist/zspec/zcl/utils.d.ts +7 -4
  135. package/dist/zspec/zcl/utils.d.ts.map +1 -1
  136. package/dist/zspec/zcl/utils.js +133 -240
  137. package/dist/zspec/zcl/utils.js.map +1 -1
  138. package/dist/zspec/zcl/zclFrame.d.ts +4 -4
  139. package/dist/zspec/zcl/zclFrame.d.ts.map +1 -1
  140. package/dist/zspec/zcl/zclFrame.js +19 -103
  141. package/dist/zspec/zcl/zclFrame.js.map +1 -1
  142. package/dist/zspec/zcl/zclStatusError.d.ts +1 -1
  143. package/dist/zspec/zcl/zclStatusError.d.ts.map +1 -1
  144. package/dist/zspec/zcl/zclStatusError.js +2 -2
  145. package/dist/zspec/zcl/zclStatusError.js.map +1 -1
  146. package/package.json +1 -1
  147. package/scripts/clusters-typegen.ts +44 -139
  148. package/src/adapter/adapter.ts +38 -3
  149. package/src/adapter/adapterDiscovery.ts +2 -1
  150. package/src/adapter/deconz/adapter/deconzAdapter.ts +24 -51
  151. package/src/adapter/deconz/driver/constants.ts +1 -1
  152. package/src/adapter/ember/adapter/emberAdapter.ts +23 -10
  153. package/src/adapter/ember/adapter/oneWaitress.ts +16 -6
  154. package/src/adapter/ezsp/adapter/ezspAdapter.ts +27 -48
  155. package/src/adapter/ezsp/driver/index.ts +1 -1
  156. package/src/adapter/ezsp/driver/types/index.ts +99 -99
  157. package/src/adapter/serialPort.ts +9 -0
  158. package/src/adapter/z-stack/adapter/adapter-backup.ts +1 -1
  159. package/src/adapter/z-stack/adapter/adapter-nv-memory.ts +1 -1
  160. package/src/adapter/z-stack/adapter/manager.ts +16 -2
  161. package/src/adapter/z-stack/adapter/tstype.ts +1 -0
  162. package/src/adapter/z-stack/adapter/zStackAdapter.ts +34 -81
  163. package/src/adapter/z-stack/constants/index.ts +1 -1
  164. package/src/adapter/z-stack/unpi/constants.ts +1 -1
  165. package/src/adapter/zboss/adapter/zbossAdapter.ts +23 -54
  166. package/src/adapter/zboss/driver.ts +8 -1
  167. package/src/adapter/zboss/uart.ts +14 -1
  168. package/src/adapter/zigate/adapter/zigateAdapter.ts +17 -48
  169. package/src/adapter/zoh/adapter/zohAdapter.ts +27 -50
  170. package/src/controller/controller.ts +12 -2
  171. package/src/controller/greenPower.ts +16 -9
  172. package/src/controller/helpers/ota.ts +37 -11
  173. package/src/controller/helpers/zclFrameConverter.ts +20 -17
  174. package/src/controller/model/device.ts +204 -97
  175. package/src/controller/model/endpoint.ts +36 -24
  176. package/src/controller/model/group.ts +14 -20
  177. package/src/controller/touchlink.ts +3 -3
  178. package/src/utils/timeService.ts +2 -2
  179. package/src/zspec/zcl/buffaloZcl.ts +226 -100
  180. package/src/zspec/zcl/definition/cluster.ts +2713 -2822
  181. package/src/zspec/zcl/definition/clusters-types.ts +80 -1135
  182. package/src/zspec/zcl/definition/enums.ts +0 -1
  183. package/src/zspec/zcl/definition/foundation.ts +703 -216
  184. package/src/zspec/zcl/definition/status.ts +22 -11
  185. package/src/zspec/zcl/definition/tstype.ts +59 -58
  186. package/src/zspec/zcl/utils.ts +137 -264
  187. package/src/zspec/zcl/zclFrame.ts +25 -130
  188. package/src/zspec/zcl/zclStatusError.ts +2 -2
  189. package/test/adapter/ember/emberAdapter.test.ts +191 -4
  190. package/test/adapter/ezsp/uart.test.ts +10 -10
  191. package/test/adapter/z-stack/adapter.test.ts +88 -32
  192. package/test/adapter/zoh/zohAdapter.test.ts +4 -4
  193. package/test/controller.test.ts +822 -248
  194. package/test/device-ota.test.ts +141 -16
  195. package/test/device.test.ts +731 -0
  196. package/test/requests.bench.ts +2 -0
  197. package/test/zcl.test.ts +70 -95
  198. package/test/zspec/zcl/buffalo.test.ts +251 -11
  199. package/test/zspec/zcl/foundation.test.ts +990 -0
  200. package/test/zspec/zcl/frame.test.ts +84 -69
  201. package/test/zspec/zcl/utils.test.ts +105 -81
  202. package/tsconfig.json +0 -1
  203. package/scripts/check-clusters-changes.ts +0 -328
  204. package/scripts/clusters-changes.log +0 -584
  205. package/scripts/utils.ts +0 -88
  206. package/scripts/zap-update-clusters-report.json +0 -303
  207. package/scripts/zap-update-clusters.ts +0 -1520
  208. package/scripts/zap-update-types.ts +0 -707
  209. package/scripts/zap-xml-clusters-overrides-data.ts +0 -52
  210. package/scripts/zap-xml-clusters-overrides.ts +0 -400
  211. package/scripts/zap-xml-types.ts +0 -146
@@ -15,9 +15,12 @@ export enum Status {
15
15
  // UNSUP_CLUSTER_COMMAND = 0x81, DEPRECATED in favor of UNSUP_COMMAND
16
16
  /** The specified command is not supported on the device. Command not carried out. */
17
17
  UNSUP_COMMAND = 0x81,
18
- UNSUP_GENERAL_COMMAND = 0x82, // DEPRECATED in favor of UNSUP_COMMAND
19
- UNSUP_MANUF_CLUSTER_COMMAND = 0x83, // DEPRECATED in favor of UNSUP_COMMAND
20
- UNSUP_MANUF_GENERAL_COMMAND = 0x84, // DEPRECATED in favor of UNSUP_COMMAND
18
+ /** @deprecated use UNSUP_COMMAND */
19
+ UNSUP_GENERAL_COMMAND = 0x82,
20
+ /** @deprecated use UNSUP_COMMAND */
21
+ UNSUP_MANUF_CLUSTER_COMMAND = 0x83,
22
+ /** @deprecated use UNSUP_COMMAND */
23
+ UNSUP_MANUF_GENERAL_COMMAND = 0x84,
21
24
  /** At least one field of the command contains an incorrect value, according to the specification the device is implemented to. */
22
25
  INVALID_FIELD = 0x85,
23
26
  /** The specified attribute does not exist on the device. */
@@ -32,7 +35,8 @@ export enum Status {
32
35
  READ_ONLY = 0x88,
33
36
  /** An operation failed due to an insufficient amount of free space available. */
34
37
  INSUFFICIENT_SPACE = 0x89,
35
- DUPLICATE_EXISTS = 0x8a, // DEPRECATED in favor of SUCCESS
38
+ /** @deprecated use SUCCESS */
39
+ DUPLICATE_EXISTS = 0x8a,
36
40
  /** The requested information (e.g., table entry) could not be found. */
37
41
  NOT_FOUND = 0x8b,
38
42
  /** Periodic reports cannot be issued for this attribute.*/
@@ -41,11 +45,15 @@ export enum Status {
41
45
  INVALID_DATA_TYPE = 0x8d,
42
46
  /** The selector for an attribute is incorrect. */
43
47
  INVALID_SELECTOR = 0x8e,
44
- WRITE_ONLY = 0x8f, // DEPRECATED in favor of NOT_AUTHORIZED
45
- INCONSISTENT_STARTUP_STATE = 0x90, // DEPRECATED in favor of FAILURE
46
- DEFINED_OUT_OF_BAND = 0x91, // DEPRECATED in favor of FAILURE
48
+ /** @deprecated use NOT_AUTHORIZED */
49
+ WRITE_ONLY = 0x8f,
50
+ /** @deprecated use FAILURE */
51
+ INCONSISTENT_STARTUP_STATE = 0x90,
52
+ /** @deprecated use FAILURE */
53
+ DEFINED_OUT_OF_BAND = 0x91,
47
54
  RESERVED14 = 0x92,
48
- ACTION_DENIED = 0x93, // DEPRECATED in favor of FAILURE
55
+ /** @deprecated use FAILURE */
56
+ ACTION_DENIED = 0x93,
49
57
  /** The exchange was aborted due to excessive response time. */
50
58
  TIMEOUT = 0x94,
51
59
  /** Failed case when a client or a server decides to abort the upgrade process. */
@@ -60,10 +68,13 @@ export enum Status {
60
68
  REQUIRE_MORE_IMAGE = 0x99,
61
69
  /** The command has been received and is being processed. */
62
70
  NOTIFICATION_PENDING = 0x9a,
63
- HARDWARE_FAILURE = 0xc0, // DEPRECATED in favor of FAILURE
64
- SOFTWARE_FAILURE = 0xc1, // DEPRECATED in favor of FAILURE
71
+ /** @deprecated use FAILURE */
72
+ HARDWARE_FAILURE = 0xc0,
73
+ /** @deprecated use FAILURE */
74
+ SOFTWARE_FAILURE = 0xc1,
65
75
  RESERVED15 = 0xc2,
66
76
  /** The cluster is not supported. */
67
77
  UNSUPPORTED_CLUSTER = 0xc3,
68
- LIMIT_REACHED = 0xc4, // DEPRECATED in favor of SUCCESS
78
+ /** @deprecated use SUCCESS */
79
+ LIMIT_REACHED = 0xc4,
69
80
  }
@@ -1,4 +1,5 @@
1
- import type {BuffaloZclDataType, DataType, DataTypeClass, Direction, FrameType, ParameterCondition, StructuredIndicatorType} from "./enums";
1
+ import type {BuffaloZclDataType, DataType, Direction, FrameType, ParameterCondition, StructuredIndicatorType} from "./enums";
2
+ import type {Status} from "./status";
2
3
 
3
4
  export interface BuffaloZclOptions {
4
5
  length?: number;
@@ -22,10 +23,6 @@ export interface StructuredSelector {
22
23
  indicatorType?: StructuredIndicatorType;
23
24
  }
24
25
 
25
- export interface KeyZclValue {
26
- [s: string | number]: number | string;
27
- }
28
-
29
26
  export interface Struct {
30
27
  elmType: DataType;
31
28
  elmVal: unknown;
@@ -119,11 +116,46 @@ export interface GpdCustomReply {
119
116
  buffer: Buffer;
120
117
  }
121
118
 
122
- export interface GpdAttributeReport {
123
- manufacturerCode: number;
119
+ export type GpdAttributeReport = {
124
120
  clusterID: number;
125
- attributes: KeyZclValue;
126
- }
121
+ clusterName: string;
122
+ attributes: Record<string | number, unknown>;
123
+ };
124
+
125
+ export type GpdManufAttributeReport = {
126
+ manufacturerCode: number;
127
+ } & GpdAttributeReport;
128
+
129
+ export type GpdMultiClusterAttributeReport = {
130
+ reports: Array<{
131
+ clusterID: number;
132
+ clusterName: string;
133
+ attribute: string | number;
134
+ attrData: unknown;
135
+ }>;
136
+ };
137
+
138
+ export type GpdManufMultiClusterAttributeReport = {
139
+ manufacturerCode: number;
140
+ } & GpdMultiClusterAttributeReport;
141
+
142
+ export type GpdAttributeReporting =
143
+ | GpdAttributeReport
144
+ | GpdManufAttributeReport
145
+ | GpdMultiClusterAttributeReport
146
+ | GpdManufMultiClusterAttributeReport;
147
+
148
+ export type GpdRequestAttribute = {
149
+ options: number;
150
+ manufacturerID: number | undefined;
151
+ records: Array<{clusterID: number; attributes: Array<number>}>;
152
+ };
153
+
154
+ export type GpdReadAttributeResponse = {
155
+ options: number;
156
+ manufacturerID: number | undefined;
157
+ records: Array<{clusterID: number; clusterName: string; attributes: Record<string | number, {status: Status; attrData: unknown}>}>;
158
+ };
127
159
 
128
160
  export interface TuyaDataPointValue {
129
161
  dp: number;
@@ -147,7 +179,7 @@ export interface FrameControl {
147
179
  /**
148
180
  * @see https://github.com/project-chip/zap/blob/master/zcl-builtin/dotdot/README.md#restrictions
149
181
  */
150
- interface Restrictions {
182
+ type Restrictions = Readonly<{
151
183
  /** specifies an exact length, generally used for a string. */
152
184
  length?: number;
153
185
  /** specifies the minimum length that a type must take, generally used for a string or a list/array */
@@ -177,7 +209,7 @@ interface Restrictions {
177
209
  * `value` is kept as string for easier handling (will be checked on spot if used anyway) though most often is a hex number string (without 0x)
178
210
  */
179
211
  special?: [name: string, value: string][];
180
- }
212
+ }>;
181
213
 
182
214
  /**
183
215
  * @see https://github.com/project-chip/zap/blob/master/zcl-builtin/dotdot/README.md#attributes
@@ -188,7 +220,7 @@ interface Restrictions {
188
220
  * - requiredIf: Allows for an expression to be implemented which indicates the conditions in which an attribute is mandatory.
189
221
  * Defaults to false
190
222
  */
191
- export interface Attribute extends Restrictions {
223
+ export type Attribute = Readonly<{
192
224
  ID: number;
193
225
  name: string;
194
226
  type: DataType;
@@ -215,16 +247,16 @@ export interface Attribute extends Restrictions {
215
247
  // defaultRef?: string;
216
248
  /** If attribute is client side */
217
249
  client?: true;
218
- }
250
+ }> &
251
+ Restrictions;
219
252
 
220
- export interface Parameter extends Restrictions {
253
+ export type Parameter = Readonly<{
221
254
  name: string;
222
255
  type: DataType | BuffaloZclDataType;
223
- conditions?: (
256
+ conditions?: readonly (
224
257
  | {type: ParameterCondition.MINIMUM_REMAINING_BUFFER_BYTES; value: number}
225
258
  | {type: ParameterCondition.BITMASK_SET; param: string; mask: number /* not set */; reversed?: boolean}
226
259
  | {type: ParameterCondition.BITFIELD_ENUM; param: string; offset: number; size: number; value: number}
227
- | {type: ParameterCondition.DATA_TYPE_CLASS_EQUAL; value: DataTypeClass}
228
260
  | {type: ParameterCondition.FIELD_EQUAL; field: string; value: unknown; reversed?: boolean}
229
261
  | {type: ParameterCondition.FIELD_GT; field: string; value: number /*; reversed?: boolean*/}
230
262
  )[];
@@ -239,54 +271,34 @@ export interface Parameter extends Restrictions {
239
271
  * that field may be referenced using this attribute.
240
272
  */
241
273
  // arrayLengthField?: string;
242
- }
274
+ }> &
275
+ Restrictions;
243
276
 
244
277
  /**
245
278
  * @see https://github.com/project-chip/zap/blob/master/zcl-builtin/dotdot/README.md#commands
246
279
  * Extra metadata:
247
280
  * - requiredIf: Allows for an expression to be implemented which indicates the conditions in which a command is mandatory. Defaults to false
248
281
  */
249
- export interface Command {
282
+ export type Command = Readonly<{
250
283
  ID: number;
251
284
  name: string;
252
285
  parameters: readonly Parameter[];
253
286
  response?: number;
254
287
  /** If the command is mandatory. Defaults to false */
255
288
  required?: true;
256
- }
289
+ }>;
257
290
 
258
- export interface AttributeDefinition extends Omit<Attribute, "name"> {}
259
-
260
- export interface CommandDefinition extends Omit<Command, "name"> {
261
- parameters: readonly Parameter[];
262
- }
263
-
264
- export interface Cluster {
291
+ export type Cluster = Readonly<{
265
292
  ID: number;
266
293
  name: string;
267
294
  manufacturerCode?: number;
268
- attributes: {[s: string]: Attribute};
269
- commands: {
270
- [s: string]: Command;
271
- };
272
- commandsResponse: {
273
- [s: string]: Command;
274
- };
275
- getAttribute: (key: number | string) => Attribute | undefined;
276
- getCommand: (key: number | string) => Command;
277
- getCommandResponse: (key: number | string) => Command;
278
- }
279
-
280
- export interface ClusterDefinition {
281
- ID: number;
282
- manufacturerCode?: number;
283
- attributes: Readonly<Record<string, Readonly<AttributeDefinition>>>;
284
- commands: Readonly<Record<string, Readonly<CommandDefinition>>>;
285
- commandsResponse: Readonly<Record<string, Readonly<CommandDefinition>>>;
286
- }
295
+ attributes: Readonly<Record<string, Attribute>>;
296
+ commands: Readonly<Record<string, Command>>;
297
+ commandsResponse: Readonly<Record<string, Command>>;
298
+ }>;
287
299
 
288
300
  export interface CustomClusters {
289
- [k: string]: ClusterDefinition;
301
+ [k: string]: Cluster;
290
302
  }
291
303
 
292
304
  export type ClusterName =
@@ -323,6 +335,7 @@ export type ClusterName =
323
335
  | "neighborCleaning"
324
336
  | "nearestGateway"
325
337
  | "keepAlive"
338
+ | "zigbeeDirectConfiguration"
326
339
  | "closuresShadeCfg"
327
340
  | "closuresDoorLock"
328
341
  | "closuresWindowCovering"
@@ -416,17 +429,5 @@ export type ClusterName =
416
429
  | "haElectricalMeasurement"
417
430
  | "haDiagnostic"
418
431
  | "touchlink"
419
- | "manuSpecificPhilips"
420
- | "manuSpecificPhilips2"
421
- | "manuSpecificSinope"
422
432
  | "manuSpecificTuya"
423
- | "manuSpecificLumi"
424
- | "manuSpecificTuya2"
425
- | "manuSpecificTuya3"
426
- | "manuSpecificSmartThingsArrivalSensor"
427
- | "manuSpecificSiglisZigfred"
428
- | "owonClearMetering"
429
- | "zosungIRTransmit"
430
- | "zosungIRControl"
431
- | "manuSpecificProfalux1"
432
433
  | "manuSpecificAmazonWWAH";