@zwave-js/cc 15.1.1 → 15.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (558) hide show
  1. package/build/cjs/cc/AlarmSensorCC.d.ts +7 -7
  2. package/build/cjs/cc/AlarmSensorCC.js +22 -23
  3. package/build/cjs/cc/AlarmSensorCC.js.map +3 -3
  4. package/build/cjs/cc/AssociationCC.d.ts +8 -9
  5. package/build/cjs/cc/AssociationCC.js +29 -29
  6. package/build/cjs/cc/AssociationCC.js.map +3 -3
  7. package/build/cjs/cc/AssociationGroupInfoCC.d.ts +7 -7
  8. package/build/cjs/cc/AssociationGroupInfoCC.js +31 -32
  9. package/build/cjs/cc/AssociationGroupInfoCC.js.map +3 -3
  10. package/build/cjs/cc/BarrierOperatorCC.d.ts +8 -8
  11. package/build/cjs/cc/BarrierOperatorCC.js +35 -36
  12. package/build/cjs/cc/BarrierOperatorCC.js.map +3 -3
  13. package/build/cjs/cc/BasicCC.d.ts +4 -4
  14. package/build/cjs/cc/BasicCC.js +23 -24
  15. package/build/cjs/cc/BasicCC.js.map +3 -3
  16. package/build/cjs/cc/BasicWindowCoveringCC._validateArgs.d.ts +3 -0
  17. package/build/cjs/cc/BasicWindowCoveringCC._validateArgs.js +64 -0
  18. package/build/cjs/cc/BasicWindowCoveringCC._validateArgs.js.map +7 -0
  19. package/build/cjs/cc/BasicWindowCoveringCC.d.ts +90 -0
  20. package/build/cjs/cc/BasicWindowCoveringCC.js +273 -0
  21. package/build/cjs/cc/BasicWindowCoveringCC.js.map +7 -0
  22. package/build/cjs/cc/BatteryCC.d.ts +4 -7
  23. package/build/cjs/cc/BatteryCC.js +18 -20
  24. package/build/cjs/cc/BatteryCC.js.map +3 -3
  25. package/build/cjs/cc/BinarySensorCC.d.ts +5 -5
  26. package/build/cjs/cc/BinarySensorCC.js +20 -21
  27. package/build/cjs/cc/BinarySensorCC.js.map +3 -3
  28. package/build/cjs/cc/BinarySwitchCC._validateArgs.js +2 -2
  29. package/build/cjs/cc/BinarySwitchCC.d.ts +6 -6
  30. package/build/cjs/cc/BinarySwitchCC.js +26 -26
  31. package/build/cjs/cc/BinarySwitchCC.js.map +3 -3
  32. package/build/cjs/cc/CRC16CC.d.ts +3 -3
  33. package/build/cjs/cc/CRC16CC.js +15 -15
  34. package/build/cjs/cc/CRC16CC.js.map +3 -3
  35. package/build/cjs/cc/CentralSceneCC.d.ts +8 -8
  36. package/build/cjs/cc/CentralSceneCC.js +23 -24
  37. package/build/cjs/cc/CentralSceneCC.js.map +3 -3
  38. package/build/cjs/cc/ClimateControlScheduleCC.d.ts +6 -6
  39. package/build/cjs/cc/ClimateControlScheduleCC.js +19 -20
  40. package/build/cjs/cc/ClimateControlScheduleCC.js.map +3 -3
  41. package/build/cjs/cc/ClockCC.d.ts +3 -4
  42. package/build/cjs/cc/ClockCC.js +13 -14
  43. package/build/cjs/cc/ClockCC.js.map +3 -3
  44. package/build/cjs/cc/ColorSwitchCC.d.ts +3 -4
  45. package/build/cjs/cc/ColorSwitchCC.js +22 -24
  46. package/build/cjs/cc/ColorSwitchCC.js.map +3 -3
  47. package/build/cjs/cc/ConfigurationCC.d.ts +3 -3
  48. package/build/cjs/cc/ConfigurationCC.js +114 -115
  49. package/build/cjs/cc/ConfigurationCC.js.map +3 -3
  50. package/build/cjs/cc/DeviceResetLocallyCC.d.ts +2 -2
  51. package/build/cjs/cc/DeviceResetLocallyCC.js +5 -5
  52. package/build/cjs/cc/DeviceResetLocallyCC.js.map +1 -1
  53. package/build/cjs/cc/DoorLockCC.d.ts +29 -29
  54. package/build/cjs/cc/DoorLockCC.js +39 -40
  55. package/build/cjs/cc/DoorLockCC.js.map +3 -3
  56. package/build/cjs/cc/DoorLockLoggingCC.d.ts +4 -4
  57. package/build/cjs/cc/DoorLockLoggingCC.js +13 -14
  58. package/build/cjs/cc/DoorLockLoggingCC.js.map +3 -3
  59. package/build/cjs/cc/EnergyProductionCC.d.ts +2 -3
  60. package/build/cjs/cc/EnergyProductionCC.js.map +2 -2
  61. package/build/cjs/cc/EntryControlCC.d.ts +8 -8
  62. package/build/cjs/cc/EntryControlCC.js +41 -42
  63. package/build/cjs/cc/EntryControlCC.js.map +3 -3
  64. package/build/cjs/cc/FirmwareUpdateMetaDataCC.d.ts +9 -10
  65. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +52 -53
  66. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +3 -3
  67. package/build/cjs/cc/HailCC.js +2 -2
  68. package/build/cjs/cc/HailCC.js.map +1 -1
  69. package/build/cjs/cc/HumidityControlModeCC.d.ts +5 -5
  70. package/build/cjs/cc/HumidityControlModeCC.js +20 -21
  71. package/build/cjs/cc/HumidityControlModeCC.js.map +3 -3
  72. package/build/cjs/cc/HumidityControlOperatingStateCC.d.ts +3 -3
  73. package/build/cjs/cc/HumidityControlOperatingStateCC.js +9 -9
  74. package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +3 -3
  75. package/build/cjs/cc/HumidityControlSetpointCC.d.ts +6 -6
  76. package/build/cjs/cc/HumidityControlSetpointCC.js +43 -44
  77. package/build/cjs/cc/HumidityControlSetpointCC.js.map +3 -3
  78. package/build/cjs/cc/InclusionControllerCC.d.ts +2 -3
  79. package/build/cjs/cc/InclusionControllerCC.js.map +2 -2
  80. package/build/cjs/cc/IndicatorCC.d.ts +3 -3
  81. package/build/cjs/cc/IndicatorCC.js +50 -52
  82. package/build/cjs/cc/IndicatorCC.js.map +3 -3
  83. package/build/cjs/cc/IrrigationCC.d.ts +3 -3
  84. package/build/cjs/cc/IrrigationCC.js +74 -75
  85. package/build/cjs/cc/IrrigationCC.js.map +3 -3
  86. package/build/cjs/cc/LanguageCC.d.ts +5 -6
  87. package/build/cjs/cc/LanguageCC.js +14 -15
  88. package/build/cjs/cc/LanguageCC.js.map +3 -3
  89. package/build/cjs/cc/LockCC.d.ts +4 -4
  90. package/build/cjs/cc/LockCC.js +10 -10
  91. package/build/cjs/cc/LockCC.js.map +3 -3
  92. package/build/cjs/cc/ManufacturerProprietaryCC.d.ts +3 -3
  93. package/build/cjs/cc/ManufacturerProprietaryCC.js +10 -10
  94. package/build/cjs/cc/ManufacturerProprietaryCC.js.map +3 -3
  95. package/build/cjs/cc/ManufacturerSpecificCC.d.ts +7 -8
  96. package/build/cjs/cc/ManufacturerSpecificCC.js +20 -21
  97. package/build/cjs/cc/ManufacturerSpecificCC.js.map +3 -3
  98. package/build/cjs/cc/MeterCC.d.ts +4 -6
  99. package/build/cjs/cc/MeterCC.js +52 -54
  100. package/build/cjs/cc/MeterCC.js.map +3 -3
  101. package/build/cjs/cc/MultiChannelAssociationCC.d.ts +7 -8
  102. package/build/cjs/cc/MultiChannelAssociationCC.js +34 -35
  103. package/build/cjs/cc/MultiChannelAssociationCC.js.map +3 -3
  104. package/build/cjs/cc/MultiChannelCC.d.ts +11 -11
  105. package/build/cjs/cc/MultiChannelCC.js +53 -53
  106. package/build/cjs/cc/MultiChannelCC.js.map +3 -3
  107. package/build/cjs/cc/MultiCommandCC.d.ts +3 -3
  108. package/build/cjs/cc/MultiCommandCC.js +13 -13
  109. package/build/cjs/cc/MultiCommandCC.js.map +3 -3
  110. package/build/cjs/cc/MultilevelSensorCC.d.ts +4 -7
  111. package/build/cjs/cc/MultilevelSensorCC.js +26 -28
  112. package/build/cjs/cc/MultilevelSensorCC.js.map +3 -3
  113. package/build/cjs/cc/MultilevelSwitchCC._validateArgs.js +3 -3
  114. package/build/cjs/cc/MultilevelSwitchCC.d.ts +13 -13
  115. package/build/cjs/cc/MultilevelSwitchCC.js +36 -37
  116. package/build/cjs/cc/MultilevelSwitchCC.js.map +3 -3
  117. package/build/cjs/cc/NoOperationCC.js +4 -4
  118. package/build/cjs/cc/NoOperationCC.js.map +1 -1
  119. package/build/cjs/cc/NodeNamingCC.d.ts +5 -5
  120. package/build/cjs/cc/NodeNamingCC.js +20 -20
  121. package/build/cjs/cc/NodeNamingCC.js.map +3 -3
  122. package/build/cjs/cc/NotificationCC.d.ts +4 -5
  123. package/build/cjs/cc/NotificationCC.js +66 -68
  124. package/build/cjs/cc/NotificationCC.js.map +3 -3
  125. package/build/cjs/cc/PowerlevelCC.d.ts +3 -3
  126. package/build/cjs/cc/PowerlevelCC.js +25 -26
  127. package/build/cjs/cc/PowerlevelCC.js.map +3 -3
  128. package/build/cjs/cc/ProtectionCC._validateArgs.js +2 -2
  129. package/build/cjs/cc/ProtectionCC.d.ts +11 -11
  130. package/build/cjs/cc/ProtectionCC.js +35 -36
  131. package/build/cjs/cc/ProtectionCC.js.map +3 -3
  132. package/build/cjs/cc/SceneActivationCC._validateArgs.js +2 -2
  133. package/build/cjs/cc/SceneActivationCC.d.ts +5 -6
  134. package/build/cjs/cc/SceneActivationCC.js +10 -10
  135. package/build/cjs/cc/SceneActivationCC.js.map +3 -3
  136. package/build/cjs/cc/SceneActuatorConfigurationCC._validateArgs.js +2 -2
  137. package/build/cjs/cc/SceneActuatorConfigurationCC.d.ts +5 -5
  138. package/build/cjs/cc/SceneActuatorConfigurationCC.js +19 -20
  139. package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +3 -3
  140. package/build/cjs/cc/SceneControllerConfigurationCC._validateArgs.js +2 -2
  141. package/build/cjs/cc/SceneControllerConfigurationCC.d.ts +6 -6
  142. package/build/cjs/cc/SceneControllerConfigurationCC.js +25 -26
  143. package/build/cjs/cc/SceneControllerConfigurationCC.js.map +3 -3
  144. package/build/cjs/cc/ScheduleEntryLockCC.d.ts +2 -3
  145. package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
  146. package/build/cjs/cc/Security2CC.d.ts +3 -4
  147. package/build/cjs/cc/Security2CC.js +60 -62
  148. package/build/cjs/cc/Security2CC.js.map +3 -3
  149. package/build/cjs/cc/SecurityCC.d.ts +3 -4
  150. package/build/cjs/cc/SecurityCC.js +25 -26
  151. package/build/cjs/cc/SecurityCC.js.map +3 -3
  152. package/build/cjs/cc/SoundSwitchCC.d.ts +7 -7
  153. package/build/cjs/cc/SoundSwitchCC.js +28 -29
  154. package/build/cjs/cc/SoundSwitchCC.js.map +3 -3
  155. package/build/cjs/cc/SupervisionCC.d.ts +4 -4
  156. package/build/cjs/cc/SupervisionCC.js +28 -29
  157. package/build/cjs/cc/SupervisionCC.js.map +3 -3
  158. package/build/cjs/cc/ThermostatFanModeCC.d.ts +6 -6
  159. package/build/cjs/cc/ThermostatFanModeCC.js +21 -22
  160. package/build/cjs/cc/ThermostatFanModeCC.js.map +3 -3
  161. package/build/cjs/cc/ThermostatFanStateCC.d.ts +3 -3
  162. package/build/cjs/cc/ThermostatFanStateCC.js +9 -9
  163. package/build/cjs/cc/ThermostatFanStateCC.js.map +3 -3
  164. package/build/cjs/cc/ThermostatModeCC.d.ts +6 -6
  165. package/build/cjs/cc/ThermostatModeCC.js +30 -31
  166. package/build/cjs/cc/ThermostatModeCC.js.map +3 -3
  167. package/build/cjs/cc/ThermostatOperatingStateCC.d.ts +3 -4
  168. package/build/cjs/cc/ThermostatOperatingStateCC.js +9 -9
  169. package/build/cjs/cc/ThermostatOperatingStateCC.js.map +3 -3
  170. package/build/cjs/cc/ThermostatSetbackCC.d.ts +3 -3
  171. package/build/cjs/cc/ThermostatSetbackCC.js +14 -15
  172. package/build/cjs/cc/ThermostatSetbackCC.js.map +3 -3
  173. package/build/cjs/cc/ThermostatSetpointCC.d.ts +6 -6
  174. package/build/cjs/cc/ThermostatSetpointCC.js +48 -49
  175. package/build/cjs/cc/ThermostatSetpointCC.js.map +3 -3
  176. package/build/cjs/cc/TimeCC.d.ts +3 -4
  177. package/build/cjs/cc/TimeCC.js +9 -10
  178. package/build/cjs/cc/TimeCC.js.map +3 -3
  179. package/build/cjs/cc/TimeParametersCC.d.ts +3 -4
  180. package/build/cjs/cc/TimeParametersCC.js +2 -2
  181. package/build/cjs/cc/TimeParametersCC.js.map +2 -2
  182. package/build/cjs/cc/TransportServiceCC.d.ts +3 -3
  183. package/build/cjs/cc/TransportServiceCC.js +44 -45
  184. package/build/cjs/cc/TransportServiceCC.js.map +3 -3
  185. package/build/cjs/cc/UserCodeCC.d.ts +19 -19
  186. package/build/cjs/cc/UserCodeCC.js +102 -103
  187. package/build/cjs/cc/UserCodeCC.js.map +3 -3
  188. package/build/cjs/cc/VersionCC.d.ts +17 -17
  189. package/build/cjs/cc/VersionCC.js +46 -47
  190. package/build/cjs/cc/VersionCC.js.map +3 -3
  191. package/build/cjs/cc/WakeUpCC.d.ts +6 -6
  192. package/build/cjs/cc/WakeUpCC.js +16 -17
  193. package/build/cjs/cc/WakeUpCC.js.map +3 -3
  194. package/build/cjs/cc/WindowCoveringCC.d.ts +3 -4
  195. package/build/cjs/cc/WindowCoveringCC.js +17 -18
  196. package/build/cjs/cc/WindowCoveringCC.js.map +3 -3
  197. package/build/cjs/cc/ZWavePlusCC.d.ts +8 -8
  198. package/build/cjs/cc/ZWavePlusCC.js +15 -16
  199. package/build/cjs/cc/ZWavePlusCC.js.map +3 -3
  200. package/build/cjs/cc/ZWaveProtocolCC.d.ts +2 -2
  201. package/build/cjs/cc/ZWaveProtocolCC.js +35 -35
  202. package/build/cjs/cc/ZWaveProtocolCC.js.map +2 -2
  203. package/build/cjs/cc/_CCValues.generated.d.ts +124 -0
  204. package/build/cjs/cc/_CCValues.generated.js +93 -26
  205. package/build/cjs/cc/_CCValues.generated.js.map +3 -3
  206. package/build/cjs/cc/index.d.ts +2 -0
  207. package/build/cjs/cc/index.js +9 -0
  208. package/build/cjs/cc/index.js.map +2 -2
  209. package/build/cjs/cc/manufacturerProprietary/FibaroCC.d.ts +3 -3
  210. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js +14 -14
  211. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
  212. package/build/cjs/lib/API.d.ts +5 -3
  213. package/build/cjs/lib/API.js.map +2 -2
  214. package/build/cjs/lib/CommandClass.d.ts +5 -6
  215. package/build/cjs/lib/CommandClass.js +45 -45
  216. package/build/cjs/lib/CommandClass.js.map +3 -3
  217. package/build/cjs/lib/CommandClassDecorators.d.ts +2 -2
  218. package/build/cjs/lib/CommandClassDecorators.js +3 -3
  219. package/build/cjs/lib/CommandClassDecorators.js.map +2 -2
  220. package/build/cjs/lib/Security2/Extension.d.ts +2 -2
  221. package/build/cjs/lib/Security2/Extension.js +17 -17
  222. package/build/cjs/lib/Security2/Extension.js.map +3 -3
  223. package/build/cjs/lib/SetValueResult.d.ts +1 -1
  224. package/build/cjs/lib/SetValueResult.js.map +1 -1
  225. package/build/cjs/lib/Values.d.ts +3 -3
  226. package/build/cjs/lib/Values.js +6 -6
  227. package/build/cjs/lib/Values.js.map +2 -2
  228. package/build/cjs/lib/_Types.d.ts +6 -2
  229. package/build/cjs/lib/_Types.js +10 -3
  230. package/build/cjs/lib/_Types.js.map +3 -3
  231. package/build/cjs/lib/serializers.d.ts +1 -1
  232. package/build/cjs/lib/serializers.js +5 -5
  233. package/build/cjs/lib/serializers.js.map +2 -2
  234. package/build/cjs/lib/traits.d.ts +2 -2
  235. package/build/cjs/lib/utils.d.ts +2 -2
  236. package/build/cjs/lib/utils.js +60 -60
  237. package/build/cjs/lib/utils.js.map +3 -3
  238. package/build/esm/cc/AlarmSensorCC.d.ts +7 -7
  239. package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
  240. package/build/esm/cc/AlarmSensorCC.js +2 -3
  241. package/build/esm/cc/AlarmSensorCC.js.map +1 -1
  242. package/build/esm/cc/AssociationCC.d.ts +8 -9
  243. package/build/esm/cc/AssociationCC.d.ts.map +1 -1
  244. package/build/esm/cc/AssociationCC.js +2 -2
  245. package/build/esm/cc/AssociationCC.js.map +1 -1
  246. package/build/esm/cc/AssociationGroupInfoCC.d.ts +7 -7
  247. package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
  248. package/build/esm/cc/AssociationGroupInfoCC.js +2 -3
  249. package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
  250. package/build/esm/cc/BarrierOperatorCC.d.ts +8 -8
  251. package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
  252. package/build/esm/cc/BarrierOperatorCC.js +2 -3
  253. package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
  254. package/build/esm/cc/BasicCC.d.ts +4 -4
  255. package/build/esm/cc/BasicCC.d.ts.map +1 -1
  256. package/build/esm/cc/BasicCC.js +2 -3
  257. package/build/esm/cc/BasicCC.js.map +1 -1
  258. package/build/esm/cc/BasicWindowCoveringCC._validateArgs.d.ts +3 -0
  259. package/build/esm/cc/BasicWindowCoveringCC._validateArgs.d.ts.map +1 -0
  260. package/build/esm/cc/BasicWindowCoveringCC._validateArgs.js +22 -0
  261. package/build/esm/cc/BasicWindowCoveringCC._validateArgs.js.map +1 -0
  262. package/build/esm/cc/BasicWindowCoveringCC.d.ts +90 -0
  263. package/build/esm/cc/BasicWindowCoveringCC.d.ts.map +1 -0
  264. package/build/esm/cc/BasicWindowCoveringCC.js +215 -0
  265. package/build/esm/cc/BasicWindowCoveringCC.js.map +1 -0
  266. package/build/esm/cc/BatteryCC.d.ts +4 -7
  267. package/build/esm/cc/BatteryCC.d.ts.map +1 -1
  268. package/build/esm/cc/BatteryCC.js +2 -4
  269. package/build/esm/cc/BatteryCC.js.map +1 -1
  270. package/build/esm/cc/BinarySensorCC.d.ts +5 -5
  271. package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
  272. package/build/esm/cc/BinarySensorCC.js +2 -3
  273. package/build/esm/cc/BinarySensorCC.js.map +1 -1
  274. package/build/esm/cc/BinarySwitchCC._validateArgs.js +1 -1
  275. package/build/esm/cc/BinarySwitchCC._validateArgs.js.map +1 -1
  276. package/build/esm/cc/BinarySwitchCC.d.ts +6 -6
  277. package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
  278. package/build/esm/cc/BinarySwitchCC.js +2 -2
  279. package/build/esm/cc/BinarySwitchCC.js.map +1 -1
  280. package/build/esm/cc/CRC16CC.d.ts +3 -3
  281. package/build/esm/cc/CRC16CC.d.ts.map +1 -1
  282. package/build/esm/cc/CRC16CC.js +2 -2
  283. package/build/esm/cc/CRC16CC.js.map +1 -1
  284. package/build/esm/cc/CentralSceneCC.d.ts +8 -8
  285. package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
  286. package/build/esm/cc/CentralSceneCC.js +2 -3
  287. package/build/esm/cc/CentralSceneCC.js.map +1 -1
  288. package/build/esm/cc/ClimateControlScheduleCC.d.ts +6 -6
  289. package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
  290. package/build/esm/cc/ClimateControlScheduleCC.js +2 -3
  291. package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
  292. package/build/esm/cc/ClockCC.d.ts +3 -4
  293. package/build/esm/cc/ClockCC.d.ts.map +1 -1
  294. package/build/esm/cc/ClockCC.js +2 -3
  295. package/build/esm/cc/ClockCC.js.map +1 -1
  296. package/build/esm/cc/ColorSwitchCC.d.ts +3 -4
  297. package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
  298. package/build/esm/cc/ColorSwitchCC.js +2 -4
  299. package/build/esm/cc/ColorSwitchCC.js.map +1 -1
  300. package/build/esm/cc/ConfigurationCC.d.ts +3 -3
  301. package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
  302. package/build/esm/cc/ConfigurationCC.js +2 -3
  303. package/build/esm/cc/ConfigurationCC.js.map +1 -1
  304. package/build/esm/cc/DeviceResetLocallyCC.d.ts +2 -2
  305. package/build/esm/cc/DeviceResetLocallyCC.d.ts.map +1 -1
  306. package/build/esm/cc/DeviceResetLocallyCC.js +1 -1
  307. package/build/esm/cc/DeviceResetLocallyCC.js.map +1 -1
  308. package/build/esm/cc/DoorLockCC.d.ts +29 -29
  309. package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
  310. package/build/esm/cc/DoorLockCC.js +2 -3
  311. package/build/esm/cc/DoorLockCC.js.map +1 -1
  312. package/build/esm/cc/DoorLockLoggingCC.d.ts +4 -4
  313. package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
  314. package/build/esm/cc/DoorLockLoggingCC.js +2 -3
  315. package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
  316. package/build/esm/cc/EnergyProductionCC.d.ts +2 -3
  317. package/build/esm/cc/EnergyProductionCC.d.ts.map +1 -1
  318. package/build/esm/cc/EnergyProductionCC.js.map +1 -1
  319. package/build/esm/cc/EntryControlCC.d.ts +8 -8
  320. package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
  321. package/build/esm/cc/EntryControlCC.js +2 -3
  322. package/build/esm/cc/EntryControlCC.js.map +1 -1
  323. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts +9 -10
  324. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
  325. package/build/esm/cc/FirmwareUpdateMetaDataCC.js +2 -3
  326. package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
  327. package/build/esm/cc/HailCC.js +1 -1
  328. package/build/esm/cc/HailCC.js.map +1 -1
  329. package/build/esm/cc/HumidityControlModeCC.d.ts +5 -5
  330. package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
  331. package/build/esm/cc/HumidityControlModeCC.js +2 -3
  332. package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
  333. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts +3 -3
  334. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
  335. package/build/esm/cc/HumidityControlOperatingStateCC.js +2 -2
  336. package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
  337. package/build/esm/cc/HumidityControlSetpointCC.d.ts +6 -6
  338. package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
  339. package/build/esm/cc/HumidityControlSetpointCC.js +2 -3
  340. package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
  341. package/build/esm/cc/InclusionControllerCC.d.ts +2 -3
  342. package/build/esm/cc/InclusionControllerCC.d.ts.map +1 -1
  343. package/build/esm/cc/InclusionControllerCC.js.map +1 -1
  344. package/build/esm/cc/IndicatorCC.d.ts +3 -3
  345. package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
  346. package/build/esm/cc/IndicatorCC.js +2 -4
  347. package/build/esm/cc/IndicatorCC.js.map +1 -1
  348. package/build/esm/cc/IrrigationCC.d.ts +3 -3
  349. package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
  350. package/build/esm/cc/IrrigationCC.js +2 -3
  351. package/build/esm/cc/IrrigationCC.js.map +1 -1
  352. package/build/esm/cc/LanguageCC.d.ts +5 -6
  353. package/build/esm/cc/LanguageCC.d.ts.map +1 -1
  354. package/build/esm/cc/LanguageCC.js +2 -3
  355. package/build/esm/cc/LanguageCC.js.map +1 -1
  356. package/build/esm/cc/LockCC.d.ts +4 -4
  357. package/build/esm/cc/LockCC.d.ts.map +1 -1
  358. package/build/esm/cc/LockCC.js +2 -2
  359. package/build/esm/cc/LockCC.js.map +1 -1
  360. package/build/esm/cc/ManufacturerProprietaryCC.d.ts +3 -3
  361. package/build/esm/cc/ManufacturerProprietaryCC.d.ts.map +1 -1
  362. package/build/esm/cc/ManufacturerProprietaryCC.js +2 -2
  363. package/build/esm/cc/ManufacturerProprietaryCC.js.map +1 -1
  364. package/build/esm/cc/ManufacturerSpecificCC.d.ts +7 -8
  365. package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
  366. package/build/esm/cc/ManufacturerSpecificCC.js +2 -3
  367. package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
  368. package/build/esm/cc/MeterCC.d.ts +4 -6
  369. package/build/esm/cc/MeterCC.d.ts.map +1 -1
  370. package/build/esm/cc/MeterCC.js +2 -4
  371. package/build/esm/cc/MeterCC.js.map +1 -1
  372. package/build/esm/cc/MultiChannelAssociationCC.d.ts +7 -8
  373. package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
  374. package/build/esm/cc/MultiChannelAssociationCC.js +2 -3
  375. package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
  376. package/build/esm/cc/MultiChannelCC.d.ts +11 -11
  377. package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
  378. package/build/esm/cc/MultiChannelCC.js +2 -2
  379. package/build/esm/cc/MultiChannelCC.js.map +1 -1
  380. package/build/esm/cc/MultiCommandCC.d.ts +3 -3
  381. package/build/esm/cc/MultiCommandCC.d.ts.map +1 -1
  382. package/build/esm/cc/MultiCommandCC.js +2 -2
  383. package/build/esm/cc/MultiCommandCC.js.map +1 -1
  384. package/build/esm/cc/MultilevelSensorCC.d.ts +4 -7
  385. package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
  386. package/build/esm/cc/MultilevelSensorCC.js +2 -4
  387. package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
  388. package/build/esm/cc/MultilevelSwitchCC._validateArgs.js +1 -1
  389. package/build/esm/cc/MultilevelSwitchCC._validateArgs.js.map +1 -1
  390. package/build/esm/cc/MultilevelSwitchCC.d.ts +13 -13
  391. package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
  392. package/build/esm/cc/MultilevelSwitchCC.js +2 -3
  393. package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
  394. package/build/esm/cc/NoOperationCC.js +1 -1
  395. package/build/esm/cc/NoOperationCC.js.map +1 -1
  396. package/build/esm/cc/NodeNamingCC.d.ts +5 -5
  397. package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
  398. package/build/esm/cc/NodeNamingCC.js +2 -2
  399. package/build/esm/cc/NodeNamingCC.js.map +1 -1
  400. package/build/esm/cc/NotificationCC.d.ts +4 -5
  401. package/build/esm/cc/NotificationCC.d.ts.map +1 -1
  402. package/build/esm/cc/NotificationCC.js +2 -4
  403. package/build/esm/cc/NotificationCC.js.map +1 -1
  404. package/build/esm/cc/PowerlevelCC.d.ts +3 -3
  405. package/build/esm/cc/PowerlevelCC.d.ts.map +1 -1
  406. package/build/esm/cc/PowerlevelCC.js +2 -3
  407. package/build/esm/cc/PowerlevelCC.js.map +1 -1
  408. package/build/esm/cc/ProtectionCC._validateArgs.js +1 -1
  409. package/build/esm/cc/ProtectionCC._validateArgs.js.map +1 -1
  410. package/build/esm/cc/ProtectionCC.d.ts +11 -11
  411. package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
  412. package/build/esm/cc/ProtectionCC.js +2 -3
  413. package/build/esm/cc/ProtectionCC.js.map +1 -1
  414. package/build/esm/cc/SceneActivationCC._validateArgs.js +1 -1
  415. package/build/esm/cc/SceneActivationCC._validateArgs.js.map +1 -1
  416. package/build/esm/cc/SceneActivationCC.d.ts +5 -6
  417. package/build/esm/cc/SceneActivationCC.d.ts.map +1 -1
  418. package/build/esm/cc/SceneActivationCC.js +2 -2
  419. package/build/esm/cc/SceneActivationCC.js.map +1 -1
  420. package/build/esm/cc/SceneActuatorConfigurationCC._validateArgs.js +1 -1
  421. package/build/esm/cc/SceneActuatorConfigurationCC._validateArgs.js.map +1 -1
  422. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts +5 -5
  423. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts.map +1 -1
  424. package/build/esm/cc/SceneActuatorConfigurationCC.js +2 -3
  425. package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
  426. package/build/esm/cc/SceneControllerConfigurationCC._validateArgs.js +1 -1
  427. package/build/esm/cc/SceneControllerConfigurationCC._validateArgs.js.map +1 -1
  428. package/build/esm/cc/SceneControllerConfigurationCC.d.ts +6 -6
  429. package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
  430. package/build/esm/cc/SceneControllerConfigurationCC.js +2 -3
  431. package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
  432. package/build/esm/cc/ScheduleEntryLockCC.d.ts +2 -3
  433. package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
  434. package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
  435. package/build/esm/cc/Security2CC.d.ts +3 -4
  436. package/build/esm/cc/Security2CC.d.ts.map +1 -1
  437. package/build/esm/cc/Security2CC.js +2 -4
  438. package/build/esm/cc/Security2CC.js.map +1 -1
  439. package/build/esm/cc/SecurityCC.d.ts +3 -4
  440. package/build/esm/cc/SecurityCC.d.ts.map +1 -1
  441. package/build/esm/cc/SecurityCC.js +1 -2
  442. package/build/esm/cc/SecurityCC.js.map +1 -1
  443. package/build/esm/cc/SoundSwitchCC.d.ts +7 -7
  444. package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
  445. package/build/esm/cc/SoundSwitchCC.js +2 -3
  446. package/build/esm/cc/SoundSwitchCC.js.map +1 -1
  447. package/build/esm/cc/SupervisionCC.d.ts +4 -4
  448. package/build/esm/cc/SupervisionCC.d.ts.map +1 -1
  449. package/build/esm/cc/SupervisionCC.js +2 -3
  450. package/build/esm/cc/SupervisionCC.js.map +1 -1
  451. package/build/esm/cc/ThermostatFanModeCC.d.ts +6 -6
  452. package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
  453. package/build/esm/cc/ThermostatFanModeCC.js +2 -3
  454. package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
  455. package/build/esm/cc/ThermostatFanStateCC.d.ts +3 -3
  456. package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
  457. package/build/esm/cc/ThermostatFanStateCC.js +2 -2
  458. package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
  459. package/build/esm/cc/ThermostatModeCC.d.ts +6 -6
  460. package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
  461. package/build/esm/cc/ThermostatModeCC.js +2 -3
  462. package/build/esm/cc/ThermostatModeCC.js.map +1 -1
  463. package/build/esm/cc/ThermostatOperatingStateCC.d.ts +3 -4
  464. package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
  465. package/build/esm/cc/ThermostatOperatingStateCC.js +2 -2
  466. package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
  467. package/build/esm/cc/ThermostatSetbackCC.d.ts +3 -3
  468. package/build/esm/cc/ThermostatSetbackCC.d.ts.map +1 -1
  469. package/build/esm/cc/ThermostatSetbackCC.js +2 -3
  470. package/build/esm/cc/ThermostatSetbackCC.js.map +1 -1
  471. package/build/esm/cc/ThermostatSetpointCC.d.ts +6 -6
  472. package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
  473. package/build/esm/cc/ThermostatSetpointCC.js +2 -3
  474. package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
  475. package/build/esm/cc/TimeCC.d.ts +3 -4
  476. package/build/esm/cc/TimeCC.d.ts.map +1 -1
  477. package/build/esm/cc/TimeCC.js +1 -2
  478. package/build/esm/cc/TimeCC.js.map +1 -1
  479. package/build/esm/cc/TimeParametersCC.d.ts +3 -4
  480. package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
  481. package/build/esm/cc/TimeParametersCC.js +1 -1
  482. package/build/esm/cc/TimeParametersCC.js.map +1 -1
  483. package/build/esm/cc/TransportServiceCC.d.ts +3 -3
  484. package/build/esm/cc/TransportServiceCC.d.ts.map +1 -1
  485. package/build/esm/cc/TransportServiceCC.js +2 -3
  486. package/build/esm/cc/TransportServiceCC.js.map +1 -1
  487. package/build/esm/cc/UserCodeCC.d.ts +19 -19
  488. package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
  489. package/build/esm/cc/UserCodeCC.js +2 -3
  490. package/build/esm/cc/UserCodeCC.js.map +1 -1
  491. package/build/esm/cc/VersionCC.d.ts +17 -17
  492. package/build/esm/cc/VersionCC.d.ts.map +1 -1
  493. package/build/esm/cc/VersionCC.js +2 -3
  494. package/build/esm/cc/VersionCC.js.map +1 -1
  495. package/build/esm/cc/WakeUpCC.d.ts +6 -6
  496. package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
  497. package/build/esm/cc/WakeUpCC.js +2 -3
  498. package/build/esm/cc/WakeUpCC.js.map +1 -1
  499. package/build/esm/cc/WindowCoveringCC.d.ts +3 -4
  500. package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
  501. package/build/esm/cc/WindowCoveringCC.js +1 -2
  502. package/build/esm/cc/WindowCoveringCC.js.map +1 -1
  503. package/build/esm/cc/ZWavePlusCC.d.ts +8 -8
  504. package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
  505. package/build/esm/cc/ZWavePlusCC.js +2 -3
  506. package/build/esm/cc/ZWavePlusCC.js.map +1 -1
  507. package/build/esm/cc/ZWaveProtocolCC.d.ts +2 -2
  508. package/build/esm/cc/ZWaveProtocolCC.d.ts.map +1 -1
  509. package/build/esm/cc/ZWaveProtocolCC.js +1 -1
  510. package/build/esm/cc/ZWaveProtocolCC.js.map +1 -1
  511. package/build/esm/cc/_CCValues.generated.d.ts +124 -0
  512. package/build/esm/cc/_CCValues.generated.d.ts.map +1 -1
  513. package/build/esm/cc/_CCValues.generated.js +75 -4
  514. package/build/esm/cc/_CCValues.generated.js.map +1 -1
  515. package/build/esm/cc/index.d.ts +2 -0
  516. package/build/esm/cc/index.d.ts.map +1 -1
  517. package/build/esm/cc/index.js +1 -0
  518. package/build/esm/cc/index.js.map +1 -1
  519. package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts +3 -3
  520. package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts.map +1 -1
  521. package/build/esm/cc/manufacturerProprietary/FibaroCC.js +1 -1
  522. package/build/esm/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
  523. package/build/esm/lib/API.d.ts +5 -3
  524. package/build/esm/lib/API.d.ts.map +1 -1
  525. package/build/esm/lib/API.js.map +1 -1
  526. package/build/esm/lib/CommandClass.d.ts +5 -6
  527. package/build/esm/lib/CommandClass.d.ts.map +1 -1
  528. package/build/esm/lib/CommandClass.js +2 -2
  529. package/build/esm/lib/CommandClass.js.map +1 -1
  530. package/build/esm/lib/CommandClassDecorators.d.ts +2 -2
  531. package/build/esm/lib/CommandClassDecorators.d.ts.map +1 -1
  532. package/build/esm/lib/CommandClassDecorators.js +1 -1
  533. package/build/esm/lib/CommandClassDecorators.js.map +1 -1
  534. package/build/esm/lib/Security2/Extension.d.ts +2 -2
  535. package/build/esm/lib/Security2/Extension.d.ts.map +1 -1
  536. package/build/esm/lib/Security2/Extension.js +2 -2
  537. package/build/esm/lib/Security2/Extension.js.map +1 -1
  538. package/build/esm/lib/SetValueResult.d.ts +1 -1
  539. package/build/esm/lib/SetValueResult.d.ts.map +1 -1
  540. package/build/esm/lib/Values.d.ts +3 -3
  541. package/build/esm/lib/Values.d.ts.map +1 -1
  542. package/build/esm/lib/Values.js +1 -1
  543. package/build/esm/lib/Values.js.map +1 -1
  544. package/build/esm/lib/_Types.d.ts +6 -2
  545. package/build/esm/lib/_Types.d.ts.map +1 -1
  546. package/build/esm/lib/_Types.js +6 -1
  547. package/build/esm/lib/_Types.js.map +1 -1
  548. package/build/esm/lib/serializers.d.ts +1 -1
  549. package/build/esm/lib/serializers.d.ts.map +1 -1
  550. package/build/esm/lib/serializers.js +1 -1
  551. package/build/esm/lib/serializers.js.map +1 -1
  552. package/build/esm/lib/traits.d.ts +2 -2
  553. package/build/esm/lib/traits.d.ts.map +1 -1
  554. package/build/esm/lib/utils.d.ts +2 -2
  555. package/build/esm/lib/utils.d.ts.map +1 -1
  556. package/build/esm/lib/utils.js +2 -2
  557. package/build/esm/lib/utils.js.map +1 -1
  558. package/package.json +6 -6
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cc/AssociationCC.ts"],
4
- "sourcesContent": ["import { type CCEncodingContext, type CCParsingContext } from \"@zwave-js/cc\";\nimport { type GetDeviceConfig } from \"@zwave-js/config\";\nimport type {\n\tEndpointId,\n\tGetValueDB,\n\tMaybeNotKnown,\n\tMessageRecord,\n\tSupervisionResult,\n\tWithAddress,\n} from \"@zwave-js/core/safe\";\nimport {\n\tCommandClasses,\n\tMAX_NODES,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { distinct } from \"alcalzone-shared/arrays\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype RefreshValuesContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { type AssociationAddress, AssociationCommand } from \"../lib/_Types.js\";\nimport * as ccUtils from \"../lib/utils.js\";\n\nexport const AssociationCCValues = V.defineCCValues(\n\tCommandClasses.Association,\n\t{\n\t\t...V.staticProperty(\"hasLifeline\", undefined, { internal: true }),\n\t\t...V.staticProperty(\"groupCount\", undefined, { internal: true }),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"maxNodes\",\n\t\t\t\"maxNodes\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"maxNodes\" && 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\"nodeIds\",\n\t\t\t\"nodeIds\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"nodeIds\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t},\n);\n\n// @noSetValueAPI\n\n@API(CommandClasses.Association)\nexport class AssociationCCAPI extends PhysicalCCAPI {\n\tpublic supportsCommand(cmd: AssociationCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase AssociationCommand.Get:\n\t\t\tcase AssociationCommand.Set:\n\t\t\tcase AssociationCommand.Report:\n\t\t\tcase AssociationCommand.Remove:\n\t\t\tcase AssociationCommand.SupportedGroupingsGet:\n\t\t\tcase AssociationCommand.SupportedGroupingsReport:\n\t\t\t\treturn true;\n\t\t\tcase AssociationCommand.SpecificGroupGet:\n\t\t\tcase AssociationCommand.SpecificGroupReport:\n\t\t\t\treturn this.version >= 2;\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\t/**\n\t * Returns the number of association groups a node supports.\n\t * Association groups are consecutive, starting at 1.\n\t */\n\tpublic async getGroupCount(): Promise<MaybeNotKnown<number>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.SupportedGroupingsGet,\n\t\t);\n\n\t\tconst cc = new AssociationCCSupportedGroupingsGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tAssociationCCSupportedGroupingsReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) return response.groupCount;\n\t}\n\n\t@validateArgs()\n\tpublic async reportGroupCount(groupCount: number): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.SupportedGroupingsReport,\n\t\t);\n\n\t\tconst cc = new AssociationCCSupportedGroupingsReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupCount,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Returns information about an association group.\n\t */\n\t@validateArgs()\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getGroup(groupId: number) {\n\t\tthis.assertSupportsCommand(AssociationCommand, AssociationCommand.Get);\n\n\t\tconst cc = new AssociationCCGet({\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<AssociationCCReport>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn {\n\t\t\t\tmaxNodes: response.maxNodes,\n\t\t\t\tnodeIds: response.nodeIds,\n\t\t\t};\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async sendReport(\n\t\toptions: AssociationCCReportOptions,\n\t): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.Report,\n\t\t);\n\n\t\tconst cc = new AssociationCCReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...options,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Adds new nodes to an association group\n\t */\n\t@validateArgs()\n\tpublic async addNodeIds(\n\t\tgroupId: number,\n\t\t...nodeIds: number[]\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(AssociationCommand, AssociationCommand.Set);\n\n\t\tconst cc = new AssociationCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t\tnodeIds,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Removes nodes from an association group\n\t */\n\t@validateArgs()\n\tpublic async removeNodeIds(\n\t\toptions: AssociationCCRemoveOptions,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.Remove,\n\t\t);\n\n\t\t// Validate options\n\t\tif (!options.groupId) {\n\t\t\tif (this.version === 1) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`Node ${this.endpoint.nodeId} only supports AssociationCC V1 which requires the group Id to be set`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (options.groupId < 0) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must be positive!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tconst cc = new AssociationCCRemove({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...options,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Removes nodes from all association groups\n\t */\n\t@validateArgs()\n\tpublic async removeNodeIdsFromAllGroups(\n\t\tnodeIds: number[],\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.Remove,\n\t\t);\n\n\t\tif (this.version >= 2) {\n\t\t\t// The node supports bulk removal\n\t\t\treturn this.removeNodeIds({ nodeIds, groupId: 0 });\n\t\t} else {\n\t\t\t// We have to remove the node manually from all groups\n\t\t\tconst groupCount = this.tryGetValueDB()?.getValue<number>(\n\t\t\t\tAssociationCCValues.groupCount.endpoint(\n\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t),\n\t\t\t) ?? 0;\n\t\t\tfor (let groupId = 1; groupId <= groupCount; groupId++) {\n\t\t\t\t// TODO: evaluate intermediate supervision results\n\t\t\t\tawait this.removeNodeIds({ nodeIds, groupId });\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Request the association group that represents the most recently detected button press\n\t */\n\t@validateArgs()\n\tpublic async getSpecificGroup(): Promise<number | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.SpecificGroupGet,\n\t\t);\n\n\t\tconst cc = new AssociationCCSpecificGroupGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tAssociationCCSpecificGroupReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.group;\n\t}\n\n\t/**\n\t * Report the association group that represents the most recently detected button press\n\t */\n\t@validateArgs()\n\tpublic async reportSpecificGroup(\n\t\tgroup: number,\n\t): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.SpecificGroupReport,\n\t\t);\n\n\t\tconst cc = new AssociationCCSpecificGroupReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroup,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n}\n\n@commandClass(CommandClasses.Association)\n@implementedVersion(4)\n@ccValues(AssociationCCValues)\nexport class AssociationCC extends CommandClass {\n\tdeclare ccCommand: AssociationCommand;\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[\"Z-Wave Plus Info\"],\n\t\t\t// We need information about endpoints to correctly configure the lifeline associations\n\t\t\tCommandClasses[\"Multi Channel\"],\n\t\t];\n\t}\n\n\t/**\n\t * Returns the number of association groups reported by the node/endpoint.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getGroupCountCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): number {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tAssociationCCValues.groupCount.endpoint(endpoint.index),\n\t\t\t) || 0;\n\t}\n\n\t/**\n\t * Returns the number of nodes an association group supports.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getMaxNodesCached(\n\t\tctx: GetValueDB & GetDeviceConfig,\n\t\tendpoint: EndpointId,\n\t\tgroupId: number,\n\t): number {\n\t\treturn (\n\t\t\tctx\n\t\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t\t.getValue(\n\t\t\t\t\tAssociationCCValues.maxNodes(groupId).endpoint(\n\t\t\t\t\t\tendpoint.index,\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t// If the information is not available, fall back to the configuration file if possible\n\t\t\t\t// This can happen on some legacy devices which have \"hidden\" association groups\n\t\t\t\t?? ctx\n\t\t\t\t\t.getDeviceConfig?.(endpoint.nodeId)\n\t\t\t\t\t?.getAssociationConfigForEndpoint(endpoint.index, groupId)\n\t\t\t\t\t?.maxNodes\n\t\t\t\t?? 0\n\t\t);\n\t}\n\n\t/**\n\t * Returns all the destinations of all association groups reported by the node/endpoint.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getAllDestinationsCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): ReadonlyMap<number, readonly AssociationAddress[]> {\n\t\tconst ret = new Map<number, AssociationAddress[]>();\n\t\tconst groupCount = this.getGroupCountCached(ctx, endpoint);\n\t\tconst valueDB = ctx.getValueDB(endpoint.nodeId);\n\t\tfor (let i = 1; i <= groupCount; i++) {\n\t\t\t// Add all root destinations\n\t\t\tconst nodes = valueDB.getValue<number[]>(\n\t\t\t\tAssociationCCValues.nodeIds(i).endpoint(endpoint.index),\n\t\t\t) ?? [];\n\n\t\t\tret.set(\n\t\t\t\ti,\n\t\t\t\t// Filter out duplicates\n\t\t\t\tdistinct(nodes).map((nodeId) => ({ nodeId })),\n\t\t\t);\n\t\t}\n\t\treturn ret;\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,\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\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\t// Even if Multi Channel Association is supported, we still need to query the number of\n\t\t// normal association groups since some devices report more association groups than\n\t\t// multi channel association groups\n\n\t\t// Find out how many groups are supported\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: \"querying number of association groups...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst groupCount = await api.getGroupCount();\n\t\tif (groupCount != undefined) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `supports ${groupCount} association groups`,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t} else {\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\"Querying association groups timed out, skipping interview...\",\n\t\t\t\tlevel: \"warn\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\t// Query each association group for its members\n\t\tawait this.refreshValues(ctx);\n\n\t\t// Skip the remaining Association CC interview in favor of Multi Channel Association if possible\n\t\tif (endpoint.supportsCC(CommandClasses[\"Multi Channel Association\"])) {\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`${this.constructor.name}: delaying configuration of lifeline associations until after Multi Channel Association interview...`,\n\t\t\t\tdirection: \"none\",\n\t\t\t});\n\t\t\tthis.setInterviewComplete(ctx, true);\n\t\t\treturn;\n\t\t}\n\n\t\t// And set up lifeline associations\n\t\tawait ccUtils.configureLifelineAssociations(ctx, endpoint);\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,\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tconst groupCount = AssociationCC.getGroupCountCached(\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t);\n\n\t\t// Query each association group\n\t\tfor (let groupId = 1; groupId <= groupCount; groupId++) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `querying association group #${groupId}...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst group = await api.getGroup(groupId);\n\t\t\tif (group != undefined) {\n\t\t\t\tconst logMessage =\n\t\t\t\t\t`received information for association group #${groupId}:\nmaximum # of nodes: ${group.maxNodes}\ncurrently assigned nodes: ${group.nodeIds.map(String).join(\", \")}`;\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 AssociationCCSetOptions {\n\tgroupId: number;\n\tnodeIds: number[];\n}\n\n@CCCommand(AssociationCommand.Set)\n@useSupervision()\nexport class AssociationCCSet extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.groupId < 1) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must be positive!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tif (options.nodeIds.some((n) => n < 1 || n > MAX_NODES)) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`All node IDs must be between 1 and ${MAX_NODES}!`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.groupId = options.groupId;\n\t\tthis.nodeIds = options.nodeIds;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCSet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst groupId = raw.payload[0];\n\t\tconst nodeIds = [...raw.payload.subarray(1)];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tnodeIds,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\tpublic nodeIds: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupId, ...this.nodeIds]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"group id\": this.groupId || \"all groups\",\n\t\t\t\"node ids\": this.nodeIds.length\n\t\t\t\t? this.nodeIds.join(\", \")\n\t\t\t\t: \"all nodes\",\n\t\t};\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 AssociationCCRemoveOptions {\n\t/** The group from which to remove the nodes. If none is specified, the nodes will be removed from all nodes. */\n\tgroupId?: number;\n\t/** The nodes to remove. If none are specified, ALL nodes will be removed. */\n\tnodeIds?: number[];\n}\n\n@CCCommand(AssociationCommand.Remove)\n@useSupervision()\nexport class AssociationCCRemove extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCRemoveOptions>,\n\t) {\n\t\tsuper(options);\n\t\t// When removing associations, we allow invalid node IDs.\n\t\t// See GH#3606 - it is possible that those exist.\n\t\tthis.groupId = options.groupId;\n\t\tthis.nodeIds = options.nodeIds;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCRemove {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\n\t\tlet groupId: number | undefined;\n\t\tif (raw.payload[0] !== 0) {\n\t\t\tgroupId = raw.payload[0];\n\t\t}\n\t\tconst nodeIds = [...raw.payload.subarray(1)];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tnodeIds,\n\t\t});\n\t}\n\n\tpublic groupId?: number;\n\tpublic nodeIds?: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.groupId || 0,\n\t\t\t...(this.nodeIds || []),\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\t\t\"group id\": this.groupId || \"all groups\",\n\t\t\t\"node ids\": this.nodeIds && this.nodeIds.length\n\t\t\t\t? this.nodeIds.join(\", \")\n\t\t\t\t: \"all nodes\",\n\t\t};\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 AssociationCCReportOptions {\n\tgroupId: number;\n\tmaxNodes: number;\n\tnodeIds: number[];\n\treportsToFollow: number;\n}\n\n@CCCommand(AssociationCommand.Report)\n@ccValueProperty(\n\t\"maxNodes\",\n\tAssociationCCValues.maxNodes,\n\t(self) => [self.groupId],\n)\n@ccValueProperty(\n\t\"nodeIds\",\n\tAssociationCCValues.nodeIds,\n\t(self) => [self.groupId],\n)\nexport class AssociationCCReport extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.groupId = options.groupId;\n\t\tthis.maxNodes = options.maxNodes;\n\t\tthis.nodeIds = options.nodeIds;\n\t\tthis.reportsToFollow = options.reportsToFollow;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCReport {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst groupId = raw.payload[0];\n\t\tconst maxNodes = raw.payload[1];\n\t\tconst reportsToFollow = raw.payload[2];\n\t\tconst nodeIds = [...raw.payload.subarray(3)];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tmaxNodes,\n\t\t\treportsToFollow,\n\t\t\tnodeIds,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\n\tpublic maxNodes: number;\n\n\tpublic nodeIds: number[];\n\n\tpublic reportsToFollow: number;\n\n\tpublic getPartialCCSessionId(): Record<string, any> | undefined {\n\t\t// Distinguish sessions by the association group ID\n\t\treturn { groupId: this.groupId };\n\t}\n\n\tpublic expectMoreMessages(): boolean {\n\t\treturn this.reportsToFollow > 0;\n\t}\n\n\tpublic mergePartialCCs(\n\t\tpartials: AssociationCCReport[],\n\t\t_ctx: CCParsingContext,\n\t): Promise<void> {\n\t\t// Concat the list of nodes\n\t\tthis.nodeIds = [...partials, this]\n\t\t\t.map((report) => report.nodeIds)\n\t\t\t.reduce((prev, cur) => prev.concat(...cur), []);\n\t\treturn Promise.resolve();\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.groupId,\n\t\t\tthis.maxNodes,\n\t\t\tthis.reportsToFollow,\n\t\t\t...this.nodeIds,\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\"max # of nodes\": this.maxNodes,\n\t\t\t\t\"node IDs\": this.nodeIds.join(\", \"),\n\t\t\t\t\"reports to follow\": this.reportsToFollow,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface AssociationCCGetOptions {\n\tgroupId: number;\n}\n\n@CCCommand(AssociationCommand.Get)\n@expectedCCResponse(AssociationCCReport)\nexport class AssociationCCGet extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.groupId < 1) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must be positive!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.groupId = options.groupId;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCGet {\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\n// @publicAPI\nexport interface AssociationCCSupportedGroupingsReportOptions {\n\tgroupCount: number;\n}\n\n@CCCommand(AssociationCommand.SupportedGroupingsReport)\n@ccValueProperty(\"groupCount\", AssociationCCValues.groupCount)\nexport class AssociationCCSupportedGroupingsReport extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCSupportedGroupingsReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.groupCount = options.groupCount;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationCCSupportedGroupingsReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst groupCount = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupCount,\n\t\t});\n\t}\n\n\tpublic groupCount: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupCount]);\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 count\": this.groupCount },\n\t\t};\n\t}\n}\n\n@CCCommand(AssociationCommand.SupportedGroupingsGet)\n@expectedCCResponse(AssociationCCSupportedGroupingsReport)\nexport class AssociationCCSupportedGroupingsGet extends AssociationCC {}\n\n// @publicAPI\nexport interface AssociationCCSpecificGroupReportOptions {\n\tgroup: number;\n}\n\n@CCCommand(AssociationCommand.SpecificGroupReport)\nexport class AssociationCCSpecificGroupReport extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCSpecificGroupReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.group = options.group;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationCCSpecificGroupReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst group = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroup,\n\t\t});\n\t}\n\n\tpublic group: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.group]);\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: this.group },\n\t\t};\n\t}\n}\n\n@CCCommand(AssociationCommand.SpecificGroupGet)\n@expectedCCResponse(AssociationCCSpecificGroupReport)\nexport class AssociationCCSpecificGroupGet extends AssociationCC {}\n"],
5
- "mappings": "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",
6
- "names": ["import_safe", "AssociationCC"]
4
+ "sourcesContent": ["import type { CCEncodingContext, CCParsingContext } from \"@zwave-js/cc\";\nimport type { GetDeviceConfig } from \"@zwave-js/config\";\nimport {\n\tCommandClasses,\n\ttype EndpointId,\n\ttype GetValueDB,\n\tMAX_NODES,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype MessageRecord,\n\ttype SupervisionResult,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tvalidatePayload,\n} from \"@zwave-js/core\";\nimport { Bytes } from \"@zwave-js/shared\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { distinct } from \"alcalzone-shared/arrays\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype RefreshValuesContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport { type AssociationAddress, AssociationCommand } from \"../lib/_Types.js\";\nimport * as ccUtils from \"../lib/utils.js\";\n\nexport const AssociationCCValues = V.defineCCValues(\n\tCommandClasses.Association,\n\t{\n\t\t...V.staticProperty(\"hasLifeline\", undefined, { internal: true }),\n\t\t...V.staticProperty(\"groupCount\", undefined, { internal: true }),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"maxNodes\",\n\t\t\t\"maxNodes\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"maxNodes\" && 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\"nodeIds\",\n\t\t\t\"nodeIds\",\n\t\t\t(groupId: number) => groupId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"nodeIds\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t},\n);\n\n// @noSetValueAPI\n\n@API(CommandClasses.Association)\nexport class AssociationCCAPI extends PhysicalCCAPI {\n\tpublic supportsCommand(cmd: AssociationCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase AssociationCommand.Get:\n\t\t\tcase AssociationCommand.Set:\n\t\t\tcase AssociationCommand.Report:\n\t\t\tcase AssociationCommand.Remove:\n\t\t\tcase AssociationCommand.SupportedGroupingsGet:\n\t\t\tcase AssociationCommand.SupportedGroupingsReport:\n\t\t\t\treturn true;\n\t\t\tcase AssociationCommand.SpecificGroupGet:\n\t\t\tcase AssociationCommand.SpecificGroupReport:\n\t\t\t\treturn this.version >= 2;\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\t/**\n\t * Returns the number of association groups a node supports.\n\t * Association groups are consecutive, starting at 1.\n\t */\n\tpublic async getGroupCount(): Promise<MaybeNotKnown<number>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.SupportedGroupingsGet,\n\t\t);\n\n\t\tconst cc = new AssociationCCSupportedGroupingsGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tAssociationCCSupportedGroupingsReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) return response.groupCount;\n\t}\n\n\t@validateArgs()\n\tpublic async reportGroupCount(groupCount: number): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.SupportedGroupingsReport,\n\t\t);\n\n\t\tconst cc = new AssociationCCSupportedGroupingsReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupCount,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Returns information about an association group.\n\t */\n\t@validateArgs()\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getGroup(groupId: number) {\n\t\tthis.assertSupportsCommand(AssociationCommand, AssociationCommand.Get);\n\n\t\tconst cc = new AssociationCCGet({\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<AssociationCCReport>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn {\n\t\t\t\tmaxNodes: response.maxNodes,\n\t\t\t\tnodeIds: response.nodeIds,\n\t\t\t};\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async sendReport(\n\t\toptions: AssociationCCReportOptions,\n\t): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.Report,\n\t\t);\n\n\t\tconst cc = new AssociationCCReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...options,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Adds new nodes to an association group\n\t */\n\t@validateArgs()\n\tpublic async addNodeIds(\n\t\tgroupId: number,\n\t\t...nodeIds: number[]\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(AssociationCommand, AssociationCommand.Set);\n\n\t\tconst cc = new AssociationCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroupId,\n\t\t\tnodeIds,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Removes nodes from an association group\n\t */\n\t@validateArgs()\n\tpublic async removeNodeIds(\n\t\toptions: AssociationCCRemoveOptions,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.Remove,\n\t\t);\n\n\t\t// Validate options\n\t\tif (!options.groupId) {\n\t\t\tif (this.version === 1) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`Node ${this.endpoint.nodeId} only supports AssociationCC V1 which requires the group Id to be set`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t} else if (options.groupId < 0) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must be positive!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tconst cc = new AssociationCCRemove({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...options,\n\t\t});\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t/**\n\t * Removes nodes from all association groups\n\t */\n\t@validateArgs()\n\tpublic async removeNodeIdsFromAllGroups(\n\t\tnodeIds: number[],\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.Remove,\n\t\t);\n\n\t\tif (this.version >= 2) {\n\t\t\t// The node supports bulk removal\n\t\t\treturn this.removeNodeIds({ nodeIds, groupId: 0 });\n\t\t} else {\n\t\t\t// We have to remove the node manually from all groups\n\t\t\tconst groupCount = this.tryGetValueDB()?.getValue<number>(\n\t\t\t\tAssociationCCValues.groupCount.endpoint(\n\t\t\t\t\tthis.endpoint.index,\n\t\t\t\t),\n\t\t\t) ?? 0;\n\t\t\tfor (let groupId = 1; groupId <= groupCount; groupId++) {\n\t\t\t\t// TODO: evaluate intermediate supervision results\n\t\t\t\tawait this.removeNodeIds({ nodeIds, groupId });\n\t\t\t}\n\t\t}\n\t}\n\n\t/**\n\t * Request the association group that represents the most recently detected button press\n\t */\n\t@validateArgs()\n\tpublic async getSpecificGroup(): Promise<number | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.SpecificGroupGet,\n\t\t);\n\n\t\tconst cc = new AssociationCCSpecificGroupGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst response = await this.host.sendCommand<\n\t\t\tAssociationCCSpecificGroupReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\treturn response?.group;\n\t}\n\n\t/**\n\t * Report the association group that represents the most recently detected button press\n\t */\n\t@validateArgs()\n\tpublic async reportSpecificGroup(\n\t\tgroup: number,\n\t): Promise<void> {\n\t\tthis.assertSupportsCommand(\n\t\t\tAssociationCommand,\n\t\t\tAssociationCommand.SpecificGroupReport,\n\t\t);\n\n\t\tconst cc = new AssociationCCSpecificGroupReport({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tgroup,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n}\n\n@commandClass(CommandClasses.Association)\n@implementedVersion(4)\n@ccValues(AssociationCCValues)\nexport class AssociationCC extends CommandClass {\n\tdeclare ccCommand: AssociationCommand;\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[\"Z-Wave Plus Info\"],\n\t\t\t// We need information about endpoints to correctly configure the lifeline associations\n\t\t\tCommandClasses[\"Multi Channel\"],\n\t\t];\n\t}\n\n\t/**\n\t * Returns the number of association groups reported by the node/endpoint.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getGroupCountCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): number {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tAssociationCCValues.groupCount.endpoint(endpoint.index),\n\t\t\t) || 0;\n\t}\n\n\t/**\n\t * Returns the number of nodes an association group supports.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getMaxNodesCached(\n\t\tctx: GetValueDB & GetDeviceConfig,\n\t\tendpoint: EndpointId,\n\t\tgroupId: number,\n\t): number {\n\t\treturn (\n\t\t\tctx\n\t\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t\t.getValue(\n\t\t\t\t\tAssociationCCValues.maxNodes(groupId).endpoint(\n\t\t\t\t\t\tendpoint.index,\n\t\t\t\t\t),\n\t\t\t\t)\n\t\t\t\t// If the information is not available, fall back to the configuration file if possible\n\t\t\t\t// This can happen on some legacy devices which have \"hidden\" association groups\n\t\t\t\t?? ctx\n\t\t\t\t\t.getDeviceConfig?.(endpoint.nodeId)\n\t\t\t\t\t?.getAssociationConfigForEndpoint(endpoint.index, groupId)\n\t\t\t\t\t?.maxNodes\n\t\t\t\t?? 0\n\t\t);\n\t}\n\n\t/**\n\t * Returns all the destinations of all association groups reported by the node/endpoint.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getAllDestinationsCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): ReadonlyMap<number, readonly AssociationAddress[]> {\n\t\tconst ret = new Map<number, AssociationAddress[]>();\n\t\tconst groupCount = this.getGroupCountCached(ctx, endpoint);\n\t\tconst valueDB = ctx.getValueDB(endpoint.nodeId);\n\t\tfor (let i = 1; i <= groupCount; i++) {\n\t\t\t// Add all root destinations\n\t\t\tconst nodes = valueDB.getValue<number[]>(\n\t\t\t\tAssociationCCValues.nodeIds(i).endpoint(endpoint.index),\n\t\t\t) ?? [];\n\n\t\t\tret.set(\n\t\t\t\ti,\n\t\t\t\t// Filter out duplicates\n\t\t\t\tdistinct(nodes).map((nodeId) => ({ nodeId })),\n\t\t\t);\n\t\t}\n\t\treturn ret;\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,\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\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\t// Even if Multi Channel Association is supported, we still need to query the number of\n\t\t// normal association groups since some devices report more association groups than\n\t\t// multi channel association groups\n\n\t\t// Find out how many groups are supported\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: \"querying number of association groups...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst groupCount = await api.getGroupCount();\n\t\tif (groupCount != undefined) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `supports ${groupCount} association groups`,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t} else {\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\"Querying association groups timed out, skipping interview...\",\n\t\t\t\tlevel: \"warn\",\n\t\t\t});\n\t\t\treturn;\n\t\t}\n\n\t\t// Query each association group for its members\n\t\tawait this.refreshValues(ctx);\n\n\t\t// Skip the remaining Association CC interview in favor of Multi Channel Association if possible\n\t\tif (endpoint.supportsCC(CommandClasses[\"Multi Channel Association\"])) {\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`${this.constructor.name}: delaying configuration of lifeline associations until after Multi Channel Association interview...`,\n\t\t\t\tdirection: \"none\",\n\t\t\t});\n\t\t\tthis.setInterviewComplete(ctx, true);\n\t\t\treturn;\n\t\t}\n\n\t\t// And set up lifeline associations\n\t\tawait ccUtils.configureLifelineAssociations(ctx, endpoint);\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,\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t).withOptions({\n\t\t\tpriority: MessagePriority.NodeQuery,\n\t\t});\n\n\t\tconst groupCount = AssociationCC.getGroupCountCached(\n\t\t\tctx,\n\t\t\tendpoint,\n\t\t);\n\n\t\t// Query each association group\n\t\tfor (let groupId = 1; groupId <= groupCount; groupId++) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: `querying association group #${groupId}...`,\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\tconst group = await api.getGroup(groupId);\n\t\t\tif (group != undefined) {\n\t\t\t\tconst logMessage =\n\t\t\t\t\t`received information for association group #${groupId}:\nmaximum # of nodes: ${group.maxNodes}\ncurrently assigned nodes: ${group.nodeIds.map(String).join(\", \")}`;\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 AssociationCCSetOptions {\n\tgroupId: number;\n\tnodeIds: number[];\n}\n\n@CCCommand(AssociationCommand.Set)\n@useSupervision()\nexport class AssociationCCSet extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.groupId < 1) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must be positive!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tif (options.nodeIds.some((n) => n < 1 || n > MAX_NODES)) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`All node IDs must be between 1 and ${MAX_NODES}!`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.groupId = options.groupId;\n\t\tthis.nodeIds = options.nodeIds;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCSet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst groupId = raw.payload[0];\n\t\tconst nodeIds = [...raw.payload.subarray(1)];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tnodeIds,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\tpublic nodeIds: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupId, ...this.nodeIds]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {\n\t\t\t\"group id\": this.groupId || \"all groups\",\n\t\t\t\"node ids\": this.nodeIds.length\n\t\t\t\t? this.nodeIds.join(\", \")\n\t\t\t\t: \"all nodes\",\n\t\t};\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 AssociationCCRemoveOptions {\n\t/** The group from which to remove the nodes. If none is specified, the nodes will be removed from all nodes. */\n\tgroupId?: number;\n\t/** The nodes to remove. If none are specified, ALL nodes will be removed. */\n\tnodeIds?: number[];\n}\n\n@CCCommand(AssociationCommand.Remove)\n@useSupervision()\nexport class AssociationCCRemove extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCRemoveOptions>,\n\t) {\n\t\tsuper(options);\n\t\t// When removing associations, we allow invalid node IDs.\n\t\t// See GH#3606 - it is possible that those exist.\n\t\tthis.groupId = options.groupId;\n\t\tthis.nodeIds = options.nodeIds;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCRemove {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\n\t\tlet groupId: number | undefined;\n\t\tif (raw.payload[0] !== 0) {\n\t\t\tgroupId = raw.payload[0];\n\t\t}\n\t\tconst nodeIds = [...raw.payload.subarray(1)];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tnodeIds,\n\t\t});\n\t}\n\n\tpublic groupId?: number;\n\tpublic nodeIds?: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.groupId || 0,\n\t\t\t...(this.nodeIds || []),\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\t\t\"group id\": this.groupId || \"all groups\",\n\t\t\t\"node ids\": this.nodeIds && this.nodeIds.length\n\t\t\t\t? this.nodeIds.join(\", \")\n\t\t\t\t: \"all nodes\",\n\t\t};\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 AssociationCCReportOptions {\n\tgroupId: number;\n\tmaxNodes: number;\n\tnodeIds: number[];\n\treportsToFollow: number;\n}\n\n@CCCommand(AssociationCommand.Report)\n@ccValueProperty(\n\t\"maxNodes\",\n\tAssociationCCValues.maxNodes,\n\t(self) => [self.groupId],\n)\n@ccValueProperty(\n\t\"nodeIds\",\n\tAssociationCCValues.nodeIds,\n\t(self) => [self.groupId],\n)\nexport class AssociationCCReport extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.groupId = options.groupId;\n\t\tthis.maxNodes = options.maxNodes;\n\t\tthis.nodeIds = options.nodeIds;\n\t\tthis.reportsToFollow = options.reportsToFollow;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCReport {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst groupId = raw.payload[0];\n\t\tconst maxNodes = raw.payload[1];\n\t\tconst reportsToFollow = raw.payload[2];\n\t\tconst nodeIds = [...raw.payload.subarray(3)];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupId,\n\t\t\tmaxNodes,\n\t\t\treportsToFollow,\n\t\t\tnodeIds,\n\t\t});\n\t}\n\n\tpublic groupId: number;\n\n\tpublic maxNodes: number;\n\n\tpublic nodeIds: number[];\n\n\tpublic reportsToFollow: number;\n\n\tpublic getPartialCCSessionId(): Record<string, any> | undefined {\n\t\t// Distinguish sessions by the association group ID\n\t\treturn { groupId: this.groupId };\n\t}\n\n\tpublic expectMoreMessages(): boolean {\n\t\treturn this.reportsToFollow > 0;\n\t}\n\n\tpublic mergePartialCCs(\n\t\tpartials: AssociationCCReport[],\n\t\t_ctx: CCParsingContext,\n\t): Promise<void> {\n\t\t// Concat the list of nodes\n\t\tthis.nodeIds = [...partials, this]\n\t\t\t.map((report) => report.nodeIds)\n\t\t\t.reduce((prev, cur) => prev.concat(...cur), []);\n\t\treturn Promise.resolve();\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.groupId,\n\t\t\tthis.maxNodes,\n\t\t\tthis.reportsToFollow,\n\t\t\t...this.nodeIds,\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\"max # of nodes\": this.maxNodes,\n\t\t\t\t\"node IDs\": this.nodeIds.join(\", \"),\n\t\t\t\t\"reports to follow\": this.reportsToFollow,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface AssociationCCGetOptions {\n\tgroupId: number;\n}\n\n@CCCommand(AssociationCommand.Get)\n@expectedCCResponse(AssociationCCReport)\nexport class AssociationCCGet extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.groupId < 1) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"The group id must be positive!\",\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.groupId = options.groupId;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): AssociationCCGet {\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\n// @publicAPI\nexport interface AssociationCCSupportedGroupingsReportOptions {\n\tgroupCount: number;\n}\n\n@CCCommand(AssociationCommand.SupportedGroupingsReport)\n@ccValueProperty(\"groupCount\", AssociationCCValues.groupCount)\nexport class AssociationCCSupportedGroupingsReport extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCSupportedGroupingsReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.groupCount = options.groupCount;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationCCSupportedGroupingsReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst groupCount = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroupCount,\n\t\t});\n\t}\n\n\tpublic groupCount: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.groupCount]);\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 count\": this.groupCount },\n\t\t};\n\t}\n}\n\n@CCCommand(AssociationCommand.SupportedGroupingsGet)\n@expectedCCResponse(AssociationCCSupportedGroupingsReport)\nexport class AssociationCCSupportedGroupingsGet extends AssociationCC {}\n\n// @publicAPI\nexport interface AssociationCCSpecificGroupReportOptions {\n\tgroup: number;\n}\n\n@CCCommand(AssociationCommand.SpecificGroupReport)\nexport class AssociationCCSpecificGroupReport extends AssociationCC {\n\tpublic constructor(\n\t\toptions: WithAddress<AssociationCCSpecificGroupReportOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.group = options.group;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): AssociationCCSpecificGroupReport {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst group = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgroup,\n\t\t});\n\t}\n\n\tpublic group: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.group]);\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: this.group },\n\t\t};\n\t}\n}\n\n@CCCommand(AssociationCommand.SpecificGroupGet)\n@expectedCCResponse(AssociationCCSpecificGroupReport)\nexport class AssociationCCSpecificGroupGet extends AssociationCC {}\n"],
5
+ "mappings": "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",
6
+ "names": ["AssociationCC"]
7
7
  }
@@ -1,6 +1,6 @@
1
- import { type CCEncodingContext, type CCParsingContext } from "@zwave-js/cc";
2
- import { CommandClasses, type EndpointId, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, type SupportsCC, type WithAddress } from "@zwave-js/core/safe";
3
- import { Bytes } from "@zwave-js/shared/safe";
1
+ import type { CCEncodingContext, CCParsingContext } from "@zwave-js/cc";
2
+ import { CommandClasses, type EndpointId, type GetValueDB, type MaybeNotKnown, type MessageOrCCLogEntry, type SupportsCC, type WithAddress } from "@zwave-js/core";
3
+ import { Bytes } from "@zwave-js/shared";
4
4
  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";
@@ -15,7 +15,7 @@ export declare const AssociationGroupInfoCCValues: Readonly<{
15
15
  readonly endpoint: number;
16
16
  readonly property: "hasDynamicInfo";
17
17
  };
18
- is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
18
+ is: (valueId: import("@zwave-js/core").ValueID) => boolean;
19
19
  readonly meta: Readonly<{
20
20
  readonly type: "any";
21
21
  readonly readable: true;
@@ -48,7 +48,7 @@ export declare const AssociationGroupInfoCCValues: Readonly<{
48
48
  readonly writeable: true;
49
49
  }>;
50
50
  }) & {
51
- is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
51
+ is: (valueId: import("@zwave-js/core").ValueID) => boolean;
52
52
  options: {
53
53
  readonly internal: true;
54
54
  readonly minVersion: 1;
@@ -76,7 +76,7 @@ export declare const AssociationGroupInfoCCValues: Readonly<{
76
76
  readonly writeable: true;
77
77
  }>;
78
78
  }) & {
79
- is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
79
+ is: (valueId: import("@zwave-js/core").ValueID) => boolean;
80
80
  options: {
81
81
  readonly internal: true;
82
82
  readonly minVersion: 1;
@@ -104,7 +104,7 @@ export declare const AssociationGroupInfoCCValues: Readonly<{
104
104
  readonly writeable: true;
105
105
  }>;
106
106
  }) & {
107
- is: (valueId: import("@zwave-js/core/safe").ValueID) => boolean;
107
+ is: (valueId: import("@zwave-js/core").ValueID) => boolean;
108
108
  options: {
109
109
  readonly internal: true;
110
110
  readonly minVersion: 1;
@@ -41,9 +41,8 @@ __export(AssociationGroupInfoCC_exports, {
41
41
  });
42
42
  module.exports = __toCommonJS(AssociationGroupInfoCC_exports);
43
43
  var __validateArgs = __toESM(require("./AssociationGroupInfoCC._validateArgs.js"), 1);
44
- var import_safe = require("@zwave-js/core/safe");
45
- var import_safe2 = require("@zwave-js/shared/safe");
46
- var import_safe3 = require("@zwave-js/shared/safe");
44
+ var import_core = require("@zwave-js/core");
45
+ var import_shared = require("@zwave-js/shared");
47
46
  var import_API = require("../lib/API.js");
48
47
  var import_CommandClass = require("../lib/CommandClass.js");
49
48
  var import_CommandClassDecorators = require("../lib/CommandClassDecorators.js");
@@ -94,7 +93,7 @@ var __esDecorate = function(ctor, descriptorIn, decorators, contextIn, initializ
94
93
  };
95
94
  const { validateArgs_AssociationGroupInfoCCAPI_getGroupName, validateArgs_AssociationGroupInfoCCAPI_reportGroupName, validateArgs_AssociationGroupInfoCCAPI_getGroupInfo, validateArgs_AssociationGroupInfoCCAPI_reportGroupInfo, validateArgs_AssociationGroupInfoCCAPI_getCommands, validateArgs_AssociationGroupInfoCCAPI_reportCommands } = __validateArgs;
96
95
  let AssociationGroupInfoCCAPI = (() => {
97
- let _classDecorators = [(0, import_CommandClassDecorators.API)(import_safe.CommandClasses["Association Group Information"])];
96
+ let _classDecorators = [(0, import_CommandClassDecorators.API)(import_core.CommandClasses["Association Group Information"])];
98
97
  let _classDescriptor;
99
98
  let _classExtraInitializers = [];
100
99
  let _classThis;
@@ -221,7 +220,7 @@ let AssociationGroupInfoCCAPI = (() => {
221
220
  return AssociationGroupInfoCCAPI2 = _classThis;
222
221
  })();
223
222
  let AssociationGroupInfoCC = (() => {
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)];
223
+ let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_core.CommandClasses["Association Group Information"]), (0, import_CommandClassDecorators.implementedVersion)(3), (0, import_CommandClassDecorators.ccValues)(import_CCValues_generated.AssociationGroupInfoCCValues)];
225
224
  let _classDescriptor;
226
225
  let _classExtraInitializers = [];
227
226
  let _classThis;
@@ -243,8 +242,8 @@ let AssociationGroupInfoCC = (() => {
243
242
  determineRequiredCCInterviews() {
244
243
  return [
245
244
  ...super.determineRequiredCCInterviews(),
246
- import_safe.CommandClasses.Association,
247
- import_safe.CommandClasses["Multi Channel Association"]
245
+ import_core.CommandClasses.Association,
246
+ import_core.CommandClasses["Multi Channel Association"]
248
247
  ];
249
248
  }
250
249
  /** Returns the name of an association group */
@@ -277,13 +276,13 @@ let AssociationGroupInfoCC = (() => {
277
276
  return (
278
277
  // First query the Multi Channel Association CC
279
278
  // And fall back to 0
280
- endpoint.supportsCC(import_safe.CommandClasses["Multi Channel Association"]) && import_MultiChannelAssociationCC.MultiChannelAssociationCC.getGroupCountCached(ctx, endpoint) || endpoint.supportsCC(import_safe.CommandClasses.Association) && import_AssociationCC.AssociationCC.getGroupCountCached(ctx, endpoint) || 0
279
+ endpoint.supportsCC(import_core.CommandClasses["Multi Channel Association"]) && import_MultiChannelAssociationCC.MultiChannelAssociationCC.getGroupCountCached(ctx, endpoint) || endpoint.supportsCC(import_core.CommandClasses.Association) && import_AssociationCC.AssociationCC.getGroupCountCached(ctx, endpoint) || 0
281
280
  );
282
281
  }
283
282
  async interview(ctx) {
284
283
  const node = this.getNode(ctx);
285
284
  const endpoint = this.getEndpoint(ctx);
286
- const api = import_API.CCAPI.create(import_safe.CommandClasses["Association Group Information"], ctx, endpoint).withOptions({ priority: import_safe.MessagePriority.NodeQuery });
285
+ const api = import_API.CCAPI.create(import_core.CommandClasses["Association Group Information"], ctx, endpoint).withOptions({ priority: import_core.MessagePriority.NodeQuery });
287
286
  ctx.logNode(node.id, {
288
287
  endpoint: this.endpointIndex,
289
288
  message: `Interviewing ${this.ccName}...`,
@@ -318,7 +317,7 @@ let AssociationGroupInfoCC = (() => {
318
317
  async refreshValues(ctx) {
319
318
  const node = this.getNode(ctx);
320
319
  const endpoint = this.getEndpoint(ctx);
321
- const api = import_API.CCAPI.create(import_safe.CommandClasses["Association Group Information"], ctx, endpoint).withOptions({ priority: import_safe.MessagePriority.NodeQuery });
320
+ const api = import_API.CCAPI.create(import_core.CommandClasses["Association Group Information"], ctx, endpoint).withOptions({ priority: import_core.MessagePriority.NodeQuery });
322
321
  const associationGroupCount = AssociationGroupInfoCC2.getAssociationGroupCountCached(ctx, endpoint);
323
322
  const hasDynamicInfo = this.getValue(ctx, import_CCValues_generated.AssociationGroupInfoCCValues.hasDynamicInfo);
324
323
  for (let groupId = 1; groupId <= associationGroupCount; groupId++) {
@@ -331,7 +330,7 @@ let AssociationGroupInfoCC = (() => {
331
330
  if (info) {
332
331
  const logMessage = `Received info for association group #${groupId}:
333
332
  info is dynamic: ${info.hasDynamicInfo}
334
- profile: ${(0, import_safe3.getEnumMemberName)(import_Types.AssociationGroupInfoProfile, info.profile)}`;
333
+ profile: ${(0, import_shared.getEnumMemberName)(import_Types.AssociationGroupInfoProfile, info.profile)}`;
335
334
  ctx.logNode(node.id, {
336
335
  endpoint: this.endpointIndex,
337
336
  message: logMessage,
@@ -369,11 +368,11 @@ let AssociationGroupInfoCCNameReport = (() => {
369
368
  this.name = options.name;
370
369
  }
371
370
  static from(raw, ctx) {
372
- (0, import_safe.validatePayload)(raw.payload.length >= 2);
371
+ (0, import_core.validatePayload)(raw.payload.length >= 2);
373
372
  const groupId = raw.payload[0];
374
373
  const nameLength = raw.payload[1];
375
- (0, import_safe.validatePayload)(raw.payload.length >= 2 + nameLength);
376
- const name = (0, import_safe3.cpp2js)(raw.payload.subarray(2, 2 + nameLength).toString("utf8"));
374
+ (0, import_core.validatePayload)(raw.payload.length >= 2 + nameLength);
375
+ const name = (0, import_shared.cpp2js)(raw.payload.subarray(2, 2 + nameLength).toString("utf8"));
377
376
  return new this({
378
377
  nodeId: ctx.sourceNodeId,
379
378
  groupId,
@@ -390,9 +389,9 @@ let AssociationGroupInfoCCNameReport = (() => {
390
389
  return true;
391
390
  }
392
391
  serialize(ctx) {
393
- this.payload = import_safe2.Bytes.concat([
394
- import_safe2.Bytes.from([this.groupId, this.name.length]),
395
- import_safe2.Bytes.from(this.name, "utf8")
392
+ this.payload = import_shared.Bytes.concat([
393
+ import_shared.Bytes.from([this.groupId, this.name.length]),
394
+ import_shared.Bytes.from(this.name, "utf8")
396
395
  ]);
397
396
  return super.serialize(ctx);
398
397
  }
@@ -433,7 +432,7 @@ let AssociationGroupInfoCCNameGet = (() => {
433
432
  this.groupId = options.groupId;
434
433
  }
435
434
  static from(raw, ctx) {
436
- (0, import_safe.validatePayload)(raw.payload.length >= 1);
435
+ (0, import_core.validatePayload)(raw.payload.length >= 1);
437
436
  const groupId = raw.payload[0];
438
437
  return new this({
439
438
  nodeId: ctx.sourceNodeId,
@@ -442,7 +441,7 @@ let AssociationGroupInfoCCNameGet = (() => {
442
441
  }
443
442
  groupId;
444
443
  serialize(ctx) {
445
- this.payload = import_safe2.Bytes.from([this.groupId]);
444
+ this.payload = import_shared.Bytes.from([this.groupId]);
446
445
  return super.serialize(ctx);
447
446
  }
448
447
  toLogEntry(ctx) {
@@ -481,11 +480,11 @@ let AssociationGroupInfoCCInfoReport = (() => {
481
480
  this.groups = options.groups;
482
481
  }
483
482
  static from(raw, ctx) {
484
- (0, import_safe.validatePayload)(raw.payload.length >= 1);
483
+ (0, import_core.validatePayload)(raw.payload.length >= 1);
485
484
  const isListMode = !!(raw.payload[0] & 128);
486
485
  const hasDynamicInfo = !!(raw.payload[0] & 64);
487
486
  const groupCount = raw.payload[0] & 63;
488
- (0, import_safe.validatePayload)(raw.payload.length >= 1 + groupCount * 7);
487
+ (0, import_core.validatePayload)(raw.payload.length >= 1 + groupCount * 7);
489
488
  const groups = [];
490
489
  for (let i = 0; i < groupCount; i++) {
491
490
  const offset = 1 + i * 7;
@@ -520,7 +519,7 @@ let AssociationGroupInfoCCInfoReport = (() => {
520
519
  return true;
521
520
  }
522
521
  serialize(ctx) {
523
- this.payload = import_safe2.Bytes.alloc(1 + this.groups.length * 7, 0);
522
+ this.payload = import_shared.Bytes.alloc(1 + this.groups.length * 7, 0);
524
523
  this.payload[0] = (this.isListMode ? 128 : 0) | (this.hasDynamicInfo ? 64 : 0) | this.groups.length & 63;
525
524
  for (let i = 0; i < this.groups.length; i++) {
526
525
  const offset = 1 + i * 7;
@@ -575,7 +574,7 @@ let AssociationGroupInfoCCInfoGet = (() => {
575
574
  this.groupId = options.groupId;
576
575
  }
577
576
  static from(raw, ctx) {
578
- (0, import_safe.validatePayload)(raw.payload.length >= 2);
577
+ (0, import_core.validatePayload)(raw.payload.length >= 2);
579
578
  const optionByte = raw.payload[0];
580
579
  const refreshCache = !!(optionByte & 128);
581
580
  const listMode = !!(optionByte & 64);
@@ -596,7 +595,7 @@ let AssociationGroupInfoCCInfoGet = (() => {
596
595
  serialize(ctx) {
597
596
  const isListMode = this.listMode === true;
598
597
  const optionByte = (this.refreshCache ? 128 : 0) | (isListMode ? 64 : 0);
599
- this.payload = import_safe2.Bytes.from([
598
+ this.payload = import_shared.Bytes.from([
600
599
  optionByte,
601
600
  isListMode ? 0 : this.groupId
602
601
  ]);
@@ -645,15 +644,15 @@ let AssociationGroupInfoCCCommandListReport = (() => {
645
644
  this.commands = options.commands;
646
645
  }
647
646
  static from(raw, ctx) {
648
- (0, import_safe.validatePayload)(raw.payload.length >= 2);
647
+ (0, import_core.validatePayload)(raw.payload.length >= 2);
649
648
  const groupId = raw.payload[0];
650
649
  const listLength = raw.payload[1];
651
- (0, import_safe.validatePayload)(raw.payload.length >= 2 + listLength);
650
+ (0, import_core.validatePayload)(raw.payload.length >= 2 + listLength);
652
651
  const listBytes = raw.payload.subarray(2, 2 + listLength);
653
652
  let offset = 0;
654
653
  const commands = /* @__PURE__ */ new Map();
655
654
  while (offset < listLength) {
656
- const { ccId, bytesRead } = (0, import_safe.parseCCId)(listBytes, offset);
655
+ const { ccId, bytesRead } = (0, import_core.parseCCId)(listBytes, offset);
657
656
  const command = listBytes[offset + bytesRead];
658
657
  if (!commands.has(ccId))
659
658
  commands.set(ccId, []);
@@ -669,12 +668,12 @@ let AssociationGroupInfoCCCommandListReport = (() => {
669
668
  groupId;
670
669
  commands;
671
670
  serialize(ctx) {
672
- this.payload = new import_safe2.Bytes(2 + this.commands.size * 3);
671
+ this.payload = new import_shared.Bytes(2 + this.commands.size * 3);
673
672
  this.payload[0] = this.groupId;
674
673
  let offset = 2;
675
674
  for (const [ccId, commands] of this.commands) {
676
675
  for (const command of commands) {
677
- offset += (0, import_safe.encodeCCId)(ccId, this.payload, offset);
676
+ offset += (0, import_core.encodeCCId)(ccId, this.payload, offset);
678
677
  this.payload[offset] = command;
679
678
  offset++;
680
679
  }
@@ -689,7 +688,7 @@ let AssociationGroupInfoCCCommandListReport = (() => {
689
688
  "group id": this.groupId,
690
689
  commands: `${[...this.commands].map(([cc, cmds]) => {
691
690
  return `
692
- \xB7 ${(0, import_safe.getCCName)(cc)}: ${cmds.map((cmd) => (0, import_safe3.num2hex)(cmd)).join(", ")}`;
691
+ \xB7 ${(0, import_core.getCCName)(cc)}: ${cmds.map((cmd) => (0, import_shared.num2hex)(cmd)).join(", ")}`;
693
692
  }).join("")}`
694
693
  }
695
694
  };
@@ -723,7 +722,7 @@ let AssociationGroupInfoCCCommandListGet = (() => {
723
722
  this.groupId = options.groupId;
724
723
  }
725
724
  static from(raw, ctx) {
726
- (0, import_safe.validatePayload)(raw.payload.length >= 2);
725
+ (0, import_core.validatePayload)(raw.payload.length >= 2);
727
726
  const allowCache = !!(raw.payload[0] & 128);
728
727
  const groupId = raw.payload[1];
729
728
  return new this({
@@ -735,7 +734,7 @@ let AssociationGroupInfoCCCommandListGet = (() => {
735
734
  allowCache;
736
735
  groupId;
737
736
  serialize(ctx) {
738
- this.payload = import_safe2.Bytes.from([
737
+ this.payload = import_shared.Bytes.from([
739
738
  this.allowCache ? 128 : 0,
740
739
  this.groupId
741
740
  ]);