@matter/types 0.12.6-alpha.0-20250304-03716637c → 0.13.0-alpha.0-20250307-ebf84a05a

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 (857) hide show
  1. package/dist/cjs/cluster/Cluster.d.ts.map +1 -1
  2. package/dist/cjs/cluster/ClusterHelper.d.ts.map +1 -1
  3. package/dist/cjs/clusters/access-control.d.ts +3972 -522
  4. package/dist/cjs/clusters/access-control.d.ts.map +1 -1
  5. package/dist/cjs/clusters/access-control.js +640 -116
  6. package/dist/cjs/clusters/access-control.js.map +2 -2
  7. package/dist/cjs/clusters/actions.d.ts +10 -9
  8. package/dist/cjs/clusters/actions.d.ts.map +1 -1
  9. package/dist/cjs/clusters/actions.js +4 -4
  10. package/dist/cjs/clusters/actions.js.map +1 -1
  11. package/dist/cjs/clusters/administrator-commissioning.d.ts +156 -129
  12. package/dist/cjs/clusters/administrator-commissioning.d.ts.map +1 -1
  13. package/dist/cjs/clusters/administrator-commissioning.js +40 -35
  14. package/dist/cjs/clusters/administrator-commissioning.js.map +1 -1
  15. package/dist/cjs/clusters/alarm-base.d.ts +9 -12
  16. package/dist/cjs/clusters/alarm-base.d.ts.map +1 -1
  17. package/dist/cjs/clusters/alarm-base.js +3 -4
  18. package/dist/cjs/clusters/alarm-base.js.map +1 -1
  19. package/dist/cjs/clusters/application-launcher.d.ts +27 -15
  20. package/dist/cjs/clusters/application-launcher.d.ts.map +1 -1
  21. package/dist/cjs/clusters/application-launcher.js +7 -4
  22. package/dist/cjs/clusters/application-launcher.js.map +1 -1
  23. package/dist/cjs/clusters/ballast-configuration.d.ts +7 -7
  24. package/dist/cjs/clusters/ballast-configuration.js +7 -7
  25. package/dist/cjs/clusters/basic-information.d.ts +29 -21
  26. package/dist/cjs/clusters/basic-information.d.ts.map +1 -1
  27. package/dist/cjs/clusters/basic-information.js +29 -21
  28. package/dist/cjs/clusters/basic-information.js.map +1 -1
  29. package/dist/cjs/clusters/bridged-device-basic-information.d.ts +816 -34
  30. package/dist/cjs/clusters/bridged-device-basic-information.d.ts.map +1 -1
  31. package/dist/cjs/clusters/bridged-device-basic-information.js +182 -29
  32. package/dist/cjs/clusters/bridged-device-basic-information.js.map +2 -2
  33. package/dist/cjs/clusters/channel.d.ts +115 -124
  34. package/dist/cjs/clusters/channel.d.ts.map +1 -1
  35. package/dist/cjs/clusters/channel.js +15 -16
  36. package/dist/cjs/clusters/channel.js.map +1 -1
  37. package/dist/cjs/clusters/color-control.d.ts +3076 -1366
  38. package/dist/cjs/clusters/color-control.d.ts.map +1 -1
  39. package/dist/cjs/clusters/color-control.js +423 -357
  40. package/dist/cjs/clusters/color-control.js.map +2 -2
  41. package/dist/cjs/clusters/commissioner-control.d.ts +268 -0
  42. package/dist/cjs/clusters/commissioner-control.d.ts.map +1 -0
  43. package/dist/cjs/clusters/commissioner-control.js +194 -0
  44. package/dist/cjs/clusters/commissioner-control.js.map +6 -0
  45. package/dist/cjs/clusters/content-control.d.ts +497 -221
  46. package/dist/cjs/clusters/content-control.d.ts.map +1 -1
  47. package/dist/cjs/clusters/content-control.js +59 -41
  48. package/dist/cjs/clusters/content-control.js.map +2 -2
  49. package/dist/cjs/clusters/content-launcher.d.ts +248 -215
  50. package/dist/cjs/clusters/content-launcher.d.ts.map +1 -1
  51. package/dist/cjs/clusters/content-launcher.js +16 -15
  52. package/dist/cjs/clusters/content-launcher.js.map +1 -1
  53. package/dist/cjs/clusters/device-energy-management-mode.d.ts +76 -333
  54. package/dist/cjs/clusters/device-energy-management-mode.d.ts.map +1 -1
  55. package/dist/cjs/clusters/device-energy-management-mode.js +26 -73
  56. package/dist/cjs/clusters/device-energy-management-mode.js.map +1 -1
  57. package/dist/cjs/clusters/device-energy-management.d.ts +1299 -930
  58. package/dist/cjs/clusters/device-energy-management.d.ts.map +1 -1
  59. package/dist/cjs/clusters/device-energy-management.js +189 -160
  60. package/dist/cjs/clusters/device-energy-management.js.map +2 -2
  61. package/dist/cjs/clusters/dishwasher-alarm.d.ts +14 -17
  62. package/dist/cjs/clusters/dishwasher-alarm.d.ts.map +1 -1
  63. package/dist/cjs/clusters/dishwasher-alarm.js +3 -4
  64. package/dist/cjs/clusters/dishwasher-alarm.js.map +1 -1
  65. package/dist/cjs/clusters/dishwasher-mode.d.ts +65 -105
  66. package/dist/cjs/clusters/dishwasher-mode.d.ts.map +1 -1
  67. package/dist/cjs/clusters/dishwasher-mode.js +12 -24
  68. package/dist/cjs/clusters/dishwasher-mode.js.map +1 -1
  69. package/dist/cjs/clusters/door-lock.d.ts +2751 -5427
  70. package/dist/cjs/clusters/door-lock.d.ts.map +1 -1
  71. package/dist/cjs/clusters/door-lock.js +480 -802
  72. package/dist/cjs/clusters/door-lock.js.map +2 -2
  73. package/dist/cjs/clusters/ecosystem-information.d.ts +186 -0
  74. package/dist/cjs/clusters/ecosystem-information.d.ts.map +1 -0
  75. package/dist/cjs/clusters/ecosystem-information.js +154 -0
  76. package/dist/cjs/clusters/ecosystem-information.js.map +6 -0
  77. package/dist/cjs/clusters/electrical-energy-measurement.d.ts +363 -368
  78. package/dist/cjs/clusters/electrical-energy-measurement.d.ts.map +1 -1
  79. package/dist/cjs/clusters/electrical-energy-measurement.js +15 -16
  80. package/dist/cjs/clusters/electrical-energy-measurement.js.map +1 -1
  81. package/dist/cjs/clusters/energy-evse-mode.d.ts +92 -330
  82. package/dist/cjs/clusters/energy-evse-mode.d.ts.map +1 -1
  83. package/dist/cjs/clusters/energy-evse-mode.js +25 -72
  84. package/dist/cjs/clusters/energy-evse-mode.js.map +1 -1
  85. package/dist/cjs/clusters/energy-evse.d.ts +557 -273
  86. package/dist/cjs/clusters/energy-evse.d.ts.map +1 -1
  87. package/dist/cjs/clusters/energy-evse.js +107 -55
  88. package/dist/cjs/clusters/energy-evse.js.map +1 -1
  89. package/dist/cjs/clusters/energy-preference.d.ts +76 -76
  90. package/dist/cjs/clusters/energy-preference.d.ts.map +1 -1
  91. package/dist/cjs/clusters/energy-preference.js +15 -18
  92. package/dist/cjs/clusters/energy-preference.js.map +1 -1
  93. package/dist/cjs/clusters/ethernet-network-diagnostics.d.ts +3 -9
  94. package/dist/cjs/clusters/ethernet-network-diagnostics.d.ts.map +1 -1
  95. package/dist/cjs/clusters/ethernet-network-diagnostics.js +1 -3
  96. package/dist/cjs/clusters/ethernet-network-diagnostics.js.map +1 -1
  97. package/dist/cjs/clusters/fan-control.d.ts +12 -12
  98. package/dist/cjs/clusters/fan-control.js +4 -4
  99. package/dist/cjs/clusters/fixed-label.d.ts +7 -2
  100. package/dist/cjs/clusters/fixed-label.d.ts.map +1 -1
  101. package/dist/cjs/clusters/fixed-label.js.map +1 -1
  102. package/dist/cjs/clusters/flow-measurement.d.ts +4 -4
  103. package/dist/cjs/clusters/flow-measurement.d.ts.map +1 -1
  104. package/dist/cjs/clusters/flow-measurement.js +6 -6
  105. package/dist/cjs/clusters/flow-measurement.js.map +1 -1
  106. package/dist/cjs/clusters/general-commissioning.d.ts +1416 -111
  107. package/dist/cjs/clusters/general-commissioning.d.ts.map +1 -1
  108. package/dist/cjs/clusters/general-commissioning.js +272 -54
  109. package/dist/cjs/clusters/general-commissioning.js.map +2 -2
  110. package/dist/cjs/clusters/general-diagnostics.d.ts +115 -122
  111. package/dist/cjs/clusters/general-diagnostics.d.ts.map +1 -1
  112. package/dist/cjs/clusters/general-diagnostics.js +31 -33
  113. package/dist/cjs/clusters/general-diagnostics.js.map +1 -1
  114. package/dist/cjs/clusters/group-key-management.d.ts +72 -82
  115. package/dist/cjs/clusters/group-key-management.d.ts.map +1 -1
  116. package/dist/cjs/clusters/group-key-management.js +19 -22
  117. package/dist/cjs/clusters/group-key-management.js.map +1 -1
  118. package/dist/cjs/clusters/groups.d.ts +9 -6
  119. package/dist/cjs/clusters/groups.d.ts.map +1 -1
  120. package/dist/cjs/clusters/groups.js +3 -2
  121. package/dist/cjs/clusters/groups.js.map +1 -1
  122. package/dist/cjs/clusters/icd-management.d.ts +223 -66
  123. package/dist/cjs/clusters/icd-management.d.ts.map +1 -1
  124. package/dist/cjs/clusters/icd-management.js +61 -23
  125. package/dist/cjs/clusters/icd-management.js.map +2 -2
  126. package/dist/cjs/clusters/identify.d.ts +12 -13
  127. package/dist/cjs/clusters/identify.d.ts.map +1 -1
  128. package/dist/cjs/clusters/identify.js +9 -10
  129. package/dist/cjs/clusters/identify.js.map +1 -1
  130. package/dist/cjs/clusters/illuminance-measurement.d.ts +7 -8
  131. package/dist/cjs/clusters/illuminance-measurement.d.ts.map +1 -1
  132. package/dist/cjs/clusters/illuminance-measurement.js +9 -10
  133. package/dist/cjs/clusters/illuminance-measurement.js.map +1 -1
  134. package/dist/cjs/clusters/index.d.ts +11 -1
  135. package/dist/cjs/clusters/index.d.ts.map +1 -1
  136. package/dist/cjs/clusters/index.js +33 -3
  137. package/dist/cjs/clusters/index.js.map +1 -1
  138. package/dist/cjs/clusters/joint-fabric-datastore-cluster.d.ts +1239 -0
  139. package/dist/cjs/clusters/joint-fabric-datastore-cluster.d.ts.map +1 -0
  140. package/dist/cjs/clusters/joint-fabric-datastore-cluster.js +490 -0
  141. package/dist/cjs/clusters/joint-fabric-datastore-cluster.js.map +6 -0
  142. package/dist/cjs/clusters/joint-fabric-pki.d.ts +174 -0
  143. package/dist/cjs/clusters/joint-fabric-pki.d.ts.map +1 -0
  144. package/dist/cjs/clusters/joint-fabric-pki.js +120 -0
  145. package/dist/cjs/clusters/joint-fabric-pki.js.map +6 -0
  146. package/dist/cjs/clusters/keypad-input.d.ts +2 -2
  147. package/dist/cjs/clusters/laundry-dryer-controls.d.ts +6 -7
  148. package/dist/cjs/clusters/laundry-dryer-controls.d.ts.map +1 -1
  149. package/dist/cjs/clusters/laundry-dryer-controls.js +5 -9
  150. package/dist/cjs/clusters/laundry-dryer-controls.js.map +1 -1
  151. package/dist/cjs/clusters/laundry-washer-controls.d.ts +74 -62
  152. package/dist/cjs/clusters/laundry-washer-controls.d.ts.map +1 -1
  153. package/dist/cjs/clusters/laundry-washer-controls.js +26 -25
  154. package/dist/cjs/clusters/laundry-washer-controls.js.map +1 -1
  155. package/dist/cjs/clusters/laundry-washer-mode.d.ts +69 -109
  156. package/dist/cjs/clusters/laundry-washer-mode.d.ts.map +1 -1
  157. package/dist/cjs/clusters/laundry-washer-mode.js +13 -25
  158. package/dist/cjs/clusters/laundry-washer-mode.js.map +1 -1
  159. package/dist/cjs/clusters/level-control.d.ts +209 -70
  160. package/dist/cjs/clusters/level-control.d.ts.map +1 -1
  161. package/dist/cjs/clusters/level-control.js +45 -12
  162. package/dist/cjs/clusters/level-control.js.map +1 -1
  163. package/dist/cjs/clusters/localization-configuration.d.ts +5 -6
  164. package/dist/cjs/clusters/localization-configuration.d.ts.map +1 -1
  165. package/dist/cjs/clusters/localization-configuration.js +5 -6
  166. package/dist/cjs/clusters/localization-configuration.js.map +1 -1
  167. package/dist/cjs/clusters/media-input.d.ts +9 -6
  168. package/dist/cjs/clusters/media-input.d.ts.map +1 -1
  169. package/dist/cjs/clusters/media-input.js +3 -2
  170. package/dist/cjs/clusters/media-input.js.map +1 -1
  171. package/dist/cjs/clusters/media-playback.d.ts +29 -24
  172. package/dist/cjs/clusters/media-playback.d.ts.map +1 -1
  173. package/dist/cjs/clusters/media-playback.js +5 -4
  174. package/dist/cjs/clusters/media-playback.js.map +1 -1
  175. package/dist/cjs/clusters/microwave-oven-control.d.ts +54 -48
  176. package/dist/cjs/clusters/microwave-oven-control.d.ts.map +1 -1
  177. package/dist/cjs/clusters/microwave-oven-control.js +19 -17
  178. package/dist/cjs/clusters/microwave-oven-control.js.map +1 -1
  179. package/dist/cjs/clusters/microwave-oven-mode.d.ts +63 -69
  180. package/dist/cjs/clusters/microwave-oven-mode.d.ts.map +1 -1
  181. package/dist/cjs/clusters/microwave-oven-mode.js +14 -11
  182. package/dist/cjs/clusters/microwave-oven-mode.js.map +1 -1
  183. package/dist/cjs/clusters/mode-base.d.ts +27 -46
  184. package/dist/cjs/clusters/mode-base.d.ts.map +1 -1
  185. package/dist/cjs/clusters/mode-base.js +9 -10
  186. package/dist/cjs/clusters/mode-base.js.map +1 -1
  187. package/dist/cjs/clusters/mode-select.d.ts +33 -27
  188. package/dist/cjs/clusters/mode-select.d.ts.map +1 -1
  189. package/dist/cjs/clusters/mode-select.js +14 -13
  190. package/dist/cjs/clusters/mode-select.js.map +1 -1
  191. package/dist/cjs/clusters/network-commissioning.d.ts +263 -240
  192. package/dist/cjs/clusters/network-commissioning.d.ts.map +1 -1
  193. package/dist/cjs/clusters/network-commissioning.js +46 -39
  194. package/dist/cjs/clusters/network-commissioning.js.map +1 -1
  195. package/dist/cjs/clusters/occupancy-sensing.d.ts +1002 -63
  196. package/dist/cjs/clusters/occupancy-sensing.d.ts.map +1 -1
  197. package/dist/cjs/clusters/occupancy-sensing.js +278 -63
  198. package/dist/cjs/clusters/occupancy-sensing.js.map +2 -2
  199. package/dist/cjs/clusters/on-off.d.ts +18 -24
  200. package/dist/cjs/clusters/on-off.d.ts.map +1 -1
  201. package/dist/cjs/clusters/on-off.js +3 -4
  202. package/dist/cjs/clusters/on-off.js.map +1 -1
  203. package/dist/cjs/clusters/operational-credentials.d.ts +98 -85
  204. package/dist/cjs/clusters/operational-credentials.d.ts.map +1 -1
  205. package/dist/cjs/clusters/operational-credentials.js +56 -49
  206. package/dist/cjs/clusters/operational-credentials.js.map +1 -1
  207. package/dist/cjs/clusters/operational-state.d.ts +136 -57
  208. package/dist/cjs/clusters/operational-state.d.ts.map +1 -1
  209. package/dist/cjs/clusters/operational-state.js +62 -36
  210. package/dist/cjs/clusters/operational-state.js.map +2 -2
  211. package/dist/cjs/clusters/ota-software-update-provider.d.ts +43 -42
  212. package/dist/cjs/clusters/ota-software-update-provider.d.ts.map +1 -1
  213. package/dist/cjs/clusters/ota-software-update-provider.js +20 -19
  214. package/dist/cjs/clusters/ota-software-update-provider.js.map +1 -1
  215. package/dist/cjs/clusters/ota-software-update-requestor.d.ts +6 -10
  216. package/dist/cjs/clusters/ota-software-update-requestor.d.ts.map +1 -1
  217. package/dist/cjs/clusters/ota-software-update-requestor.js +4 -6
  218. package/dist/cjs/clusters/ota-software-update-requestor.js.map +1 -1
  219. package/dist/cjs/clusters/oven-cavity-operational-state.d.ts +44 -154
  220. package/dist/cjs/clusters/oven-cavity-operational-state.d.ts.map +1 -1
  221. package/dist/cjs/clusters/oven-cavity-operational-state.js +39 -156
  222. package/dist/cjs/clusters/oven-cavity-operational-state.js.map +1 -1
  223. package/dist/cjs/clusters/oven-mode.d.ts +79 -349
  224. package/dist/cjs/clusters/oven-mode.d.ts.map +1 -1
  225. package/dist/cjs/clusters/oven-mode.js +26 -82
  226. package/dist/cjs/clusters/oven-mode.js.map +1 -1
  227. package/dist/cjs/clusters/power-source.d.ts +169 -44
  228. package/dist/cjs/clusters/power-source.d.ts.map +1 -1
  229. package/dist/cjs/clusters/power-source.js +40 -16
  230. package/dist/cjs/clusters/power-source.js.map +1 -1
  231. package/dist/cjs/clusters/pressure-measurement.js +2 -2
  232. package/dist/cjs/clusters/pressure-measurement.js.map +1 -1
  233. package/dist/cjs/clusters/pump-configuration-and-control.d.ts +73 -63
  234. package/dist/cjs/clusters/pump-configuration-and-control.d.ts.map +1 -1
  235. package/dist/cjs/clusters/pump-configuration-and-control.js +19 -20
  236. package/dist/cjs/clusters/pump-configuration-and-control.js.map +1 -1
  237. package/dist/cjs/clusters/refrigerator-alarm.d.ts +2 -1
  238. package/dist/cjs/clusters/refrigerator-alarm.d.ts.map +1 -1
  239. package/dist/cjs/clusters/refrigerator-alarm.js.map +1 -1
  240. package/dist/cjs/clusters/refrigerator-and-temperature-controlled-cabinet-mode.d.ts +59 -91
  241. package/dist/cjs/clusters/refrigerator-and-temperature-controlled-cabinet-mode.d.ts.map +1 -1
  242. package/dist/cjs/clusters/refrigerator-and-temperature-controlled-cabinet-mode.js +11 -19
  243. package/dist/cjs/clusters/refrigerator-and-temperature-controlled-cabinet-mode.js.map +1 -1
  244. package/dist/cjs/clusters/relative-humidity-measurement.js +1 -1
  245. package/dist/cjs/clusters/relative-humidity-measurement.js.map +1 -1
  246. package/dist/cjs/clusters/rvc-clean-mode.d.ts +59 -103
  247. package/dist/cjs/clusters/rvc-clean-mode.d.ts.map +1 -1
  248. package/dist/cjs/clusters/rvc-clean-mode.js +11 -15
  249. package/dist/cjs/clusters/rvc-clean-mode.js.map +1 -1
  250. package/dist/cjs/clusters/rvc-operational-state.d.ts +81 -25
  251. package/dist/cjs/clusters/rvc-operational-state.d.ts.map +1 -1
  252. package/dist/cjs/clusters/rvc-operational-state.js +49 -20
  253. package/dist/cjs/clusters/rvc-operational-state.js.map +1 -1
  254. package/dist/cjs/clusters/rvc-run-mode.d.ts +85 -129
  255. package/dist/cjs/clusters/rvc-run-mode.d.ts.map +1 -1
  256. package/dist/cjs/clusters/rvc-run-mode.js +16 -15
  257. package/dist/cjs/clusters/rvc-run-mode.js.map +1 -1
  258. package/dist/cjs/clusters/scenes-management.d.ts +328 -181
  259. package/dist/cjs/clusters/scenes-management.d.ts.map +1 -1
  260. package/dist/cjs/clusters/scenes-management.js +37 -22
  261. package/dist/cjs/clusters/scenes-management.js.map +1 -1
  262. package/dist/cjs/clusters/service-area.d.ts +2052 -0
  263. package/dist/cjs/clusters/service-area.d.ts.map +1 -0
  264. package/dist/cjs/clusters/service-area.js +582 -0
  265. package/dist/cjs/clusters/service-area.js.map +6 -0
  266. package/dist/cjs/clusters/smoke-co-alarm.d.ts +10 -18
  267. package/dist/cjs/clusters/smoke-co-alarm.d.ts.map +1 -1
  268. package/dist/cjs/clusters/smoke-co-alarm.js +2 -3
  269. package/dist/cjs/clusters/smoke-co-alarm.js.map +1 -1
  270. package/dist/cjs/clusters/switch.d.ts +478 -191
  271. package/dist/cjs/clusters/switch.d.ts.map +1 -1
  272. package/dist/cjs/clusters/switch.js +145 -57
  273. package/dist/cjs/clusters/switch.js.map +1 -1
  274. package/dist/cjs/clusters/target-navigator.d.ts +1 -1
  275. package/dist/cjs/clusters/target-navigator.js +1 -1
  276. package/dist/cjs/clusters/thermostat.d.ts +3877 -830
  277. package/dist/cjs/clusters/thermostat.d.ts.map +1 -1
  278. package/dist/cjs/clusters/thermostat.js +841 -159
  279. package/dist/cjs/clusters/thermostat.js.map +2 -2
  280. package/dist/cjs/clusters/thread-border-router-management.d.ts +711 -0
  281. package/dist/cjs/clusters/thread-border-router-management.d.ts.map +1 -0
  282. package/dist/cjs/clusters/thread-border-router-management.js +265 -0
  283. package/dist/cjs/clusters/thread-border-router-management.js.map +6 -0
  284. package/dist/cjs/clusters/thread-network-diagnostics.d.ts +81 -55
  285. package/dist/cjs/clusters/thread-network-diagnostics.d.ts.map +1 -1
  286. package/dist/cjs/clusters/thread-network-diagnostics.js +32 -21
  287. package/dist/cjs/clusters/thread-network-diagnostics.js.map +1 -1
  288. package/dist/cjs/clusters/thread-network-directory.d.ts +250 -0
  289. package/dist/cjs/clusters/thread-network-directory.d.ts.map +1 -0
  290. package/dist/cjs/clusters/thread-network-directory.js +187 -0
  291. package/dist/cjs/clusters/thread-network-directory.js.map +6 -0
  292. package/dist/cjs/clusters/time-synchronization.d.ts +101 -76
  293. package/dist/cjs/clusters/time-synchronization.d.ts.map +1 -1
  294. package/dist/cjs/clusters/time-synchronization.js +30 -23
  295. package/dist/cjs/clusters/time-synchronization.js.map +1 -1
  296. package/dist/cjs/clusters/unit-localization.d.ts +3 -4
  297. package/dist/cjs/clusters/unit-localization.d.ts.map +1 -1
  298. package/dist/cjs/clusters/unit-localization.js.map +1 -1
  299. package/dist/cjs/clusters/user-label.d.ts +2 -1
  300. package/dist/cjs/clusters/user-label.d.ts.map +1 -1
  301. package/dist/cjs/clusters/user-label.js.map +1 -1
  302. package/dist/cjs/clusters/water-heater-management.d.ts +1371 -0
  303. package/dist/cjs/clusters/water-heater-management.d.ts.map +1 -0
  304. package/dist/cjs/clusters/water-heater-management.js +336 -0
  305. package/dist/cjs/clusters/water-heater-management.js.map +6 -0
  306. package/dist/cjs/clusters/water-heater-mode.d.ts +491 -0
  307. package/dist/cjs/clusters/water-heater-mode.d.ts.map +1 -0
  308. package/dist/cjs/clusters/water-heater-mode.js +195 -0
  309. package/dist/cjs/clusters/water-heater-mode.js.map +6 -0
  310. package/dist/cjs/clusters/water-tank-level-monitoring.d.ts +162 -0
  311. package/dist/cjs/clusters/water-tank-level-monitoring.d.ts.map +1 -0
  312. package/dist/cjs/clusters/water-tank-level-monitoring.js +47 -0
  313. package/dist/cjs/clusters/water-tank-level-monitoring.js.map +6 -0
  314. package/dist/cjs/clusters/wi-fi-network-diagnostics.d.ts +20 -27
  315. package/dist/cjs/clusters/wi-fi-network-diagnostics.d.ts.map +1 -1
  316. package/dist/cjs/clusters/wi-fi-network-diagnostics.js +6 -8
  317. package/dist/cjs/clusters/wi-fi-network-diagnostics.js.map +1 -1
  318. package/dist/cjs/clusters/wi-fi-network-management.d.ts +91 -0
  319. package/dist/cjs/clusters/wi-fi-network-management.d.ts.map +1 -0
  320. package/dist/cjs/clusters/wi-fi-network-management.js +122 -0
  321. package/dist/cjs/clusters/wi-fi-network-management.js.map +6 -0
  322. package/dist/cjs/clusters/window-covering.d.ts +66 -78
  323. package/dist/cjs/clusters/window-covering.d.ts.map +1 -1
  324. package/dist/cjs/clusters/window-covering.js +26 -37
  325. package/dist/cjs/clusters/window-covering.js.map +1 -1
  326. package/dist/cjs/common/ValidationError.d.ts.map +1 -1
  327. package/dist/cjs/datatype/AttributeId.d.ts.map +1 -1
  328. package/dist/cjs/datatype/CaseAuthenticatedTag.d.ts.map +1 -1
  329. package/dist/cjs/datatype/ClusterId.d.ts.map +1 -1
  330. package/dist/cjs/datatype/CommandId.d.ts +1 -0
  331. package/dist/cjs/datatype/CommandId.d.ts.map +1 -1
  332. package/dist/cjs/datatype/CommandId.js +3 -0
  333. package/dist/cjs/datatype/CommandId.js.map +1 -1
  334. package/dist/cjs/datatype/FieldId.d.ts.map +1 -1
  335. package/dist/cjs/datatype/ManufacturerExtensibleIdentifier.d.ts.map +1 -1
  336. package/dist/cjs/datatype/NodeId.d.ts.map +1 -1
  337. package/dist/cjs/datatype/VendorId.d.ts.map +1 -1
  338. package/dist/cjs/globals/AtomicAttributeStatus.d.ts +34 -0
  339. package/dist/cjs/globals/AtomicAttributeStatus.d.ts.map +1 -0
  340. package/dist/cjs/globals/AtomicAttributeStatus.js +46 -0
  341. package/dist/cjs/globals/AtomicAttributeStatus.js.map +6 -0
  342. package/dist/cjs/globals/AtomicRequestType.d.ts +24 -0
  343. package/dist/cjs/globals/AtomicRequestType.d.ts.map +1 -0
  344. package/dist/cjs/globals/AtomicRequestType.js +35 -0
  345. package/dist/cjs/globals/AtomicRequestType.js.map +6 -0
  346. package/dist/cjs/globals/Locationdesc.d.ts +79 -0
  347. package/dist/cjs/globals/Locationdesc.d.ts.map +1 -0
  348. package/dist/cjs/globals/Locationdesc.js +89 -0
  349. package/dist/cjs/globals/Locationdesc.js.map +6 -0
  350. package/dist/cjs/globals/Priority.d.ts +1 -1
  351. package/dist/cjs/globals/Semtag.d.ts +6 -6
  352. package/dist/cjs/globals/Semtag.js +4 -4
  353. package/dist/cjs/globals/SoftwareVersionCertificationStatus.d.ts +1 -1
  354. package/dist/cjs/globals/Status.d.ts +18 -3
  355. package/dist/cjs/globals/Status.d.ts.map +1 -1
  356. package/dist/cjs/globals/Status.js +3 -1
  357. package/dist/cjs/globals/Status.js.map +1 -1
  358. package/dist/cjs/globals/Tod.d.ts +2 -2
  359. package/dist/cjs/globals/index.d.ts +3 -0
  360. package/dist/cjs/globals/index.d.ts.map +1 -1
  361. package/dist/cjs/globals/index.js +3 -0
  362. package/dist/cjs/globals/index.js.map +1 -1
  363. package/dist/cjs/schema/BitmapSchema.d.ts.map +1 -1
  364. package/dist/cjs/schema/PairingCodeSchema.d.ts +32 -4
  365. package/dist/cjs/schema/PairingCodeSchema.d.ts.map +1 -1
  366. package/dist/cjs/schema/PairingCodeSchema.js +17 -3
  367. package/dist/cjs/schema/PairingCodeSchema.js.map +1 -1
  368. package/dist/cjs/schema/QrCodeSchema.d.ts.map +1 -1
  369. package/dist/cjs/schema/QrCodeSchema.js +4 -1
  370. package/dist/cjs/schema/QrCodeSchema.js.map +1 -1
  371. package/dist/cjs/schema/SpecificationVersionSchema.d.ts.map +1 -1
  372. package/dist/cjs/tlv/TlvArray.d.ts.map +1 -1
  373. package/dist/cjs/tlv/TlvNullable.d.ts.map +1 -1
  374. package/dist/cjs/tlv/TlvNumber.d.ts.map +1 -1
  375. package/dist/cjs/tlv/TlvObject.d.ts.map +1 -1
  376. package/dist/esm/cluster/Cluster.d.ts.map +1 -1
  377. package/dist/esm/cluster/ClusterHelper.d.ts.map +1 -1
  378. package/dist/esm/clusters/access-control.d.ts +3972 -522
  379. package/dist/esm/clusters/access-control.d.ts.map +1 -1
  380. package/dist/esm/clusters/access-control.js +645 -120
  381. package/dist/esm/clusters/access-control.js.map +2 -2
  382. package/dist/esm/clusters/actions.d.ts +10 -9
  383. package/dist/esm/clusters/actions.d.ts.map +1 -1
  384. package/dist/esm/clusters/actions.js +4 -4
  385. package/dist/esm/clusters/actions.js.map +1 -1
  386. package/dist/esm/clusters/administrator-commissioning.d.ts +156 -129
  387. package/dist/esm/clusters/administrator-commissioning.d.ts.map +1 -1
  388. package/dist/esm/clusters/administrator-commissioning.js +40 -35
  389. package/dist/esm/clusters/administrator-commissioning.js.map +1 -1
  390. package/dist/esm/clusters/alarm-base.d.ts +9 -12
  391. package/dist/esm/clusters/alarm-base.d.ts.map +1 -1
  392. package/dist/esm/clusters/alarm-base.js +3 -4
  393. package/dist/esm/clusters/alarm-base.js.map +1 -1
  394. package/dist/esm/clusters/application-launcher.d.ts +27 -15
  395. package/dist/esm/clusters/application-launcher.d.ts.map +1 -1
  396. package/dist/esm/clusters/application-launcher.js +7 -4
  397. package/dist/esm/clusters/application-launcher.js.map +1 -1
  398. package/dist/esm/clusters/ballast-configuration.d.ts +7 -7
  399. package/dist/esm/clusters/ballast-configuration.js +7 -7
  400. package/dist/esm/clusters/basic-information.d.ts +29 -21
  401. package/dist/esm/clusters/basic-information.d.ts.map +1 -1
  402. package/dist/esm/clusters/basic-information.js +29 -21
  403. package/dist/esm/clusters/basic-information.js.map +1 -1
  404. package/dist/esm/clusters/bridged-device-basic-information.d.ts +816 -34
  405. package/dist/esm/clusters/bridged-device-basic-information.d.ts.map +1 -1
  406. package/dist/esm/clusters/bridged-device-basic-information.js +188 -32
  407. package/dist/esm/clusters/bridged-device-basic-information.js.map +2 -2
  408. package/dist/esm/clusters/channel.d.ts +115 -124
  409. package/dist/esm/clusters/channel.d.ts.map +1 -1
  410. package/dist/esm/clusters/channel.js +15 -16
  411. package/dist/esm/clusters/channel.js.map +1 -1
  412. package/dist/esm/clusters/color-control.d.ts +3076 -1366
  413. package/dist/esm/clusters/color-control.d.ts.map +1 -1
  414. package/dist/esm/clusters/color-control.js +424 -358
  415. package/dist/esm/clusters/color-control.js.map +2 -2
  416. package/dist/esm/clusters/commissioner-control.d.ts +268 -0
  417. package/dist/esm/clusters/commissioner-control.d.ts.map +1 -0
  418. package/dist/esm/clusters/commissioner-control.js +174 -0
  419. package/dist/esm/clusters/commissioner-control.js.map +6 -0
  420. package/dist/esm/clusters/content-control.d.ts +497 -221
  421. package/dist/esm/clusters/content-control.d.ts.map +1 -1
  422. package/dist/esm/clusters/content-control.js +60 -42
  423. package/dist/esm/clusters/content-control.js.map +2 -2
  424. package/dist/esm/clusters/content-launcher.d.ts +248 -215
  425. package/dist/esm/clusters/content-launcher.d.ts.map +1 -1
  426. package/dist/esm/clusters/content-launcher.js +16 -15
  427. package/dist/esm/clusters/content-launcher.js.map +1 -1
  428. package/dist/esm/clusters/device-energy-management-mode.d.ts +76 -333
  429. package/dist/esm/clusters/device-energy-management-mode.d.ts.map +1 -1
  430. package/dist/esm/clusters/device-energy-management-mode.js +26 -80
  431. package/dist/esm/clusters/device-energy-management-mode.js.map +1 -1
  432. package/dist/esm/clusters/device-energy-management.d.ts +1299 -930
  433. package/dist/esm/clusters/device-energy-management.d.ts.map +1 -1
  434. package/dist/esm/clusters/device-energy-management.js +189 -160
  435. package/dist/esm/clusters/device-energy-management.js.map +2 -2
  436. package/dist/esm/clusters/dishwasher-alarm.d.ts +14 -17
  437. package/dist/esm/clusters/dishwasher-alarm.d.ts.map +1 -1
  438. package/dist/esm/clusters/dishwasher-alarm.js +3 -4
  439. package/dist/esm/clusters/dishwasher-alarm.js.map +1 -1
  440. package/dist/esm/clusters/dishwasher-mode.d.ts +65 -105
  441. package/dist/esm/clusters/dishwasher-mode.d.ts.map +1 -1
  442. package/dist/esm/clusters/dishwasher-mode.js +13 -25
  443. package/dist/esm/clusters/dishwasher-mode.js.map +1 -1
  444. package/dist/esm/clusters/door-lock.d.ts +2751 -5427
  445. package/dist/esm/clusters/door-lock.d.ts.map +1 -1
  446. package/dist/esm/clusters/door-lock.js +482 -804
  447. package/dist/esm/clusters/door-lock.js.map +2 -2
  448. package/dist/esm/clusters/ecosystem-information.d.ts +186 -0
  449. package/dist/esm/clusters/ecosystem-information.d.ts.map +1 -0
  450. package/dist/esm/clusters/ecosystem-information.js +134 -0
  451. package/dist/esm/clusters/ecosystem-information.js.map +6 -0
  452. package/dist/esm/clusters/electrical-energy-measurement.d.ts +363 -368
  453. package/dist/esm/clusters/electrical-energy-measurement.d.ts.map +1 -1
  454. package/dist/esm/clusters/electrical-energy-measurement.js +15 -16
  455. package/dist/esm/clusters/electrical-energy-measurement.js.map +1 -1
  456. package/dist/esm/clusters/energy-evse-mode.d.ts +92 -330
  457. package/dist/esm/clusters/energy-evse-mode.d.ts.map +1 -1
  458. package/dist/esm/clusters/energy-evse-mode.js +25 -79
  459. package/dist/esm/clusters/energy-evse-mode.js.map +1 -1
  460. package/dist/esm/clusters/energy-evse.d.ts +557 -273
  461. package/dist/esm/clusters/energy-evse.d.ts.map +1 -1
  462. package/dist/esm/clusters/energy-evse.js +107 -55
  463. package/dist/esm/clusters/energy-evse.js.map +1 -1
  464. package/dist/esm/clusters/energy-preference.d.ts +76 -76
  465. package/dist/esm/clusters/energy-preference.d.ts.map +1 -1
  466. package/dist/esm/clusters/energy-preference.js +15 -18
  467. package/dist/esm/clusters/energy-preference.js.map +1 -1
  468. package/dist/esm/clusters/ethernet-network-diagnostics.d.ts +3 -9
  469. package/dist/esm/clusters/ethernet-network-diagnostics.d.ts.map +1 -1
  470. package/dist/esm/clusters/ethernet-network-diagnostics.js +1 -3
  471. package/dist/esm/clusters/ethernet-network-diagnostics.js.map +1 -1
  472. package/dist/esm/clusters/fan-control.d.ts +12 -12
  473. package/dist/esm/clusters/fan-control.js +4 -4
  474. package/dist/esm/clusters/fixed-label.d.ts +7 -2
  475. package/dist/esm/clusters/fixed-label.d.ts.map +1 -1
  476. package/dist/esm/clusters/fixed-label.js.map +1 -1
  477. package/dist/esm/clusters/flow-measurement.d.ts +4 -4
  478. package/dist/esm/clusters/flow-measurement.d.ts.map +1 -1
  479. package/dist/esm/clusters/flow-measurement.js +6 -6
  480. package/dist/esm/clusters/flow-measurement.js.map +1 -1
  481. package/dist/esm/clusters/general-commissioning.d.ts +1416 -111
  482. package/dist/esm/clusters/general-commissioning.d.ts.map +1 -1
  483. package/dist/esm/clusters/general-commissioning.js +274 -56
  484. package/dist/esm/clusters/general-commissioning.js.map +2 -2
  485. package/dist/esm/clusters/general-diagnostics.d.ts +115 -122
  486. package/dist/esm/clusters/general-diagnostics.d.ts.map +1 -1
  487. package/dist/esm/clusters/general-diagnostics.js +31 -33
  488. package/dist/esm/clusters/general-diagnostics.js.map +1 -1
  489. package/dist/esm/clusters/group-key-management.d.ts +72 -82
  490. package/dist/esm/clusters/group-key-management.d.ts.map +1 -1
  491. package/dist/esm/clusters/group-key-management.js +19 -22
  492. package/dist/esm/clusters/group-key-management.js.map +1 -1
  493. package/dist/esm/clusters/groups.d.ts +9 -6
  494. package/dist/esm/clusters/groups.d.ts.map +1 -1
  495. package/dist/esm/clusters/groups.js +3 -2
  496. package/dist/esm/clusters/groups.js.map +1 -1
  497. package/dist/esm/clusters/icd-management.d.ts +223 -66
  498. package/dist/esm/clusters/icd-management.d.ts.map +1 -1
  499. package/dist/esm/clusters/icd-management.js +61 -23
  500. package/dist/esm/clusters/icd-management.js.map +2 -2
  501. package/dist/esm/clusters/identify.d.ts +12 -13
  502. package/dist/esm/clusters/identify.d.ts.map +1 -1
  503. package/dist/esm/clusters/identify.js +9 -10
  504. package/dist/esm/clusters/identify.js.map +1 -1
  505. package/dist/esm/clusters/illuminance-measurement.d.ts +7 -8
  506. package/dist/esm/clusters/illuminance-measurement.d.ts.map +1 -1
  507. package/dist/esm/clusters/illuminance-measurement.js +9 -10
  508. package/dist/esm/clusters/illuminance-measurement.js.map +1 -1
  509. package/dist/esm/clusters/index.d.ts +11 -1
  510. package/dist/esm/clusters/index.d.ts.map +1 -1
  511. package/dist/esm/clusters/index.js +36 -3
  512. package/dist/esm/clusters/index.js.map +1 -1
  513. package/dist/esm/clusters/joint-fabric-datastore-cluster.d.ts +1239 -0
  514. package/dist/esm/clusters/joint-fabric-datastore-cluster.d.ts.map +1 -0
  515. package/dist/esm/clusters/joint-fabric-datastore-cluster.js +470 -0
  516. package/dist/esm/clusters/joint-fabric-datastore-cluster.js.map +6 -0
  517. package/dist/esm/clusters/joint-fabric-pki.d.ts +174 -0
  518. package/dist/esm/clusters/joint-fabric-pki.d.ts.map +1 -0
  519. package/dist/esm/clusters/joint-fabric-pki.js +100 -0
  520. package/dist/esm/clusters/joint-fabric-pki.js.map +6 -0
  521. package/dist/esm/clusters/keypad-input.d.ts +2 -2
  522. package/dist/esm/clusters/laundry-dryer-controls.d.ts +6 -7
  523. package/dist/esm/clusters/laundry-dryer-controls.d.ts.map +1 -1
  524. package/dist/esm/clusters/laundry-dryer-controls.js +6 -10
  525. package/dist/esm/clusters/laundry-dryer-controls.js.map +1 -1
  526. package/dist/esm/clusters/laundry-washer-controls.d.ts +74 -62
  527. package/dist/esm/clusters/laundry-washer-controls.d.ts.map +1 -1
  528. package/dist/esm/clusters/laundry-washer-controls.js +26 -25
  529. package/dist/esm/clusters/laundry-washer-controls.js.map +1 -1
  530. package/dist/esm/clusters/laundry-washer-mode.d.ts +69 -109
  531. package/dist/esm/clusters/laundry-washer-mode.d.ts.map +1 -1
  532. package/dist/esm/clusters/laundry-washer-mode.js +14 -26
  533. package/dist/esm/clusters/laundry-washer-mode.js.map +1 -1
  534. package/dist/esm/clusters/level-control.d.ts +209 -70
  535. package/dist/esm/clusters/level-control.d.ts.map +1 -1
  536. package/dist/esm/clusters/level-control.js +45 -12
  537. package/dist/esm/clusters/level-control.js.map +1 -1
  538. package/dist/esm/clusters/localization-configuration.d.ts +5 -6
  539. package/dist/esm/clusters/localization-configuration.d.ts.map +1 -1
  540. package/dist/esm/clusters/localization-configuration.js +5 -6
  541. package/dist/esm/clusters/localization-configuration.js.map +1 -1
  542. package/dist/esm/clusters/media-input.d.ts +9 -6
  543. package/dist/esm/clusters/media-input.d.ts.map +1 -1
  544. package/dist/esm/clusters/media-input.js +3 -2
  545. package/dist/esm/clusters/media-input.js.map +1 -1
  546. package/dist/esm/clusters/media-playback.d.ts +29 -24
  547. package/dist/esm/clusters/media-playback.d.ts.map +1 -1
  548. package/dist/esm/clusters/media-playback.js +5 -4
  549. package/dist/esm/clusters/media-playback.js.map +1 -1
  550. package/dist/esm/clusters/microwave-oven-control.d.ts +54 -48
  551. package/dist/esm/clusters/microwave-oven-control.d.ts.map +1 -1
  552. package/dist/esm/clusters/microwave-oven-control.js +19 -17
  553. package/dist/esm/clusters/microwave-oven-control.js.map +1 -1
  554. package/dist/esm/clusters/microwave-oven-mode.d.ts +63 -69
  555. package/dist/esm/clusters/microwave-oven-mode.d.ts.map +1 -1
  556. package/dist/esm/clusters/microwave-oven-mode.js +14 -11
  557. package/dist/esm/clusters/microwave-oven-mode.js.map +1 -1
  558. package/dist/esm/clusters/mode-base.d.ts +27 -46
  559. package/dist/esm/clusters/mode-base.d.ts.map +1 -1
  560. package/dist/esm/clusters/mode-base.js +9 -10
  561. package/dist/esm/clusters/mode-base.js.map +1 -1
  562. package/dist/esm/clusters/mode-select.d.ts +33 -27
  563. package/dist/esm/clusters/mode-select.d.ts.map +1 -1
  564. package/dist/esm/clusters/mode-select.js +14 -13
  565. package/dist/esm/clusters/mode-select.js.map +1 -1
  566. package/dist/esm/clusters/network-commissioning.d.ts +263 -240
  567. package/dist/esm/clusters/network-commissioning.d.ts.map +1 -1
  568. package/dist/esm/clusters/network-commissioning.js +46 -39
  569. package/dist/esm/clusters/network-commissioning.js.map +1 -1
  570. package/dist/esm/clusters/occupancy-sensing.d.ts +1002 -63
  571. package/dist/esm/clusters/occupancy-sensing.d.ts.map +1 -1
  572. package/dist/esm/clusters/occupancy-sensing.js +287 -65
  573. package/dist/esm/clusters/occupancy-sensing.js.map +2 -2
  574. package/dist/esm/clusters/on-off.d.ts +18 -24
  575. package/dist/esm/clusters/on-off.d.ts.map +1 -1
  576. package/dist/esm/clusters/on-off.js +3 -4
  577. package/dist/esm/clusters/on-off.js.map +1 -1
  578. package/dist/esm/clusters/operational-credentials.d.ts +98 -85
  579. package/dist/esm/clusters/operational-credentials.d.ts.map +1 -1
  580. package/dist/esm/clusters/operational-credentials.js +56 -49
  581. package/dist/esm/clusters/operational-credentials.js.map +1 -1
  582. package/dist/esm/clusters/operational-state.d.ts +136 -57
  583. package/dist/esm/clusters/operational-state.d.ts.map +1 -1
  584. package/dist/esm/clusters/operational-state.js +63 -37
  585. package/dist/esm/clusters/operational-state.js.map +2 -2
  586. package/dist/esm/clusters/ota-software-update-provider.d.ts +43 -42
  587. package/dist/esm/clusters/ota-software-update-provider.d.ts.map +1 -1
  588. package/dist/esm/clusters/ota-software-update-provider.js +20 -19
  589. package/dist/esm/clusters/ota-software-update-provider.js.map +1 -1
  590. package/dist/esm/clusters/ota-software-update-requestor.d.ts +6 -10
  591. package/dist/esm/clusters/ota-software-update-requestor.d.ts.map +1 -1
  592. package/dist/esm/clusters/ota-software-update-requestor.js +4 -6
  593. package/dist/esm/clusters/ota-software-update-requestor.js.map +1 -1
  594. package/dist/esm/clusters/oven-cavity-operational-state.d.ts +44 -154
  595. package/dist/esm/clusters/oven-cavity-operational-state.d.ts.map +1 -1
  596. package/dist/esm/clusters/oven-cavity-operational-state.js +41 -166
  597. package/dist/esm/clusters/oven-cavity-operational-state.js.map +1 -1
  598. package/dist/esm/clusters/oven-mode.d.ts +79 -349
  599. package/dist/esm/clusters/oven-mode.d.ts.map +1 -1
  600. package/dist/esm/clusters/oven-mode.js +26 -89
  601. package/dist/esm/clusters/oven-mode.js.map +1 -1
  602. package/dist/esm/clusters/power-source.d.ts +169 -44
  603. package/dist/esm/clusters/power-source.d.ts.map +1 -1
  604. package/dist/esm/clusters/power-source.js +40 -16
  605. package/dist/esm/clusters/power-source.js.map +1 -1
  606. package/dist/esm/clusters/pressure-measurement.js +2 -2
  607. package/dist/esm/clusters/pressure-measurement.js.map +1 -1
  608. package/dist/esm/clusters/pump-configuration-and-control.d.ts +73 -63
  609. package/dist/esm/clusters/pump-configuration-and-control.d.ts.map +1 -1
  610. package/dist/esm/clusters/pump-configuration-and-control.js +19 -20
  611. package/dist/esm/clusters/pump-configuration-and-control.js.map +1 -1
  612. package/dist/esm/clusters/refrigerator-alarm.d.ts +2 -1
  613. package/dist/esm/clusters/refrigerator-alarm.d.ts.map +1 -1
  614. package/dist/esm/clusters/refrigerator-alarm.js.map +1 -1
  615. package/dist/esm/clusters/refrigerator-and-temperature-controlled-cabinet-mode.d.ts +59 -91
  616. package/dist/esm/clusters/refrigerator-and-temperature-controlled-cabinet-mode.d.ts.map +1 -1
  617. package/dist/esm/clusters/refrigerator-and-temperature-controlled-cabinet-mode.js +12 -20
  618. package/dist/esm/clusters/refrigerator-and-temperature-controlled-cabinet-mode.js.map +1 -1
  619. package/dist/esm/clusters/relative-humidity-measurement.js +1 -1
  620. package/dist/esm/clusters/relative-humidity-measurement.js.map +1 -1
  621. package/dist/esm/clusters/rvc-clean-mode.d.ts +59 -103
  622. package/dist/esm/clusters/rvc-clean-mode.d.ts.map +1 -1
  623. package/dist/esm/clusters/rvc-clean-mode.js +11 -15
  624. package/dist/esm/clusters/rvc-clean-mode.js.map +1 -1
  625. package/dist/esm/clusters/rvc-operational-state.d.ts +81 -25
  626. package/dist/esm/clusters/rvc-operational-state.d.ts.map +1 -1
  627. package/dist/esm/clusters/rvc-operational-state.js +49 -20
  628. package/dist/esm/clusters/rvc-operational-state.js.map +1 -1
  629. package/dist/esm/clusters/rvc-run-mode.d.ts +85 -129
  630. package/dist/esm/clusters/rvc-run-mode.d.ts.map +1 -1
  631. package/dist/esm/clusters/rvc-run-mode.js +16 -15
  632. package/dist/esm/clusters/rvc-run-mode.js.map +1 -1
  633. package/dist/esm/clusters/scenes-management.d.ts +328 -181
  634. package/dist/esm/clusters/scenes-management.d.ts.map +1 -1
  635. package/dist/esm/clusters/scenes-management.js +37 -22
  636. package/dist/esm/clusters/scenes-management.js.map +1 -1
  637. package/dist/esm/clusters/service-area.d.ts +2052 -0
  638. package/dist/esm/clusters/service-area.d.ts.map +1 -0
  639. package/dist/esm/clusters/service-area.js +562 -0
  640. package/dist/esm/clusters/service-area.js.map +6 -0
  641. package/dist/esm/clusters/smoke-co-alarm.d.ts +10 -18
  642. package/dist/esm/clusters/smoke-co-alarm.d.ts.map +1 -1
  643. package/dist/esm/clusters/smoke-co-alarm.js +2 -3
  644. package/dist/esm/clusters/smoke-co-alarm.js.map +1 -1
  645. package/dist/esm/clusters/switch.d.ts +478 -191
  646. package/dist/esm/clusters/switch.d.ts.map +1 -1
  647. package/dist/esm/clusters/switch.js +145 -57
  648. package/dist/esm/clusters/switch.js.map +1 -1
  649. package/dist/esm/clusters/target-navigator.d.ts +1 -1
  650. package/dist/esm/clusters/target-navigator.js +1 -1
  651. package/dist/esm/clusters/thermostat.d.ts +3877 -830
  652. package/dist/esm/clusters/thermostat.d.ts.map +1 -1
  653. package/dist/esm/clusters/thermostat.js +842 -160
  654. package/dist/esm/clusters/thermostat.js.map +2 -2
  655. package/dist/esm/clusters/thread-border-router-management.d.ts +711 -0
  656. package/dist/esm/clusters/thread-border-router-management.d.ts.map +1 -0
  657. package/dist/esm/clusters/thread-border-router-management.js +245 -0
  658. package/dist/esm/clusters/thread-border-router-management.js.map +6 -0
  659. package/dist/esm/clusters/thread-network-diagnostics.d.ts +81 -55
  660. package/dist/esm/clusters/thread-network-diagnostics.d.ts.map +1 -1
  661. package/dist/esm/clusters/thread-network-diagnostics.js +32 -21
  662. package/dist/esm/clusters/thread-network-diagnostics.js.map +1 -1
  663. package/dist/esm/clusters/thread-network-directory.d.ts +250 -0
  664. package/dist/esm/clusters/thread-network-directory.d.ts.map +1 -0
  665. package/dist/esm/clusters/thread-network-directory.js +167 -0
  666. package/dist/esm/clusters/thread-network-directory.js.map +6 -0
  667. package/dist/esm/clusters/time-synchronization.d.ts +101 -76
  668. package/dist/esm/clusters/time-synchronization.d.ts.map +1 -1
  669. package/dist/esm/clusters/time-synchronization.js +30 -23
  670. package/dist/esm/clusters/time-synchronization.js.map +1 -1
  671. package/dist/esm/clusters/unit-localization.d.ts +3 -4
  672. package/dist/esm/clusters/unit-localization.d.ts.map +1 -1
  673. package/dist/esm/clusters/unit-localization.js.map +1 -1
  674. package/dist/esm/clusters/user-label.d.ts +2 -1
  675. package/dist/esm/clusters/user-label.d.ts.map +1 -1
  676. package/dist/esm/clusters/user-label.js.map +1 -1
  677. package/dist/esm/clusters/water-heater-management.d.ts +1371 -0
  678. package/dist/esm/clusters/water-heater-management.d.ts.map +1 -0
  679. package/dist/esm/clusters/water-heater-management.js +325 -0
  680. package/dist/esm/clusters/water-heater-management.js.map +6 -0
  681. package/dist/esm/clusters/water-heater-mode.d.ts +491 -0
  682. package/dist/esm/clusters/water-heater-mode.d.ts.map +1 -0
  683. package/dist/esm/clusters/water-heater-mode.js +175 -0
  684. package/dist/esm/clusters/water-heater-mode.js.map +6 -0
  685. package/dist/esm/clusters/water-tank-level-monitoring.d.ts +162 -0
  686. package/dist/esm/clusters/water-tank-level-monitoring.d.ts.map +1 -0
  687. package/dist/esm/clusters/water-tank-level-monitoring.js +27 -0
  688. package/dist/esm/clusters/water-tank-level-monitoring.js.map +6 -0
  689. package/dist/esm/clusters/wi-fi-network-diagnostics.d.ts +20 -27
  690. package/dist/esm/clusters/wi-fi-network-diagnostics.d.ts.map +1 -1
  691. package/dist/esm/clusters/wi-fi-network-diagnostics.js +6 -8
  692. package/dist/esm/clusters/wi-fi-network-diagnostics.js.map +1 -1
  693. package/dist/esm/clusters/wi-fi-network-management.d.ts +91 -0
  694. package/dist/esm/clusters/wi-fi-network-management.d.ts.map +1 -0
  695. package/dist/esm/clusters/wi-fi-network-management.js +102 -0
  696. package/dist/esm/clusters/wi-fi-network-management.js.map +6 -0
  697. package/dist/esm/clusters/window-covering.d.ts +66 -78
  698. package/dist/esm/clusters/window-covering.d.ts.map +1 -1
  699. package/dist/esm/clusters/window-covering.js +26 -37
  700. package/dist/esm/clusters/window-covering.js.map +1 -1
  701. package/dist/esm/common/ValidationError.d.ts.map +1 -1
  702. package/dist/esm/datatype/AttributeId.d.ts.map +1 -1
  703. package/dist/esm/datatype/CaseAuthenticatedTag.d.ts.map +1 -1
  704. package/dist/esm/datatype/ClusterId.d.ts.map +1 -1
  705. package/dist/esm/datatype/CommandId.d.ts +1 -0
  706. package/dist/esm/datatype/CommandId.d.ts.map +1 -1
  707. package/dist/esm/datatype/CommandId.js +3 -0
  708. package/dist/esm/datatype/CommandId.js.map +1 -1
  709. package/dist/esm/datatype/FieldId.d.ts.map +1 -1
  710. package/dist/esm/datatype/ManufacturerExtensibleIdentifier.d.ts.map +1 -1
  711. package/dist/esm/datatype/NodeId.d.ts.map +1 -1
  712. package/dist/esm/datatype/VendorId.d.ts.map +1 -1
  713. package/dist/esm/globals/AtomicAttributeStatus.d.ts +34 -0
  714. package/dist/esm/globals/AtomicAttributeStatus.d.ts.map +1 -0
  715. package/dist/esm/globals/AtomicAttributeStatus.js +26 -0
  716. package/dist/esm/globals/AtomicAttributeStatus.js.map +6 -0
  717. package/dist/esm/globals/AtomicRequestType.d.ts +24 -0
  718. package/dist/esm/globals/AtomicRequestType.d.ts.map +1 -0
  719. package/dist/esm/globals/AtomicRequestType.js +15 -0
  720. package/dist/esm/globals/AtomicRequestType.js.map +6 -0
  721. package/dist/esm/globals/Locationdesc.d.ts +79 -0
  722. package/dist/esm/globals/Locationdesc.d.ts.map +1 -0
  723. package/dist/esm/globals/Locationdesc.js +69 -0
  724. package/dist/esm/globals/Locationdesc.js.map +6 -0
  725. package/dist/esm/globals/Priority.d.ts +1 -1
  726. package/dist/esm/globals/Semtag.d.ts +6 -6
  727. package/dist/esm/globals/Semtag.js +4 -4
  728. package/dist/esm/globals/SoftwareVersionCertificationStatus.d.ts +1 -1
  729. package/dist/esm/globals/Status.d.ts +18 -3
  730. package/dist/esm/globals/Status.d.ts.map +1 -1
  731. package/dist/esm/globals/Status.js +3 -1
  732. package/dist/esm/globals/Status.js.map +1 -1
  733. package/dist/esm/globals/Tod.d.ts +2 -2
  734. package/dist/esm/globals/index.d.ts +3 -0
  735. package/dist/esm/globals/index.d.ts.map +1 -1
  736. package/dist/esm/globals/index.js +3 -0
  737. package/dist/esm/globals/index.js.map +1 -1
  738. package/dist/esm/schema/BitmapSchema.d.ts.map +1 -1
  739. package/dist/esm/schema/PairingCodeSchema.d.ts +32 -4
  740. package/dist/esm/schema/PairingCodeSchema.d.ts.map +1 -1
  741. package/dist/esm/schema/PairingCodeSchema.js +17 -3
  742. package/dist/esm/schema/PairingCodeSchema.js.map +1 -1
  743. package/dist/esm/schema/QrCodeSchema.d.ts.map +1 -1
  744. package/dist/esm/schema/QrCodeSchema.js +4 -1
  745. package/dist/esm/schema/QrCodeSchema.js.map +1 -1
  746. package/dist/esm/schema/SpecificationVersionSchema.d.ts.map +1 -1
  747. package/dist/esm/tlv/TlvArray.d.ts.map +1 -1
  748. package/dist/esm/tlv/TlvNullable.d.ts.map +1 -1
  749. package/dist/esm/tlv/TlvNumber.d.ts.map +1 -1
  750. package/dist/esm/tlv/TlvObject.d.ts.map +1 -1
  751. package/package.json +5 -5
  752. package/src/clusters/access-control.ts +926 -171
  753. package/src/clusters/actions.ts +12 -11
  754. package/src/clusters/administrator-commissioning.ts +54 -35
  755. package/src/clusters/alarm-base.ts +3 -4
  756. package/src/clusters/application-launcher.ts +22 -7
  757. package/src/clusters/ballast-configuration.ts +7 -7
  758. package/src/clusters/basic-information.ts +29 -21
  759. package/src/clusters/bridged-device-basic-information.ts +264 -41
  760. package/src/clusters/channel.ts +20 -17
  761. package/src/clusters/color-control.ts +589 -426
  762. package/src/clusters/commissioner-control.ts +282 -0
  763. package/src/clusters/content-control.ts +48 -54
  764. package/src/clusters/content-launcher.ts +16 -15
  765. package/src/clusters/device-energy-management-mode.ts +63 -161
  766. package/src/clusters/device-energy-management.ts +246 -193
  767. package/src/clusters/dishwasher-alarm.ts +5 -5
  768. package/src/clusters/dishwasher-mode.ts +46 -87
  769. package/src/clusters/door-lock.ts +786 -1235
  770. package/src/clusters/ecosystem-information.ts +200 -0
  771. package/src/clusters/electrical-energy-measurement.ts +15 -16
  772. package/src/clusters/energy-evse-mode.ts +81 -158
  773. package/src/clusters/energy-evse.ts +138 -72
  774. package/src/clusters/energy-preference.ts +34 -28
  775. package/src/clusters/ethernet-network-diagnostics.ts +1 -3
  776. package/src/clusters/fan-control.ts +5 -5
  777. package/src/clusters/fixed-label.ts +7 -2
  778. package/src/clusters/flow-measurement.ts +6 -6
  779. package/src/clusters/general-commissioning.ts +396 -96
  780. package/src/clusters/general-diagnostics.ts +31 -33
  781. package/src/clusters/group-key-management.ts +22 -24
  782. package/src/clusters/groups.ts +3 -2
  783. package/src/clusters/icd-management.ts +88 -31
  784. package/src/clusters/identify.ts +9 -10
  785. package/src/clusters/illuminance-measurement.ts +9 -10
  786. package/src/clusters/index.ts +14 -1
  787. package/src/clusters/joint-fabric-datastore-cluster.ts +657 -0
  788. package/src/clusters/joint-fabric-pki.ts +202 -0
  789. package/src/clusters/keypad-input.ts +2 -2
  790. package/src/clusters/laundry-dryer-controls.ts +6 -10
  791. package/src/clusters/laundry-washer-controls.ts +28 -27
  792. package/src/clusters/laundry-washer-mode.ts +49 -90
  793. package/src/clusters/level-control.ts +45 -12
  794. package/src/clusters/localization-configuration.ts +5 -6
  795. package/src/clusters/media-input.ts +3 -2
  796. package/src/clusters/media-playback.ts +9 -7
  797. package/src/clusters/microwave-oven-control.ts +19 -17
  798. package/src/clusters/microwave-oven-mode.ts +42 -61
  799. package/src/clusters/mode-base.ts +16 -33
  800. package/src/clusters/mode-select.ts +17 -14
  801. package/src/clusters/network-commissioning.ts +47 -40
  802. package/src/clusters/occupancy-sensing.ts +433 -72
  803. package/src/clusters/on-off.ts +6 -8
  804. package/src/clusters/operational-credentials.ts +54 -47
  805. package/src/clusters/operational-state.ts +136 -58
  806. package/src/clusters/ota-software-update-provider.ts +23 -23
  807. package/src/clusters/ota-software-update-requestor.ts +4 -6
  808. package/src/clusters/oven-cavity-operational-state.ts +43 -171
  809. package/src/clusters/oven-mode.ts +76 -178
  810. package/src/clusters/power-source.ts +45 -21
  811. package/src/clusters/pressure-measurement.ts +2 -2
  812. package/src/clusters/pump-configuration-and-control.ts +35 -23
  813. package/src/clusters/refrigerator-alarm.ts +2 -1
  814. package/src/clusters/refrigerator-and-temperature-controlled-cabinet-mode.ts +41 -78
  815. package/src/clusters/relative-humidity-measurement.ts +1 -1
  816. package/src/clusters/rvc-clean-mode.ts +42 -101
  817. package/src/clusters/rvc-operational-state.ts +87 -25
  818. package/src/clusters/rvc-run-mode.ts +62 -126
  819. package/src/clusters/scenes-management.ts +38 -23
  820. package/src/clusters/service-area.ts +904 -0
  821. package/src/clusters/smoke-co-alarm.ts +6 -12
  822. package/src/clusters/switch.ts +177 -78
  823. package/src/clusters/target-navigator.ts +1 -1
  824. package/src/clusters/thermostat.ts +1245 -214
  825. package/src/clusters/thread-border-router-management.ts +355 -0
  826. package/src/clusters/thread-network-diagnostics.ts +34 -21
  827. package/src/clusters/thread-network-directory.ts +256 -0
  828. package/src/clusters/time-synchronization.ts +30 -23
  829. package/src/clusters/unit-localization.ts +3 -4
  830. package/src/clusters/user-label.ts +2 -1
  831. package/src/clusters/water-heater-management.ts +457 -0
  832. package/src/clusters/water-heater-mode.ts +301 -0
  833. package/src/clusters/water-tank-level-monitoring.ts +50 -0
  834. package/src/clusters/wi-fi-network-diagnostics.ts +6 -8
  835. package/src/clusters/wi-fi-network-management.ts +119 -0
  836. package/src/clusters/window-covering.ts +26 -37
  837. package/src/datatype/CommandId.ts +4 -0
  838. package/src/globals/AtomicAttributeStatus.ts +41 -0
  839. package/src/globals/AtomicRequestType.ts +27 -0
  840. package/src/globals/Locationdesc.ts +88 -0
  841. package/src/globals/Priority.ts +1 -1
  842. package/src/globals/Semtag.ts +6 -6
  843. package/src/globals/SoftwareVersionCertificationStatus.ts +1 -1
  844. package/src/globals/Status.ts +20 -3
  845. package/src/globals/Tod.ts +2 -2
  846. package/src/globals/index.ts +3 -0
  847. package/src/schema/PairingCodeSchema.ts +17 -2
  848. package/src/schema/QrCodeSchema.ts +7 -2
  849. package/dist/cjs/clusters/pulse-width-modulation.d.ts +0 -2023
  850. package/dist/cjs/clusters/pulse-width-modulation.d.ts.map +0 -1
  851. package/dist/cjs/clusters/pulse-width-modulation.js +0 -51
  852. package/dist/cjs/clusters/pulse-width-modulation.js.map +0 -6
  853. package/dist/esm/clusters/pulse-width-modulation.d.ts +0 -2023
  854. package/dist/esm/clusters/pulse-width-modulation.d.ts.map +0 -1
  855. package/dist/esm/clusters/pulse-width-modulation.js +0 -31
  856. package/dist/esm/clusters/pulse-width-modulation.js.map +0 -6
  857. package/src/clusters/pulse-width-modulation.ts +0 -54
@@ -9,34 +9,629 @@
9
9
  import { MutableCluster } from "../cluster/mutation/MutableCluster.js";
10
10
  import {
11
11
  WritableFabricScopedAttribute,
12
- OptionalWritableFabricScopedAttribute,
13
- FixedAttribute,
14
12
  Event,
15
- EventPriority
13
+ EventPriority,
14
+ FixedAttribute,
15
+ FabricScopedAttribute,
16
+ Command
16
17
  } from "../cluster/Cluster.js";
17
18
  import { TlvArray } from "../tlv/TlvArray.js";
18
- import { TlvField, TlvObject } from "../tlv/TlvObject.js";
19
- import { TlvEnum, TlvUInt16 } from "../tlv/TlvNumber.js";
20
- import { TlvSubjectId } from "../datatype/SubjectId.js";
21
- import { TlvNullable } from "../tlv/TlvNullable.js";
22
- import { TlvClusterId } from "../datatype/ClusterId.js";
23
- import { TlvEndpointNumber } from "../datatype/EndpointNumber.js";
24
- import { TlvDeviceTypeId } from "../datatype/DeviceTypeId.js";
25
- import { TypeFromSchema } from "../tlv/TlvSchema.js";
19
+ import { TlvField, TlvObject, TlvOptionalField } from "../tlv/TlvObject.js";
20
+ import { TlvByteString, TlvString } from "../tlv/TlvString.js";
26
21
  import { TlvFabricIndex } from "../datatype/FabricIndex.js";
22
+ import { TypeFromSchema } from "../tlv/TlvSchema.js";
27
23
  import { AccessLevel } from "#model";
28
- import { TlvByteString } from "../tlv/TlvString.js";
29
24
  import { TlvNodeId } from "../datatype/NodeId.js";
25
+ import { TlvNullable } from "../tlv/TlvNullable.js";
26
+ import { TlvUInt16, TlvEnum, TlvUInt32, TlvUInt64 } from "../tlv/TlvNumber.js";
27
+ import { TlvEndpointNumber } from "../datatype/EndpointNumber.js";
28
+ import { TlvClusterId } from "../datatype/ClusterId.js";
29
+ import { BitFlag } from "../schema/BitmapSchema.js";
30
+ import { TlvSubjectId } from "../datatype/SubjectId.js";
31
+ import { TlvDeviceTypeId } from "../datatype/DeviceTypeId.js";
30
32
  import { Identity } from "#general";
31
33
  import { ClusterRegistry } from "../cluster/ClusterRegistry.js";
32
34
 
33
- export namespace AccessControl {
35
+ export namespace AccessControl {
36
+ /**
37
+ * These are optional features supported by AccessControlCluster.
38
+ *
39
+ * @see {@link MatterSpecification.v13.Core} § 9.10.4
40
+ */
41
+ export enum Feature {
42
+ /**
43
+ * Extension (EXTS)
44
+ *
45
+ * This feature indicates the device supports ACL Extension attribute.
46
+ *
47
+ * @see {@link MatterSpecification.v13.Core} § 9.10.4.1
48
+ */
49
+ Extension = "Extension",
50
+
51
+ /**
52
+ * ManagedDevice (MNGD)
53
+ *
54
+ * This feature is for a device that is managed by a service associated with the device vendor and which
55
+ * imposes default access restrictions upon each new fabric added to it. This could arise, for example, if the
56
+ * device is managed by a service provider under contract to an end-user, in such a way that the manager of the
57
+ * device does not unconditionally grant universal access to all of a device’s functionality, even for fabric
58
+ * administrators. For example, many Home Routers are managed by an Internet Service Provider (a service), and
59
+ * these services often have a policy that requires them to obtain user consent before certain administrative
60
+ * functions can be delegated to a third party (e.g., a fabric Administrator). These restrictions are expressed
61
+ * using an Access Restriction List (ARL).
62
+ *
63
+ * The purpose of this feature on the Access Control cluster is to indicate to a fabric Administrator that
64
+ * access by it to specific attributes, commands and/or events for specific clusters is currently prohibited.
65
+ * Attempts to access these restricted data model elements shall result in an error of ACCESS_RESTRICTED.
66
+ *
67
+ * A device that implements this feature shall have a mechanism to honor the ReviewFabricRestrictions command,
68
+ * such as user interfaces or service interactions associated with a service provider or the device
69
+ * manufacturer, which allows the owner (or subscriber) to manage access restrictions for each fabric. The user
70
+ * interface design, which includes the way restrictions are organized and presented to the user, is not
71
+ * specified, but SHOULD be usable by non-expert end-users from common mobile devices, personal computers, or
72
+ * an on-device user interface.
73
+ *
74
+ * Controllers and clients SHOULD incorporate generic handling of the ACCESS_RESTRICTED error code, when it
75
+ * appears in allowed contexts, in order to gracefully handle situations where this feature is encountered.
76
+ * Device vendors that adopt this feature SHOULD be judicious in its use given the risk of unexpected behavior
77
+ * in controllers and clients.
78
+ *
79
+ * For certification testing, a device that implements this feature shall provide a way for all restrictions to
80
+ * be removed.
81
+ *
82
+ * The ARL attribute provides the set of restrictions currently applied to this fabric.
83
+ *
84
+ * The ReviewFabricRestrictions command provides a way for the fabric Administrator to request that the server
85
+ * triggers a review of the current fabric restrictions, by involving external entities such as end-users, or
86
+ * other services associated with the manager of the device hosting the server. This review process may involve
87
+ * communication between external services and the user, and may take an unpredictable amount of time to
88
+ * complete since an end-user may need to visit some resources, such as a mobile application or web site. A
89
+ * FabricRestrictionReviewUpdate event will be generated by the device within a predictable time period of the
90
+ * ReviewFabricRestrictionsResponse (see ReviewFabricRestrictions for specification of this time period), and
91
+ * this event can be correlated with the ReviewFabricRestrictionsResponse using a token provided in both. The
92
+ * device may provide instructions or a Redirect URL in the FabricRestrictionReviewUpdate event in order to
93
+ * help the user access the features required for managing per-fabric restrictions.
94
+ *
95
+ * See Section 6.6.2, “Model” for a description of how access control is impacted by the ARL attribute.
96
+ *
97
+ * ### Managed Device Feature Usage Restrictions
98
+ *
99
+ * Use of this feature shall be limited to the mandatory clusters of endpoints having a device type that
100
+ * explicitly permits its use in the Device Library Specification. As a reminder, the device types associated
101
+ * with an endpoint are listed in the Descriptor cluster of the endpoint.
102
+ *
103
+ * In addition, use of this feature shall NOT restrict the following clusters on any endpoint:
104
+ *
105
+ * 1. the Descriptor Cluster (0x001D)
106
+ *
107
+ * 2. the Binding Cluster (0x001E)
108
+ *
109
+ * 3. the Network Commissioning Cluster (0x0031)
110
+ *
111
+ * 4. the Identify Cluster (0x0003)
112
+ *
113
+ * 5. the Groups Cluster (0x0004)
114
+ *
115
+ * In addition, use of this feature shall NOT restrict the global attributes of any cluster.
116
+ *
117
+ * Because ARLs cannot be used to restrict root node access or access to any clusters required for
118
+ * commissioning, administrators may determine the current restrictions of the ARL at any point, including
119
+ * during commissioning after joining the fabric.
120
+ *
121
+ * @see {@link MatterSpecification.v13.Core} § 9.10.4.2
122
+ */
123
+ ManagedDevice = "ManagedDevice"
124
+ }
125
+
126
+ /**
127
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.7
128
+ */
129
+ export const TlvAccessControlExtension = TlvObject({
130
+ /**
131
+ * This field may be used by manufacturers to store arbitrary TLV-encoded data related to a fabric’s
132
+ *
133
+ * Access Control Entries.
134
+ *
135
+ * The contents shall consist of a top-level anonymous list; each list element shall include a profile-specific
136
+ * tag encoded in fully-qualified form.
137
+ *
138
+ * Administrators may iterate over this list of elements, and interpret selected elements at their discretion.
139
+ * The content of each element is not specified, but may be coordinated among manufacturers at their discretion.
140
+ *
141
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.7.1
142
+ */
143
+ data: TlvField(1, TlvByteString.bound({ maxLength: 128 })),
144
+
145
+ fabricIndex: TlvField(254, TlvFabricIndex)
146
+ });
147
+
148
+ /**
149
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.7
150
+ */
151
+ export interface AccessControlExtension extends TypeFromSchema<typeof TlvAccessControlExtension> {}
152
+
153
+ /**
154
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.1
155
+ */
156
+ export enum ChangeType {
157
+ /**
158
+ * Entry or extension was changed
159
+ */
160
+ Changed = 0,
161
+
162
+ /**
163
+ * Entry or extension was added
164
+ */
165
+ Added = 1,
166
+
167
+ /**
168
+ * Entry or extension was removed
169
+ */
170
+ Removed = 2
171
+ }
172
+
173
+ /**
174
+ * Body of the AccessControl accessControlExtensionChanged event
175
+ *
176
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.2
177
+ */
178
+ export const TlvAccessControlExtensionChangedEvent = TlvObject({
179
+ /**
180
+ * The Node ID of the Administrator that made the change, if the change occurred via a CASE session.
181
+ *
182
+ * Exactly one of AdminNodeID and AdminPasscodeID shall be set, depending on whether the change occurred via a
183
+ * CASE or PASE session; the other shall be null.
184
+ *
185
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.2.1
186
+ */
187
+ adminNodeId: TlvField(1, TlvNullable(TlvNodeId)),
188
+
189
+ /**
190
+ * The Passcode ID of the Administrator that made the change, if the change occurred via a PASE session.
191
+ * Non-zero values are reserved for future use (see PasscodeId generation in PBKDFParamRequest).
192
+ *
193
+ * Exactly one of AdminNodeID and AdminPasscodeID shall be set, depending on whether the change occurred via a
194
+ * CASE or PASE session; the other shall be null.
195
+ *
196
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.2.2
197
+ */
198
+ adminPasscodeId: TlvField(2, TlvNullable(TlvUInt16)),
199
+
200
+ /**
201
+ * The type of change as appropriate.
202
+ *
203
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.2.3
204
+ */
205
+ changeType: TlvField(3, TlvEnum<ChangeType>()),
206
+
207
+ /**
208
+ * The latest value of the changed extension.
209
+ *
210
+ * This field SHOULD be set if resources are adequate for it; otherwise it shall be set to NULL if resources
211
+ * are scarce.
212
+ *
213
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.2.4
214
+ */
215
+ latestValue: TlvField(4, TlvNullable(TlvAccessControlExtension)),
216
+
217
+ fabricIndex: TlvField(254, TlvFabricIndex)
218
+ });
219
+
220
+ /**
221
+ * Body of the AccessControl accessControlExtensionChanged event
222
+ *
223
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.2
224
+ */
225
+ export interface AccessControlExtensionChangedEvent extends TypeFromSchema<typeof TlvAccessControlExtensionChangedEvent> {}
226
+
227
+ /**
228
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.3
229
+ */
230
+ export enum AccessRestrictionType {
231
+ /**
232
+ * Clients on this fabric are currently forbidden from reading and writing an attribute
233
+ */
234
+ AttributeAccessForbidden = 0,
235
+
236
+ /**
237
+ * Clients on this fabric are currently forbidden from writing an attribute
238
+ */
239
+ AttributeWriteForbidden = 1,
240
+
241
+ /**
242
+ * Clients on this fabric are currently forbidden from invoking a command
243
+ */
244
+ CommandForbidden = 2,
245
+
246
+ /**
247
+ * Clients on this fabric are currently forbidden from reading an event
248
+ */
249
+ EventForbidden = 3
250
+ }
251
+
252
+ /**
253
+ * This structure describes an access restriction that would be applied to a specific data model element on a given
254
+ * endpoint/cluster pair (see AccessRestrictionEntryStruct).
255
+ *
256
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.8
257
+ */
258
+ export const TlvAccessRestriction = TlvObject({
259
+ /**
260
+ * This field shall indicate the type of restriction, for example, AttributeAccessForbidden.
261
+ *
262
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.8.1
263
+ */
264
+ type: TlvField(0, TlvEnum<AccessRestrictionType>()),
265
+
266
+ /**
267
+ * This field shall indicate the element Manufacturer Extensible Identifier (MEI) associated with the element
268
+ * type subject to the access restriction, based upon the AccessRestrictionTypeEnum. When the Type is
269
+ * AttributeAccessForbidden or AttributeWriteForbidden, this value shall be considered of type attrib-id (i.e.
270
+ * an attribute identifier). When the Type is CommandForbidden, this value shall be considered of type
271
+ * command-id (i.e. an attribute identifier). When the Type is EventForbidden, this value shall be considered
272
+ * of type event-id (i.e. an event identifier).
273
+ *
274
+ * A null value shall indicate the wildcard value for the given value of Type (i.e. all elements associated
275
+ * with the Type under the associated endpoint and cluster for the containing AccessRestrictionEntryStruct).
276
+ *
277
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.8.2
278
+ */
279
+ id: TlvField(1, TlvNullable(TlvUInt32))
280
+ });
281
+
282
+ /**
283
+ * This structure describes an access restriction that would be applied to a specific data model element on a given
284
+ * endpoint/cluster pair (see AccessRestrictionEntryStruct).
285
+ *
286
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.8
287
+ */
288
+ export interface AccessRestriction extends TypeFromSchema<typeof TlvAccessRestriction> {}
289
+
290
+ /**
291
+ * This structure describes a current access restriction when there is no accessing fabric.
292
+ *
293
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.10
294
+ */
295
+ export const TlvCommissioningAccessRestrictionEntry = TlvObject({
296
+ /**
297
+ * This field shall indicate the endpoint having associated access restrictions scoped to the associated fabric
298
+ * of the list containing the entry.
299
+ *
300
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.10.1
301
+ */
302
+ endpoint: TlvField(0, TlvEndpointNumber),
303
+
304
+ /**
305
+ * This field shall indicate the cluster having associated access restrictions under the entry’s Endpoint,
306
+ * scoped to the associated fabric of the list containing the entry.
307
+ *
308
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.10.2
309
+ */
310
+ cluster: TlvField(1, TlvClusterId),
311
+
312
+ /**
313
+ * This field shall indicate the set of restrictions applying to the Cluster under the given Endpoint, scoped
314
+ * to the associated fabric of the list containing the entry.
315
+ *
316
+ * This list shall NOT be empty.
317
+ *
318
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.10.3
319
+ */
320
+ restrictions: TlvField(2, TlvArray(TlvAccessRestriction, { minLength: 1 }))
321
+ });
322
+
323
+ /**
324
+ * This structure describes a current access restriction when there is no accessing fabric.
325
+ *
326
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.10
327
+ */
328
+ export interface CommissioningAccessRestrictionEntry extends TypeFromSchema<typeof TlvCommissioningAccessRestrictionEntry> {}
329
+
330
+ /**
331
+ * This structure describes a current access restriction on the fabric.
332
+ *
333
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.9
334
+ */
335
+ export const TlvAccessRestrictionEntry = TlvObject({
336
+ /**
337
+ * This field shall indicate the endpoint having associated access restrictions scoped to the associated fabric
338
+ * of the list containing the entry.
339
+ *
340
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.9.1
341
+ */
342
+ endpoint: TlvField(0, TlvEndpointNumber),
343
+
344
+ /**
345
+ * This field shall indicate the cluster having associated access restrictions under the entry’s Endpoint,
346
+ * scoped to the associated fabric of the list containing the entry.
347
+ *
348
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.9.2
349
+ */
350
+ cluster: TlvField(1, TlvClusterId),
351
+
352
+ /**
353
+ * This field shall indicate the set of restrictions applying to the Cluster under the given Endpoint, scoped
354
+ * to the associated fabric of the list containing the entry.
355
+ *
356
+ * This list shall NOT be empty.
357
+ *
358
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.9.3
359
+ */
360
+ restrictions: TlvField(2, TlvArray(TlvAccessRestriction, { minLength: 1 })),
361
+
362
+ fabricIndex: TlvField(254, TlvFabricIndex)
363
+ });
364
+
365
+ /**
366
+ * This structure describes a current access restriction on the fabric.
367
+ *
368
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.9
369
+ */
370
+ export interface AccessRestrictionEntry extends TypeFromSchema<typeof TlvAccessRestrictionEntry> {}
371
+
372
+ /**
373
+ * Input to the AccessControl reviewFabricRestrictions command
374
+ *
375
+ * @see {@link MatterSpecification.v13.Core} § 9.10.8.1
376
+ */
377
+ export const TlvReviewFabricRestrictionsRequest = TlvObject({
378
+ /**
379
+ * When the ARL field is provided, it indicates the specific restrictions that are requested for review. An
380
+ * empty list represents a generic request for review of all restrictions.
381
+ *
382
+ * @see {@link MatterSpecification.v13.Core} § 9.10.8.1.1
383
+ */
384
+ arl: TlvField(0, TlvArray(TlvCommissioningAccessRestrictionEntry))
385
+ });
386
+
387
+ /**
388
+ * Input to the AccessControl reviewFabricRestrictions command
389
+ *
390
+ * @see {@link MatterSpecification.v13.Core} § 9.10.8.1
391
+ */
392
+ export interface ReviewFabricRestrictionsRequest extends TypeFromSchema<typeof TlvReviewFabricRestrictionsRequest> {}
393
+
394
+ /**
395
+ * Returns the review token for the request, which can be used to correlate with a FabricRestrictionReviewUpdate
396
+ * event.
397
+ *
398
+ * @see {@link MatterSpecification.v13.Core} § 9.10.8.2
399
+ */
400
+ export const TlvReviewFabricRestrictionsResponse = TlvObject({
401
+ /**
402
+ * This field shall specify a Token that can be used to correlate a ReviewFabricRestrictionsResponse with a
403
+ * FabricRestrictionReviewUpdate event.
404
+ *
405
+ * @see {@link MatterSpecification.v13.Core} § 9.10.8.2.1
406
+ */
407
+ token: TlvField(0, TlvUInt64)
408
+ });
409
+
410
+ /**
411
+ * Returns the review token for the request, which can be used to correlate with a FabricRestrictionReviewUpdate
412
+ * event.
413
+ *
414
+ * @see {@link MatterSpecification.v13.Core} § 9.10.8.2
415
+ */
416
+ export interface ReviewFabricRestrictionsResponse extends TypeFromSchema<typeof TlvReviewFabricRestrictionsResponse> {}
417
+
418
+ /**
419
+ * Body of the AccessControl fabricRestrictionReviewUpdate event
420
+ *
421
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.3
422
+ */
423
+ export const TlvFabricRestrictionReviewUpdateEvent = TlvObject({
424
+ /**
425
+ * This field shall indicate the Token that can be used to correlate a ReviewFabricRestrictionsResponse with a
426
+ * FabricRestrictionReviewUpdate event.
427
+ *
428
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.3.1
429
+ */
430
+ token: TlvField(0, TlvUInt64),
431
+
432
+ /**
433
+ * This field shall provide human readable text that may be displayed to the user to help them locate the user
434
+ * interface for managing access restrictions for each fabric.
435
+ *
436
+ * A device SHOULD implement the Localization Configuration Cluster when it has no other means to determine the
437
+ * locale to use for this text.
438
+ *
439
+ * Examples include "Please try again and immediately access device display for further instructions." or
440
+ * "Please check email associated with your Acme account."
441
+ *
442
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.3.2
443
+ */
444
+ instruction: TlvOptionalField(1, TlvString.bound({ maxLength: 512 })),
445
+
446
+ /**
447
+ * This field shall indicate the URL for the service associated with the device maker which the user can visit
448
+ * to manage fabric limitations. The syntax of this field shall follow the syntax as specified in RFC 1738 and
449
+ * shall use the https scheme for internet-hosted URLs.
450
+ *
451
+ * • The URL may embed the token, fabric index, fabric vendor, or other information transparently in order to
452
+ * pass context about the originating ReviewFabricRestrictions command to the service associated with the
453
+ * URL. The service associated with the device vendor may perform vendor ID verification on the fabric from
454
+ * which the ReviewFabricRestrictions command originated.
455
+ *
456
+ * • If the device grants the request, the ARL attribute in the Access Control Cluster shall be updated to
457
+ * reflect the new access rights and a successful response shall be returned to the device making the
458
+ * request using the MTaer field of the callbackUrl. If the request is denied, the ARL attribute shall
459
+ * remain unchanged and a failure response shall be returned to the device making the request using the
460
+ * MTaer field of the callbackUrl.
461
+ *
462
+ * • The device using this mechanism shall provide a service at the URL that can accept requests for
463
+ * additional access and return responses indicating whether the requests were granted or denied.
464
+ *
465
+ * • This URL will typically lead to a server which (e.g. by looking at the User-Agent) redirects the user to
466
+ * allow viewing, downloading, installing or using a manufacturer-provided means for guiding the user
467
+ * through the process to review and approve or deny the request. The device manufacturer may choose to use
468
+ * a constructed URL which is valid in a HTTP GET request (i.e. dedicated for the product) such as, for
469
+ * example, https://domain.example/arl-app?vid=FFF1& pid=1234. If a client follows or launches the
470
+ * ARLRequestFlowUrl, it shall expand it as described in Section 9.10.9.3.4, “ARLRequestFlowUrl format”.
471
+ *
472
+ * • A manufacturer contemplating using this flow should realize that
473
+ *
474
+ * ◦ This flow typically requires internet access to access the URL, and access extension may fail when
475
+ * internet connectivity is not available.
476
+ *
477
+ * ◦ If the flow prefers to redirect the user to an app which is available on popular platforms, it SHOULD
478
+ * also provide a fallback option such as a web browser interface to ensure users can complete access
479
+ * extension.
480
+ *
481
+ * ### ARLRequestFlowUrl format
482
+ *
483
+ * The ARLRequestFlowUrl shall contain a query component (see RFC 3986 section 3.4) composed of one or more
484
+ * key-value pairs:
485
+ *
486
+ * • The query shall use the & delimiter between key/value pairs.
487
+ *
488
+ * • The key-value pairs shall in the format name=<value> where name is the key name, and <value>
489
+ *
490
+ * is the contents of the value encoded with proper URL-encoded escaping.
491
+ *
492
+ * • If key MTcu is present, it shall have a value of "_" (i.e. MTcu=_). This is the "callback URL
493
+ *
494
+ * backUrl) placeholder".
495
+ *
496
+ * • Any key whose name begins with MT not mentioned in the previous bullets shall be reserved for future use
497
+ * by this specification. Manufacturers shall NOT include query keys starting with MT in the
498
+ * ARLRequestFlowUrl unless they are referenced by a version of this specification.
499
+ *
500
+ * Any other element in the ARLRequestFlowUrl query field not covered by the above rules, as well as the
501
+ * fragment field (if present), shall remain including the order of query key/value pairs present.
502
+ *
503
+ * Expansion of ARLRequestFlowUrl by client
504
+ *
505
+ * Once the URL is obtained, it shall be expanded to form a final URL (ExpandedARLRequestFlowUrl) by proceeding
506
+ * with the following substitution algorithm on the original ARLRequestFlowUrl:
507
+ *
508
+ * 1. If key MTcu is present, compute the CallbackUrl desired (see Section 9.10.9.3.5, “CallbackUrl format
509
+ * for ARL Request Flow response”), and substitute the placeholder value "_" (i.e. in MTcu=_) in the
510
+ * ARLRequestFlowUrl with the desired contents, encoded with proper URL-encoded escaping (see RFC 3986
511
+ * section 2).
512
+ *
513
+ * The final URL after expansion (ExpandedARLRequestFlowUrl) shall be the one to follow, rather than the
514
+ * original value obtained from the FabricRestrictionReviewUpdate event.
515
+ *
516
+ * ### CallbackUrl format for ARL Request Flow response
517
+ *
518
+ * If a CallbackUrl field (i.e. MTcu=) query field placeholder is present in the ARLRequestFlowUrl, the client
519
+ * may replace the placeholder value "_" in the ExpandedARLRequestFlowUrl with a URL that the manufacturer flow
520
+ * can use to make a smooth return to the client when the ARL flow has terminated.
521
+ *
522
+ * This URL field may contain a query component (see RFC 3986 section 3.4). If a query is present, it shall be
523
+ * composed of one or more key-value pairs:
524
+ *
525
+ * • The query shall use the & delimiter between key/value pairs.
526
+ *
527
+ * • The key-value pairs shall follow the format name=<value> where name is the key name, and
528
+ *
529
+ * <value> is the contents of the value encoded with proper URL-encoded escaping.
530
+ *
531
+ * • If key MTaer is present, it shall have a value of "_" (i.e. MTaer=_). This is the placeholder for a
532
+ * "access extension response" provided by the manufacturer flow to the client. The manufacturer flow shall
533
+ * replace this placeholder with the final status of the access extension request, which shall be formatted
534
+ * following Expansion of CallbackUrl by the manufacturer custom flow and encoded with proper URL-encoded
535
+ * escaping.
536
+ *
537
+ * • Any key whose name begins with MT not mentioned in the previous bullets shall be reserved for future use
538
+ * by this specification.
539
+ *
540
+ * Any other element in the CallbackUrl query field not covered by the above rules, as well as the frag
541
+ *
542
+ * ment field (if present), shall remain as provided by the client through embedding within the
543
+ *
544
+ * ExpandedARLRequestFlowUrl, including the order of query key/value pairs present.
545
+ *
546
+ * ### Expansion of CallbackUrl by the manufacturer custom flow
547
+ *
548
+ * Once the CallbackUrl is obtained by the manufacturer flow, it may be expanded to form a final
549
+ * ExpandedARLRequestCallbackUrl URL to be used by proceeding with the following substitution algorithm on the
550
+ * provided CallbackUrl:
551
+ *
552
+ * • If key MTaer is present, the manufacturer custom flow having received the initial query containing the
553
+ * CallbackUrl shall substitute the placeholder value "_" (i.e. in MTaer=_) in the CallbackUrl with the
554
+ * final status of the access extension request flow which shall be one of the following. Any value
555
+ * returned in the MTaer field not listed above shall be considered an error and shall be treated as
556
+ * GeneralFailure.
557
+ *
558
+ * ◦ Success - The flow completed successfully and the ARL attribute was updated. The client may now read
559
+ * the ARL attribute to determine the new access restrictions.
560
+ *
561
+ * ◦ NoChange - The ARL attribute was already listing minimum restrictions for the requesting fabric.
562
+ *
563
+ * ◦ GeneralFailure - The flow failed for an unspecified reason.
564
+ *
565
+ * ◦ FlowAuthFailure - The user failed to authenticate to the flow.
566
+ *
567
+ * ◦ NotFound - Access extension failed because the target fabric was not found.
568
+ *
569
+ * A manufacturer custom flow having received an ExpandedARLRequestFlowUrl SHOULD attempt to open the
570
+ * ExpandedARLRequestCallbackUrl, on completion of the request, if an ExpandedARLRequestCallbackUrl was
571
+ * computed from the CallbackUrl and opening such a URL is supported.
572
+ *
573
+ * Examples of ARLRequestFlowUrl URLs
574
+ *
575
+ * Below are some examples of valid ExpandedARLRequestFlowUrl for several valid values of ARLRequestFlowUrl, as
576
+ * well as some examples of invalid values of ARLRequestFlowUrl:
577
+ *
578
+ * • Invalid URL with no query string: http scheme is not allowed:
579
+ *
580
+ * ◦ http://company.domain.example/matter/arl/vFFF1p1234
581
+ *
582
+ * • Valid URL :
583
+ *
584
+ * ◦ https://company.domain.example/matter/arl/vFFF1p1234
585
+ *
586
+ * • Valid URL, CallbackUrl requested:
587
+ *
588
+ * ◦ Before expansion:
589
+ *
590
+ * https://company.domain.example/matter/arl?vid=FFF1&pid=1234&MTcu=_
591
+ *
592
+ * ◦ After expansion:
593
+ *
594
+ * https://company.domain.example/matter/arl?vid=FFF1&pid=1234&MTcu=https%3A%2F%2Fc
595
+ * lient.domain.example%2Fcb%3Ftoken%3DmAsJ6_vqbr-vjDiG_w%253D%253D%26MTaer%3D_
596
+ *
597
+ * ◦ The ExpandedARLRequestFlowUrl URL contains:
598
+ *
599
+ * ▪ A CallbackUrl with a client-provided arbitrary token= key/value pair and the MTaer= key/value pair
600
+ * place-holder to indicate support for a return access extension completion status:
601
+ * https://client.domain.example/cb?token=mAsJ6_vqbr-vjDiG_w%3D%3D&MTaer=_
602
+ *
603
+ * ▪ After expansion of the CallbackUrl (MTcu key) into an ExpandedCallbackUrl, with an example return
604
+ * access extension completion status of Success, the ExpandedARLRequestCallbackUrl would be:
605
+ *
606
+ * https://client.domain.example/cb?token=mAsJ6_vqbr- vjDiG_w%3D%3D&MTaer=Success
607
+ *
608
+ * Note that the MTcu key/value pair was initially provided URL-encoded within the ExpandedARLRequestFlowUrl
609
+ * URL and the MTaer=_ key/value pair placeholder now contains a substituted returned completion status.
610
+ *
611
+ * • Invalid URL, due to MTza=79 key/value pair in reserved MT-prefixed keys reserved for future use:
612
+ *
613
+ * ◦ https://company.domain.example/matter/arl?vid=FFF1&pid=1234&MTop=_&MTza=79
614
+ *
615
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.3.3
616
+ */
617
+ arlRequestFlowUrl: TlvOptionalField(2, TlvString.bound({ maxLength: 256 })),
618
+
619
+ fabricIndex: TlvField(254, TlvFabricIndex)
620
+ });
621
+
622
+ /**
623
+ * Body of the AccessControl fabricRestrictionReviewUpdate event
624
+ *
625
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.3
626
+ */
627
+ export interface FabricRestrictionReviewUpdateEvent extends TypeFromSchema<typeof TlvFabricRestrictionReviewUpdateEvent> {}
628
+
34
629
  /**
35
630
  * Proxy View Value
36
631
  *
37
632
  * This value implicitly grants View privileges
38
633
  *
39
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.2
634
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.2
40
635
  */
41
636
  export enum AccessControlEntryPrivilege {
42
637
  /**
@@ -54,7 +649,7 @@ export namespace AccessControl {
54
649
  *
55
650
  * This value implicitly grants View privileges
56
651
  *
57
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.2.1
652
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.2.1
58
653
  */
59
654
  Operate = 3,
60
655
 
@@ -63,7 +658,7 @@ export namespace AccessControl {
63
658
  *
64
659
  * This value implicitly grants Operate & View privileges
65
660
  *
66
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.2.2
661
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.2.2
67
662
  */
68
663
  Manage = 4,
69
664
 
@@ -72,13 +667,13 @@ export namespace AccessControl {
72
667
  *
73
668
  * This value implicitly grants Manage, Operate, Proxy View & View privileges
74
669
  *
75
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.2.3
670
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.2.3
76
671
  */
77
672
  Administer = 5
78
673
  }
79
674
 
80
675
  /**
81
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.3
676
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.4
82
677
  */
83
678
  export enum AccessControlEntryAuthMode {
84
679
  /**
@@ -98,7 +693,7 @@ export namespace AccessControl {
98
693
  }
99
694
 
100
695
  /**
101
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.4
696
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.5
102
697
  */
103
698
  export const TlvAccessControlTarget = TlvObject({
104
699
  cluster: TlvField(0, TlvNullable(TlvClusterId)),
@@ -107,12 +702,12 @@ export namespace AccessControl {
107
702
  });
108
703
 
109
704
  /**
110
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.4
705
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.5
111
706
  */
112
707
  export interface AccessControlTarget extends TypeFromSchema<typeof TlvAccessControlTarget> {}
113
708
 
114
709
  /**
115
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.5
710
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.6
116
711
  */
117
712
  export const TlvAccessControlEntry = TlvObject({
118
713
  /**
@@ -128,7 +723,7 @@ export namespace AccessControl {
128
723
  * levels as well. The following diagram illustrates how the higher privilege levels subsume the lower
129
724
  * privilege levels:
130
725
  *
131
- * Figure 43. Access Control Privilege Levels
726
+ * Figure 46. Access Control Privilege Levels
132
727
  *
133
728
  * Individual clusters shall define whether attributes are readable, writable, or both readable and writable.
134
729
  * Clusters also shall define which privilege is minimally required to be able to perform a particular read or
@@ -139,14 +734,14 @@ export namespace AccessControl {
139
734
  * Cluster itself. The Administer privilege shall NOT be used on Access Control Entries which use the Group
140
735
  * auth mode.
141
736
  *
142
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.5.1
737
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.6.1
143
738
  */
144
739
  privilege: TlvField(1, TlvEnum<AccessControlEntryPrivilege>()),
145
740
 
146
741
  /**
147
742
  * The AuthMode field shall specify the authentication mode required by this Access Control Entry.
148
743
  *
149
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.5.2
744
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.6.2
150
745
  */
151
746
  authMode: TlvField(2, TlvEnum<AccessControlEntryAuthMode>()),
152
747
 
@@ -166,7 +761,7 @@ export namespace AccessControl {
166
761
  * successfully authenticates via AuthMode. The subjects list shall NOT be empty if the entry’s AuthMode is
167
762
  * PASE.
168
763
  *
169
- * The PASE AuthMode is reserved for future use (see Section 6.6.2.8, “Bootstrapping of the Access Control
764
+ * The PASE AuthMode is reserved for future use (see Section 6.6.2.9, “Bootstrapping of the Access Control
170
765
  * Cluster”). An attempt to write an entry with AuthMode set to PASE shall fail with a status code of
171
766
  * CONSTRAINT_ERROR.
172
767
  *
@@ -183,7 +778,7 @@ export namespace AccessControl {
183
778
  * For Group authentication, the Group ID identifies the required group, as defined in the Group Key Management
184
779
  * Cluster.
185
780
  *
186
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.5.3
781
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.6.3
187
782
  */
188
783
  subjects: TlvField(3, TlvNullable(TlvArray(TlvSubjectId))),
189
784
 
@@ -206,7 +801,7 @@ export namespace AccessControl {
206
801
  * An empty targets list indicates a wildcard: that is, this entry shall grant access to all cluster instances
207
802
  * on all endpoints on this Node.
208
803
  *
209
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.5.4
804
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.6.4
210
805
  */
211
806
  targets: TlvField(4, TlvNullable(TlvArray(TlvAccessControlTarget))),
212
807
 
@@ -214,60 +809,14 @@ export namespace AccessControl {
214
809
  });
215
810
 
216
811
  /**
217
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.5
812
+ * @see {@link MatterSpecification.v13.Core} § 9.10.5.6
218
813
  */
219
814
  export interface AccessControlEntry extends TypeFromSchema<typeof TlvAccessControlEntry> {}
220
815
 
221
- /**
222
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.6
223
- */
224
- export const TlvAccessControlExtension = TlvObject({
225
- /**
226
- * This field may be used by manufacturers to store arbitrary TLV-encoded data related to a fabric’s Access
227
- * Control Entries.
228
- *
229
- * The contents shall consist of a top-level anonymous list; each list element shall include a profile-specific
230
- * tag encoded in fully-qualified form.
231
- *
232
- * Administrators may iterate over this list of elements, and interpret selected elements at their discretion.
233
- * The content of each element is not specified, but may be coordinated among manufacturers at their discretion.
234
- *
235
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.6.1
236
- */
237
- data: TlvField(1, TlvByteString.bound({ maxLength: 128 })),
238
-
239
- fabricIndex: TlvField(254, TlvFabricIndex)
240
- });
241
-
242
- /**
243
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.6
244
- */
245
- export interface AccessControlExtension extends TypeFromSchema<typeof TlvAccessControlExtension> {}
246
-
247
- /**
248
- * @see {@link MatterSpecification.v13.Core} § 9.10.4.1
249
- */
250
- export enum ChangeType {
251
- /**
252
- * Entry or extension was changed
253
- */
254
- Changed = 0,
255
-
256
- /**
257
- * Entry or extension was added
258
- */
259
- Added = 1,
260
-
261
- /**
262
- * Entry or extension was removed
263
- */
264
- Removed = 2
265
- }
266
-
267
816
  /**
268
817
  * Body of the AccessControl accessControlEntryChanged event
269
818
  *
270
- * @see {@link MatterSpecification.v13.Core} § 9.10.7.1
819
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.1
271
820
  */
272
821
  export const TlvAccessControlEntryChangedEvent = TlvObject({
273
822
  /**
@@ -276,7 +825,7 @@ export namespace AccessControl {
276
825
  * Exactly one of AdminNodeID and AdminPasscodeID shall be set, depending on whether the change occurred via a
277
826
  * CASE or PASE session; the other shall be null.
278
827
  *
279
- * @see {@link MatterSpecification.v13.Core} § 9.10.7.1.1
828
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.1.1
280
829
  */
281
830
  adminNodeId: TlvField(1, TlvNullable(TlvNodeId)),
282
831
 
@@ -287,14 +836,14 @@ export namespace AccessControl {
287
836
  * Exactly one of AdminNodeID and AdminPasscodeID shall be set, depending on whether the change occurred via a
288
837
  * CASE or PASE session; the other shall be null.
289
838
  *
290
- * @see {@link MatterSpecification.v13.Core} § 9.10.7.1.2
839
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.1.2
291
840
  */
292
841
  adminPasscodeId: TlvField(2, TlvNullable(TlvUInt16)),
293
842
 
294
843
  /**
295
844
  * The type of change as appropriate.
296
845
  *
297
- * @see {@link MatterSpecification.v13.Core} § 9.10.7.1.3
846
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.1.3
298
847
  */
299
848
  changeType: TlvField(3, TlvEnum<ChangeType>()),
300
849
 
@@ -304,7 +853,7 @@ export namespace AccessControl {
304
853
  * This field SHOULD be set if resources are adequate for it; otherwise it shall be set to NULL if resources
305
854
  * are scarce.
306
855
  *
307
- * @see {@link MatterSpecification.v13.Core} § 9.10.7.1.4
856
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.1.4
308
857
  */
309
858
  latestValue: TlvField(4, TlvNullable(TlvAccessControlEntry)),
310
859
 
@@ -314,71 +863,243 @@ export namespace AccessControl {
314
863
  /**
315
864
  * Body of the AccessControl accessControlEntryChanged event
316
865
  *
317
- * @see {@link MatterSpecification.v13.Core} § 9.10.7.1
866
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.1
318
867
  */
319
868
  export interface AccessControlEntryChangedEvent extends TypeFromSchema<typeof TlvAccessControlEntryChangedEvent> {}
320
869
 
321
870
  /**
322
- * Body of the AccessControl accessControlExtensionChanged event
323
- *
324
- * @see {@link MatterSpecification.v13.Core} § 9.10.7.2
871
+ * A AccessControlCluster supports these elements if it supports feature Extension.
325
872
  */
326
- export const TlvAccessControlExtensionChangedEvent = TlvObject({
327
- /**
328
- * The Node ID of the Administrator that made the change, if the change occurred via a CASE session.
329
- *
330
- * Exactly one of AdminNodeID and AdminPasscodeID shall be set, depending on whether the change occurred via a
331
- * CASE or PASE session; the other shall be null.
332
- *
333
- * @see {@link MatterSpecification.v13.Core} § 9.10.7.2.1
334
- */
335
- adminNodeId: TlvField(1, TlvNullable(TlvNodeId)),
336
-
337
- /**
338
- * The Passcode ID of the Administrator that made the change, if the change occurred via a PASE session.
339
- * Non-zero values are reserved for future use (see PasscodeId generation in PBKDFParamRequest).
340
- *
341
- * Exactly one of AdminNodeID and AdminPasscodeID shall be set, depending on whether the change occurred via a
342
- * CASE or PASE session; the other shall be null.
343
- *
344
- * @see {@link MatterSpecification.v13.Core} § 9.10.7.2.2
345
- */
346
- adminPasscodeId: TlvField(2, TlvNullable(TlvUInt16)),
347
-
348
- /**
349
- * The type of change as appropriate.
350
- *
351
- * @see {@link MatterSpecification.v13.Core} § 9.10.7.2.3
352
- */
353
- changeType: TlvField(3, TlvEnum<ChangeType>()),
354
-
355
- /**
356
- * The latest value of the changed extension.
357
- *
358
- * This field SHOULD be set if resources are adequate for it; otherwise it shall be set to NULL if resources
359
- * are scarce.
360
- *
361
- * @see {@link MatterSpecification.v13.Core} § 9.10.7.2.4
362
- */
363
- latestValue: TlvField(4, TlvNullable(TlvAccessControlExtension)),
873
+ export const ExtensionComponent = MutableCluster.Component({
874
+ attributes: {
875
+ /**
876
+ * If present, the Access Control Extensions may be used by Administrators to store arbitrary data related
877
+ * to fabric’s Access Control Entries.
878
+ *
879
+ * The Access Control Extension list shall support a single extension entry per supported fabric.
880
+ *
881
+ * @see {@link MatterSpecification.v13.Core} § 9.10.6.4
882
+ */
883
+ extension: WritableFabricScopedAttribute(
884
+ 0x1,
885
+ TlvArray(TlvAccessControlExtension),
886
+ { default: [], readAcl: AccessLevel.Administer, writeAcl: AccessLevel.Administer }
887
+ )
888
+ },
364
889
 
365
- fabricIndex: TlvField(254, TlvFabricIndex)
890
+ events: {
891
+ /**
892
+ * The cluster shall generate AccessControlExtensionChanged events whenever its extension attribute data is
893
+ * changed by an Administrator.
894
+ *
895
+ * • Each added extension shall generate an event with ChangeType Added.
896
+ *
897
+ * • Each changed extension shall generate an event with ChangeType Changed.
898
+ *
899
+ * • Each removed extension shall generate an event with ChangeType Removed.
900
+ *
901
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.2
902
+ */
903
+ accessControlExtensionChanged: Event(
904
+ 0x1,
905
+ EventPriority.Info,
906
+ TlvAccessControlExtensionChangedEvent,
907
+ { readAcl: AccessLevel.Administer }
908
+ )
909
+ }
366
910
  });
367
911
 
368
912
  /**
369
- * Body of the AccessControl accessControlExtensionChanged event
370
- *
371
- * @see {@link MatterSpecification.v13.Core} § 9.10.7.2
913
+ * A AccessControlCluster supports these elements if it supports feature ManagedDevice.
372
914
  */
373
- export interface AccessControlExtensionChangedEvent extends TypeFromSchema<typeof TlvAccessControlExtensionChangedEvent> {}
915
+ export const ManagedDeviceComponent = MutableCluster.Component({
916
+ attributes: {
917
+ /**
918
+ * This attribute shall provide the set of CommissioningAccessRestrictionEntryStruct applied during
919
+ * commissioning on a managed device.
920
+ *
921
+ * When present, the CommissioningARL attribute shall indicate the access restrictions applying during
922
+ * commissioning.
923
+ *
924
+ * Attempts to access data model elements described by an entry in the CommissioningARL attribute during
925
+ * commissioning shall result in an error of ACCESS_RESTRICTED. See Access Control Model for more
926
+ * information about the features related to controlling access to a Node’s Endpoint Clusters ("Targets"
927
+ * hereafter) from other Nodes.
928
+ *
929
+ * See Section 9.10.4.2.1, “Managed Device Feature Usage Restrictions” for limitations on the use of access
930
+ * restrictions.
931
+ *
932
+ * @see {@link MatterSpecification.v13.Core} § 9.10.6.8
933
+ */
934
+ commissioningArL: FixedAttribute(0x5, TlvArray(TlvCommissioningAccessRestrictionEntry), { default: [] }),
935
+
936
+ /**
937
+ * This attribute shall provide the set of AccessRestrictionEntryStruct applied to the associated fabric on
938
+ * a managed device.
939
+ *
940
+ * When present, the ARL attribute shall indicate the access restrictions applying to the accessing fabric.
941
+ * In contrast, the CommissioningARL attribute indicates the accessing restrictions that apply when there
942
+ * is no accessing fabric, such as during commissioning.
943
+ *
944
+ * The access restrictions are externally added/removed based on the particular relationship the device
945
+ * hosting this server has with external entities such as its owner, external service provider, or end-user.
946
+ *
947
+ * Attempts to access data model elements described by an entry in the ARL attribute for the accessing
948
+ * fabric shall result in an error of ACCESS_RESTRICTED. See Access Control Model for more information
949
+ * about the features related to controlling access to a Node’s Endpoint Clusters ("Targets" hereafter)
950
+ * from other Nodes.
951
+ *
952
+ * See Section 9.10.4.2.1, “Managed Device Feature Usage Restrictions” for limitations on the use of access
953
+ * restrictions.
954
+ *
955
+ * @see {@link MatterSpecification.v13.Core} § 9.10.6.9
956
+ */
957
+ arl: FabricScopedAttribute(0x6, TlvArray(TlvAccessRestrictionEntry), { default: [] })
958
+ },
959
+
960
+ commands: {
961
+ /**
962
+ * This command signals to the service associated with the device vendor that the fabric administrator
963
+ * would like a review of the current restrictions on the accessing fabric. This command includes an
964
+ * optional list of ARL entries that the fabric administrator would like removed.
965
+ *
966
+ * In response, a ReviewFabricRestrictionsResponse is sent which contains a token that can be used to
967
+ * correlate a review request with a FabricRestrictionReviewUpdate event.
968
+ *
969
+ * Within 1 hour of the ReviewFabricRestrictionsResponse, the FabricRestrictionReviewUpdate event shall be
970
+ * generated, in order to indicate completion of the review and any additional steps required by the user
971
+ * for the review.
972
+ *
973
+ * A review may include obtaining consent from the user, which can take time. For example, the user may
974
+ * need to respond to an email or a push notification.
975
+ *
976
+ * The ARL attribute may change at any time due to actions taken by the user, or the service associated
977
+ * with the device vendor.
978
+ *
979
+ * @see {@link MatterSpecification.v13.Core} § 9.10.8.1
980
+ */
981
+ reviewFabricRestrictions: Command(
982
+ 0x0,
983
+ TlvReviewFabricRestrictionsRequest,
984
+ 0x1,
985
+ TlvReviewFabricRestrictionsResponse,
986
+ { invokeAcl: AccessLevel.Administer }
987
+ )
988
+ },
989
+
990
+ events: {
991
+ /**
992
+ * The cluster shall generate a FabricRestrictionReviewUpdate event to indicate completion of a fabric
993
+ * restriction review. Due to the requirement to generate this event within a bound time frame of
994
+ * successful receipt of the ReviewFabricRestrictions command, this event may include additional steps that
995
+ * the client may present to the user in order to help the user locate the user interface for the Managed
996
+ * Device feature.
997
+ *
998
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.3
999
+ */
1000
+ fabricRestrictionReviewUpdate: Event(
1001
+ 0x2,
1002
+ EventPriority.Info,
1003
+ TlvFabricRestrictionReviewUpdateEvent,
1004
+ { readAcl: AccessLevel.Administer }
1005
+ )
1006
+ }
1007
+ });
374
1008
 
375
1009
  /**
376
- * @see {@link Cluster}
1010
+ * These elements and properties are present in all AccessControl clusters.
377
1011
  */
378
- export const ClusterInstance = MutableCluster({
1012
+ export const Base = MutableCluster.Component({
379
1013
  id: 0x1f,
380
1014
  name: "AccessControl",
381
- revision: 1,
1015
+ revision: 2,
1016
+
1017
+ features: {
1018
+ /**
1019
+ * Extension
1020
+ *
1021
+ * This feature indicates the device supports ACL Extension attribute.
1022
+ *
1023
+ * @see {@link MatterSpecification.v13.Core} § 9.10.4.1
1024
+ */
1025
+ extension: BitFlag(0),
1026
+
1027
+ /**
1028
+ * ManagedDevice
1029
+ *
1030
+ * This feature is for a device that is managed by a service associated with the device vendor and which
1031
+ * imposes default access restrictions upon each new fabric added to it. This could arise, for example, if
1032
+ * the device is managed by a service provider under contract to an end-user, in such a way that the
1033
+ * manager of the device does not unconditionally grant universal access to all of a device’s
1034
+ * functionality, even for fabric administrators. For example, many Home Routers are managed by an Internet
1035
+ * Service Provider (a service), and these services often have a policy that requires them to obtain user
1036
+ * consent before certain administrative functions can be delegated to a third party (e.g., a fabric
1037
+ * Administrator). These restrictions are expressed using an Access Restriction List (ARL).
1038
+ *
1039
+ * The purpose of this feature on the Access Control cluster is to indicate to a fabric Administrator that
1040
+ * access by it to specific attributes, commands and/or events for specific clusters is currently
1041
+ * prohibited. Attempts to access these restricted data model elements shall result in an error of
1042
+ * ACCESS_RESTRICTED.
1043
+ *
1044
+ * A device that implements this feature shall have a mechanism to honor the ReviewFabricRestrictions
1045
+ * command, such as user interfaces or service interactions associated with a service provider or the
1046
+ * device manufacturer, which allows the owner (or subscriber) to manage access restrictions for each
1047
+ * fabric. The user interface design, which includes the way restrictions are organized and presented to
1048
+ * the user, is not specified, but SHOULD be usable by non-expert end-users from common mobile devices,
1049
+ * personal computers, or an on-device user interface.
1050
+ *
1051
+ * Controllers and clients SHOULD incorporate generic handling of the ACCESS_RESTRICTED error code, when it
1052
+ * appears in allowed contexts, in order to gracefully handle situations where this feature is encountered.
1053
+ * Device vendors that adopt this feature SHOULD be judicious in its use given the risk of unexpected
1054
+ * behavior in controllers and clients.
1055
+ *
1056
+ * For certification testing, a device that implements this feature shall provide a way for all
1057
+ * restrictions to be removed.
1058
+ *
1059
+ * The ARL attribute provides the set of restrictions currently applied to this fabric.
1060
+ *
1061
+ * The ReviewFabricRestrictions command provides a way for the fabric Administrator to request that the
1062
+ * server triggers a review of the current fabric restrictions, by involving external entities such as
1063
+ * end-users, or other services associated with the manager of the device hosting the server. This review
1064
+ * process may involve communication between external services and the user, and may take an unpredictable
1065
+ * amount of time to complete since an end-user may need to visit some resources, such as a mobile
1066
+ * application or web site. A FabricRestrictionReviewUpdate event will be generated by the device within a
1067
+ * predictable time period of the ReviewFabricRestrictionsResponse (see ReviewFabricRestrictions for
1068
+ * specification of this time period), and this event can be correlated with the
1069
+ * ReviewFabricRestrictionsResponse using a token provided in both. The device may provide instructions or
1070
+ * a Redirect URL in the FabricRestrictionReviewUpdate event in order to help the user access the features
1071
+ * required for managing per-fabric restrictions.
1072
+ *
1073
+ * See Section 6.6.2, “Model” for a description of how access control is impacted by the ARL attribute.
1074
+ *
1075
+ * ### Managed Device Feature Usage Restrictions
1076
+ *
1077
+ * Use of this feature shall be limited to the mandatory clusters of endpoints having a device type that
1078
+ * explicitly permits its use in the Device Library Specification. As a reminder, the device types
1079
+ * associated with an endpoint are listed in the Descriptor cluster of the endpoint.
1080
+ *
1081
+ * In addition, use of this feature shall NOT restrict the following clusters on any endpoint:
1082
+ *
1083
+ * 1. the Descriptor Cluster (0x001D)
1084
+ *
1085
+ * 2. the Binding Cluster (0x001E)
1086
+ *
1087
+ * 3. the Network Commissioning Cluster (0x0031)
1088
+ *
1089
+ * 4. the Identify Cluster (0x0003)
1090
+ *
1091
+ * 5. the Groups Cluster (0x0004)
1092
+ *
1093
+ * In addition, use of this feature shall NOT restrict the global attributes of any cluster.
1094
+ *
1095
+ * Because ARLs cannot be used to restrict root node access or access to any clusters required for
1096
+ * commissioning, administrators may determine the current restrictions of the ARL at any point, including
1097
+ * during commissioning after joining the fabric.
1098
+ *
1099
+ * @see {@link MatterSpecification.v13.Core} § 9.10.4.2
1100
+ */
1101
+ managedDevice: BitFlag(1)
1102
+ },
382
1103
 
383
1104
  attributes: {
384
1105
  /**
@@ -393,7 +1114,7 @@ export namespace AccessControl {
393
1114
  * Control Privilege Granting algorithm to determine if a subject has privilege to interact with targets on
394
1115
  * the Node.
395
1116
  *
396
- * @see {@link MatterSpecification.v13.Core} § 9.10.5.3
1117
+ * @see {@link MatterSpecification.v13.Core} § 9.10.6.3
397
1118
  */
398
1119
  acl: WritableFabricScopedAttribute(
399
1120
  0x0,
@@ -401,20 +1122,6 @@ export namespace AccessControl {
401
1122
  { default: [], readAcl: AccessLevel.Administer, writeAcl: AccessLevel.Administer }
402
1123
  ),
403
1124
 
404
- /**
405
- * If present, the Access Control Extensions may be used by Administrators to store arbitrary data related
406
- * to fabric’s Access Control Entries.
407
- *
408
- * The Access Control Extension list shall support a single extension entry per supported fabric.
409
- *
410
- * @see {@link MatterSpecification.v13.Core} § 9.10.5.4
411
- */
412
- extension: OptionalWritableFabricScopedAttribute(
413
- 0x1,
414
- TlvArray(TlvAccessControlExtension),
415
- { default: [], readAcl: AccessLevel.Administer, writeAcl: AccessLevel.Administer }
416
- ),
417
-
418
1125
  /**
419
1126
  * This attribute shall provide the minimum number of Subjects per entry that are supported by this server.
420
1127
  *
@@ -423,7 +1130,7 @@ export namespace AccessControl {
423
1130
  * given implementation, it is recommended to only use the minimum value required and avoid reporting a
424
1131
  * higher value than the required minimum.
425
1132
  *
426
- * @see {@link MatterSpecification.v13.Core} § 9.10.5.5
1133
+ * @see {@link MatterSpecification.v13.Core} § 9.10.6.5
427
1134
  */
428
1135
  subjectsPerAccessControlEntry: FixedAttribute(0x2, TlvUInt16.bound({ min: 4 }), { default: 4 }),
429
1136
 
@@ -435,7 +1142,7 @@ export namespace AccessControl {
435
1142
  * given implementation, it is recommended to only use the minimum value required and avoid reporting a
436
1143
  * higher value than the required minimum.
437
1144
  *
438
- * @see {@link MatterSpecification.v13.Core} § 9.10.5.6
1145
+ * @see {@link MatterSpecification.v13.Core} § 9.10.6.6
439
1146
  */
440
1147
  targetsPerAccessControlEntry: FixedAttribute(0x3, TlvUInt16.bound({ min: 3 }), { default: 3 }),
441
1148
 
@@ -448,15 +1155,15 @@ export namespace AccessControl {
448
1155
  * given implementation, it is recommended to only use the minimum value required and avoid reporting a
449
1156
  * higher value than the required minimum.
450
1157
  *
451
- * @see {@link MatterSpecification.v13.Core} § 9.10.5.7
1158
+ * @see {@link MatterSpecification.v13.Core} § 9.10.6.7
452
1159
  */
453
1160
  accessControlEntriesPerFabric: FixedAttribute(0x4, TlvUInt16.bound({ min: 4 }), { default: 4 })
454
1161
  },
455
1162
 
456
1163
  events: {
457
1164
  /**
458
- * The cluster shall send AccessControlEntryChanged events whenever its ACL attribute data is changed by an
459
- * Administrator.
1165
+ * The cluster shall generate AccessControlEntryChanged events whenever its ACL attribute data is changed
1166
+ * by an Administrator.
460
1167
  *
461
1168
  * • Each added entry shall generate an event with ChangeType Added.
462
1169
  *
@@ -464,36 +1171,31 @@ export namespace AccessControl {
464
1171
  *
465
1172
  * • Each removed entry shall generate an event with ChangeType Removed.
466
1173
  *
467
- * @see {@link MatterSpecification.v13.Core} § 9.10.7.1
1174
+ * @see {@link MatterSpecification.v13.Core} § 9.10.9.1
468
1175
  */
469
1176
  accessControlEntryChanged: Event(
470
1177
  0x0,
471
1178
  EventPriority.Info,
472
1179
  TlvAccessControlEntryChangedEvent,
473
1180
  { readAcl: AccessLevel.Administer }
474
- ),
475
-
476
- /**
477
- * The cluster shall send AccessControlExtensionChanged events whenever its extension attribute data is
478
- * changed by an Administrator.
479
- *
480
- * • Each added extension shall generate an event with ChangeType Added.
481
- *
482
- * • Each changed extension shall generate an event with ChangeType Changed.
483
- *
484
- * • Each removed extension shall generate an event with ChangeType Removed.
485
- *
486
- * @see {@link MatterSpecification.v13.Core} § 9.10.7.2
487
- */
488
- accessControlExtensionChanged: Event(
489
- 0x1,
490
- EventPriority.Info,
491
- TlvAccessControlExtensionChangedEvent,
492
- { readAcl: AccessLevel.Administer }
493
1181
  )
494
- }
1182
+ },
1183
+
1184
+ /**
1185
+ * This metadata controls which AccessControlCluster elements matter.js activates for specific feature
1186
+ * combinations.
1187
+ */
1188
+ extensions: MutableCluster.Extensions(
1189
+ { flags: { extension: true }, component: ExtensionComponent },
1190
+ { flags: { managedDevice: true }, component: ManagedDeviceComponent }
1191
+ )
495
1192
  });
496
1193
 
1194
+ /**
1195
+ * @see {@link Cluster}
1196
+ */
1197
+ export const ClusterInstance = MutableCluster(Base);
1198
+
497
1199
  /**
498
1200
  * The Access Control Cluster exposes a data model view of a Node’s Access Control List (ACL), which codifies the
499
1201
  * rules used to manage and enforce Access Control for the Node’s endpoints and their associated cluster instances.
@@ -503,12 +1205,65 @@ export namespace AccessControl {
503
1205
  * The Access Control Cluster shall be present on the root node endpoint of each Node, and shall NOT be present on
504
1206
  * any other Endpoint of any Node.
505
1207
  *
1208
+ * AccessControlCluster supports optional features that you can enable with the AccessControlCluster.with() factory
1209
+ * method.
1210
+ *
506
1211
  * @see {@link MatterSpecification.v13.Core} § 9.10
507
1212
  */
508
1213
  export interface Cluster extends Identity<typeof ClusterInstance> {}
509
1214
 
510
1215
  export const Cluster: Cluster = ClusterInstance;
511
- export const Complete = Cluster;
1216
+ const EXTS = { extension: true };
1217
+ const MNGD = { managedDevice: true };
1218
+
1219
+ /**
1220
+ * @see {@link Complete}
1221
+ */
1222
+ export const CompleteInstance = MutableCluster({
1223
+ id: Cluster.id,
1224
+ name: Cluster.name,
1225
+ revision: Cluster.revision,
1226
+ features: Cluster.features,
1227
+
1228
+ attributes: {
1229
+ ...Cluster.attributes,
1230
+ extension: MutableCluster.AsConditional(ExtensionComponent.attributes.extension, { mandatoryIf: [EXTS] }),
1231
+ commissioningArL: MutableCluster.AsConditional(
1232
+ ManagedDeviceComponent.attributes.commissioningArL,
1233
+ { mandatoryIf: [MNGD] }
1234
+ ),
1235
+ arl: MutableCluster.AsConditional(ManagedDeviceComponent.attributes.arl, { mandatoryIf: [MNGD] })
1236
+ },
1237
+
1238
+ commands: {
1239
+ reviewFabricRestrictions: MutableCluster.AsConditional(
1240
+ ManagedDeviceComponent.commands.reviewFabricRestrictions,
1241
+ { mandatoryIf: [MNGD] }
1242
+ )
1243
+ },
1244
+
1245
+ events: {
1246
+ ...Cluster.events,
1247
+ accessControlExtensionChanged: MutableCluster.AsConditional(
1248
+ ExtensionComponent.events.accessControlExtensionChanged,
1249
+ { mandatoryIf: [EXTS] }
1250
+ ),
1251
+ fabricRestrictionReviewUpdate: MutableCluster.AsConditional(
1252
+ ManagedDeviceComponent.events.fabricRestrictionReviewUpdate,
1253
+ { mandatoryIf: [MNGD] }
1254
+ )
1255
+ }
1256
+ });
1257
+
1258
+ /**
1259
+ * This cluster supports all AccessControl features. It may support illegal feature combinations.
1260
+ *
1261
+ * If you use this cluster you must manually specify which features are active and ensure the set of active
1262
+ * features is legal per the Matter specification.
1263
+ */
1264
+ export interface Complete extends Identity<typeof CompleteInstance> {}
1265
+
1266
+ export const Complete: Complete = CompleteInstance;
512
1267
  }
513
1268
 
514
1269
  export type AccessControlCluster = AccessControl.Cluster;