@zwave-js/cc 15.0.0-beta.0 → 15.0.0-beta.1

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 (376) hide show
  1. package/build/cjs/cc/AlarmSensorCC.d.ts +79 -161
  2. package/build/cjs/cc/AlarmSensorCC.js +12 -50
  3. package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
  4. package/build/cjs/cc/AssociationCC.d.ts +63 -199
  5. package/build/cjs/cc/AssociationCC.js +9 -22
  6. package/build/cjs/cc/AssociationCC.js.map +2 -2
  7. package/build/cjs/cc/AssociationGroupInfoCC.d.ts +66 -166
  8. package/build/cjs/cc/AssociationGroupInfoCC.js +11 -22
  9. package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
  10. package/build/cjs/cc/BarrierOperatorCC.d.ts +86 -294
  11. package/build/cjs/cc/BarrierOperatorCC.js +12 -44
  12. package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
  13. package/build/cjs/cc/BasicCC.d.ts +85 -331
  14. package/build/cjs/cc/BasicCC.js +15 -46
  15. package/build/cjs/cc/BasicCC.js.map +2 -2
  16. package/build/cjs/cc/BatteryCC.d.ts +237 -835
  17. package/build/cjs/cc/BatteryCC.js +7 -84
  18. package/build/cjs/cc/BatteryCC.js.map +2 -2
  19. package/build/cjs/cc/BinarySensorCC.d.ts +34 -99
  20. package/build/cjs/cc/BinarySensorCC.js +9 -29
  21. package/build/cjs/cc/BinarySensorCC.js.map +2 -2
  22. package/build/cjs/cc/BinarySwitchCC.d.ts +45 -197
  23. package/build/cjs/cc/BinarySwitchCC.js +6 -22
  24. package/build/cjs/cc/BinarySwitchCC.js.map +2 -2
  25. package/build/cjs/cc/CentralSceneCC.d.ts +77 -296
  26. package/build/cjs/cc/CentralSceneCC.js +7 -30
  27. package/build/cjs/cc/CentralSceneCC.js.map +2 -2
  28. package/build/cjs/cc/ClimateControlScheduleCC.d.ts +45 -160
  29. package/build/cjs/cc/ClimateControlScheduleCC.js +5 -24
  30. package/build/cjs/cc/ClimateControlScheduleCC.js.map +2 -2
  31. package/build/cjs/cc/ColorSwitchCC.d.ts +130 -457
  32. package/build/cjs/cc/ColorSwitchCC.js +23 -75
  33. package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
  34. package/build/cjs/cc/ConfigurationCC.d.ts +32 -100
  35. package/build/cjs/cc/ConfigurationCC.js +11 -31
  36. package/build/cjs/cc/ConfigurationCC.js.map +2 -2
  37. package/build/cjs/cc/DoorLockCC.d.ts +512 -1823
  38. package/build/cjs/cc/DoorLockCC.js +51 -156
  39. package/build/cjs/cc/DoorLockCC.js.map +2 -2
  40. package/build/cjs/cc/DoorLockLoggingCC.d.ts +11 -63
  41. package/build/cjs/cc/DoorLockLoggingCC.js +4 -8
  42. package/build/cjs/cc/DoorLockLoggingCC.js.map +2 -2
  43. package/build/cjs/cc/EnergyProductionCC.d.ts +14 -29
  44. package/build/cjs/cc/EnergyProductionCC.js +5 -17
  45. package/build/cjs/cc/EnergyProductionCC.js.map +2 -2
  46. package/build/cjs/cc/EntryControlCC.d.ts +73 -324
  47. package/build/cjs/cc/EntryControlCC.js +9 -36
  48. package/build/cjs/cc/EntryControlCC.js.map +2 -2
  49. package/build/cjs/cc/FirmwareUpdateMetaDataCC.d.ts +78 -390
  50. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +5 -26
  51. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +2 -2
  52. package/build/cjs/cc/HumidityControlModeCC.d.ts +31 -131
  53. package/build/cjs/cc/HumidityControlModeCC.js +6 -15
  54. package/build/cjs/cc/HumidityControlModeCC.js.map +2 -2
  55. package/build/cjs/cc/HumidityControlOperatingStateCC.d.ts +17 -65
  56. package/build/cjs/cc/HumidityControlOperatingStateCC.js +4 -12
  57. package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +2 -2
  58. package/build/cjs/cc/HumidityControlSetpointCC.d.ts +51 -128
  59. package/build/cjs/cc/HumidityControlSetpointCC.js +10 -28
  60. package/build/cjs/cc/HumidityControlSetpointCC.js.map +2 -2
  61. package/build/cjs/cc/IndicatorCC.d.ts +123 -365
  62. package/build/cjs/cc/IndicatorCC.js +15 -61
  63. package/build/cjs/cc/IndicatorCC.js.map +2 -2
  64. package/build/cjs/cc/IrrigationCC.d.ts +826 -2317
  65. package/build/cjs/cc/IrrigationCC.js +29 -233
  66. package/build/cjs/cc/IrrigationCC.js.map +2 -2
  67. package/build/cjs/cc/LanguageCC.d.ts +31 -133
  68. package/build/cjs/cc/LanguageCC.js +4 -15
  69. package/build/cjs/cc/LanguageCC.js.map +2 -2
  70. package/build/cjs/cc/LockCC.d.ts +14 -64
  71. package/build/cjs/cc/LockCC.js +4 -12
  72. package/build/cjs/cc/LockCC.js.map +2 -2
  73. package/build/cjs/cc/ManufacturerProprietaryCC.js.map +2 -2
  74. package/build/cjs/cc/ManufacturerSpecificCC.d.ts +77 -239
  75. package/build/cjs/cc/ManufacturerSpecificCC.js +5 -26
  76. package/build/cjs/cc/ManufacturerSpecificCC.js.map +2 -2
  77. package/build/cjs/cc/MeterCC.d.ts +119 -393
  78. package/build/cjs/cc/MeterCC.js +25 -69
  79. package/build/cjs/cc/MeterCC.js.map +2 -2
  80. package/build/cjs/cc/MultiChannelAssociationCC.d.ts +66 -166
  81. package/build/cjs/cc/MultiChannelAssociationCC.js +10 -23
  82. package/build/cjs/cc/MultiChannelAssociationCC.js.map +2 -2
  83. package/build/cjs/cc/MultiChannelCC.d.ts +119 -499
  84. package/build/cjs/cc/MultiChannelCC.js +18 -46
  85. package/build/cjs/cc/MultiChannelCC.js.map +2 -2
  86. package/build/cjs/cc/MultilevelSensorCC.d.ts +46 -130
  87. package/build/cjs/cc/MultilevelSensorCC.js +12 -33
  88. package/build/cjs/cc/MultilevelSensorCC.js.map +2 -2
  89. package/build/cjs/cc/MultilevelSwitchCC.d.ts +160 -525
  90. package/build/cjs/cc/MultilevelSwitchCC.js +13 -107
  91. package/build/cjs/cc/MultilevelSwitchCC.js.map +2 -2
  92. package/build/cjs/cc/NodeNamingCC.d.ts +33 -135
  93. package/build/cjs/cc/NodeNamingCC.js +5 -16
  94. package/build/cjs/cc/NodeNamingCC.js.map +2 -2
  95. package/build/cjs/cc/NotificationCC.d.ts +262 -702
  96. package/build/cjs/cc/NotificationCC.js +29 -112
  97. package/build/cjs/cc/NotificationCC.js.map +2 -2
  98. package/build/cjs/cc/ProtectionCC.d.ts +118 -524
  99. package/build/cjs/cc/ProtectionCC.js +15 -50
  100. package/build/cjs/cc/ProtectionCC.js.map +2 -2
  101. package/build/cjs/cc/SceneActivationCC.d.ts +33 -132
  102. package/build/cjs/cc/SceneActivationCC.js +4 -17
  103. package/build/cjs/cc/SceneActivationCC.js.map +2 -2
  104. package/build/cjs/cc/SceneActuatorConfigurationCC.d.ts +34 -61
  105. package/build/cjs/cc/SceneActuatorConfigurationCC.js +9 -21
  106. package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +2 -2
  107. package/build/cjs/cc/SceneControllerConfigurationCC.d.ts +34 -61
  108. package/build/cjs/cc/SceneControllerConfigurationCC.js +10 -22
  109. package/build/cjs/cc/SceneControllerConfigurationCC.js.map +2 -2
  110. package/build/cjs/cc/ScheduleEntryLockCC.d.ts +95 -299
  111. package/build/cjs/cc/ScheduleEntryLockCC.js +13 -30
  112. package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
  113. package/build/cjs/cc/SoundSwitchCC.d.ts +72 -261
  114. package/build/cjs/cc/SoundSwitchCC.js +11 -43
  115. package/build/cjs/cc/SoundSwitchCC.js.map +2 -2
  116. package/build/cjs/cc/SupervisionCC.d.ts +17 -33
  117. package/build/cjs/cc/SupervisionCC.js +4 -9
  118. package/build/cjs/cc/SupervisionCC.js.map +2 -2
  119. package/build/cjs/cc/ThermostatFanModeCC.d.ts +44 -195
  120. package/build/cjs/cc/ThermostatFanModeCC.js +8 -21
  121. package/build/cjs/cc/ThermostatFanModeCC.js.map +2 -2
  122. package/build/cjs/cc/ThermostatFanStateCC.d.ts +17 -65
  123. package/build/cjs/cc/ThermostatFanStateCC.js +4 -12
  124. package/build/cjs/cc/ThermostatFanStateCC.js.map +2 -2
  125. package/build/cjs/cc/ThermostatModeCC.d.ts +44 -195
  126. package/build/cjs/cc/ThermostatModeCC.js +8 -21
  127. package/build/cjs/cc/ThermostatModeCC.js.map +2 -2
  128. package/build/cjs/cc/ThermostatOperatingStateCC.d.ts +17 -65
  129. package/build/cjs/cc/ThermostatOperatingStateCC.js +4 -12
  130. package/build/cjs/cc/ThermostatOperatingStateCC.js.map +2 -2
  131. package/build/cjs/cc/ThermostatSetpointCC.d.ts +49 -129
  132. package/build/cjs/cc/ThermostatSetpointCC.js +10 -25
  133. package/build/cjs/cc/ThermostatSetpointCC.js.map +2 -2
  134. package/build/cjs/cc/TimeParametersCC.d.ts +12 -63
  135. package/build/cjs/cc/TimeParametersCC.js +4 -11
  136. package/build/cjs/cc/TimeParametersCC.js.map +2 -2
  137. package/build/cjs/cc/UserCodeCC.d.ts +311 -1066
  138. package/build/cjs/cc/UserCodeCC.js +33 -98
  139. package/build/cjs/cc/UserCodeCC.js.map +2 -2
  140. package/build/cjs/cc/VersionCC.d.ts +289 -1003
  141. package/build/cjs/cc/VersionCC.js +7 -98
  142. package/build/cjs/cc/VersionCC.js.map +2 -2
  143. package/build/cjs/cc/WakeUpCC.d.ts +49 -201
  144. package/build/cjs/cc/WakeUpCC.js +6 -26
  145. package/build/cjs/cc/WakeUpCC.js.map +2 -2
  146. package/build/cjs/cc/WindowCoveringCC.d.ts +126 -220
  147. package/build/cjs/cc/WindowCoveringCC.js +16 -128
  148. package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
  149. package/build/cjs/cc/ZWavePlusCC.d.ts +69 -329
  150. package/build/cjs/cc/ZWavePlusCC.js +4 -25
  151. package/build/cjs/cc/ZWavePlusCC.js.map +2 -2
  152. package/build/cjs/cc/_CCValues.generated.d.ts +15814 -0
  153. package/build/cjs/cc/_CCValues.generated.js +8723 -0
  154. package/build/cjs/cc/_CCValues.generated.js.map +7 -0
  155. package/build/cjs/lib/CCValueUtils.d.ts +14 -0
  156. package/build/cjs/lib/CCValueUtils.js +93 -0
  157. package/build/cjs/lib/CCValueUtils.js.map +7 -0
  158. package/build/cjs/lib/Values.d.ts +6 -105
  159. package/build/cjs/lib/Values.js +13 -107
  160. package/build/cjs/lib/Values.js.map +3 -3
  161. package/build/esm/cc/AlarmSensorCC.d.ts +79 -161
  162. package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
  163. package/build/esm/cc/AlarmSensorCC.js +2 -39
  164. package/build/esm/cc/AlarmSensorCC.js.map +1 -1
  165. package/build/esm/cc/AssociationCC.d.ts +63 -199
  166. package/build/esm/cc/AssociationCC.d.ts.map +1 -1
  167. package/build/esm/cc/AssociationCC.js +2 -14
  168. package/build/esm/cc/AssociationCC.js.map +1 -1
  169. package/build/esm/cc/AssociationGroupInfoCC.d.ts +66 -166
  170. package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
  171. package/build/esm/cc/AssociationGroupInfoCC.js +2 -13
  172. package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
  173. package/build/esm/cc/BarrierOperatorCC.d.ts +86 -294
  174. package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
  175. package/build/esm/cc/BarrierOperatorCC.js +2 -34
  176. package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
  177. package/build/esm/cc/BasicCC.d.ts +85 -331
  178. package/build/esm/cc/BasicCC.d.ts.map +1 -1
  179. package/build/esm/cc/BasicCC.js +2 -32
  180. package/build/esm/cc/BasicCC.js.map +1 -1
  181. package/build/esm/cc/BatteryCC.d.ts +237 -835
  182. package/build/esm/cc/BatteryCC.d.ts.map +1 -1
  183. package/build/esm/cc/BatteryCC.js +2 -78
  184. package/build/esm/cc/BatteryCC.js.map +1 -1
  185. package/build/esm/cc/BinarySensorCC.d.ts +34 -99
  186. package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
  187. package/build/esm/cc/BinarySensorCC.js +2 -16
  188. package/build/esm/cc/BinarySensorCC.js.map +1 -1
  189. package/build/esm/cc/BinarySwitchCC.d.ts +45 -197
  190. package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
  191. package/build/esm/cc/BinarySwitchCC.js +2 -17
  192. package/build/esm/cc/BinarySwitchCC.js.map +1 -1
  193. package/build/esm/cc/CentralSceneCC.d.ts +77 -296
  194. package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
  195. package/build/esm/cc/CentralSceneCC.js +2 -26
  196. package/build/esm/cc/CentralSceneCC.js.map +1 -1
  197. package/build/esm/cc/ClimateControlScheduleCC.d.ts +45 -160
  198. package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
  199. package/build/esm/cc/ClimateControlScheduleCC.js +2 -23
  200. package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
  201. package/build/esm/cc/ColorSwitchCC.d.ts +130 -457
  202. package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
  203. package/build/esm/cc/ColorSwitchCC.js +2 -52
  204. package/build/esm/cc/ColorSwitchCC.js.map +1 -1
  205. package/build/esm/cc/ConfigurationCC.d.ts +32 -100
  206. package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
  207. package/build/esm/cc/ConfigurationCC.js +2 -15
  208. package/build/esm/cc/ConfigurationCC.js.map +1 -1
  209. package/build/esm/cc/DoorLockCC.d.ts +512 -1823
  210. package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
  211. package/build/esm/cc/DoorLockCC.js +9 -127
  212. package/build/esm/cc/DoorLockCC.js.map +1 -1
  213. package/build/esm/cc/DoorLockLoggingCC.d.ts +11 -63
  214. package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
  215. package/build/esm/cc/DoorLockLoggingCC.js +2 -5
  216. package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
  217. package/build/esm/cc/EnergyProductionCC.d.ts +14 -29
  218. package/build/esm/cc/EnergyProductionCC.d.ts.map +1 -1
  219. package/build/esm/cc/EnergyProductionCC.js +2 -13
  220. package/build/esm/cc/EnergyProductionCC.js.map +1 -1
  221. package/build/esm/cc/EntryControlCC.d.ts +73 -324
  222. package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
  223. package/build/esm/cc/EntryControlCC.js +2 -28
  224. package/build/esm/cc/EntryControlCC.js.map +1 -1
  225. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts +78 -390
  226. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
  227. package/build/esm/cc/FirmwareUpdateMetaDataCC.js +2 -23
  228. package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
  229. package/build/esm/cc/HumidityControlModeCC.d.ts +31 -131
  230. package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
  231. package/build/esm/cc/HumidityControlModeCC.js +2 -10
  232. package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
  233. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts +17 -65
  234. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
  235. package/build/esm/cc/HumidityControlOperatingStateCC.js +2 -9
  236. package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
  237. package/build/esm/cc/HumidityControlSetpointCC.d.ts +51 -128
  238. package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
  239. package/build/esm/cc/HumidityControlSetpointCC.js +2 -19
  240. package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
  241. package/build/esm/cc/IndicatorCC.d.ts +123 -365
  242. package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
  243. package/build/esm/cc/IndicatorCC.js +2 -43
  244. package/build/esm/cc/IndicatorCC.js.map +1 -1
  245. package/build/esm/cc/IrrigationCC.d.ts +826 -2317
  246. package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
  247. package/build/esm/cc/IrrigationCC.js +3 -222
  248. package/build/esm/cc/IrrigationCC.js.map +1 -1
  249. package/build/esm/cc/LanguageCC.d.ts +31 -133
  250. package/build/esm/cc/LanguageCC.d.ts.map +1 -1
  251. package/build/esm/cc/LanguageCC.js +2 -12
  252. package/build/esm/cc/LanguageCC.js.map +1 -1
  253. package/build/esm/cc/LockCC.d.ts +14 -64
  254. package/build/esm/cc/LockCC.d.ts.map +1 -1
  255. package/build/esm/cc/LockCC.js +2 -9
  256. package/build/esm/cc/LockCC.js.map +1 -1
  257. package/build/esm/cc/ManufacturerProprietaryCC.d.ts.map +1 -1
  258. package/build/esm/cc/ManufacturerProprietaryCC.js +0 -1
  259. package/build/esm/cc/ManufacturerProprietaryCC.js.map +1 -1
  260. package/build/esm/cc/ManufacturerSpecificCC.d.ts +77 -239
  261. package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
  262. package/build/esm/cc/ManufacturerSpecificCC.js +2 -24
  263. package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
  264. package/build/esm/cc/MeterCC.d.ts +119 -393
  265. package/build/esm/cc/MeterCC.d.ts.map +1 -1
  266. package/build/esm/cc/MeterCC.js +3 -49
  267. package/build/esm/cc/MeterCC.js.map +1 -1
  268. package/build/esm/cc/MultiChannelAssociationCC.d.ts +66 -166
  269. package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
  270. package/build/esm/cc/MultiChannelAssociationCC.js +2 -14
  271. package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
  272. package/build/esm/cc/MultiChannelCC.d.ts +119 -499
  273. package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
  274. package/build/esm/cc/MultiChannelCC.js +2 -30
  275. package/build/esm/cc/MultiChannelCC.js.map +1 -1
  276. package/build/esm/cc/MultilevelSensorCC.d.ts +46 -130
  277. package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
  278. package/build/esm/cc/MultilevelSensorCC.js +2 -22
  279. package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
  280. package/build/esm/cc/MultilevelSwitchCC.d.ts +160 -525
  281. package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
  282. package/build/esm/cc/MultilevelSwitchCC.js +5 -101
  283. package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
  284. package/build/esm/cc/NodeNamingCC.d.ts +33 -135
  285. package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
  286. package/build/esm/cc/NodeNamingCC.js +2 -12
  287. package/build/esm/cc/NodeNamingCC.js.map +1 -1
  288. package/build/esm/cc/NotificationCC.d.ts +262 -702
  289. package/build/esm/cc/NotificationCC.d.ts.map +1 -1
  290. package/build/esm/cc/NotificationCC.js +3 -85
  291. package/build/esm/cc/NotificationCC.js.map +1 -1
  292. package/build/esm/cc/ProtectionCC.d.ts +118 -524
  293. package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
  294. package/build/esm/cc/ProtectionCC.js +2 -36
  295. package/build/esm/cc/ProtectionCC.js.map +1 -1
  296. package/build/esm/cc/SceneActivationCC.d.ts +33 -132
  297. package/build/esm/cc/SceneActivationCC.d.ts.map +1 -1
  298. package/build/esm/cc/SceneActivationCC.js +2 -14
  299. package/build/esm/cc/SceneActivationCC.js.map +1 -1
  300. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts +34 -61
  301. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts.map +1 -1
  302. package/build/esm/cc/SceneActuatorConfigurationCC.js +2 -14
  303. package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
  304. package/build/esm/cc/SceneControllerConfigurationCC.d.ts +34 -61
  305. package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
  306. package/build/esm/cc/SceneControllerConfigurationCC.js +2 -14
  307. package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
  308. package/build/esm/cc/ScheduleEntryLockCC.d.ts +95 -299
  309. package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
  310. package/build/esm/cc/ScheduleEntryLockCC.js +2 -17
  311. package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
  312. package/build/esm/cc/SoundSwitchCC.d.ts +72 -261
  313. package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
  314. package/build/esm/cc/SoundSwitchCC.js +2 -33
  315. package/build/esm/cc/SoundSwitchCC.js.map +1 -1
  316. package/build/esm/cc/SupervisionCC.d.ts +17 -33
  317. package/build/esm/cc/SupervisionCC.d.ts.map +1 -1
  318. package/build/esm/cc/SupervisionCC.js +2 -7
  319. package/build/esm/cc/SupervisionCC.js.map +1 -1
  320. package/build/esm/cc/ThermostatFanModeCC.d.ts +44 -195
  321. package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
  322. package/build/esm/cc/ThermostatFanModeCC.js +2 -14
  323. package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
  324. package/build/esm/cc/ThermostatFanStateCC.d.ts +17 -65
  325. package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
  326. package/build/esm/cc/ThermostatFanStateCC.js +2 -9
  327. package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
  328. package/build/esm/cc/ThermostatModeCC.d.ts +44 -195
  329. package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
  330. package/build/esm/cc/ThermostatModeCC.js +2 -14
  331. package/build/esm/cc/ThermostatModeCC.js.map +1 -1
  332. package/build/esm/cc/ThermostatOperatingStateCC.d.ts +17 -65
  333. package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
  334. package/build/esm/cc/ThermostatOperatingStateCC.js +2 -9
  335. package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
  336. package/build/esm/cc/ThermostatSetpointCC.d.ts +49 -129
  337. package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
  338. package/build/esm/cc/ThermostatSetpointCC.js +2 -16
  339. package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
  340. package/build/esm/cc/TimeParametersCC.d.ts +12 -63
  341. package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
  342. package/build/esm/cc/TimeParametersCC.js +2 -8
  343. package/build/esm/cc/TimeParametersCC.js.map +1 -1
  344. package/build/esm/cc/UserCodeCC.d.ts +311 -1066
  345. package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
  346. package/build/esm/cc/UserCodeCC.js +2 -60
  347. package/build/esm/cc/UserCodeCC.js.map +1 -1
  348. package/build/esm/cc/VersionCC.d.ts +289 -1003
  349. package/build/esm/cc/VersionCC.d.ts.map +1 -1
  350. package/build/esm/cc/VersionCC.js +2 -92
  351. package/build/esm/cc/VersionCC.js.map +1 -1
  352. package/build/esm/cc/WakeUpCC.d.ts +49 -201
  353. package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
  354. package/build/esm/cc/WakeUpCC.js +2 -21
  355. package/build/esm/cc/WakeUpCC.js.map +1 -1
  356. package/build/esm/cc/WindowCoveringCC.d.ts +126 -220
  357. package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
  358. package/build/esm/cc/WindowCoveringCC.js +3 -103
  359. package/build/esm/cc/WindowCoveringCC.js.map +1 -1
  360. package/build/esm/cc/ZWavePlusCC.d.ts +69 -329
  361. package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
  362. package/build/esm/cc/ZWavePlusCC.js +2 -25
  363. package/build/esm/cc/ZWavePlusCC.js.map +1 -1
  364. package/build/esm/cc/_CCValues.generated.d.ts +15814 -0
  365. package/build/esm/cc/_CCValues.generated.d.ts.map +1 -0
  366. package/build/esm/cc/_CCValues.generated.js +9187 -0
  367. package/build/esm/cc/_CCValues.generated.js.map +1 -0
  368. package/build/esm/lib/CCValueUtils.d.ts +14 -0
  369. package/build/esm/lib/CCValueUtils.d.ts.map +1 -0
  370. package/build/esm/lib/CCValueUtils.js +62 -0
  371. package/build/esm/lib/CCValueUtils.js.map +1 -0
  372. package/build/esm/lib/Values.d.ts +6 -105
  373. package/build/esm/lib/Values.d.ts.map +1 -1
  374. package/build/esm/lib/Values.js +7 -104
  375. package/build/esm/lib/Values.js.map +1 -1
  376. package/package.json +9 -7
@@ -5,214 +5,114 @@ import { PhysicalCCAPI } from "../lib/API.js";
5
5
  import { type CCRaw, CommandClass, type InterviewContext, type PersistValuesContext, type RefreshValuesContext } from "../lib/CommandClass.js";
6
6
  import { AssociationGroupInfoCommand, AssociationGroupInfoProfile } from "../lib/_Types.js";
7
7
  export declare const AssociationGroupInfoCCValues: Readonly<{
8
- commands: ((groupId: number) => {
9
- readonly meta: Readonly<(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
10
- readonly type: "any";
11
- readonly readable: true;
12
- readonly writeable: true;
13
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
14
- readonly type: "any";
15
- readonly readable: true;
16
- readonly writeable: true;
17
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>) extends infer T ? { [K in keyof T as [undefined] extends [(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
18
- readonly type: "any";
19
- readonly readable: true;
20
- readonly writeable: true;
21
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
22
- readonly type: "any";
23
- readonly readable: true;
24
- readonly writeable: true;
25
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]] ? never : K]: (import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
26
- readonly type: "any";
27
- readonly readable: true;
28
- readonly writeable: true;
29
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
30
- readonly type: "any";
31
- readonly readable: true;
32
- readonly writeable: true;
33
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]; } : never>;
34
- readonly id: ValueIDBase;
35
- readonly endpoint: (endpoint?: number | undefined) => {
8
+ hasDynamicInfo: {
9
+ id: {
10
+ readonly commandClass: (typeof CommandClasses)["Association Group Information"];
11
+ readonly property: "hasDynamicInfo";
12
+ };
13
+ endpoint: (endpoint?: number) => {
36
14
  readonly commandClass: (typeof CommandClasses)["Association Group Information"];
37
15
  readonly endpoint: number;
38
- readonly property: "issuedCommands";
39
- readonly propertyKey: number;
16
+ readonly property: "hasDynamicInfo";
40
17
  };
41
- }) & {
42
18
  is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
43
- readonly options: {
44
- readonly stateful: true;
45
- readonly secret: false;
19
+ readonly meta: Readonly<{
20
+ readonly type: "any";
21
+ readonly readable: true;
22
+ readonly writeable: true;
23
+ }>;
24
+ options: {
25
+ readonly internal: true;
46
26
  readonly minVersion: 1;
27
+ readonly secret: false;
28
+ readonly stateful: true;
47
29
  readonly supportsEndpoints: true;
48
30
  readonly autoCreate: true;
49
- readonly internal: true;
50
31
  };
51
32
  };
52
- groupInfo: ((groupId: number) => {
53
- readonly meta: Readonly<(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
54
- readonly type: "any";
55
- readonly readable: true;
56
- readonly writeable: true;
57
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
58
- readonly type: "any";
59
- readonly readable: true;
60
- readonly writeable: true;
61
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>) extends infer T ? { [K in keyof T as [undefined] extends [(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
62
- readonly type: "any";
63
- readonly readable: true;
64
- readonly writeable: true;
65
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
66
- readonly type: "any";
67
- readonly readable: true;
68
- readonly writeable: true;
69
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]] ? never : K]: (import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
70
- readonly type: "any";
71
- readonly readable: true;
72
- readonly writeable: true;
73
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
74
- readonly type: "any";
75
- readonly readable: true;
76
- readonly writeable: true;
77
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]; } : never>;
78
- readonly id: ValueIDBase;
79
- readonly endpoint: (endpoint?: number | undefined) => {
33
+ groupName: ((groupId: number) => {
34
+ id: {
35
+ readonly commandClass: (typeof CommandClasses)["Association Group Information"];
36
+ readonly property: "name";
37
+ readonly propertyKey: number;
38
+ };
39
+ endpoint: (endpoint?: number) => {
80
40
  readonly commandClass: (typeof CommandClasses)["Association Group Information"];
81
41
  readonly endpoint: number;
82
- readonly property: "info";
42
+ readonly property: "name";
83
43
  readonly propertyKey: number;
84
44
  };
45
+ readonly meta: Readonly<{
46
+ readonly type: "any";
47
+ readonly readable: true;
48
+ readonly writeable: true;
49
+ }>;
85
50
  }) & {
86
51
  is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
87
- readonly options: {
88
- readonly stateful: true;
89
- readonly secret: false;
52
+ options: {
53
+ readonly internal: true;
90
54
  readonly minVersion: 1;
55
+ readonly secret: false;
56
+ readonly stateful: true;
91
57
  readonly supportsEndpoints: true;
92
58
  readonly autoCreate: true;
93
- readonly internal: true;
94
59
  };
95
60
  };
96
- groupName: ((groupId: number) => {
97
- readonly meta: Readonly<(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
98
- readonly type: "any";
99
- readonly readable: true;
100
- readonly writeable: true;
101
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
102
- readonly type: "any";
103
- readonly readable: true;
104
- readonly writeable: true;
105
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>) extends infer T ? { [K in keyof T as [undefined] extends [(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
106
- readonly type: "any";
107
- readonly readable: true;
108
- readonly writeable: true;
109
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
110
- readonly type: "any";
111
- readonly readable: true;
112
- readonly writeable: true;
113
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]] ? never : K]: (import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
114
- readonly type: "any";
115
- readonly readable: true;
116
- readonly writeable: true;
117
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
118
- readonly type: "any";
119
- readonly readable: true;
120
- readonly writeable: true;
121
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]; } : never>;
122
- readonly id: ValueIDBase;
123
- readonly endpoint: (endpoint?: number | undefined) => {
61
+ groupInfo: ((groupId: number) => {
62
+ id: {
63
+ readonly commandClass: (typeof CommandClasses)["Association Group Information"];
64
+ readonly property: "info";
65
+ readonly propertyKey: number;
66
+ };
67
+ endpoint: (endpoint?: number) => {
124
68
  readonly commandClass: (typeof CommandClasses)["Association Group Information"];
125
69
  readonly endpoint: number;
126
- readonly property: "name";
70
+ readonly property: "info";
127
71
  readonly propertyKey: number;
128
72
  };
73
+ readonly meta: Readonly<{
74
+ readonly type: "any";
75
+ readonly readable: true;
76
+ readonly writeable: true;
77
+ }>;
129
78
  }) & {
130
79
  is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
131
- readonly options: {
132
- readonly stateful: true;
133
- readonly secret: false;
80
+ options: {
81
+ readonly internal: true;
134
82
  readonly minVersion: 1;
83
+ readonly secret: false;
84
+ readonly stateful: true;
135
85
  readonly supportsEndpoints: true;
136
86
  readonly autoCreate: true;
137
- readonly internal: true;
138
87
  };
139
88
  };
140
- hasDynamicInfo: {
141
- readonly id: ValueIDBase;
142
- readonly endpoint: (endpoint?: number | undefined) => {
89
+ commands: ((groupId: number) => {
90
+ id: {
91
+ readonly commandClass: (typeof CommandClasses)["Association Group Information"];
92
+ readonly property: "issuedCommands";
93
+ readonly propertyKey: number;
94
+ };
95
+ endpoint: (endpoint?: number) => {
143
96
  readonly commandClass: (typeof CommandClasses)["Association Group Information"];
144
97
  readonly endpoint: number;
145
- readonly property: "hasDynamicInfo";
98
+ readonly property: "issuedCommands";
99
+ readonly propertyKey: number;
146
100
  };
147
- readonly is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
148
- readonly meta: Readonly<(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
101
+ readonly meta: Readonly<{
149
102
  readonly type: "any";
150
103
  readonly readable: true;
151
104
  readonly writeable: true;
152
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
153
- readonly type: "any";
154
- readonly readable: true;
155
- readonly writeable: true;
156
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>) extends infer T ? { [K in keyof T as [undefined] extends [(import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
157
- readonly type: "any";
158
- readonly readable: true;
159
- readonly writeable: true;
160
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
161
- readonly type: "any";
162
- readonly readable: true;
163
- readonly writeable: true;
164
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]] ? never : K]: (import("@zwave-js/core/safe").ValueMetadata extends NonNullable<TBlueprint["meta"]> ? Readonly<{
165
- readonly type: "any";
166
- readonly readable: true;
167
- readonly writeable: true;
168
- }> : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<Readonly<{
169
- readonly type: "any";
170
- readonly readable: true;
171
- readonly writeable: true;
172
- }>, ("type" | "readable" | "writeable") & keyof NonNullable<TBlueprint["meta"]>> & TBlueprint["meta"]>)[K]; } : never>;
173
- readonly options: Readonly<(import("@zwave-js/cc").CCValueOptions extends NonNullable<TBlueprint["options"]> ? {
174
- readonly internal: false;
175
- readonly minVersion: 1;
176
- readonly secret: false;
177
- readonly stateful: true;
178
- readonly supportsEndpoints: true;
179
- readonly autoCreate: true;
180
- } : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<{
181
- readonly internal: false;
182
- readonly minVersion: 1;
183
- readonly secret: false;
184
- readonly stateful: true;
185
- readonly supportsEndpoints: true;
186
- readonly autoCreate: true;
187
- }, ("stateful" | "secret" | "internal" | "minVersion" | "supportsEndpoints" | "autoCreate") & keyof NonNullable<TBlueprint["options"]>> & TBlueprint["options"]>) extends infer T ? { [K in keyof T as [undefined] extends [(import("@zwave-js/cc").CCValueOptions extends NonNullable<TBlueprint["options"]> ? {
188
- readonly internal: false;
189
- readonly minVersion: 1;
190
- readonly secret: false;
191
- readonly stateful: true;
192
- readonly supportsEndpoints: true;
193
- readonly autoCreate: true;
194
- } : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<{
195
- readonly internal: false;
196
- readonly minVersion: 1;
197
- readonly secret: false;
198
- readonly stateful: true;
199
- readonly supportsEndpoints: true;
200
- readonly autoCreate: true;
201
- }, ("stateful" | "secret" | "internal" | "minVersion" | "supportsEndpoints" | "autoCreate") & keyof NonNullable<TBlueprint["options"]>> & TBlueprint["options"]>)[K]] ? never : K]: (import("@zwave-js/cc").CCValueOptions extends NonNullable<TBlueprint["options"]> ? {
202
- readonly internal: false;
203
- readonly minVersion: 1;
204
- readonly secret: false;
205
- readonly stateful: true;
206
- readonly supportsEndpoints: true;
207
- readonly autoCreate: true;
208
- } : import("alcalzone-shared/types").Simplify<import("alcalzone-shared/types").Omit<{
209
- readonly internal: false;
105
+ }>;
106
+ }) & {
107
+ is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
108
+ options: {
109
+ readonly internal: true;
210
110
  readonly minVersion: 1;
211
111
  readonly secret: false;
212
112
  readonly stateful: true;
213
113
  readonly supportsEndpoints: true;
214
114
  readonly autoCreate: true;
215
- }, ("stateful" | "secret" | "internal" | "minVersion" | "supportsEndpoints" | "autoCreate") & keyof NonNullable<TBlueprint["options"]>> & TBlueprint["options"]>)[K]; } : never>;
115
+ };
216
116
  };
217
117
  }>;
218
118
  export declare class AssociationGroupInfoCCAPI extends PhysicalCCAPI {
@@ -37,7 +37,7 @@ __export(AssociationGroupInfoCC_exports, {
37
37
  AssociationGroupInfoCCInfoReport: () => AssociationGroupInfoCCInfoReport,
38
38
  AssociationGroupInfoCCNameGet: () => AssociationGroupInfoCCNameGet,
39
39
  AssociationGroupInfoCCNameReport: () => AssociationGroupInfoCCNameReport,
40
- AssociationGroupInfoCCValues: () => AssociationGroupInfoCCValues
40
+ AssociationGroupInfoCCValues: () => import_CCValues_generated.AssociationGroupInfoCCValues
41
41
  });
42
42
  module.exports = __toCommonJS(AssociationGroupInfoCC_exports);
43
43
  var __validateArgs = __toESM(require("./AssociationGroupInfoCC._validateArgs.js"), 1);
@@ -51,6 +51,7 @@ var import_Values = require("../lib/Values.js");
51
51
  var import_Types = require("../lib/_Types.js");
52
52
  var import_AssociationCC = require("./AssociationCC.js");
53
53
  var import_MultiChannelAssociationCC = require("./MultiChannelAssociationCC.js");
54
+ var import_CCValues_generated = require("./_CCValues.generated.js");
54
55
  var __runInitializers = function(thisArg, initializers, value) {
55
56
  var useValue = arguments.length > 2;
56
57
  for (var i = 0; i < initializers.length; i++) {
@@ -92,18 +93,6 @@ var __esDecorate = function(ctor, descriptorIn, decorators, contextIn, initializ
92
93
  done = true;
93
94
  };
94
95
  const { validateArgs_AssociationGroupInfoCCAPI_getGroupName, validateArgs_AssociationGroupInfoCCAPI_reportGroupName, validateArgs_AssociationGroupInfoCCAPI_getGroupInfo, validateArgs_AssociationGroupInfoCCAPI_reportGroupInfo, validateArgs_AssociationGroupInfoCCAPI_getCommands, validateArgs_AssociationGroupInfoCCAPI_reportCommands } = __validateArgs;
95
- const AssociationGroupInfoCCValues = Object.freeze({
96
- // Defines values that do not depend on anything else
97
- ...import_Values.V.defineStaticCCValues(import_safe.CommandClasses["Association Group Information"], {
98
- ...import_Values.V.staticProperty("hasDynamicInfo", void 0, { internal: true })
99
- }),
100
- // Defines values that depend on one or more arguments and need to be called as a function
101
- ...import_Values.V.defineDynamicCCValues(import_safe.CommandClasses["Association Group Information"], {
102
- ...import_Values.V.dynamicPropertyAndKeyWithName("groupName", "name", (groupId) => groupId, ({ property, propertyKey }) => property === "name" && typeof propertyKey === "number", void 0, { internal: true }),
103
- ...import_Values.V.dynamicPropertyAndKeyWithName("groupInfo", "info", (groupId) => groupId, ({ property, propertyKey }) => property === "info" && typeof propertyKey === "number", void 0, { internal: true }),
104
- ...import_Values.V.dynamicPropertyAndKeyWithName("commands", "issuedCommands", (groupId) => groupId, ({ property, propertyKey }) => property === "issuedCommands" && typeof propertyKey === "number", void 0, { internal: true })
105
- })
106
- });
107
96
  let AssociationGroupInfoCCAPI = (() => {
108
97
  let _classDecorators = [(0, import_CommandClassDecorators.API)(import_safe.CommandClasses["Association Group Information"])];
109
98
  let _classDescriptor;
@@ -232,7 +221,7 @@ let AssociationGroupInfoCCAPI = (() => {
232
221
  return AssociationGroupInfoCCAPI2 = _classThis;
233
222
  })();
234
223
  let AssociationGroupInfoCC = (() => {
235
- let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_safe.CommandClasses["Association Group Information"]), (0, import_CommandClassDecorators.implementedVersion)(3), (0, import_CommandClassDecorators.ccValues)(AssociationGroupInfoCCValues)];
224
+ let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_safe.CommandClasses["Association Group Information"]), (0, import_CommandClassDecorators.implementedVersion)(3), (0, import_CommandClassDecorators.ccValues)(import_CCValues_generated.AssociationGroupInfoCCValues)];
236
225
  let _classDescriptor;
237
226
  let _classExtraInitializers = [];
238
227
  let _classThis;
@@ -260,15 +249,15 @@ let AssociationGroupInfoCC = (() => {
260
249
  }
261
250
  /** Returns the name of an association group */
262
251
  static getGroupNameCached(ctx, endpoint, groupId) {
263
- return ctx.getValueDB(endpoint.nodeId).getValue(AssociationGroupInfoCCValues.groupName(groupId).endpoint(endpoint.index));
252
+ return ctx.getValueDB(endpoint.nodeId).getValue(import_CCValues_generated.AssociationGroupInfoCCValues.groupName(groupId).endpoint(endpoint.index));
264
253
  }
265
254
  /** Returns the association profile for an association group */
266
255
  static getGroupProfileCached(ctx, endpoint, groupId) {
267
- return ctx.getValueDB(endpoint.nodeId).getValue(AssociationGroupInfoCCValues.groupInfo(groupId).endpoint(endpoint.index))?.profile;
256
+ return ctx.getValueDB(endpoint.nodeId).getValue(import_CCValues_generated.AssociationGroupInfoCCValues.groupInfo(groupId).endpoint(endpoint.index))?.profile;
268
257
  }
269
258
  /** Returns the dictionary of all commands issued by the given association group */
270
259
  static getIssuedCommandsCached(ctx, endpoint, groupId) {
271
- return ctx.getValueDB(endpoint.nodeId).getValue(AssociationGroupInfoCCValues.commands(groupId).endpoint(endpoint.index));
260
+ return ctx.getValueDB(endpoint.nodeId).getValue(import_CCValues_generated.AssociationGroupInfoCCValues.commands(groupId).endpoint(endpoint.index));
272
261
  }
273
262
  static findGroupsForIssuedCommand(ctx, endpoint, ccId, command) {
274
263
  const ret = [];
@@ -331,7 +320,7 @@ let AssociationGroupInfoCC = (() => {
331
320
  const endpoint = this.getEndpoint(ctx);
332
321
  const api = import_API.CCAPI.create(import_safe.CommandClasses["Association Group Information"], ctx, endpoint).withOptions({ priority: import_safe.MessagePriority.NodeQuery });
333
322
  const associationGroupCount = AssociationGroupInfoCC2.getAssociationGroupCountCached(ctx, endpoint);
334
- const hasDynamicInfo = this.getValue(ctx, AssociationGroupInfoCCValues.hasDynamicInfo);
323
+ const hasDynamicInfo = this.getValue(ctx, import_CCValues_generated.AssociationGroupInfoCCValues.hasDynamicInfo);
335
324
  for (let groupId = 1; groupId <= associationGroupCount; groupId++) {
336
325
  ctx.logNode(node.id, {
337
326
  endpoint: this.endpointIndex,
@@ -397,7 +386,7 @@ let AssociationGroupInfoCCNameReport = (() => {
397
386
  if (!super.persistValues(ctx))
398
387
  return false;
399
388
  const valueDB = this.getValueDB(ctx);
400
- valueDB.setValue(AssociationGroupInfoCCValues.groupName(this.groupId).endpoint(this.endpointIndex), this.name);
389
+ valueDB.setValue(import_CCValues_generated.AssociationGroupInfoCCValues.groupName(this.groupId).endpoint(this.endpointIndex), this.name);
401
390
  return true;
402
391
  }
403
392
  serialize(ctx) {
@@ -466,7 +455,7 @@ let AssociationGroupInfoCCNameGet = (() => {
466
455
  return AssociationGroupInfoCCNameGet2 = _classThis;
467
456
  })();
468
457
  let AssociationGroupInfoCCInfoReport = (() => {
469
- let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.AssociationGroupInfoCommand.InfoReport), (0, import_CommandClassDecorators.ccValueProperty)("hasDynamicInfo", AssociationGroupInfoCCValues.hasDynamicInfo)];
458
+ let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.AssociationGroupInfoCommand.InfoReport), (0, import_CommandClassDecorators.ccValueProperty)("hasDynamicInfo", import_CCValues_generated.AssociationGroupInfoCCValues.hasDynamicInfo)];
470
459
  let _classDescriptor;
471
460
  let _classExtraInitializers = [];
472
461
  let _classThis;
@@ -522,7 +511,7 @@ let AssociationGroupInfoCCInfoReport = (() => {
522
511
  return false;
523
512
  for (const group of this.groups) {
524
513
  const { groupId, mode, profile, eventCode } = group;
525
- this.setValue(ctx, AssociationGroupInfoCCValues.groupInfo(groupId), {
514
+ this.setValue(ctx, import_CCValues_generated.AssociationGroupInfoCCValues.groupInfo(groupId), {
526
515
  mode,
527
516
  profile,
528
517
  eventCode
@@ -631,7 +620,7 @@ let AssociationGroupInfoCCInfoGet = (() => {
631
620
  return AssociationGroupInfoCCInfoGet2 = _classThis;
632
621
  })();
633
622
  let AssociationGroupInfoCCCommandListReport = (() => {
634
- let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.AssociationGroupInfoCommand.CommandListReport), (0, import_CommandClassDecorators.ccValueProperty)("commands", AssociationGroupInfoCCValues.commands, (self) => [self.groupId])];
623
+ let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.AssociationGroupInfoCommand.CommandListReport), (0, import_CommandClassDecorators.ccValueProperty)("commands", import_CCValues_generated.AssociationGroupInfoCCValues.commands, (self) => [self.groupId])];
635
624
  let _classDescriptor;
636
625
  let _classExtraInitializers = [];
637
626
  let _classThis;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cc/AssociationGroupInfoCC.ts"],
4
- "sourcesContent": ["import { type CCEncodingContext, type CCParsingContext } from \"@zwave-js/cc\";\nimport {\n\tCommandClasses,\n\ttype EndpointId,\n\ttype GetValueDB,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype MessageRecord,\n\ttype SupportsCC,\n\ttype WithAddress,\n\tencodeCCId,\n\tgetCCName,\n\tparseCCId,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { cpp2js, getEnumMemberName, num2hex } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n\ttype RefreshValuesContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport {\n\tAssociationGroupInfoCommand,\n\tAssociationGroupInfoProfile,\n} from \"../lib/_Types.js\";\nimport { AssociationCC } from \"./AssociationCC.js\";\nimport { MultiChannelAssociationCC } from \"./MultiChannelAssociationCC.js\";\n\nexport const AssociationGroupInfoCCValues = Object.freeze({\n\t// Defines values that do not depend on anything else\n\t...V.defineStaticCCValues(CommandClasses[\"Association Group Information\"], {\n\t\t...V.staticProperty(\"hasDynamicInfo\", undefined, { internal: true }),\n\t}),\n\n\t// Defines values that depend on one or more arguments and need to be called as a function\n\t...V.defineDynamicCCValues(\n\t\tCommandClasses[\"Association Group Information\"],\n\t\t{\n\t\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\t\"groupName\",\n\t\t\t\t\"name\",\n\t\t\t\t(groupId: number) => groupId,\n\t\t\t\t({ property, propertyKey }) =>\n\t\t\t\t\tproperty === \"name\" && typeof propertyKey === \"number\",\n\t\t\t\tundefined,\n\t\t\t\t{ internal: true },\n\t\t\t),\n\t\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\t\"groupInfo\",\n\t\t\t\t\"info\",\n\t\t\t\t(groupId: number) => groupId,\n\t\t\t\t({ property, propertyKey }) =>\n\t\t\t\t\tproperty === \"info\" && typeof propertyKey === \"number\",\n\t\t\t\tundefined,\n\t\t\t\t{ internal: true },\n\t\t\t),\n\t\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\t\"commands\",\n\t\t\t\t\"issuedCommands\",\n\t\t\t\t(groupId: number) => groupId,\n\t\t\t\t({ property, propertyKey }) =>\n\t\t\t\t\tproperty === \"issuedCommands\"\n\t\t\t\t\t&& typeof propertyKey === \"number\",\n\t\t\t\tundefined,\n\t\t\t\t{ internal: true },\n\t\t\t),\n\t\t},\n\t),\n});\n\n// @noSetValueAPI This CC only has get-type commands\n\n@API(CommandClasses[\"Association Group Information\"])\nexport class AssociationGroupInfoCCAPI extends PhysicalCCAPI {\n\tpublic supportsCommand(\n\t\tcmd: AssociationGroupInfoCommand,\n\t): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase AssociationGroupInfoCommand.NameGet:\n\t\t\tcase AssociationGroupInfoCommand.NameReport:\n\t\t\tcase AssociationGroupInfoCommand.InfoGet:\n\t\t\tcase AssociationGroupInfoCommand.InfoReport:\n\t\t\tcase AssociationGroupInfoCommand.CommandListGet:\n\t\t\tcase AssociationGroupInfoCommand.CommandListReport:\n\t\t\t\treturn true; // This is mandatory\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\t@validateArgs()\n\tpublic async getGroupName(groupId: number): Promise<MaybeNotKnown<string>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationGroupInfoCommand,\n\t\t\tAssociationGroupInfoCommand.NameGet,\n\t\t);\n\n\t\tconst cc = new AssociationGroupInfoCCNameGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tAssociationGroupInfoCCNameReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) return response.name;\n\t}\n\n\t@validateArgs()\n\tpublic async reportGroupName(groupId: number, name: string): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationGroupInfoCommand,\n\t\t\tAssociationGroupInfoCommand.NameReport,\n\t\t);\n\n\t\tconst cc = new AssociationGroupInfoCCNameReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t\tname,\n\t\t});\n\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t@validateArgs()\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getGroupInfo(groupId: number, refreshCache: boolean = false) {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationGroupInfoCommand,\n\t\t\tAssociationGroupInfoCommand.InfoGet,\n\t\t);\n\n\t\tconst cc = new AssociationGroupInfoCCInfoGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t\trefreshCache,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tAssociationGroupInfoCCInfoReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\t// SDS13782 says: If List Mode is set to 0, the Group Count field MUST be set to 1.\n\t\t// But that's not always the case. Apparently some endpoints return 0 groups\n\t\t// although they support AGI CC\n\t\tif (response && response.groups.length > 0) {\n\t\t\tconst { groupId: _, ...info } = response.groups[0];\n\t\t\treturn {\n\t\t\t\thasDynamicInfo: response.hasDynamicInfo,\n\t\t\t\t...info,\n\t\t\t};\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async reportGroupInfo(\n\t\toptions: AssociationGroupInfoCCInfoReportOptions,\n\t): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationGroupInfoCommand,\n\t\t\tAssociationGroupInfoCommand.InfoReport,\n\t\t);\n\n\t\tconst cc = new AssociationGroupInfoCCInfoReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...options,\n\t\t});\n\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t@validateArgs()\n\tpublic async getCommands(\n\t\tgroupId: number,\n\t\tallowCache: boolean = true,\n\t): Promise<\n\t\tMaybeNotKnown<AssociationGroupInfoCCCommandListReport[\"commands\"]>\n\t> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationGroupInfoCommand,\n\t\t\tAssociationGroupInfoCommand.CommandListGet,\n\t\t);\n\n\t\tconst cc = new AssociationGroupInfoCCCommandListGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t\tallowCache,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tAssociationGroupInfoCCCommandListReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) return response.commands;\n\t}\n\n\t@validateArgs()\n\tpublic async reportCommands(\n\t\tgroupId: number,\n\t\tcommands: ReadonlyMap<CommandClasses, readonly number[]>,\n\t): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationGroupInfoCommand,\n\t\t\tAssociationGroupInfoCommand.CommandListReport,\n\t\t);\n\n\t\tconst cc = new AssociationGroupInfoCCCommandListReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t\tcommands,\n\t\t});\n\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n}\n\n@commandClass(CommandClasses[\"Association Group Information\"])\n@implementedVersion(3)\n@ccValues(AssociationGroupInfoCCValues)\nexport class AssociationGroupInfoCC extends CommandClass {\n\tdeclare ccCommand: AssociationGroupInfoCommand;\n\n\tpublic determineRequiredCCInterviews(): readonly CommandClasses[] {\n\t\t// AssociationCC must be interviewed after Z-Wave+ if that is supported\n\t\treturn [\n\t\t\t...super.determineRequiredCCInterviews(),\n\t\t\tCommandClasses.Association,\n\t\t\tCommandClasses[\"Multi Channel Association\"],\n\t\t];\n\t}\n\n\t/** Returns the name of an association group */\n\tpublic static getGroupNameCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tgroupId: number,\n\t): MaybeNotKnown<string> {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tAssociationGroupInfoCCValues.groupName(groupId).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t);\n\t}\n\n\t/** Returns the association profile for an association group */\n\tpublic static getGroupProfileCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tgroupId: number,\n\t): MaybeNotKnown<AssociationGroupInfoProfile> {\n\t\treturn ctx.getValueDB(endpoint.nodeId).getValue<{\n\t\t\tprofile: AssociationGroupInfoProfile;\n\t\t}>(\n\t\t\tAssociationGroupInfoCCValues.groupInfo(groupId).endpoint(\n\t\t\t\tendpoint.index,\n\t\t\t),\n\t\t)\n\t\t\t?.profile;\n\t}\n\n\t/** Returns the dictionary of all commands issued by the given association group */\n\tpublic static getIssuedCommandsCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tgroupId: number,\n\t): MaybeNotKnown<ReadonlyMap<CommandClasses, readonly number[]>> {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tAssociationGroupInfoCCValues.commands(groupId).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t);\n\t}\n\n\tpublic static findGroupsForIssuedCommand(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId & SupportsCC,\n\t\tccId: CommandClasses,\n\t\tcommand: number,\n\t): number[] {\n\t\tconst ret: number[] = [];\n\t\tconst associationGroupCount = this.getAssociationGroupCountCached(\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t);\n\t\tfor (let groupId = 1; groupId <= associationGroupCount; groupId++) {\n\t\t\t// Scan the issued commands of all groups if there's a match\n\t\t\tconst issuedCommands = this.getIssuedCommandsCached(\n\t\t\t\tctx,\n\t\t\t\tendpoint,\n\t\t\t\tgroupId,\n\t\t\t);\n\t\t\tif (!issuedCommands) continue;\n\t\t\tif (\n\t\t\t\tissuedCommands.has(ccId)\n\t\t\t\t&& issuedCommands.get(ccId)!.includes(command)\n\t\t\t) {\n\t\t\t\tret.push(groupId);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\treturn ret;\n\t}\n\n\tprivate static getAssociationGroupCountCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId & SupportsCC,\n\t): number {\n\t\t// The association group count is either determined by the\n\t\t// Association CC or the Multi Channel Association CC\n\n\t\treturn (\n\t\t\t// First query the Multi Channel Association CC\n\t\t\t// And fall back to 0\n\t\t\t(endpoint.supportsCC(\n\t\t\t\tCommandClasses[\"Multi Channel Association\"],\n\t\t\t)\n\t\t\t\t&& MultiChannelAssociationCC.getGroupCountCached(\n\t\t\t\t\tctx,\n\t\t\t\t\tendpoint,\n\t\t\t\t))\n\t\t\t// Then the Association CC\n\t\t\t|| (endpoint.supportsCC(CommandClasses.Association)\n\t\t\t\t&& AssociationCC.getGroupCountCached(ctx, endpoint))\n\t\t\t|| 0\n\t\t);\n\t}\n\n\tpublic async interview(\n\t\tctx: InterviewContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses[\"Association Group Information\"],\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({ priority: MessagePriority.NodeQuery });\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: `Interviewing ${this.ccName}...`,\n\t\t\tdirection: \"none\",\n\t\t});\n\n\t\tconst associationGroupCount = AssociationGroupInfoCC\n\t\t\t.getAssociationGroupCountCached(\n\t\t\t\tctx,\n\t\t\t\tendpoint,\n\t\t\t);\n\n\t\tfor (let groupId = 1; groupId <= associationGroupCount; groupId++) {\n\t\t\t// First get the group's name\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `Association group #${groupId}: Querying name...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst name = await api.getGroupName(groupId);\n\t\t\tif (name) {\n\t\t\t\tconst logMessage =\n\t\t\t\t\t`Association group #${groupId} has name \"${name}\"`;\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: logMessage,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Then the command list\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`Association group #${groupId}: Querying command list...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tawait api.getCommands(groupId);\n\t\t\t// Not sure how to log this\n\t\t}\n\n\t\t// Finally query each group for its information\n\t\tawait this.refreshValues(ctx);\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n\n\tpublic async refreshValues(\n\t\tctx: RefreshValuesContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses[\"Association Group Information\"],\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({ priority: MessagePriority.NodeQuery });\n\n\t\t// Query the information for each group (this is the only thing that could be dynamic)\n\t\tconst associationGroupCount = AssociationGroupInfoCC\n\t\t\t.getAssociationGroupCountCached(\n\t\t\t\tctx,\n\t\t\t\tendpoint,\n\t\t\t);\n\t\tconst hasDynamicInfo = this.getValue<boolean>(\n\t\t\tctx,\n\t\t\tAssociationGroupInfoCCValues.hasDynamicInfo,\n\t\t);\n\n\t\tfor (let groupId = 1; groupId <= associationGroupCount; groupId++) {\n\t\t\t// Then its information\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `Association group #${groupId}: Querying info...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst info = await api.getGroupInfo(groupId, !!hasDynamicInfo);\n\t\t\tif (info) {\n\t\t\t\tconst logMessage =\n\t\t\t\t\t`Received info for association group #${groupId}:\ninfo is dynamic: ${info.hasDynamicInfo}\nprofile: ${\n\t\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\t\tAssociationGroupInfoProfile,\n\t\t\t\t\t\t\tinfo.profile,\n\t\t\t\t\t\t)\n\t\t\t\t\t}`;\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: logMessage,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\n// @publicAPI\nexport interface AssociationGroupInfoCCNameReportOptions {\n\tgroupId: number;\n\tname: string;\n}\n\n@CCCommand(AssociationGroupInfoCommand.NameReport)\nexport class AssociationGroupInfoCCNameReport extends AssociationGroupInfoCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationGroupInfoCCNameReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.groupId = options.groupId;\n\t\tthis.name = options.name;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationGroupInfoCCNameReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst groupId = raw.payload[0];\n\t\tconst nameLength = raw.payload[1];\n\t\tvalidatePayload(raw.payload.length >= 2 + nameLength);\n\t\t// The specs don't allow 0-terminated string, but some devices use them\n\t\t// So we need to cut them off\n\t\tconst name = cpp2js(\n\t\t\traw.payload.subarray(2, 2 + nameLength).toString(\"utf8\"),\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tname,\n\t\t});\n\t}\n\n\tpublic readonly groupId: number;\n\tpublic readonly name: string;\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\t\tconst valueDB = this.getValueDB(ctx);\n\n\t\tvalueDB.setValue(\n\t\t\tAssociationGroupInfoCCValues.groupName(this.groupId).endpoint(\n\t\t\t\tthis.endpointIndex,\n\t\t\t),\n\t\t\tthis.name,\n\t\t);\n\n\t\treturn true;\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.groupId, this.name.length]),\n\t\t\tBytes.from(this.name, \"utf8\"),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"group id\": this.groupId,\n\t\t\t\tname: this.name,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface AssociationGroupInfoCCNameGetOptions {\n\tgroupId: number;\n}\n\n@CCCommand(AssociationGroupInfoCommand.NameGet)\n@expectedCCResponse(AssociationGroupInfoCCNameReport)\nexport class AssociationGroupInfoCCNameGet extends AssociationGroupInfoCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationGroupInfoCCNameGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.groupId = options.groupId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationGroupInfoCCNameGet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst groupId = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { \"group id\": this.groupId },\n\t\t};\n\t}\n}\n\nexport interface AssociationGroupInfo {\n\tgroupId: number;\n\tmode: number;\n\tprofile: number;\n\teventCode: number;\n}\n\n// @publicAPI\nexport interface AssociationGroupInfoCCInfoReportOptions {\n\tisListMode: boolean;\n\thasDynamicInfo: boolean;\n\tgroups: AssociationGroupInfo[];\n}\n\n@CCCommand(AssociationGroupInfoCommand.InfoReport)\n@ccValueProperty(\"hasDynamicInfo\", AssociationGroupInfoCCValues.hasDynamicInfo)\nexport class AssociationGroupInfoCCInfoReport extends AssociationGroupInfoCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationGroupInfoCCInfoReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.isListMode = options.isListMode;\n\t\tthis.hasDynamicInfo = options.hasDynamicInfo;\n\t\tthis.groups = options.groups;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationGroupInfoCCInfoReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst isListMode = !!(raw.payload[0] & 0b1000_0000);\n\t\tconst hasDynamicInfo = !!(raw.payload[0] & 0b0100_0000);\n\t\tconst groupCount = raw.payload[0] & 0b0011_1111;\n\t\t// each group requires 7 bytes of payload\n\t\tvalidatePayload(raw.payload.length >= 1 + groupCount * 7);\n\t\tconst groups: AssociationGroupInfo[] = [];\n\t\tfor (let i = 0; i < groupCount; i++) {\n\t\t\tconst offset = 1 + i * 7;\n\t\t\t// Parse the payload\n\t\t\tconst groupBytes = raw.payload.subarray(offset, offset + 7);\n\t\t\tconst groupId = groupBytes[0];\n\t\t\tconst mode = 0; // groupBytes[1];\n\t\t\tconst profile = groupBytes.readUInt16BE(2);\n\t\t\tconst eventCode = 0; // groupBytes.readUInt16BE(5);\n\t\t\tgroups.push({ groupId, mode, profile, eventCode });\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tisListMode,\n\t\t\thasDynamicInfo,\n\t\t\tgroups,\n\t\t});\n\t}\n\n\tpublic readonly isListMode: boolean;\n\n\tpublic readonly hasDynamicInfo: boolean;\n\n\tpublic readonly groups: readonly AssociationGroupInfo[];\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\tfor (const group of this.groups) {\n\t\t\tconst { groupId, mode, profile, eventCode } = group;\n\t\t\tthis.setValue(\n\t\t\t\tctx,\n\t\t\t\tAssociationGroupInfoCCValues.groupInfo(groupId),\n\t\t\t\t{\n\t\t\t\t\tmode,\n\t\t\t\t\tprofile,\n\t\t\t\t\teventCode,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.alloc(1 + this.groups.length * 7, 0);\n\n\t\tthis.payload[0] = (this.isListMode ? 0b1000_0000 : 0)\n\t\t\t| (this.hasDynamicInfo ? 0b0100_0000 : 0)\n\t\t\t| (this.groups.length & 0b0011_1111);\n\n\t\tfor (let i = 0; i < this.groups.length; i++) {\n\t\t\tconst offset = 1 + i * 7;\n\t\t\tthis.payload[offset] = this.groups[i].groupId;\n\t\t\tthis.payload.writeUInt16BE(this.groups[i].profile, offset + 2);\n\t\t\t// The remaining bytes are zero\n\t\t}\n\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"is list mode\": this.isListMode,\n\t\t\t\t\"has dynamic info\": this.hasDynamicInfo,\n\t\t\t\tgroups: `${\n\t\t\t\t\tthis.groups\n\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t(g) => `\n\u00B7 Group #${g.groupId}\n mode: ${g.mode}\n profile: ${g.profile}\n event code: ${g.eventCode}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join(\"\")\n\t\t\t\t}`,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport type AssociationGroupInfoCCInfoGetOptions =\n\t& {\n\t\trefreshCache: boolean;\n\t}\n\t& (\n\t\t| {\n\t\t\tlistMode: boolean;\n\t\t}\n\t\t| {\n\t\t\tgroupId: number;\n\t\t}\n\t);\n\n@CCCommand(AssociationGroupInfoCommand.InfoGet)\n@expectedCCResponse(AssociationGroupInfoCCInfoReport)\nexport class AssociationGroupInfoCCInfoGet extends AssociationGroupInfoCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationGroupInfoCCInfoGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.refreshCache = options.refreshCache;\n\t\tif (\"listMode\" in options) this.listMode = options.listMode;\n\t\tif (\"groupId\" in options) this.groupId = options.groupId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationGroupInfoCCInfoGet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst optionByte = raw.payload[0];\n\t\tconst refreshCache = !!(optionByte & 0b1000_0000);\n\t\tconst listMode: boolean | undefined = !!(optionByte & 0b0100_0000);\n\t\tlet groupId: number | undefined;\n\n\t\tif (!listMode) {\n\t\t\tgroupId = raw.payload[1];\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\trefreshCache,\n\t\t\tlistMode,\n\t\t\tgroupId,\n\t\t});\n\t}\n\n\tpublic refreshCache: boolean;\n\tpublic listMode?: boolean;\n\tpublic groupId?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tconst isListMode = this.listMode === true;\n\t\tconst optionByte = (this.refreshCache ? 0b1000_0000 : 0)\n\t\t\t| (isListMode ? 0b0100_0000 : 0);\n\t\tthis.payload = Bytes.from([\n\t\t\toptionByte,\n\t\t\tisListMode ? 0 : this.groupId!,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {};\n\t\tif (this.groupId != undefined) {\n\t\t\tmessage[\"group id\"] = this.groupId;\n\t\t}\n\t\tif (this.listMode != undefined) {\n\t\t\tmessage[\"list mode\"] = this.listMode;\n\t\t}\n\t\tmessage[\"refresh cache\"] = this.refreshCache;\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface AssociationGroupInfoCCCommandListReportOptions {\n\tgroupId: number;\n\tcommands: ReadonlyMap<CommandClasses, readonly number[]>;\n}\n\n@CCCommand(AssociationGroupInfoCommand.CommandListReport)\n@ccValueProperty(\n\t\"commands\",\n\tAssociationGroupInfoCCValues.commands,\n\t(self) => [self.groupId],\n)\nexport class AssociationGroupInfoCCCommandListReport\n\textends AssociationGroupInfoCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationGroupInfoCCCommandListReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.groupId = options.groupId;\n\t\tthis.commands = options.commands;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationGroupInfoCCCommandListReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst groupId = raw.payload[0];\n\t\tconst listLength = raw.payload[1];\n\t\tvalidatePayload(raw.payload.length >= 2 + listLength);\n\t\tconst listBytes = raw.payload.subarray(2, 2 + listLength);\n\t\t// Parse all CC ids and commands\n\t\tlet offset = 0;\n\t\tconst commands = new Map<CommandClasses, number[]>();\n\t\twhile (offset < listLength) {\n\t\t\tconst { ccId, bytesRead } = parseCCId(listBytes, offset);\n\t\t\tconst command = listBytes[offset + bytesRead];\n\t\t\tif (!commands.has(ccId)) commands.set(ccId, []);\n\t\t\tcommands.get(ccId)!.push(command);\n\t\t\toffset += bytesRead + 1;\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tcommands,\n\t\t});\n\t}\n\n\tpublic readonly groupId: number;\n\n\tpublic readonly commands: ReadonlyMap<CommandClasses, readonly number[]>;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\t// To make it easier to encode possible extended CCs, we first\n\t\t// allocate as much space as we may need, then trim it again\n\t\tthis.payload = new Bytes(2 + this.commands.size * 3);\n\t\tthis.payload[0] = this.groupId;\n\t\tlet offset = 2;\n\t\tfor (const [ccId, commands] of this.commands) {\n\t\t\tfor (const command of commands) {\n\t\t\t\toffset += encodeCCId(ccId, this.payload, offset);\n\t\t\t\tthis.payload[offset] = command;\n\t\t\t\toffset++;\n\t\t\t}\n\t\t}\n\t\tthis.payload[1] = offset - 2; // list length\n\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"group id\": this.groupId,\n\t\t\t\tcommands: `${\n\t\t\t\t\t[...this.commands]\n\t\t\t\t\t\t.map(([cc, cmds]) => {\n\t\t\t\t\t\t\treturn `\\n\u00B7 ${getCCName(cc)}: ${\n\t\t\t\t\t\t\t\tcmds\n\t\t\t\t\t\t\t\t\t.map((cmd) => num2hex(cmd))\n\t\t\t\t\t\t\t\t\t.join(\", \")\n\t\t\t\t\t\t\t}`;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(\"\")\n\t\t\t\t}`,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface AssociationGroupInfoCCCommandListGetOptions {\n\tallowCache: boolean;\n\tgroupId: number;\n}\n\n@CCCommand(AssociationGroupInfoCommand.CommandListGet)\n@expectedCCResponse(AssociationGroupInfoCCCommandListReport)\nexport class AssociationGroupInfoCCCommandListGet\n\textends AssociationGroupInfoCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationGroupInfoCCCommandListGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.allowCache = options.allowCache;\n\t\tthis.groupId = options.groupId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationGroupInfoCCCommandListGet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst allowCache = !!(raw.payload[0] & 0b1000_0000);\n\t\tconst groupId = raw.payload[1];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tallowCache,\n\t\t\tgroupId,\n\t\t});\n\t}\n\n\tpublic allowCache: boolean;\n\tpublic groupId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.allowCache ? 0b1000_0000 : 0,\n\t\t\tthis.groupId,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"group id\": this.groupId,\n\t\t\t\t\"allow cache\": this.allowCache,\n\t\t\t},\n\t\t};\n\t}\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { type CCEncodingContext, type CCParsingContext } from \"@zwave-js/cc\";\nimport {\n\tCommandClasses,\n\ttype EndpointId,\n\ttype GetValueDB,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype MessageRecord,\n\ttype SupportsCC,\n\ttype WithAddress,\n\tencodeCCId,\n\tgetCCName,\n\tparseCCId,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { cpp2js, getEnumMemberName, num2hex } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n\ttype RefreshValuesContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport {\n\tAssociationGroupInfoCommand,\n\tAssociationGroupInfoProfile,\n} from \"../lib/_Types.js\";\nimport { AssociationCC } from \"./AssociationCC.js\";\nimport { MultiChannelAssociationCC } from \"./MultiChannelAssociationCC.js\";\n\nexport const AssociationGroupInfoCCValues = V.defineCCValues(\n\tCommandClasses[\"Association Group Information\"],\n\t{\n\t\t...V.staticProperty(\"hasDynamicInfo\", undefined, { internal: true }),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"groupName\",\n\t\t\t\"name\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"name\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"groupInfo\",\n\t\t\t\"info\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"info\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"commands\",\n\t\t\t\"issuedCommands\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"issuedCommands\"\n\t\t\t\t&& typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t},\n);\n\n// @noSetValueAPI This CC only has get-type commands\n\n@API(CommandClasses[\"Association Group Information\"])\nexport class AssociationGroupInfoCCAPI extends PhysicalCCAPI {\n\tpublic supportsCommand(\n\t\tcmd: AssociationGroupInfoCommand,\n\t): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase AssociationGroupInfoCommand.NameGet:\n\t\t\tcase AssociationGroupInfoCommand.NameReport:\n\t\t\tcase AssociationGroupInfoCommand.InfoGet:\n\t\t\tcase AssociationGroupInfoCommand.InfoReport:\n\t\t\tcase AssociationGroupInfoCommand.CommandListGet:\n\t\t\tcase AssociationGroupInfoCommand.CommandListReport:\n\t\t\t\treturn true; // This is mandatory\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\t@validateArgs()\n\tpublic async getGroupName(groupId: number): Promise<MaybeNotKnown<string>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationGroupInfoCommand,\n\t\t\tAssociationGroupInfoCommand.NameGet,\n\t\t);\n\n\t\tconst cc = new AssociationGroupInfoCCNameGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tAssociationGroupInfoCCNameReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) return response.name;\n\t}\n\n\t@validateArgs()\n\tpublic async reportGroupName(groupId: number, name: string): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationGroupInfoCommand,\n\t\t\tAssociationGroupInfoCommand.NameReport,\n\t\t);\n\n\t\tconst cc = new AssociationGroupInfoCCNameReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t\tname,\n\t\t});\n\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t@validateArgs()\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getGroupInfo(groupId: number, refreshCache: boolean = false) {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationGroupInfoCommand,\n\t\t\tAssociationGroupInfoCommand.InfoGet,\n\t\t);\n\n\t\tconst cc = new AssociationGroupInfoCCInfoGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t\trefreshCache,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tAssociationGroupInfoCCInfoReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\t// SDS13782 says: If List Mode is set to 0, the Group Count field MUST be set to 1.\n\t\t// But that's not always the case. Apparently some endpoints return 0 groups\n\t\t// although they support AGI CC\n\t\tif (response && response.groups.length > 0) {\n\t\t\tconst { groupId: _, ...info } = response.groups[0];\n\t\t\treturn {\n\t\t\t\thasDynamicInfo: response.hasDynamicInfo,\n\t\t\t\t...info,\n\t\t\t};\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async reportGroupInfo(\n\t\toptions: AssociationGroupInfoCCInfoReportOptions,\n\t): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationGroupInfoCommand,\n\t\t\tAssociationGroupInfoCommand.InfoReport,\n\t\t);\n\n\t\tconst cc = new AssociationGroupInfoCCInfoReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...options,\n\t\t});\n\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t@validateArgs()\n\tpublic async getCommands(\n\t\tgroupId: number,\n\t\tallowCache: boolean = true,\n\t): Promise<\n\t\tMaybeNotKnown<AssociationGroupInfoCCCommandListReport[\"commands\"]>\n\t> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationGroupInfoCommand,\n\t\t\tAssociationGroupInfoCommand.CommandListGet,\n\t\t);\n\n\t\tconst cc = new AssociationGroupInfoCCCommandListGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t\tallowCache,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tAssociationGroupInfoCCCommandListReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) return response.commands;\n\t}\n\n\t@validateArgs()\n\tpublic async reportCommands(\n\t\tgroupId: number,\n\t\tcommands: ReadonlyMap<CommandClasses, readonly number[]>,\n\t): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationGroupInfoCommand,\n\t\t\tAssociationGroupInfoCommand.CommandListReport,\n\t\t);\n\n\t\tconst cc = new AssociationGroupInfoCCCommandListReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t\tcommands,\n\t\t});\n\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n}\n\n@commandClass(CommandClasses[\"Association Group Information\"])\n@implementedVersion(3)\n@ccValues(AssociationGroupInfoCCValues)\nexport class AssociationGroupInfoCC extends CommandClass {\n\tdeclare ccCommand: AssociationGroupInfoCommand;\n\n\tpublic determineRequiredCCInterviews(): readonly CommandClasses[] {\n\t\t// AssociationCC must be interviewed after Z-Wave+ if that is supported\n\t\treturn [\n\t\t\t...super.determineRequiredCCInterviews(),\n\t\t\tCommandClasses.Association,\n\t\t\tCommandClasses[\"Multi Channel Association\"],\n\t\t];\n\t}\n\n\t/** Returns the name of an association group */\n\tpublic static getGroupNameCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tgroupId: number,\n\t): MaybeNotKnown<string> {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tAssociationGroupInfoCCValues.groupName(groupId).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t);\n\t}\n\n\t/** Returns the association profile for an association group */\n\tpublic static getGroupProfileCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tgroupId: number,\n\t): MaybeNotKnown<AssociationGroupInfoProfile> {\n\t\treturn ctx.getValueDB(endpoint.nodeId).getValue<{\n\t\t\tprofile: AssociationGroupInfoProfile;\n\t\t}>(\n\t\t\tAssociationGroupInfoCCValues.groupInfo(groupId).endpoint(\n\t\t\t\tendpoint.index,\n\t\t\t),\n\t\t)\n\t\t\t?.profile;\n\t}\n\n\t/** Returns the dictionary of all commands issued by the given association group */\n\tpublic static getIssuedCommandsCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tgroupId: number,\n\t): MaybeNotKnown<ReadonlyMap<CommandClasses, readonly number[]>> {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tAssociationGroupInfoCCValues.commands(groupId).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t);\n\t}\n\n\tpublic static findGroupsForIssuedCommand(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId & SupportsCC,\n\t\tccId: CommandClasses,\n\t\tcommand: number,\n\t): number[] {\n\t\tconst ret: number[] = [];\n\t\tconst associationGroupCount = this.getAssociationGroupCountCached(\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t);\n\t\tfor (let groupId = 1; groupId <= associationGroupCount; groupId++) {\n\t\t\t// Scan the issued commands of all groups if there's a match\n\t\t\tconst issuedCommands = this.getIssuedCommandsCached(\n\t\t\t\tctx,\n\t\t\t\tendpoint,\n\t\t\t\tgroupId,\n\t\t\t);\n\t\t\tif (!issuedCommands) continue;\n\t\t\tif (\n\t\t\t\tissuedCommands.has(ccId)\n\t\t\t\t&& issuedCommands.get(ccId)!.includes(command)\n\t\t\t) {\n\t\t\t\tret.push(groupId);\n\t\t\t\tcontinue;\n\t\t\t}\n\t\t}\n\t\treturn ret;\n\t}\n\n\tprivate static getAssociationGroupCountCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId & SupportsCC,\n\t): number {\n\t\t// The association group count is either determined by the\n\t\t// Association CC or the Multi Channel Association CC\n\n\t\treturn (\n\t\t\t// First query the Multi Channel Association CC\n\t\t\t// And fall back to 0\n\t\t\t(endpoint.supportsCC(\n\t\t\t\tCommandClasses[\"Multi Channel Association\"],\n\t\t\t)\n\t\t\t\t&& MultiChannelAssociationCC.getGroupCountCached(\n\t\t\t\t\tctx,\n\t\t\t\t\tendpoint,\n\t\t\t\t))\n\t\t\t// Then the Association CC\n\t\t\t|| (endpoint.supportsCC(CommandClasses.Association)\n\t\t\t\t&& AssociationCC.getGroupCountCached(ctx, endpoint))\n\t\t\t|| 0\n\t\t);\n\t}\n\n\tpublic async interview(\n\t\tctx: InterviewContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses[\"Association Group Information\"],\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({ priority: MessagePriority.NodeQuery });\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: `Interviewing ${this.ccName}...`,\n\t\t\tdirection: \"none\",\n\t\t});\n\n\t\tconst associationGroupCount = AssociationGroupInfoCC\n\t\t\t.getAssociationGroupCountCached(\n\t\t\t\tctx,\n\t\t\t\tendpoint,\n\t\t\t);\n\n\t\tfor (let groupId = 1; groupId <= associationGroupCount; groupId++) {\n\t\t\t// First get the group's name\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `Association group #${groupId}: Querying name...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst name = await api.getGroupName(groupId);\n\t\t\tif (name) {\n\t\t\t\tconst logMessage =\n\t\t\t\t\t`Association group #${groupId} has name \"${name}\"`;\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: logMessage,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t}\n\n\t\t\t// Then the command list\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage:\n\t\t\t\t\t`Association group #${groupId}: Querying command list...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tawait api.getCommands(groupId);\n\t\t\t// Not sure how to log this\n\t\t}\n\n\t\t// Finally query each group for its information\n\t\tawait this.refreshValues(ctx);\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n\n\tpublic async refreshValues(\n\t\tctx: RefreshValuesContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\t\tconst endpoint = this.getEndpoint(ctx)!;\n\t\tconst api = CCAPI.create(\n\t\t\tCommandClasses[\"Association Group Information\"],\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({ priority: MessagePriority.NodeQuery });\n\n\t\t// Query the information for each group (this is the only thing that could be dynamic)\n\t\tconst associationGroupCount = AssociationGroupInfoCC\n\t\t\t.getAssociationGroupCountCached(\n\t\t\t\tctx,\n\t\t\t\tendpoint,\n\t\t\t);\n\t\tconst hasDynamicInfo = this.getValue<boolean>(\n\t\t\tctx,\n\t\t\tAssociationGroupInfoCCValues.hasDynamicInfo,\n\t\t);\n\n\t\tfor (let groupId = 1; groupId <= associationGroupCount; groupId++) {\n\t\t\t// Then its information\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `Association group #${groupId}: Querying info...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst info = await api.getGroupInfo(groupId, !!hasDynamicInfo);\n\t\t\tif (info) {\n\t\t\t\tconst logMessage =\n\t\t\t\t\t`Received info for association group #${groupId}:\ninfo is dynamic: ${info.hasDynamicInfo}\nprofile: ${\n\t\t\t\t\t\tgetEnumMemberName(\n\t\t\t\t\t\t\tAssociationGroupInfoProfile,\n\t\t\t\t\t\t\tinfo.profile,\n\t\t\t\t\t\t)\n\t\t\t\t\t}`;\n\t\t\t\tctx.logNode(node.id, {\n\t\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\t\tmessage: logMessage,\n\t\t\t\t\tdirection: \"inbound\",\n\t\t\t\t});\n\t\t\t}\n\t\t}\n\t}\n}\n\n// @publicAPI\nexport interface AssociationGroupInfoCCNameReportOptions {\n\tgroupId: number;\n\tname: string;\n}\n\n@CCCommand(AssociationGroupInfoCommand.NameReport)\nexport class AssociationGroupInfoCCNameReport extends AssociationGroupInfoCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationGroupInfoCCNameReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.groupId = options.groupId;\n\t\tthis.name = options.name;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationGroupInfoCCNameReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst groupId = raw.payload[0];\n\t\tconst nameLength = raw.payload[1];\n\t\tvalidatePayload(raw.payload.length >= 2 + nameLength);\n\t\t// The specs don't allow 0-terminated string, but some devices use them\n\t\t// So we need to cut them off\n\t\tconst name = cpp2js(\n\t\t\traw.payload.subarray(2, 2 + nameLength).toString(\"utf8\"),\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tname,\n\t\t});\n\t}\n\n\tpublic readonly groupId: number;\n\tpublic readonly name: string;\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\t\tconst valueDB = this.getValueDB(ctx);\n\n\t\tvalueDB.setValue(\n\t\t\tAssociationGroupInfoCCValues.groupName(this.groupId).endpoint(\n\t\t\t\tthis.endpointIndex,\n\t\t\t),\n\t\t\tthis.name,\n\t\t);\n\n\t\treturn true;\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.groupId, this.name.length]),\n\t\t\tBytes.from(this.name, \"utf8\"),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"group id\": this.groupId,\n\t\t\t\tname: this.name,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface AssociationGroupInfoCCNameGetOptions {\n\tgroupId: number;\n}\n\n@CCCommand(AssociationGroupInfoCommand.NameGet)\n@expectedCCResponse(AssociationGroupInfoCCNameReport)\nexport class AssociationGroupInfoCCNameGet extends AssociationGroupInfoCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationGroupInfoCCNameGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.groupId = options.groupId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationGroupInfoCCNameGet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst groupId = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: { \"group id\": this.groupId },\n\t\t};\n\t}\n}\n\nexport interface AssociationGroupInfo {\n\tgroupId: number;\n\tmode: number;\n\tprofile: number;\n\teventCode: number;\n}\n\n// @publicAPI\nexport interface AssociationGroupInfoCCInfoReportOptions {\n\tisListMode: boolean;\n\thasDynamicInfo: boolean;\n\tgroups: AssociationGroupInfo[];\n}\n\n@CCCommand(AssociationGroupInfoCommand.InfoReport)\n@ccValueProperty(\"hasDynamicInfo\", AssociationGroupInfoCCValues.hasDynamicInfo)\nexport class AssociationGroupInfoCCInfoReport extends AssociationGroupInfoCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationGroupInfoCCInfoReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.isListMode = options.isListMode;\n\t\tthis.hasDynamicInfo = options.hasDynamicInfo;\n\t\tthis.groups = options.groups;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationGroupInfoCCInfoReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst isListMode = !!(raw.payload[0] & 0b1000_0000);\n\t\tconst hasDynamicInfo = !!(raw.payload[0] & 0b0100_0000);\n\t\tconst groupCount = raw.payload[0] & 0b0011_1111;\n\t\t// each group requires 7 bytes of payload\n\t\tvalidatePayload(raw.payload.length >= 1 + groupCount * 7);\n\t\tconst groups: AssociationGroupInfo[] = [];\n\t\tfor (let i = 0; i < groupCount; i++) {\n\t\t\tconst offset = 1 + i * 7;\n\t\t\t// Parse the payload\n\t\t\tconst groupBytes = raw.payload.subarray(offset, offset + 7);\n\t\t\tconst groupId = groupBytes[0];\n\t\t\tconst mode = 0; // groupBytes[1];\n\t\t\tconst profile = groupBytes.readUInt16BE(2);\n\t\t\tconst eventCode = 0; // groupBytes.readUInt16BE(5);\n\t\t\tgroups.push({ groupId, mode, profile, eventCode });\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tisListMode,\n\t\t\thasDynamicInfo,\n\t\t\tgroups,\n\t\t});\n\t}\n\n\tpublic readonly isListMode: boolean;\n\n\tpublic readonly hasDynamicInfo: boolean;\n\n\tpublic readonly groups: readonly AssociationGroupInfo[];\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\tfor (const group of this.groups) {\n\t\t\tconst { groupId, mode, profile, eventCode } = group;\n\t\t\tthis.setValue(\n\t\t\t\tctx,\n\t\t\t\tAssociationGroupInfoCCValues.groupInfo(groupId),\n\t\t\t\t{\n\t\t\t\t\tmode,\n\t\t\t\t\tprofile,\n\t\t\t\t\teventCode,\n\t\t\t\t},\n\t\t\t);\n\t\t}\n\t\treturn true;\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.alloc(1 + this.groups.length * 7, 0);\n\n\t\tthis.payload[0] = (this.isListMode ? 0b1000_0000 : 0)\n\t\t\t| (this.hasDynamicInfo ? 0b0100_0000 : 0)\n\t\t\t| (this.groups.length & 0b0011_1111);\n\n\t\tfor (let i = 0; i < this.groups.length; i++) {\n\t\t\tconst offset = 1 + i * 7;\n\t\t\tthis.payload[offset] = this.groups[i].groupId;\n\t\t\tthis.payload.writeUInt16BE(this.groups[i].profile, offset + 2);\n\t\t\t// The remaining bytes are zero\n\t\t}\n\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"is list mode\": this.isListMode,\n\t\t\t\t\"has dynamic info\": this.hasDynamicInfo,\n\t\t\t\tgroups: `${\n\t\t\t\t\tthis.groups\n\t\t\t\t\t\t.map(\n\t\t\t\t\t\t\t(g) => `\n\u00B7 Group #${g.groupId}\n mode: ${g.mode}\n profile: ${g.profile}\n event code: ${g.eventCode}`,\n\t\t\t\t\t\t)\n\t\t\t\t\t\t.join(\"\")\n\t\t\t\t}`,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport type AssociationGroupInfoCCInfoGetOptions =\n\t& {\n\t\trefreshCache: boolean;\n\t}\n\t& (\n\t\t| {\n\t\t\tlistMode: boolean;\n\t\t}\n\t\t| {\n\t\t\tgroupId: number;\n\t\t}\n\t);\n\n@CCCommand(AssociationGroupInfoCommand.InfoGet)\n@expectedCCResponse(AssociationGroupInfoCCInfoReport)\nexport class AssociationGroupInfoCCInfoGet extends AssociationGroupInfoCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationGroupInfoCCInfoGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.refreshCache = options.refreshCache;\n\t\tif (\"listMode\" in options) this.listMode = options.listMode;\n\t\tif (\"groupId\" in options) this.groupId = options.groupId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationGroupInfoCCInfoGet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst optionByte = raw.payload[0];\n\t\tconst refreshCache = !!(optionByte & 0b1000_0000);\n\t\tconst listMode: boolean | undefined = !!(optionByte & 0b0100_0000);\n\t\tlet groupId: number | undefined;\n\n\t\tif (!listMode) {\n\t\t\tgroupId = raw.payload[1];\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\trefreshCache,\n\t\t\tlistMode,\n\t\t\tgroupId,\n\t\t});\n\t}\n\n\tpublic refreshCache: boolean;\n\tpublic listMode?: boolean;\n\tpublic groupId?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tconst isListMode = this.listMode === true;\n\t\tconst optionByte = (this.refreshCache ? 0b1000_0000 : 0)\n\t\t\t| (isListMode ? 0b0100_0000 : 0);\n\t\tthis.payload = Bytes.from([\n\t\t\toptionByte,\n\t\t\tisListMode ? 0 : this.groupId!,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {};\n\t\tif (this.groupId != undefined) {\n\t\t\tmessage[\"group id\"] = this.groupId;\n\t\t}\n\t\tif (this.listMode != undefined) {\n\t\t\tmessage[\"list mode\"] = this.listMode;\n\t\t}\n\t\tmessage[\"refresh cache\"] = this.refreshCache;\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage,\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface AssociationGroupInfoCCCommandListReportOptions {\n\tgroupId: number;\n\tcommands: ReadonlyMap<CommandClasses, readonly number[]>;\n}\n\n@CCCommand(AssociationGroupInfoCommand.CommandListReport)\n@ccValueProperty(\n\t\"commands\",\n\tAssociationGroupInfoCCValues.commands,\n\t(self) => [self.groupId],\n)\nexport class AssociationGroupInfoCCCommandListReport\n\textends AssociationGroupInfoCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationGroupInfoCCCommandListReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.groupId = options.groupId;\n\t\tthis.commands = options.commands;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationGroupInfoCCCommandListReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst groupId = raw.payload[0];\n\t\tconst listLength = raw.payload[1];\n\t\tvalidatePayload(raw.payload.length >= 2 + listLength);\n\t\tconst listBytes = raw.payload.subarray(2, 2 + listLength);\n\t\t// Parse all CC ids and commands\n\t\tlet offset = 0;\n\t\tconst commands = new Map<CommandClasses, number[]>();\n\t\twhile (offset < listLength) {\n\t\t\tconst { ccId, bytesRead } = parseCCId(listBytes, offset);\n\t\t\tconst command = listBytes[offset + bytesRead];\n\t\t\tif (!commands.has(ccId)) commands.set(ccId, []);\n\t\t\tcommands.get(ccId)!.push(command);\n\t\t\toffset += bytesRead + 1;\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tcommands,\n\t\t});\n\t}\n\n\tpublic readonly groupId: number;\n\n\tpublic readonly commands: ReadonlyMap<CommandClasses, readonly number[]>;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\t// To make it easier to encode possible extended CCs, we first\n\t\t// allocate as much space as we may need, then trim it again\n\t\tthis.payload = new Bytes(2 + this.commands.size * 3);\n\t\tthis.payload[0] = this.groupId;\n\t\tlet offset = 2;\n\t\tfor (const [ccId, commands] of this.commands) {\n\t\t\tfor (const command of commands) {\n\t\t\t\toffset += encodeCCId(ccId, this.payload, offset);\n\t\t\t\tthis.payload[offset] = command;\n\t\t\t\toffset++;\n\t\t\t}\n\t\t}\n\t\tthis.payload[1] = offset - 2; // list length\n\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"group id\": this.groupId,\n\t\t\t\tcommands: `${\n\t\t\t\t\t[...this.commands]\n\t\t\t\t\t\t.map(([cc, cmds]) => {\n\t\t\t\t\t\t\treturn `\\n\u00B7 ${getCCName(cc)}: ${\n\t\t\t\t\t\t\t\tcmds\n\t\t\t\t\t\t\t\t\t.map((cmd) => num2hex(cmd))\n\t\t\t\t\t\t\t\t\t.join(\", \")\n\t\t\t\t\t\t\t}`;\n\t\t\t\t\t\t})\n\t\t\t\t\t\t.join(\"\")\n\t\t\t\t}`,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface AssociationGroupInfoCCCommandListGetOptions {\n\tallowCache: boolean;\n\tgroupId: number;\n}\n\n@CCCommand(AssociationGroupInfoCommand.CommandListGet)\n@expectedCCResponse(AssociationGroupInfoCCCommandListReport)\nexport class AssociationGroupInfoCCCommandListGet\n\textends AssociationGroupInfoCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationGroupInfoCCCommandListGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.allowCache = options.allowCache;\n\t\tthis.groupId = options.groupId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationGroupInfoCCCommandListGet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst allowCache = !!(raw.payload[0] & 0b1000_0000);\n\t\tconst groupId = raw.payload[1];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tallowCache,\n\t\t\tgroupId,\n\t\t});\n\t}\n\n\tpublic allowCache: boolean;\n\tpublic groupId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.allowCache ? 0b1000_0000 : 0,\n\t\t\tthis.groupId,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"group id\": this.groupId,\n\t\t\t\t\"allow cache\": this.allowCache,\n\t\t\t},\n\t\t};\n\t}\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_safe", "AssociationGroupInfoCC"]
7
7
  }