@zwave-js/cc 14.1.0 → 14.3.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 (292) hide show
  1. package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
  2. package/build/cjs/cc/AssociationCC.d.ts +2 -0
  3. package/build/cjs/cc/AssociationCC.js +5 -0
  4. package/build/cjs/cc/AssociationCC.js.map +2 -2
  5. package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
  6. package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
  7. package/build/cjs/cc/BasicCC.js.map +2 -2
  8. package/build/cjs/cc/BatteryCC.js.map +2 -2
  9. package/build/cjs/cc/BinarySensorCC.js.map +2 -2
  10. package/build/cjs/cc/BinarySwitchCC.js.map +2 -2
  11. package/build/cjs/cc/CRC16CC.d.ts +4 -0
  12. package/build/cjs/cc/CRC16CC.js +23 -0
  13. package/build/cjs/cc/CRC16CC.js.map +2 -2
  14. package/build/cjs/cc/CentralSceneCC.js.map +2 -2
  15. package/build/cjs/cc/ClimateControlScheduleCC.js.map +2 -2
  16. package/build/cjs/cc/ClockCC.js.map +2 -2
  17. package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
  18. package/build/cjs/cc/ConfigurationCC.d.ts +4 -0
  19. package/build/cjs/cc/ConfigurationCC.js +10 -0
  20. package/build/cjs/cc/ConfigurationCC.js.map +2 -2
  21. package/build/cjs/cc/DoorLockCC.js.map +2 -2
  22. package/build/cjs/cc/DoorLockLoggingCC.js.map +2 -2
  23. package/build/cjs/cc/EnergyProductionCC.js.map +2 -2
  24. package/build/cjs/cc/EntryControlCC.js.map +2 -2
  25. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +2 -2
  26. package/build/cjs/cc/HumidityControlModeCC.js.map +2 -2
  27. package/build/cjs/cc/HumidityControlSetpointCC.js.map +2 -2
  28. package/build/cjs/cc/InclusionControllerCC.js.map +2 -2
  29. package/build/cjs/cc/IndicatorCC.js.map +2 -2
  30. package/build/cjs/cc/IrrigationCC.js.map +2 -2
  31. package/build/cjs/cc/LanguageCC.js.map +2 -2
  32. package/build/cjs/cc/LockCC.js.map +2 -2
  33. package/build/cjs/cc/ManufacturerProprietaryCC.js.map +2 -2
  34. package/build/cjs/cc/ManufacturerSpecificCC.js.map +2 -2
  35. package/build/cjs/cc/MeterCC.js.map +2 -2
  36. package/build/cjs/cc/MultiChannelAssociationCC.d.ts +2 -0
  37. package/build/cjs/cc/MultiChannelAssociationCC.js +6 -0
  38. package/build/cjs/cc/MultiChannelAssociationCC.js.map +2 -2
  39. package/build/cjs/cc/MultiChannelCC.d.ts +10 -0
  40. package/build/cjs/cc/MultiChannelCC.js +65 -0
  41. package/build/cjs/cc/MultiChannelCC.js.map +2 -2
  42. package/build/cjs/cc/MultiCommandCC.d.ts +4 -0
  43. package/build/cjs/cc/MultiCommandCC.js +34 -1
  44. package/build/cjs/cc/MultiCommandCC.js.map +2 -2
  45. package/build/cjs/cc/MultilevelSensorCC.js.map +2 -2
  46. package/build/cjs/cc/MultilevelSwitchCC.js.map +2 -2
  47. package/build/cjs/cc/NodeNamingCC.js.map +2 -2
  48. package/build/cjs/cc/NotificationCC.js.map +2 -2
  49. package/build/cjs/cc/PowerlevelCC.js.map +2 -2
  50. package/build/cjs/cc/ProtectionCC.js.map +2 -2
  51. package/build/cjs/cc/SceneActivationCC.js.map +2 -2
  52. package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +2 -2
  53. package/build/cjs/cc/SceneControllerConfigurationCC.js.map +2 -2
  54. package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
  55. package/build/cjs/cc/Security2CC.d.ts +7 -1
  56. package/build/cjs/cc/Security2CC.js +383 -52
  57. package/build/cjs/cc/Security2CC.js.map +2 -2
  58. package/build/cjs/cc/SecurityCC.d.ts +7 -0
  59. package/build/cjs/cc/SecurityCC.js +101 -6
  60. package/build/cjs/cc/SecurityCC.js.map +2 -2
  61. package/build/cjs/cc/SoundSwitchCC.js.map +2 -2
  62. package/build/cjs/cc/SupervisionCC.d.ts +4 -0
  63. package/build/cjs/cc/SupervisionCC.js +25 -0
  64. package/build/cjs/cc/SupervisionCC.js.map +2 -2
  65. package/build/cjs/cc/ThermostatFanModeCC.js.map +2 -2
  66. package/build/cjs/cc/ThermostatModeCC.js.map +2 -2
  67. package/build/cjs/cc/ThermostatSetbackCC.js.map +2 -2
  68. package/build/cjs/cc/ThermostatSetpointCC.js.map +2 -2
  69. package/build/cjs/cc/TimeCC.js.map +2 -2
  70. package/build/cjs/cc/TimeParametersCC.js.map +2 -2
  71. package/build/cjs/cc/TransportServiceCC.d.ts +5 -0
  72. package/build/cjs/cc/TransportServiceCC.js +13 -0
  73. package/build/cjs/cc/TransportServiceCC.js.map +2 -2
  74. package/build/cjs/cc/UserCodeCC.js.map +2 -2
  75. package/build/cjs/cc/VersionCC.js.map +2 -2
  76. package/build/cjs/cc/WakeUpCC.js.map +2 -2
  77. package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
  78. package/build/cjs/cc/ZWavePlusCC.js.map +2 -2
  79. package/build/cjs/cc/ZWaveProtocolCC.js.map +2 -2
  80. package/build/cjs/cc/manufacturerProprietary/Decorators.js +6 -5
  81. package/build/cjs/cc/manufacturerProprietary/Decorators.js.map +2 -2
  82. package/build/cjs/cc/manufacturerProprietary/FibaroCC.js.map +2 -2
  83. package/build/cjs/lib/CommandClass.d.ts +15 -1
  84. package/build/cjs/lib/CommandClass.js +56 -1
  85. package/build/cjs/lib/CommandClass.js.map +2 -2
  86. package/build/cjs/lib/CommandClassDecorators.js +7 -6
  87. package/build/cjs/lib/CommandClassDecorators.js.map +2 -2
  88. package/build/cjs/lib/Security2/Extension.js +2 -2
  89. package/build/cjs/lib/Security2/Extension.js.map +2 -2
  90. package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
  91. package/build/esm/cc/AlarmSensorCC.js +1 -0
  92. package/build/esm/cc/AlarmSensorCC.js.map +1 -1
  93. package/build/esm/cc/AssociationCC.d.ts +2 -0
  94. package/build/esm/cc/AssociationCC.d.ts.map +1 -1
  95. package/build/esm/cc/AssociationCC.js +14 -0
  96. package/build/esm/cc/AssociationCC.js.map +1 -1
  97. package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
  98. package/build/esm/cc/AssociationGroupInfoCC.js +6 -0
  99. package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
  100. package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
  101. package/build/esm/cc/BarrierOperatorCC.js +3 -0
  102. package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
  103. package/build/esm/cc/BasicCC.d.ts.map +1 -1
  104. package/build/esm/cc/BasicCC.js +2 -0
  105. package/build/esm/cc/BasicCC.js.map +1 -1
  106. package/build/esm/cc/BatteryCC.d.ts.map +1 -1
  107. package/build/esm/cc/BatteryCC.js +1 -0
  108. package/build/esm/cc/BatteryCC.js.map +1 -1
  109. package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
  110. package/build/esm/cc/BinarySensorCC.js +3 -0
  111. package/build/esm/cc/BinarySensorCC.js.map +1 -1
  112. package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
  113. package/build/esm/cc/BinarySwitchCC.js +2 -0
  114. package/build/esm/cc/BinarySwitchCC.js.map +1 -1
  115. package/build/esm/cc/CRC16CC.d.ts +4 -0
  116. package/build/esm/cc/CRC16CC.d.ts.map +1 -1
  117. package/build/esm/cc/CRC16CC.js +30 -0
  118. package/build/esm/cc/CRC16CC.js.map +1 -1
  119. package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
  120. package/build/esm/cc/CentralSceneCC.js +1 -0
  121. package/build/esm/cc/CentralSceneCC.js.map +1 -1
  122. package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
  123. package/build/esm/cc/ClimateControlScheduleCC.js +3 -0
  124. package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
  125. package/build/esm/cc/ClockCC.d.ts.map +1 -1
  126. package/build/esm/cc/ClockCC.js +1 -0
  127. package/build/esm/cc/ClockCC.js.map +1 -1
  128. package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
  129. package/build/esm/cc/ColorSwitchCC.js +6 -0
  130. package/build/esm/cc/ColorSwitchCC.js.map +1 -1
  131. package/build/esm/cc/ConfigurationCC.d.ts +4 -0
  132. package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
  133. package/build/esm/cc/ConfigurationCC.js +27 -0
  134. package/build/esm/cc/ConfigurationCC.js.map +1 -1
  135. package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
  136. package/build/esm/cc/DoorLockCC.js +2 -0
  137. package/build/esm/cc/DoorLockCC.js.map +1 -1
  138. package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
  139. package/build/esm/cc/DoorLockLoggingCC.js +1 -0
  140. package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
  141. package/build/esm/cc/EnergyProductionCC.d.ts.map +1 -1
  142. package/build/esm/cc/EnergyProductionCC.js +2 -0
  143. package/build/esm/cc/EnergyProductionCC.js.map +1 -1
  144. package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
  145. package/build/esm/cc/EntryControlCC.js +1 -0
  146. package/build/esm/cc/EntryControlCC.js.map +1 -1
  147. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
  148. package/build/esm/cc/FirmwareUpdateMetaDataCC.js +5 -0
  149. package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
  150. package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
  151. package/build/esm/cc/HumidityControlModeCC.js +1 -0
  152. package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
  153. package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
  154. package/build/esm/cc/HumidityControlSetpointCC.js +4 -0
  155. package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
  156. package/build/esm/cc/InclusionControllerCC.d.ts.map +1 -1
  157. package/build/esm/cc/InclusionControllerCC.js +2 -0
  158. package/build/esm/cc/InclusionControllerCC.js.map +1 -1
  159. package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
  160. package/build/esm/cc/IndicatorCC.js +7 -0
  161. package/build/esm/cc/IndicatorCC.js.map +1 -1
  162. package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
  163. package/build/esm/cc/IrrigationCC.js +9 -0
  164. package/build/esm/cc/IrrigationCC.js.map +1 -1
  165. package/build/esm/cc/LanguageCC.d.ts.map +1 -1
  166. package/build/esm/cc/LanguageCC.js +1 -0
  167. package/build/esm/cc/LanguageCC.js.map +1 -1
  168. package/build/esm/cc/LockCC.d.ts.map +1 -1
  169. package/build/esm/cc/LockCC.js +1 -0
  170. package/build/esm/cc/LockCC.js.map +1 -1
  171. package/build/esm/cc/ManufacturerProprietaryCC.d.ts.map +1 -1
  172. package/build/esm/cc/ManufacturerProprietaryCC.js +2 -0
  173. package/build/esm/cc/ManufacturerProprietaryCC.js.map +1 -1
  174. package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
  175. package/build/esm/cc/ManufacturerSpecificCC.js +2 -0
  176. package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
  177. package/build/esm/cc/MeterCC.d.ts.map +1 -1
  178. package/build/esm/cc/MeterCC.js +4 -0
  179. package/build/esm/cc/MeterCC.js.map +1 -1
  180. package/build/esm/cc/MultiChannelAssociationCC.d.ts +2 -0
  181. package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
  182. package/build/esm/cc/MultiChannelAssociationCC.js +17 -0
  183. package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
  184. package/build/esm/cc/MultiChannelCC.d.ts +10 -0
  185. package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
  186. package/build/esm/cc/MultiChannelCC.js +94 -0
  187. package/build/esm/cc/MultiChannelCC.js.map +1 -1
  188. package/build/esm/cc/MultiCommandCC.d.ts +4 -0
  189. package/build/esm/cc/MultiCommandCC.d.ts.map +1 -1
  190. package/build/esm/cc/MultiCommandCC.js +35 -1
  191. package/build/esm/cc/MultiCommandCC.js.map +1 -1
  192. package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
  193. package/build/esm/cc/MultilevelSensorCC.js +5 -0
  194. package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
  195. package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
  196. package/build/esm/cc/MultilevelSwitchCC.js +4 -0
  197. package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
  198. package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
  199. package/build/esm/cc/NodeNamingCC.js +2 -0
  200. package/build/esm/cc/NodeNamingCC.js.map +1 -1
  201. package/build/esm/cc/NotificationCC.d.ts.map +1 -1
  202. package/build/esm/cc/NotificationCC.js +9 -0
  203. package/build/esm/cc/NotificationCC.js.map +1 -1
  204. package/build/esm/cc/PowerlevelCC.d.ts.map +1 -1
  205. package/build/esm/cc/PowerlevelCC.js +4 -0
  206. package/build/esm/cc/PowerlevelCC.js.map +1 -1
  207. package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
  208. package/build/esm/cc/ProtectionCC.js +3 -0
  209. package/build/esm/cc/ProtectionCC.js.map +1 -1
  210. package/build/esm/cc/SceneActivationCC.d.ts.map +1 -1
  211. package/build/esm/cc/SceneActivationCC.js +1 -0
  212. package/build/esm/cc/SceneActivationCC.js.map +1 -1
  213. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts.map +1 -1
  214. package/build/esm/cc/SceneActuatorConfigurationCC.js +2 -0
  215. package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
  216. package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
  217. package/build/esm/cc/SceneControllerConfigurationCC.js +2 -0
  218. package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
  219. package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
  220. package/build/esm/cc/ScheduleEntryLockCC.js +14 -0
  221. package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
  222. package/build/esm/cc/Security2CC.d.ts +7 -1
  223. package/build/esm/cc/Security2CC.d.ts.map +1 -1
  224. package/build/esm/cc/Security2CC.js +534 -68
  225. package/build/esm/cc/Security2CC.js.map +1 -1
  226. package/build/esm/cc/SecurityCC.d.ts +7 -0
  227. package/build/esm/cc/SecurityCC.d.ts.map +1 -1
  228. package/build/esm/cc/SecurityCC.js +133 -7
  229. package/build/esm/cc/SecurityCC.js.map +1 -1
  230. package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
  231. package/build/esm/cc/SoundSwitchCC.js +7 -0
  232. package/build/esm/cc/SoundSwitchCC.js.map +1 -1
  233. package/build/esm/cc/SupervisionCC.d.ts +4 -0
  234. package/build/esm/cc/SupervisionCC.d.ts.map +1 -1
  235. package/build/esm/cc/SupervisionCC.js +30 -0
  236. package/build/esm/cc/SupervisionCC.js.map +1 -1
  237. package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
  238. package/build/esm/cc/ThermostatFanModeCC.js +1 -0
  239. package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
  240. package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
  241. package/build/esm/cc/ThermostatModeCC.js +3 -0
  242. package/build/esm/cc/ThermostatModeCC.js.map +1 -1
  243. package/build/esm/cc/ThermostatSetbackCC.d.ts.map +1 -1
  244. package/build/esm/cc/ThermostatSetbackCC.js +2 -0
  245. package/build/esm/cc/ThermostatSetbackCC.js.map +1 -1
  246. package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
  247. package/build/esm/cc/ThermostatSetpointCC.js +6 -0
  248. package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
  249. package/build/esm/cc/TimeCC.d.ts.map +1 -1
  250. package/build/esm/cc/TimeCC.js +4 -0
  251. package/build/esm/cc/TimeCC.js.map +1 -1
  252. package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
  253. package/build/esm/cc/TimeParametersCC.js +1 -0
  254. package/build/esm/cc/TimeParametersCC.js.map +1 -1
  255. package/build/esm/cc/TransportServiceCC.d.ts +5 -0
  256. package/build/esm/cc/TransportServiceCC.d.ts.map +1 -1
  257. package/build/esm/cc/TransportServiceCC.js +24 -0
  258. package/build/esm/cc/TransportServiceCC.js.map +1 -1
  259. package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
  260. package/build/esm/cc/UserCodeCC.js +12 -0
  261. package/build/esm/cc/UserCodeCC.js.map +1 -1
  262. package/build/esm/cc/VersionCC.d.ts.map +1 -1
  263. package/build/esm/cc/VersionCC.js +4 -0
  264. package/build/esm/cc/VersionCC.js.map +1 -1
  265. package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
  266. package/build/esm/cc/WakeUpCC.js +1 -0
  267. package/build/esm/cc/WakeUpCC.js.map +1 -1
  268. package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
  269. package/build/esm/cc/WindowCoveringCC.js +5 -0
  270. package/build/esm/cc/WindowCoveringCC.js.map +1 -1
  271. package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
  272. package/build/esm/cc/ZWavePlusCC.js +1 -0
  273. package/build/esm/cc/ZWavePlusCC.js.map +1 -1
  274. package/build/esm/cc/ZWaveProtocolCC.d.ts.map +1 -1
  275. package/build/esm/cc/ZWaveProtocolCC.js +27 -0
  276. package/build/esm/cc/ZWaveProtocolCC.js.map +1 -1
  277. package/build/esm/cc/manufacturerProprietary/Decorators.d.ts.map +1 -1
  278. package/build/esm/cc/manufacturerProprietary/Decorators.js +2 -1
  279. package/build/esm/cc/manufacturerProprietary/Decorators.js.map +1 -1
  280. package/build/esm/cc/manufacturerProprietary/FibaroCC.d.ts.map +1 -1
  281. package/build/esm/cc/manufacturerProprietary/FibaroCC.js +3 -0
  282. package/build/esm/cc/manufacturerProprietary/FibaroCC.js.map +1 -1
  283. package/build/esm/lib/CommandClass.d.ts +15 -1
  284. package/build/esm/lib/CommandClass.d.ts.map +1 -1
  285. package/build/esm/lib/CommandClass.js +94 -1
  286. package/build/esm/lib/CommandClass.js.map +1 -1
  287. package/build/esm/lib/CommandClassDecorators.d.ts.map +1 -1
  288. package/build/esm/lib/CommandClassDecorators.js +2 -1
  289. package/build/esm/lib/CommandClassDecorators.js.map +1 -1
  290. package/build/esm/lib/Security2/Extension.js +1 -1
  291. package/build/esm/lib/Security2/Extension.js.map +1 -1
  292. package/package.json +6 -6
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cc/ZWavePlusCC.ts"],
4
- "sourcesContent": ["import {\n\tCommandClasses,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype WithAddress,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport type {\n\tCCEncodingContext,\n\tCCParsingContext,\n\tGetValueDB,\n} from \"@zwave-js/host/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { getEnumMemberName, num2hex, pick } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport {\n\tZWavePlusCommand,\n\tZWavePlusNodeType,\n\tZWavePlusRoleType,\n} from \"../lib/_Types.js\";\n\n// SDS13782 The advertised Z-Wave Plus Version, Role Type and Node Type information values\n// MUST be identical for the Root Device and all Multi Channel End Points\n// --> We only access endpoint 0\n\nexport const ZWavePlusCCValues = Object.freeze({\n\t...V.defineStaticCCValues(CommandClasses[\"Z-Wave Plus Info\"], {\n\t\t...V.staticProperty(\"zwavePlusVersion\", undefined, {\n\t\t\tsupportsEndpoints: false,\n\t\t\tinternal: true,\n\t\t}),\n\n\t\t...V.staticProperty(\"nodeType\", undefined, {\n\t\t\tsupportsEndpoints: false,\n\t\t\tinternal: true,\n\t\t}),\n\n\t\t...V.staticProperty(\"roleType\", undefined, {\n\t\t\tsupportsEndpoints: false,\n\t\t\tinternal: true,\n\t\t}),\n\n\t\t...V.staticProperty(\"userIcon\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\n\t\t...V.staticProperty(\"installerIcon\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t}),\n});\n\n// @noSetValueAPI This CC is read-only\n\n@API(CommandClasses[\"Z-Wave Plus Info\"])\nexport class ZWavePlusCCAPI extends PhysicalCCAPI {\n\tpublic supportsCommand(cmd: ZWavePlusCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase ZWavePlusCommand.Get:\n\t\t\tcase ZWavePlusCommand.Report:\n\t\t\t\treturn true; // This is mandatory\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async get() {\n\t\tthis.assertSupportsCommand(ZWavePlusCommand, ZWavePlusCommand.Get);\n\n\t\tconst cc = new ZWavePlusCCGet({\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<ZWavePlusCCReport>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\n\t\t\t\t\"zwavePlusVersion\",\n\t\t\t\t\"nodeType\",\n\t\t\t\t\"roleType\",\n\t\t\t\t\"installerIcon\",\n\t\t\t\t\"userIcon\",\n\t\t\t]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async sendReport(options: ZWavePlusCCReportOptions): Promise<void> {\n\t\tthis.assertSupportsCommand(ZWavePlusCommand, ZWavePlusCommand.Report);\n\n\t\tconst cc = new ZWavePlusCCReport({\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\n@commandClass(CommandClasses[\"Z-Wave Plus Info\"])\n@implementedVersion(2)\n@ccValues(ZWavePlusCCValues)\nexport class ZWavePlusCC extends CommandClass {\n\tdeclare ccCommand: ZWavePlusCommand;\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[\"Z-Wave Plus Info\"],\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\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: \"querying Z-Wave+ information...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\n\t\tconst zwavePlusResponse = await api.get();\n\t\tif (zwavePlusResponse) {\n\t\t\tconst logMessage = `received response for Z-Wave+ information:\nZ-Wave+ version: ${zwavePlusResponse.zwavePlusVersion}\nrole type: ${ZWavePlusRoleType[zwavePlusResponse.roleType]}\nnode type: ${ZWavePlusNodeType[zwavePlusResponse.nodeType]}\ninstaller icon: ${num2hex(zwavePlusResponse.installerIcon)}\nuser icon: ${num2hex(zwavePlusResponse.userIcon)}`;\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: logMessage,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t}\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n}\n\n// @publicAPI\nexport interface ZWavePlusCCReportOptions {\n\tzwavePlusVersion: number;\n\tnodeType: ZWavePlusNodeType;\n\troleType: ZWavePlusRoleType;\n\tinstallerIcon: number;\n\tuserIcon: number;\n}\n\n@CCCommand(ZWavePlusCommand.Report)\n@ccValueProperty(\"zwavePlusVersion\", ZWavePlusCCValues.zwavePlusVersion)\n@ccValueProperty(\"nodeType\", ZWavePlusCCValues.nodeType)\n@ccValueProperty(\"roleType\", ZWavePlusCCValues.roleType)\n@ccValueProperty(\"installerIcon\", ZWavePlusCCValues.installerIcon)\n@ccValueProperty(\"userIcon\", ZWavePlusCCValues.userIcon)\nexport class ZWavePlusCCReport extends ZWavePlusCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWavePlusCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.zwavePlusVersion = options.zwavePlusVersion;\n\t\tthis.roleType = options.roleType;\n\t\tthis.nodeType = options.nodeType;\n\t\tthis.installerIcon = options.installerIcon;\n\t\tthis.userIcon = options.userIcon;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): ZWavePlusCCReport {\n\t\tvalidatePayload(raw.payload.length >= 7);\n\t\tconst zwavePlusVersion = raw.payload[0];\n\t\tconst roleType: ZWavePlusRoleType = raw.payload[1];\n\t\tconst nodeType: ZWavePlusNodeType = raw.payload[2];\n\t\tconst installerIcon = raw.payload.readUInt16BE(3);\n\t\tconst userIcon = raw.payload.readUInt16BE(5);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tzwavePlusVersion,\n\t\t\troleType,\n\t\t\tnodeType,\n\t\t\tinstallerIcon,\n\t\t\tuserIcon,\n\t\t});\n\t}\n\n\tpublic zwavePlusVersion: number;\n\n\tpublic nodeType: ZWavePlusNodeType;\n\n\tpublic roleType: ZWavePlusRoleType;\n\n\tpublic installerIcon: number;\n\n\tpublic userIcon: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.zwavePlusVersion,\n\t\t\tthis.roleType,\n\t\t\tthis.nodeType,\n\t\t\t// placeholder for icons\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t]);\n\t\tthis.payload.writeUInt16BE(this.installerIcon, 3);\n\t\tthis.payload.writeUInt16BE(this.userIcon, 5);\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\tversion: this.zwavePlusVersion,\n\t\t\t\t\"node type\": getEnumMemberName(\n\t\t\t\t\tZWavePlusNodeType,\n\t\t\t\t\tthis.nodeType,\n\t\t\t\t),\n\t\t\t\t\"role type\": getEnumMemberName(\n\t\t\t\t\tZWavePlusRoleType,\n\t\t\t\t\tthis.roleType,\n\t\t\t\t),\n\t\t\t\t\"icon (mgmt.)\": num2hex(this.installerIcon),\n\t\t\t\t\"icon (user)\": num2hex(this.userIcon),\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(ZWavePlusCommand.Get)\n@expectedCCResponse(ZWavePlusCCReport)\nexport class ZWavePlusCCGet extends ZWavePlusCC {}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import {\n\tCommandClasses,\n\ttype MaybeNotKnown,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype WithAddress,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport type {\n\tCCEncodingContext,\n\tCCParsingContext,\n\tGetValueDB,\n} from \"@zwave-js/host/safe\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { getEnumMemberName, num2hex, pick } from \"@zwave-js/shared/safe\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { CCAPI, PhysicalCCAPI } from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport {\n\tZWavePlusCommand,\n\tZWavePlusNodeType,\n\tZWavePlusRoleType,\n} from \"../lib/_Types.js\";\n\n// SDS13782 The advertised Z-Wave Plus Version, Role Type and Node Type information values\n// MUST be identical for the Root Device and all Multi Channel End Points\n// --> We only access endpoint 0\n\nexport const ZWavePlusCCValues = Object.freeze({\n\t...V.defineStaticCCValues(CommandClasses[\"Z-Wave Plus Info\"], {\n\t\t...V.staticProperty(\"zwavePlusVersion\", undefined, {\n\t\t\tsupportsEndpoints: false,\n\t\t\tinternal: true,\n\t\t}),\n\n\t\t...V.staticProperty(\"nodeType\", undefined, {\n\t\t\tsupportsEndpoints: false,\n\t\t\tinternal: true,\n\t\t}),\n\n\t\t...V.staticProperty(\"roleType\", undefined, {\n\t\t\tsupportsEndpoints: false,\n\t\t\tinternal: true,\n\t\t}),\n\n\t\t...V.staticProperty(\"userIcon\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\n\t\t...V.staticProperty(\"installerIcon\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t}),\n});\n\n// @noSetValueAPI This CC is read-only\n\n@API(CommandClasses[\"Z-Wave Plus Info\"])\nexport class ZWavePlusCCAPI extends PhysicalCCAPI {\n\tpublic supportsCommand(cmd: ZWavePlusCommand): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase ZWavePlusCommand.Get:\n\t\t\tcase ZWavePlusCommand.Report:\n\t\t\t\treturn true; // This is mandatory\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async get() {\n\t\tthis.assertSupportsCommand(ZWavePlusCommand, ZWavePlusCommand.Get);\n\n\t\tconst cc = new ZWavePlusCCGet({\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<ZWavePlusCCReport>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\n\t\t\t\t\"zwavePlusVersion\",\n\t\t\t\t\"nodeType\",\n\t\t\t\t\"roleType\",\n\t\t\t\t\"installerIcon\",\n\t\t\t\t\"userIcon\",\n\t\t\t]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async sendReport(options: ZWavePlusCCReportOptions): Promise<void> {\n\t\tthis.assertSupportsCommand(ZWavePlusCommand, ZWavePlusCommand.Report);\n\n\t\tconst cc = new ZWavePlusCCReport({\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\n@commandClass(CommandClasses[\"Z-Wave Plus Info\"])\n@implementedVersion(2)\n@ccValues(ZWavePlusCCValues)\nexport class ZWavePlusCC extends CommandClass {\n\tdeclare ccCommand: ZWavePlusCommand;\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[\"Z-Wave Plus Info\"],\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\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: \"querying Z-Wave+ information...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\n\t\tconst zwavePlusResponse = await api.get();\n\t\tif (zwavePlusResponse) {\n\t\t\tconst logMessage = `received response for Z-Wave+ information:\nZ-Wave+ version: ${zwavePlusResponse.zwavePlusVersion}\nrole type: ${ZWavePlusRoleType[zwavePlusResponse.roleType]}\nnode type: ${ZWavePlusNodeType[zwavePlusResponse.nodeType]}\ninstaller icon: ${num2hex(zwavePlusResponse.installerIcon)}\nuser icon: ${num2hex(zwavePlusResponse.userIcon)}`;\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: logMessage,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t}\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n}\n\n// @publicAPI\nexport interface ZWavePlusCCReportOptions {\n\tzwavePlusVersion: number;\n\tnodeType: ZWavePlusNodeType;\n\troleType: ZWavePlusRoleType;\n\tinstallerIcon: number;\n\tuserIcon: number;\n}\n\n@CCCommand(ZWavePlusCommand.Report)\n@ccValueProperty(\"zwavePlusVersion\", ZWavePlusCCValues.zwavePlusVersion)\n@ccValueProperty(\"nodeType\", ZWavePlusCCValues.nodeType)\n@ccValueProperty(\"roleType\", ZWavePlusCCValues.roleType)\n@ccValueProperty(\"installerIcon\", ZWavePlusCCValues.installerIcon)\n@ccValueProperty(\"userIcon\", ZWavePlusCCValues.userIcon)\nexport class ZWavePlusCCReport extends ZWavePlusCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWavePlusCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.zwavePlusVersion = options.zwavePlusVersion;\n\t\tthis.roleType = options.roleType;\n\t\tthis.nodeType = options.nodeType;\n\t\tthis.installerIcon = options.installerIcon;\n\t\tthis.userIcon = options.userIcon;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): ZWavePlusCCReport {\n\t\tvalidatePayload(raw.payload.length >= 7);\n\t\tconst zwavePlusVersion = raw.payload[0];\n\t\tconst roleType: ZWavePlusRoleType = raw.payload[1];\n\t\tconst nodeType: ZWavePlusNodeType = raw.payload[2];\n\t\tconst installerIcon = raw.payload.readUInt16BE(3);\n\t\tconst userIcon = raw.payload.readUInt16BE(5);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tzwavePlusVersion,\n\t\t\troleType,\n\t\t\tnodeType,\n\t\t\tinstallerIcon,\n\t\t\tuserIcon,\n\t\t});\n\t}\n\n\tpublic zwavePlusVersion: number;\n\n\tpublic nodeType: ZWavePlusNodeType;\n\n\tpublic roleType: ZWavePlusRoleType;\n\n\tpublic installerIcon: number;\n\n\tpublic userIcon: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.zwavePlusVersion,\n\t\t\tthis.roleType,\n\t\t\tthis.nodeType,\n\t\t\t// placeholder for icons\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t\t0,\n\t\t]);\n\t\tthis.payload.writeUInt16BE(this.installerIcon, 3);\n\t\tthis.payload.writeUInt16BE(this.userIcon, 5);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\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\tversion: this.zwavePlusVersion,\n\t\t\t\t\"node type\": getEnumMemberName(\n\t\t\t\t\tZWavePlusNodeType,\n\t\t\t\t\tthis.nodeType,\n\t\t\t\t),\n\t\t\t\t\"role type\": getEnumMemberName(\n\t\t\t\t\tZWavePlusRoleType,\n\t\t\t\t\tthis.roleType,\n\t\t\t\t),\n\t\t\t\t\"icon (mgmt.)\": num2hex(this.installerIcon),\n\t\t\t\t\"icon (user)\": num2hex(this.userIcon),\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(ZWavePlusCommand.Get)\n@expectedCCResponse(ZWavePlusCCReport)\nexport class ZWavePlusCCGet extends ZWavePlusCC {}\n"],
5
+ "mappings": "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",
6
6
  "names": ["import_safe"]
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cc/ZWaveProtocolCC.ts"],
4
- "sourcesContent": ["import {\n\ttype BasicDeviceClass,\n\tCommandClasses,\n\ttype DataRate,\n\ttype FLiRS,\n\tMAX_NODES,\n\tMAX_REPEATERS,\n\ttype NodeInformationFrame,\n\ttype NodeProtocolInfoAndDeviceClass,\n\ttype NodeType,\n\ttype ProtocolVersion,\n\ttype WithAddress,\n\tZWaveDataRate,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tencodeBitMask,\n\tencodeNodeInformationFrame,\n\tencodeNodeProtocolInfoAndDeviceClass,\n\tparseBitMask,\n\tparseNodeInformationFrame,\n\tparseNodeProtocolInfoAndDeviceClass,\n\tvalidatePayload,\n} from \"@zwave-js/core\";\nimport type { CCEncodingContext, CCParsingContext } from \"@zwave-js/host\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { type CCRaw, CommandClass } from \"../lib/CommandClass.js\";\nimport {\n\tCCCommand,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n} from \"../lib/CommandClassDecorators.js\";\nimport {\n\ttype NetworkTransferStatus,\n\tWakeUpTime,\n\tZWaveProtocolCommand,\n\tparseWakeUpTime,\n} from \"../lib/_Types.js\";\n\nenum DataRateBitmask {\n\t\"9k6\" = 0b001,\n\t\"40k\" = 0b010,\n\t\"100k\" = 0b100,\n}\n\nfunction dataRate2Bitmask(dataRate: ZWaveDataRate): DataRateBitmask {\n\treturn dataRate === ZWaveDataRate[\"100k\"]\n\t\t? DataRateBitmask[\"100k\"]\n\t\t: dataRate === ZWaveDataRate[\"40k\"]\n\t\t? DataRateBitmask[\"40k\"]\n\t\t: DataRateBitmask[\"9k6\"];\n}\n\nfunction bitmask2DataRate(mask: DataRateBitmask): ZWaveDataRate {\n\treturn mask === DataRateBitmask[\"100k\"]\n\t\t? ZWaveDataRate[\"100k\"]\n\t\t: mask === DataRateBitmask[\"40k\"]\n\t\t? ZWaveDataRate[\"40k\"]\n\t\t: ZWaveDataRate[\"9k6\"];\n}\n\n@commandClass(CommandClasses[\"Z-Wave Protocol\"])\n@implementedVersion(1)\nexport class ZWaveProtocolCC extends CommandClass {\n\tdeclare ccCommand: ZWaveProtocolCommand;\n}\n\n// @publicAPI\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface ZWaveProtocolCCNodeInformationFrameOptions\n\textends NodeInformationFrame\n{}\n\n@CCCommand(ZWaveProtocolCommand.NodeInformationFrame)\nexport class ZWaveProtocolCCNodeInformationFrame extends ZWaveProtocolCC\n\timplements NodeInformationFrame\n{\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCNodeInformationFrameOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.basicDeviceClass = options.basicDeviceClass;\n\t\tthis.genericDeviceClass = options.genericDeviceClass;\n\t\tthis.specificDeviceClass = options.specificDeviceClass;\n\t\tthis.isListening = options.isListening;\n\t\tthis.isFrequentListening = options.isFrequentListening;\n\t\tthis.isRouting = options.isRouting;\n\t\tthis.supportedDataRates = options.supportedDataRates;\n\t\tthis.protocolVersion = options.protocolVersion;\n\t\tthis.optionalFunctionality = options.optionalFunctionality;\n\t\tthis.nodeType = options.nodeType;\n\t\tthis.supportsSecurity = options.supportsSecurity;\n\t\tthis.supportsBeaming = options.supportsBeaming;\n\t\tthis.supportedCCs = options.supportedCCs;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCNodeInformationFrame {\n\t\tconst nif = parseNodeInformationFrame(raw.payload);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t...nif,\n\t\t});\n\t}\n\n\tpublic basicDeviceClass: BasicDeviceClass;\n\tpublic genericDeviceClass: number;\n\tpublic specificDeviceClass: number;\n\tpublic isListening: boolean;\n\tpublic isFrequentListening: FLiRS;\n\tpublic isRouting: boolean;\n\tpublic supportedDataRates: DataRate[];\n\tpublic protocolVersion: ProtocolVersion;\n\tpublic optionalFunctionality: boolean;\n\tpublic nodeType: NodeType;\n\tpublic supportsSecurity: boolean;\n\tpublic supportsBeaming: boolean;\n\tpublic supportedCCs: CommandClasses[];\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = encodeNodeInformationFrame(this);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n@CCCommand(ZWaveProtocolCommand.RequestNodeInformationFrame)\n@expectedCCResponse(ZWaveProtocolCCNodeInformationFrame)\nexport class ZWaveProtocolCCRequestNodeInformationFrame\n\textends ZWaveProtocolCC\n{}\n\n// @publicAPI\nexport interface ZWaveProtocolCCAssignIDsOptions {\n\tassignedNodeId: number;\n\thomeId: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.AssignIDs)\nexport class ZWaveProtocolCCAssignIDs extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCAssignIDsOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.assignedNodeId = options.assignedNodeId;\n\t\tthis.homeId = options.homeId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCAssignIDs {\n\t\tvalidatePayload(raw.payload.length >= 5);\n\t\tconst assignedNodeId = raw.payload[0];\n\t\tconst homeId = raw.payload.readUInt32BE(1);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tassignedNodeId,\n\t\t\thomeId,\n\t\t});\n\t}\n\n\tpublic assignedNodeId: number;\n\tpublic homeId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = new Bytes(5);\n\t\tthis.payload[0] = this.assignedNodeId;\n\t\tthis.payload.writeUInt32BE(this.homeId, 1);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCFindNodesInRangeOptions {\n\tcandidateNodeIds: number[];\n\twakeUpTime: WakeUpTime;\n\tdataRate?: ZWaveDataRate;\n}\n\n@CCCommand(ZWaveProtocolCommand.FindNodesInRange)\nexport class ZWaveProtocolCCFindNodesInRange extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCFindNodesInRangeOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.candidateNodeIds = options.candidateNodeIds;\n\t\tthis.wakeUpTime = options.wakeUpTime;\n\t\tthis.dataRate = options.dataRate ?? ZWaveDataRate[\"9k6\"];\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCFindNodesInRange {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst speedPresent = raw.payload[0] & 0b1000_0000;\n\t\tconst bitmaskLength = raw.payload[0] & 0b0001_1111;\n\n\t\tvalidatePayload(raw.payload.length >= 1 + bitmaskLength);\n\t\tconst candidateNodeIds = parseBitMask(\n\t\t\traw.payload.subarray(1, 1 + bitmaskLength),\n\t\t);\n\t\tconst rest = raw.payload.subarray(1 + bitmaskLength);\n\n\t\tlet dataRate: ZWaveDataRate;\n\t\tlet wakeUpTime: WakeUpTime;\n\t\tif (speedPresent) {\n\t\t\tvalidatePayload(rest.length >= 1);\n\t\t\tif (rest.length === 1) {\n\t\t\t\tdataRate = rest[0] & 0b111;\n\t\t\t\twakeUpTime = WakeUpTime.None;\n\t\t\t} else if (rest.length === 2) {\n\t\t\t\twakeUpTime = parseWakeUpTime(rest[0]);\n\t\t\t\tdataRate = rest[1] & 0b111;\n\t\t\t} else {\n\t\t\t\tvalidatePayload.fail(\"Invalid payload length\");\n\t\t\t}\n\t\t} else if (rest.length >= 1) {\n\t\t\twakeUpTime = parseWakeUpTime(rest[0]);\n\t\t\tdataRate = ZWaveDataRate[\"9k6\"];\n\t\t} else {\n\t\t\twakeUpTime = WakeUpTime.None;\n\t\t\tdataRate = ZWaveDataRate[\"9k6\"];\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tcandidateNodeIds,\n\t\t\tdataRate,\n\t\t\twakeUpTime,\n\t\t});\n\t}\n\n\tpublic candidateNodeIds: number[];\n\tpublic wakeUpTime: WakeUpTime;\n\tpublic dataRate: ZWaveDataRate;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tconst nodesBitmask = encodeBitMask(this.candidateNodeIds, MAX_NODES);\n\t\tconst speedAndLength = 0b1000_0000 | nodesBitmask.length;\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([speedAndLength]),\n\t\t\tnodesBitmask,\n\t\t\tBytes.from([this.wakeUpTime, this.dataRate]),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCRangeInfoOptions {\n\tneighborNodeIds: number[];\n\twakeUpTime?: WakeUpTime;\n}\n\n@CCCommand(ZWaveProtocolCommand.RangeInfo)\nexport class ZWaveProtocolCCRangeInfo extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCRangeInfoOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.neighborNodeIds = options.neighborNodeIds;\n\t\tthis.wakeUpTime = options.wakeUpTime;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCRangeInfo {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst bitmaskLength = raw.payload[0] & 0b0001_1111;\n\n\t\tvalidatePayload(raw.payload.length >= 1 + bitmaskLength);\n\t\tconst neighborNodeIds = parseBitMask(\n\t\t\traw.payload.subarray(1, 1 + bitmaskLength),\n\t\t);\n\n\t\tlet wakeUpTime: WakeUpTime | undefined;\n\t\tif (raw.payload.length >= 2 + bitmaskLength) {\n\t\t\twakeUpTime = parseWakeUpTime(\n\t\t\t\traw.payload[1 + bitmaskLength],\n\t\t\t);\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tneighborNodeIds,\n\t\t\twakeUpTime,\n\t\t});\n\t}\n\n\tpublic neighborNodeIds: number[];\n\tpublic wakeUpTime?: WakeUpTime;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tconst nodesBitmask = encodeBitMask(this.neighborNodeIds, MAX_NODES);\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([nodesBitmask.length]),\n\t\t\tnodesBitmask,\n\t\t\tthis.wakeUpTime != undefined\n\t\t\t\t? Bytes.from([this.wakeUpTime])\n\t\t\t\t: new Bytes(),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n@CCCommand(ZWaveProtocolCommand.GetNodesInRange)\n@expectedCCResponse(ZWaveProtocolCCRangeInfo)\nexport class ZWaveProtocolCCGetNodesInRange extends ZWaveProtocolCC {}\n\n// @publicAPI\nexport interface ZWaveProtocolCCCommandCompleteOptions {\n\tsequenceNumber: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.CommandComplete)\nexport class ZWaveProtocolCCCommandComplete extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCCommandCompleteOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.sequenceNumber = options.sequenceNumber;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCCommandComplete {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst sequenceNumber = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsequenceNumber,\n\t\t});\n\t}\n\n\tpublic sequenceNumber: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.sequenceNumber]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCTransferPresentationOptions {\n\tsupportsNWI: boolean;\n\tincludeNode: boolean;\n\texcludeNode: boolean;\n}\n\n@CCCommand(ZWaveProtocolCommand.TransferPresentation)\nexport class ZWaveProtocolCCTransferPresentation extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCTransferPresentationOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.includeNode && options.excludeNode) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`${this.constructor.name}: the includeNode and excludeNode options cannot both be true`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.supportsNWI = options.supportsNWI;\n\t\tthis.includeNode = options.includeNode;\n\t\tthis.excludeNode = options.excludeNode;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCTransferPresentation {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst option = raw.payload[0];\n\t\tconst supportsNWI = !!(option & 0b0001);\n\t\tconst excludeNode = !!(option & 0b0010);\n\t\tconst includeNode = !!(option & 0b0100);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsupportsNWI,\n\t\t\texcludeNode,\n\t\t\tincludeNode,\n\t\t});\n\t}\n\n\tpublic supportsNWI: boolean;\n\tpublic includeNode: boolean;\n\tpublic excludeNode: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\t(this.supportsNWI ? 0b0001 : 0)\n\t\t\t| (this.excludeNode ? 0b0010 : 0)\n\t\t\t| (this.includeNode ? 0b0100 : 0),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCTransferNodeInformationOptions\n\textends NodeProtocolInfoAndDeviceClass\n{\n\tsequenceNumber: number;\n\tsourceNodeId: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.TransferNodeInformation)\nexport class ZWaveProtocolCCTransferNodeInformation extends ZWaveProtocolCC\n\timplements NodeProtocolInfoAndDeviceClass\n{\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCTransferNodeInformationOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.sequenceNumber = options.sequenceNumber;\n\t\tthis.sourceNodeId = options.sourceNodeId;\n\n\t\tthis.basicDeviceClass = options.basicDeviceClass;\n\t\tthis.genericDeviceClass = options.genericDeviceClass;\n\t\tthis.specificDeviceClass = options.specificDeviceClass;\n\t\tthis.isListening = options.isListening;\n\t\tthis.isFrequentListening = options.isFrequentListening;\n\t\tthis.isRouting = options.isRouting;\n\t\tthis.supportedDataRates = options.supportedDataRates;\n\t\tthis.protocolVersion = options.protocolVersion;\n\t\tthis.optionalFunctionality = options.optionalFunctionality;\n\t\tthis.nodeType = options.nodeType;\n\t\tthis.supportsSecurity = options.supportsSecurity;\n\t\tthis.supportsBeaming = options.supportsBeaming;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCTransferNodeInformation {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst sequenceNumber = raw.payload[0];\n\t\tconst sourceNodeId = raw.payload[1];\n\n\t\tconst { info } = parseNodeProtocolInfoAndDeviceClass(\n\t\t\traw.payload.subarray(2),\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsequenceNumber,\n\t\t\tsourceNodeId,\n\t\t\t...info,\n\t\t});\n\t}\n\n\tpublic sequenceNumber: number;\n\tpublic sourceNodeId: number;\n\tpublic basicDeviceClass: BasicDeviceClass;\n\tpublic genericDeviceClass: number;\n\tpublic specificDeviceClass: number;\n\tpublic isListening: boolean;\n\tpublic isFrequentListening: FLiRS;\n\tpublic isRouting: boolean;\n\tpublic supportedDataRates: DataRate[];\n\tpublic protocolVersion: ProtocolVersion;\n\tpublic optionalFunctionality: boolean;\n\tpublic nodeType: NodeType;\n\tpublic supportsSecurity: boolean;\n\tpublic supportsBeaming: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.sequenceNumber, this.sourceNodeId]),\n\t\t\tencodeNodeProtocolInfoAndDeviceClass(this),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCTransferRangeInformationOptions {\n\tsequenceNumber: number;\n\ttestedNodeId: number;\n\tneighborNodeIds: number[];\n}\n\n@CCCommand(ZWaveProtocolCommand.TransferRangeInformation)\nexport class ZWaveProtocolCCTransferRangeInformation extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCTransferRangeInformationOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.sequenceNumber = options.sequenceNumber;\n\t\tthis.testedNodeId = options.testedNodeId;\n\t\tthis.neighborNodeIds = options.neighborNodeIds;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCTransferRangeInformation {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst sequenceNumber = raw.payload[0];\n\t\tconst testedNodeId = raw.payload[1];\n\t\tconst bitmaskLength = raw.payload[2];\n\n\t\tvalidatePayload(raw.payload.length >= 3 + bitmaskLength);\n\t\tconst neighborNodeIds = parseBitMask(\n\t\t\traw.payload.subarray(3, 3 + bitmaskLength),\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsequenceNumber,\n\t\t\ttestedNodeId,\n\t\t\tneighborNodeIds,\n\t\t});\n\t}\n\n\tpublic sequenceNumber: number;\n\tpublic testedNodeId: number;\n\tpublic neighborNodeIds: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tconst nodesBitmask = encodeBitMask(this.neighborNodeIds, MAX_NODES);\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([\n\t\t\t\tthis.sequenceNumber,\n\t\t\t\tthis.testedNodeId,\n\t\t\t\tnodesBitmask.length,\n\t\t\t]),\n\t\t\tnodesBitmask,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCTransferEndOptions {\n\tstatus: NetworkTransferStatus;\n}\n\n@CCCommand(ZWaveProtocolCommand.TransferEnd)\nexport class ZWaveProtocolCCTransferEnd extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCTransferEndOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.status = options.status;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCTransferEnd {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst status: NetworkTransferStatus = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tstatus,\n\t\t});\n\t}\n\n\tpublic status: NetworkTransferStatus;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.status]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCAssignReturnRouteOptions {\n\tdestinationNodeId: number;\n\trouteIndex: number;\n\trepeaters: number[];\n\tdestinationWakeUp: WakeUpTime;\n\tdestinationSpeed: ZWaveDataRate;\n}\n\n@CCCommand(ZWaveProtocolCommand.AssignReturnRoute)\nexport class ZWaveProtocolCCAssignReturnRoute extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCAssignReturnRouteOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.repeaters.length > MAX_REPEATERS) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`${this.constructor.name}: too many repeaters`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tthis.destinationNodeId = options.destinationNodeId;\n\t\tthis.routeIndex = options.routeIndex;\n\t\tthis.repeaters = options.repeaters;\n\t\tthis.destinationWakeUp = options.destinationWakeUp;\n\t\tthis.destinationSpeed = options.destinationSpeed;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCAssignReturnRoute {\n\t\tvalidatePayload(raw.payload.length >= 7);\n\t\tconst destinationNodeId = raw.payload[0];\n\t\tconst routeIndex = raw.payload[1] >>> 4;\n\t\tconst numRepeaters = raw.payload[1] & 0b1111;\n\t\tconst repeaters = [...raw.payload.subarray(2, 2 + numRepeaters)];\n\t\tconst speedAndWakeup = raw.payload[2 + numRepeaters];\n\t\tconst destinationSpeed = bitmask2DataRate(\n\t\t\t(speedAndWakeup >>> 3) & 0b111,\n\t\t);\n\t\tconst destinationWakeUp: WakeUpTime = (speedAndWakeup >>> 1) & 0b11;\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tdestinationNodeId,\n\t\t\trouteIndex,\n\t\t\trepeaters,\n\t\t\tdestinationSpeed,\n\t\t\tdestinationWakeUp,\n\t\t});\n\t}\n\n\tpublic destinationNodeId: number;\n\tpublic routeIndex: number;\n\tpublic repeaters: number[];\n\tpublic destinationWakeUp: WakeUpTime;\n\tpublic destinationSpeed: ZWaveDataRate;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tconst routeByte = (this.routeIndex << 4) | this.repeaters.length;\n\t\tconst speedMask = dataRate2Bitmask(this.destinationSpeed);\n\t\tconst speedByte = (speedMask << 3) | (this.destinationWakeUp << 1);\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.destinationNodeId,\n\t\t\trouteByte,\n\t\t\t...this.repeaters,\n\t\t\tspeedByte,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCNewNodeRegisteredOptions\n\textends NodeInformationFrame\n{\n\tnewNodeId: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.NewNodeRegistered)\nexport class ZWaveProtocolCCNewNodeRegistered extends ZWaveProtocolCC\n\timplements NodeInformationFrame\n{\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCNewNodeRegisteredOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.newNodeId = options.newNodeId;\n\t\tthis.basicDeviceClass = options.basicDeviceClass;\n\t\tthis.genericDeviceClass = options.genericDeviceClass;\n\t\tthis.specificDeviceClass = options.specificDeviceClass;\n\t\tthis.isListening = options.isListening;\n\t\tthis.isFrequentListening = options.isFrequentListening;\n\t\tthis.isRouting = options.isRouting;\n\t\tthis.supportedDataRates = options.supportedDataRates;\n\t\tthis.protocolVersion = options.protocolVersion;\n\t\tthis.optionalFunctionality = options.optionalFunctionality;\n\t\tthis.nodeType = options.nodeType;\n\t\tthis.supportsSecurity = options.supportsSecurity;\n\t\tthis.supportsBeaming = options.supportsBeaming;\n\t\tthis.supportedCCs = options.supportedCCs;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCNewNodeRegistered {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst newNodeId = raw.payload[0];\n\n\t\tconst nif = parseNodeInformationFrame(raw.payload.subarray(1));\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tnewNodeId,\n\t\t\t...nif,\n\t\t});\n\t}\n\n\tpublic newNodeId: number;\n\tpublic basicDeviceClass: BasicDeviceClass;\n\tpublic genericDeviceClass: number;\n\tpublic specificDeviceClass: number;\n\tpublic isListening: boolean;\n\tpublic isFrequentListening: FLiRS;\n\tpublic isRouting: boolean;\n\tpublic supportedDataRates: DataRate[];\n\tpublic protocolVersion: ProtocolVersion;\n\tpublic optionalFunctionality: boolean;\n\tpublic nodeType: NodeType;\n\tpublic supportsSecurity: boolean;\n\tpublic supportsBeaming: boolean;\n\tpublic supportedCCs: CommandClasses[];\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.newNodeId]),\n\t\t\tencodeNodeInformationFrame(this),\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCNewRangeRegisteredOptions {\n\ttestedNodeId: number;\n\tneighborNodeIds: number[];\n}\n\n@CCCommand(ZWaveProtocolCommand.NewRangeRegistered)\nexport class ZWaveProtocolCCNewRangeRegistered extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCNewRangeRegisteredOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.testedNodeId = options.testedNodeId;\n\t\tthis.neighborNodeIds = options.neighborNodeIds;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCNewRangeRegistered {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst testedNodeId = raw.payload[0];\n\t\tconst numNeighbors = raw.payload[1];\n\t\tconst neighborNodeIds = [\n\t\t\t...raw.payload.subarray(2, 2 + numNeighbors),\n\t\t];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttestedNodeId,\n\t\t\tneighborNodeIds,\n\t\t});\n\t}\n\n\tpublic testedNodeId: number;\n\tpublic neighborNodeIds: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tconst nodesBitmask = encodeBitMask(this.neighborNodeIds, MAX_NODES);\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.testedNodeId, nodesBitmask.length]),\n\t\t\tnodesBitmask,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCTransferNewPrimaryControllerCompleteOptions {\n\tgenericDeviceClass: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.TransferNewPrimaryControllerComplete)\nexport class ZWaveProtocolCCTransferNewPrimaryControllerComplete\n\textends ZWaveProtocolCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<\n\t\t\tZWaveProtocolCCTransferNewPrimaryControllerCompleteOptions\n\t\t>,\n\t) {\n\t\tsuper(options);\n\t\tthis.genericDeviceClass = options.genericDeviceClass;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCTransferNewPrimaryControllerComplete {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst genericDeviceClass = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgenericDeviceClass,\n\t\t});\n\t}\n\n\tpublic genericDeviceClass: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.genericDeviceClass]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n@CCCommand(ZWaveProtocolCommand.AutomaticControllerUpdateStart)\nexport class ZWaveProtocolCCAutomaticControllerUpdateStart\n\textends ZWaveProtocolCC\n{}\n\n// @publicAPI\nexport interface ZWaveProtocolCCSUCNodeIDOptions {\n\tsucNodeId: number;\n\tisSIS: boolean;\n}\n\n@CCCommand(ZWaveProtocolCommand.SUCNodeID)\nexport class ZWaveProtocolCCSUCNodeID extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCSUCNodeIDOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.sucNodeId = options.sucNodeId;\n\t\tthis.isSIS = options.isSIS;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCSUCNodeID {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst sucNodeId = raw.payload[0];\n\t\tconst capabilities = raw.payload[1] ?? 0;\n\t\tconst isSIS = !!(capabilities & 0b1);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsucNodeId,\n\t\t\tisSIS,\n\t\t});\n\t}\n\n\tpublic sucNodeId: number;\n\tpublic isSIS: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.sucNodeId, this.isSIS ? 0b1 : 0]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCSetSUCOptions {\n\tenableSIS: boolean;\n}\n\n@CCCommand(ZWaveProtocolCommand.SetSUC)\nexport class ZWaveProtocolCCSetSUC extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCSetSUCOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.enableSIS = options.enableSIS;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCSetSUC {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\t// Byte 0 must be 0x01 or ignored\n\t\tconst capabilities = raw.payload[1] ?? 0;\n\t\tconst enableSIS = !!(capabilities & 0b1);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tenableSIS,\n\t\t});\n\t}\n\n\tpublic enableSIS: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([0x01, this.enableSIS ? 0b1 : 0]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCSetSUCAckOptions {\n\taccepted: boolean;\n\tisSIS: boolean;\n}\n\n@CCCommand(ZWaveProtocolCommand.SetSUCAck)\nexport class ZWaveProtocolCCSetSUCAck extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCSetSUCAckOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.accepted = options.accepted;\n\t\tthis.isSIS = options.isSIS;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCSetSUCAck {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst accepted = raw.payload[0] === 0x01;\n\t\tconst capabilities = raw.payload[1] ?? 0;\n\t\tconst isSIS = !!(capabilities & 0b1);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\taccepted,\n\t\t\tisSIS,\n\t\t});\n\t}\n\n\tpublic accepted: boolean;\n\tpublic isSIS: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.accepted ? 0x01 : 0x00,\n\t\t\tthis.isSIS ? 0b1 : 0,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n@CCCommand(ZWaveProtocolCommand.AssignSUCReturnRoute)\nexport class ZWaveProtocolCCAssignSUCReturnRoute\n\textends ZWaveProtocolCCAssignReturnRoute\n{}\n\n// @publicAPI\nexport interface ZWaveProtocolCCStaticRouteRequestOptions {\n\tnodeIds: number[];\n}\n\n@CCCommand(ZWaveProtocolCommand.StaticRouteRequest)\nexport class ZWaveProtocolCCStaticRouteRequest extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCStaticRouteRequestOptions>,\n\t) {\n\t\tsuper(options);\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.nodeIds = options.nodeIds;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCStaticRouteRequest {\n\t\tvalidatePayload(raw.payload.length >= 5);\n\t\tconst nodeIds = [...raw.payload.subarray(0, 5)].filter(\n\t\t\t(id) => id > 0 && id <= MAX_NODES,\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tnodeIds,\n\t\t});\n\t}\n\n\tpublic nodeIds: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.alloc(5, 0);\n\t\tfor (let i = 0; i < this.nodeIds.length && i < 5; i++) {\n\t\t\tthis.payload[i] = this.nodeIds[i];\n\t\t}\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCLostOptions {\n\tlostNodeId: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.Lost)\nexport class ZWaveProtocolCCLost extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCLostOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.lostNodeId = options.lostNodeId;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): ZWaveProtocolCCLost {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst lostNodeId = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tlostNodeId,\n\t\t});\n\t}\n\n\tpublic lostNodeId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.lostNodeId]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCAcceptLostOptions {\n\taccepted: boolean;\n}\n\n@CCCommand(ZWaveProtocolCommand.AcceptLost)\nexport class ZWaveProtocolCCAcceptLost extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCAcceptLostOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.accepted = options.accepted;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCAcceptLost {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tvalidatePayload(\n\t\t\traw.payload[0] === 0x04 || raw.payload[0] === 0x05,\n\t\t);\n\t\tconst accepted = raw.payload[0] === 0x05;\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\taccepted,\n\t\t});\n\t}\n\n\tpublic accepted: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.accepted ? 0x05 : 0x04]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCNOPPowerOptions {\n\tpowerDampening: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.NOPPower)\nexport class ZWaveProtocolCCNOPPower extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCNOPPowerOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.powerDampening < 0 || options.powerDampening > 14) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`${this.constructor.name}: power dampening must be between 0 and 14 dBm!`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.powerDampening = options.powerDampening;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCNOPPower {\n\t\tlet powerDampening;\n\n\t\tif (raw.payload.length >= 2) {\n\t\t\t// Ignore byte 0\n\t\t\tpowerDampening = raw.payload[1];\n\t\t} else if (raw.payload.length === 1) {\n\t\t\tpowerDampening = [\n\t\t\t\t0xf0,\n\t\t\t\t0xc8,\n\t\t\t\t0xa7,\n\t\t\t\t0x91,\n\t\t\t\t0x77,\n\t\t\t\t0x67,\n\t\t\t\t0x60,\n\t\t\t\t0x46,\n\t\t\t\t0x38,\n\t\t\t\t0x35,\n\t\t\t\t0x32,\n\t\t\t\t0x30,\n\t\t\t\t0x24,\n\t\t\t\t0x22,\n\t\t\t\t0x20,\n\t\t\t].indexOf(raw.payload[0]);\n\t\t\tif (powerDampening === -1) powerDampening = 0;\n\t\t} else {\n\t\t\tvalidatePayload.fail(\"Invalid payload length!\");\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tpowerDampening,\n\t\t});\n\t}\n\n\t// Power dampening in (negative) dBm. A value of 2 means -2 dBm.\n\tpublic powerDampening: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([0, this.powerDampening]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCReservedIDsOptions {\n\treservedNodeIDs: number[];\n}\n\n@CCCommand(ZWaveProtocolCommand.ReservedIDs)\nexport class ZWaveProtocolCCReservedIDs extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCReservedIDsOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.reservedNodeIDs = options.reservedNodeIDs;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCReservedIDs {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst numNodeIDs = raw.payload[0];\n\t\tvalidatePayload(raw.payload.length >= 1 + numNodeIDs);\n\t\tconst reservedNodeIDs = [\n\t\t\t...raw.payload.subarray(1, 1 + numNodeIDs),\n\t\t];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\treservedNodeIDs,\n\t\t});\n\t}\n\n\tpublic reservedNodeIDs: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.reservedNodeIDs.length,\n\t\t\t...this.reservedNodeIDs,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCReserveNodeIDsOptions {\n\tnumNodeIDs: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.ReserveNodeIDs)\n@expectedCCResponse(ZWaveProtocolCCReservedIDs)\nexport class ZWaveProtocolCCReserveNodeIDs extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCReserveNodeIDsOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.numNodeIDs = options.numNodeIDs;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCReserveNodeIDs {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst numNodeIDs = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tnumNodeIDs,\n\t\t});\n\t}\n\n\tpublic numNodeIDs: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.numNodeIDs]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCNodesExistReplyOptions {\n\tnodeMaskType: number;\n\tnodeListUpdated: boolean;\n}\n\n@CCCommand(ZWaveProtocolCommand.NodesExistReply)\nexport class ZWaveProtocolCCNodesExistReply extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCNodesExistReplyOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.nodeMaskType = options.nodeMaskType;\n\t\tthis.nodeListUpdated = options.nodeListUpdated;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCNodesExistReply {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst nodeMaskType = raw.payload[0];\n\t\tconst nodeListUpdated = raw.payload[1] === 0x01;\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tnodeMaskType,\n\t\t\tnodeListUpdated,\n\t\t});\n\t}\n\n\tpublic nodeMaskType: number;\n\tpublic nodeListUpdated: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.nodeMaskType,\n\t\t\tthis.nodeListUpdated ? 0x01 : 0x00,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\nfunction testResponseForZWaveProtocolNodesExist(\n\tsent: ZWaveProtocolCCNodesExist,\n\treceived: ZWaveProtocolCCNodesExistReply,\n) {\n\treturn received.nodeMaskType === sent.nodeMaskType;\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCNodesExistOptions {\n\tnodeMaskType: number;\n\tnodeIDs: number[];\n}\n\n@CCCommand(ZWaveProtocolCommand.NodesExist)\n@expectedCCResponse(\n\tZWaveProtocolCCNodesExistReply,\n\ttestResponseForZWaveProtocolNodesExist,\n)\nexport class ZWaveProtocolCCNodesExist extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCNodesExistOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.nodeMaskType = options.nodeMaskType;\n\t\tthis.nodeIDs = options.nodeIDs;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCNodesExist {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst nodeMaskType = raw.payload[0];\n\t\tconst numNodeIDs = raw.payload[1];\n\t\tvalidatePayload(raw.payload.length >= 2 + numNodeIDs);\n\t\tconst nodeIDs = [...raw.payload.subarray(2, 2 + numNodeIDs)];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tnodeMaskType,\n\t\t\tnodeIDs,\n\t\t});\n\t}\n\n\tpublic nodeMaskType: number;\n\tpublic nodeIDs: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.nodeMaskType,\n\t\t\tthis.nodeIDs.length,\n\t\t\t...this.nodeIDs,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCSetNWIModeOptions {\n\tenabled: boolean;\n\ttimeoutMinutes?: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.SetNWIMode)\nexport class ZWaveProtocolCCSetNWIMode extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCSetNWIModeOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.enabled = options.enabled;\n\t\tthis.timeoutMinutes = options.timeoutMinutes;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCSetNWIMode {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst enabled = raw.payload[0] === 0x01;\n\t\tconst timeoutMinutes: number | undefined = raw.payload[1] || undefined;\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tenabled,\n\t\t\ttimeoutMinutes,\n\t\t});\n\t}\n\n\tpublic enabled: boolean;\n\tpublic timeoutMinutes?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.enabled ? 0x01 : 0x00,\n\t\t\tthis.timeoutMinutes ?? 0x00,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n@CCCommand(ZWaveProtocolCommand.ExcludeRequest)\nexport class ZWaveProtocolCCExcludeRequest\n\textends ZWaveProtocolCCNodeInformationFrame\n{}\n\n// @publicAPI\nexport interface ZWaveProtocolCCAssignReturnRoutePriorityOptions {\n\ttargetNodeId: number;\n\trouteNumber: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.AssignReturnRoutePriority)\nexport class ZWaveProtocolCCAssignReturnRoutePriority extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCAssignReturnRoutePriorityOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.targetNodeId = options.targetNodeId;\n\t\tthis.routeNumber = options.routeNumber;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCAssignReturnRoutePriority {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst targetNodeId = raw.payload[0];\n\t\tconst routeNumber = raw.payload[1];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttargetNodeId,\n\t\t\trouteNumber,\n\t\t});\n\t}\n\n\tpublic targetNodeId: number;\n\tpublic routeNumber: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.targetNodeId, this.routeNumber]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n@CCCommand(ZWaveProtocolCommand.AssignSUCReturnRoutePriority)\nexport class ZWaveProtocolCCAssignSUCReturnRoutePriority\n\textends ZWaveProtocolCCAssignReturnRoutePriority\n{}\n\n// @publicAPI\nexport interface ZWaveProtocolCCSmartStartIncludedNodeInformationOptions {\n\tnwiHomeId: Uint8Array;\n}\n\n@CCCommand(ZWaveProtocolCommand.SmartStartIncludedNodeInformation)\nexport class ZWaveProtocolCCSmartStartIncludedNodeInformation\n\textends ZWaveProtocolCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<\n\t\t\tZWaveProtocolCCSmartStartIncludedNodeInformationOptions\n\t\t>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.nwiHomeId.length !== 4) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`nwiHomeId must have length 4`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.nwiHomeId = options.nwiHomeId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCSmartStartIncludedNodeInformation {\n\t\tvalidatePayload(raw.payload.length >= 4);\n\t\tconst nwiHomeId = raw.payload.subarray(0, 4);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tnwiHomeId,\n\t\t});\n\t}\n\n\tpublic nwiHomeId: Uint8Array;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from(this.nwiHomeId);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n@CCCommand(ZWaveProtocolCommand.SmartStartPrime)\nexport class ZWaveProtocolCCSmartStartPrime\n\textends ZWaveProtocolCCNodeInformationFrame\n{}\n\n@CCCommand(ZWaveProtocolCommand.SmartStartInclusionRequest)\nexport class ZWaveProtocolCCSmartStartInclusionRequest\n\textends ZWaveProtocolCCNodeInformationFrame\n{}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kBAsBO;AAEP,kBAAsB;AACtB,0BAAyC;AACzC,oCAKO;AACP,mBAKO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEP,IAAK;CAAL,SAAKA,kBAAe;AACnB,EAAAA,iBAAAA,iBAAA,KAAA,IAAA,CAAA,IAAA;AACA,EAAAA,iBAAAA,iBAAA,KAAA,IAAA,CAAA,IAAA;AACA,EAAAA,iBAAAA,iBAAA,MAAA,IAAA,CAAA,IAAA;AACD,GAJK,oBAAA,kBAAe,CAAA,EAAA;AAMpB,SAAS,iBAAiB,UAAuB;AAChD,SAAO,aAAa,0BAAc,MAAM,IACrC,gBAAgB,MAAM,IACtB,aAAa,0BAAc,KAAK,IAChC,gBAAgB,KAAK,IACrB,gBAAgB,KAAK;AACzB;AAEA,SAAS,iBAAiB,MAAqB;AAC9C,SAAO,SAAS,gBAAgB,MAAM,IACnC,0BAAc,MAAM,IACpB,SAAS,gBAAgB,KAAK,IAC9B,0BAAc,KAAK,IACnB,0BAAc,KAAK;AACvB;IAIa,mBAAe,MAAA;8BAF3B,4CAAa,2BAAe,iBAAiB,CAAC,OAC9C,kDAAmB,CAAC,CAAC;;;;oBACe;uCAAA,YAAY;;;;;;AAAjD,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;;;;IAWA,uCAAmC,MAAA;8BAD/C,yCAAU,kCAAqB,oBAAoB,CAAC;;;;oBACI;2DAAA,YAAe;;;;;;AAAxE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IAGZ,YACC,SAAgE;AAEhE,YAAM,OAAO;AAEb,WAAK,mBAAmB,QAAQ;AAChC,WAAK,qBAAqB,QAAQ;AAClC,WAAK,sBAAsB,QAAQ;AACnC,WAAK,cAAc,QAAQ;AAC3B,WAAK,sBAAsB,QAAQ;AACnC,WAAK,YAAY,QAAQ;AACzB,WAAK,qBAAqB,QAAQ;AAClC,WAAK,kBAAkB,QAAQ;AAC/B,WAAK,wBAAwB,QAAQ;AACrC,WAAK,WAAW,QAAQ;AACxB,WAAK,mBAAmB,QAAQ;AAChC,WAAK,kBAAkB,QAAQ;AAC/B,WAAK,eAAe,QAAQ;IAC7B;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,YAAM,UAAM,uCAA0B,IAAI,OAAO;AAEjD,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ,GAAG;OACH;IACF;IAEO;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA,UAAU,KAAsB;AACtC,WAAK,cAAU,wCAA2B,IAAI;AAC9C,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAKY,8CAA0C,MAAA;8BAFtD,yCAAU,kCAAqB,2BAA2B,OAC1D,kDAAmB,mCAAmC,CAAC;;;;oBAE/C;kEAAA,YAAe;;;;;;AADxB,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;;;;IAWA,4BAAwB,MAAA;8BADpC,yCAAU,kCAAqB,SAAS,CAAC;;;;oBACI;gDAAA,YAAe;;;;;;AAA7D,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAqD;AAErD,YAAM,OAAO;AACb,WAAK,iBAAiB,QAAQ;AAC9B,WAAK,SAAS,QAAQ;IACvB;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,iBAAiB,IAAI,QAAQ,CAAC;AACpC,YAAM,SAAS,IAAI,QAAQ,aAAa,CAAC;AAEzC,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;OACA;IACF;IAEO;IACA;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,IAAI,kBAAM,CAAC;AAC1B,WAAK,QAAQ,CAAC,IAAI,KAAK;AACvB,WAAK,QAAQ,cAAc,KAAK,QAAQ,CAAC;AACzC,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAWY,mCAA+B,MAAA;8BAD3C,yCAAU,kCAAqB,gBAAgB,CAAC;;;;oBACI;uDAAA,YAAe;;;;;;AAApE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAA4D;AAE5D,YAAM,OAAO;AACb,WAAK,mBAAmB,QAAQ;AAChC,WAAK,aAAa,QAAQ;AAC1B,WAAK,WAAW,QAAQ,YAAY,0BAAc,KAAK;IACxD;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,eAAe,IAAI,QAAQ,CAAC,IAAI;AACtC,YAAM,gBAAgB,IAAI,QAAQ,CAAC,IAAI;AAEvC,uCAAgB,IAAI,QAAQ,UAAU,IAAI,aAAa;AACvD,YAAM,uBAAmB,0BACxB,IAAI,QAAQ,SAAS,GAAG,IAAI,aAAa,CAAC;AAE3C,YAAM,OAAO,IAAI,QAAQ,SAAS,IAAI,aAAa;AAEnD,UAAI;AACJ,UAAI;AACJ,UAAI,cAAc;AACjB,yCAAgB,KAAK,UAAU,CAAC;AAChC,YAAI,KAAK,WAAW,GAAG;AACtB,qBAAW,KAAK,CAAC,IAAI;AACrB,uBAAa,wBAAW;QACzB,WAAW,KAAK,WAAW,GAAG;AAC7B,2BAAa,8BAAgB,KAAK,CAAC,CAAC;AACpC,qBAAW,KAAK,CAAC,IAAI;QACtB,OAAO;AACN,sCAAgB,KAAK,wBAAwB;QAC9C;MACD,WAAW,KAAK,UAAU,GAAG;AAC5B,yBAAa,8BAAgB,KAAK,CAAC,CAAC;AACpC,mBAAW,0BAAc,KAAK;MAC/B,OAAO;AACN,qBAAa,wBAAW;AACxB,mBAAW,0BAAc,KAAK;MAC/B;AAEA,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;QACA;OACA;IACF;IAEO;IACA;IACA;IAEA,UAAU,KAAsB;AACtC,YAAM,mBAAe,2BAAc,KAAK,kBAAkB,qBAAS;AACnE,YAAM,iBAAiB,MAAc,aAAa;AAClD,WAAK,UAAU,kBAAM,OAAO;QAC3B,kBAAM,KAAK,CAAC,cAAc,CAAC;QAC3B;QACA,kBAAM,KAAK,CAAC,KAAK,YAAY,KAAK,QAAQ,CAAC;OAC3C;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAUY,4BAAwB,MAAA;8BADpC,yCAAU,kCAAqB,SAAS,CAAC;;;;oBACI;gDAAA,YAAe;;;;;;AAA7D,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAqD;AAErD,YAAM,OAAO;AACb,WAAK,kBAAkB,QAAQ;AAC/B,WAAK,aAAa,QAAQ;IAC3B;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,gBAAgB,IAAI,QAAQ,CAAC,IAAI;AAEvC,uCAAgB,IAAI,QAAQ,UAAU,IAAI,aAAa;AACvD,YAAM,sBAAkB,0BACvB,IAAI,QAAQ,SAAS,GAAG,IAAI,aAAa,CAAC;AAG3C,UAAI;AACJ,UAAI,IAAI,QAAQ,UAAU,IAAI,eAAe;AAC5C,yBAAa,8BACZ,IAAI,QAAQ,IAAI,aAAa,CAAC;MAEhC;AAEA,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;OACA;IACF;IAEO;IACA;IAEA,UAAU,KAAsB;AACtC,YAAM,mBAAe,2BAAc,KAAK,iBAAiB,qBAAS;AAClE,WAAK,UAAU,kBAAM,OAAO;QAC3B,kBAAM,KAAK,CAAC,aAAa,MAAM,CAAC;QAChC;QACA,KAAK,cAAc,SAChB,kBAAM,KAAK,CAAC,KAAK,UAAU,CAAC,IAC5B,IAAI,kBAAK;OACZ;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAKY,kCAA8B,MAAA;8BAF1C,yCAAU,kCAAqB,eAAe,OAC9C,kDAAmB,wBAAwB,CAAC;;;;oBACO;sDAAA,YAAe;;;;;;AAAnE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;;;;IAQA,kCAA8B,MAAA;8BAD1C,yCAAU,kCAAqB,eAAe,CAAC;;;;oBACI;sDAAA,YAAe;;;;;;AAAnE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAA2D;AAE3D,YAAM,OAAO;AACb,WAAK,iBAAiB,QAAQ;IAC/B;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,iBAAiB,IAAI,QAAQ,CAAC;AAEpC,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;OACA;IACF;IAEO;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK,CAAC,KAAK,cAAc,CAAC;AAC/C,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAWY,uCAAmC,MAAA;8BAD/C,yCAAU,kCAAqB,oBAAoB,CAAC;;;;oBACI;2DAAA,YAAe;;;;;;AAAxE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAgE;AAEhE,YAAM,OAAO;AACb,UAAI,QAAQ,eAAe,QAAQ,aAAa;AAC/C,cAAM,IAAI,uBACT,GAAG,KAAK,YAAY,IAAI,iEACxB,4BAAgB,gBAAgB;MAElC;AACA,WAAK,cAAc,QAAQ;AAC3B,WAAK,cAAc,QAAQ;AAC3B,WAAK,cAAc,QAAQ;IAC5B;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,SAAS,IAAI,QAAQ,CAAC;AAC5B,YAAM,cAAc,CAAC,EAAE,SAAS;AAChC,YAAM,cAAc,CAAC,EAAE,SAAS;AAChC,YAAM,cAAc,CAAC,EAAE,SAAS;AAEhC,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;QACA;OACA;IACF;IAEO;IACA;IACA;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK;SACxB,KAAK,cAAc,IAAS,MAC1B,KAAK,cAAc,IAAS,MAC5B,KAAK,cAAc,IAAS;OAC/B;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAYY,0CAAsC,MAAA;8BADlD,yCAAU,kCAAqB,uBAAuB,CAAC;;;;oBACI;8DAAA,YAAe;;;;;;AAA3E,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IAGZ,YACC,SAAmE;AAEnE,YAAM,OAAO;AAEb,WAAK,iBAAiB,QAAQ;AAC9B,WAAK,eAAe,QAAQ;AAE5B,WAAK,mBAAmB,QAAQ;AAChC,WAAK,qBAAqB,QAAQ;AAClC,WAAK,sBAAsB,QAAQ;AACnC,WAAK,cAAc,QAAQ;AAC3B,WAAK,sBAAsB,QAAQ;AACnC,WAAK,YAAY,QAAQ;AACzB,WAAK,qBAAqB,QAAQ;AAClC,WAAK,kBAAkB,QAAQ;AAC/B,WAAK,wBAAwB,QAAQ;AACrC,WAAK,WAAW,QAAQ;AACxB,WAAK,mBAAmB,QAAQ;AAChC,WAAK,kBAAkB,QAAQ;IAChC;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,iBAAiB,IAAI,QAAQ,CAAC;AACpC,YAAM,eAAe,IAAI,QAAQ,CAAC;AAElC,YAAM,EAAE,KAAI,QAAK,iDAChB,IAAI,QAAQ,SAAS,CAAC,CAAC;AAGxB,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;QACA,GAAG;OACH;IACF;IAEO;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,OAAO;QAC3B,kBAAM,KAAK,CAAC,KAAK,gBAAgB,KAAK,YAAY,CAAC;YACnD,kDAAqC,IAAI;OACzC;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAWY,2CAAuC,MAAA;8BADnD,yCAAU,kCAAqB,wBAAwB,CAAC;;;;oBACI;+DAAA,YAAe;;;;;;AAA5E,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAoE;AAEpE,YAAM,OAAO;AACb,WAAK,iBAAiB,QAAQ;AAC9B,WAAK,eAAe,QAAQ;AAC5B,WAAK,kBAAkB,QAAQ;IAChC;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,iBAAiB,IAAI,QAAQ,CAAC;AACpC,YAAM,eAAe,IAAI,QAAQ,CAAC;AAClC,YAAM,gBAAgB,IAAI,QAAQ,CAAC;AAEnC,uCAAgB,IAAI,QAAQ,UAAU,IAAI,aAAa;AACvD,YAAM,sBAAkB,0BACvB,IAAI,QAAQ,SAAS,GAAG,IAAI,aAAa,CAAC;AAG3C,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;QACA;OACA;IACF;IAEO;IACA;IACA;IAEA,UAAU,KAAsB;AACtC,YAAM,mBAAe,2BAAc,KAAK,iBAAiB,qBAAS;AAClE,WAAK,UAAU,kBAAM,OAAO;QAC3B,kBAAM,KAAK;UACV,KAAK;UACL,KAAK;UACL,aAAa;SACb;QACD;OACA;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IASY,8BAA0B,MAAA;8BADtC,yCAAU,kCAAqB,WAAW,CAAC;;;;oBACI;kDAAA,YAAe;;;;;;AAA/D,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAuD;AAEvD,YAAM,OAAO;AACb,WAAK,SAAS,QAAQ;IACvB;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,SAAgC,IAAI,QAAQ,CAAC;AAEnD,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;OACA;IACF;IAEO;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK,CAAC,KAAK,MAAM,CAAC;AACvC,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAaY,oCAAgC,MAAA;8BAD5C,yCAAU,kCAAqB,iBAAiB,CAAC;;;;oBACI;wDAAA,YAAe;;;;;;AAArE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAA6D;AAE7D,YAAM,OAAO;AACb,UAAI,QAAQ,UAAU,SAAS,2BAAe;AAC7C,cAAM,IAAI,uBACT,GAAG,KAAK,YAAY,IAAI,wBACxB,4BAAgB,gBAAgB;MAElC;AAEA,WAAK,oBAAoB,QAAQ;AACjC,WAAK,aAAa,QAAQ;AAC1B,WAAK,YAAY,QAAQ;AACzB,WAAK,oBAAoB,QAAQ;AACjC,WAAK,mBAAmB,QAAQ;IACjC;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,oBAAoB,IAAI,QAAQ,CAAC;AACvC,YAAM,aAAa,IAAI,QAAQ,CAAC,MAAM;AACtC,YAAM,eAAe,IAAI,QAAQ,CAAC,IAAI;AACtC,YAAM,YAAY,CAAC,GAAG,IAAI,QAAQ,SAAS,GAAG,IAAI,YAAY,CAAC;AAC/D,YAAM,iBAAiB,IAAI,QAAQ,IAAI,YAAY;AACnD,YAAM,mBAAmB,iBACvB,mBAAmB,IAAK,CAAK;AAE/B,YAAM,oBAAiC,mBAAmB,IAAK;AAE/D,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;QACA;QACA;QACA;OACA;IACF;IAEO;IACA;IACA;IACA;IACA;IAEA,UAAU,KAAsB;AACtC,YAAM,YAAa,KAAK,cAAc,IAAK,KAAK,UAAU;AAC1D,YAAM,YAAY,iBAAiB,KAAK,gBAAgB;AACxD,YAAM,YAAa,aAAa,IAAM,KAAK,qBAAqB;AAChE,WAAK,UAAU,kBAAM,KAAK;QACzB,KAAK;QACL;QACA,GAAG,KAAK;QACR;OACA;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAWY,oCAAgC,MAAA;8BAD5C,yCAAU,kCAAqB,iBAAiB,CAAC;;;;oBACI;wDAAA,YAAe;;;;;;AAArE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IAGZ,YACC,SAA6D;AAE7D,YAAM,OAAO;AAEb,WAAK,YAAY,QAAQ;AACzB,WAAK,mBAAmB,QAAQ;AAChC,WAAK,qBAAqB,QAAQ;AAClC,WAAK,sBAAsB,QAAQ;AACnC,WAAK,cAAc,QAAQ;AAC3B,WAAK,sBAAsB,QAAQ;AACnC,WAAK,YAAY,QAAQ;AACzB,WAAK,qBAAqB,QAAQ;AAClC,WAAK,kBAAkB,QAAQ;AAC/B,WAAK,wBAAwB,QAAQ;AACrC,WAAK,WAAW,QAAQ;AACxB,WAAK,mBAAmB,QAAQ;AAChC,WAAK,kBAAkB,QAAQ;AAC/B,WAAK,eAAe,QAAQ;IAC7B;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,YAAY,IAAI,QAAQ,CAAC;AAE/B,YAAM,UAAM,uCAA0B,IAAI,QAAQ,SAAS,CAAC,CAAC;AAE7D,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA,GAAG;OACH;IACF;IAEO;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IACA;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,OAAO;QAC3B,kBAAM,KAAK,CAAC,KAAK,SAAS,CAAC;YAC3B,wCAA2B,IAAI;OAC/B;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAUY,qCAAiC,MAAA;8BAD7C,yCAAU,kCAAqB,kBAAkB,CAAC;;;;oBACI;yDAAA,YAAe;;;;;;AAAtE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAA8D;AAE9D,YAAM,OAAO;AACb,WAAK,eAAe,QAAQ;AAC5B,WAAK,kBAAkB,QAAQ;IAChC;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,eAAe,IAAI,QAAQ,CAAC;AAClC,YAAM,eAAe,IAAI,QAAQ,CAAC;AAClC,YAAM,kBAAkB;QACvB,GAAG,IAAI,QAAQ,SAAS,GAAG,IAAI,YAAY;;AAG5C,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;OACA;IACF;IAEO;IACA;IAEA,UAAU,KAAsB;AACtC,YAAM,mBAAe,2BAAc,KAAK,iBAAiB,qBAAS;AAClE,WAAK,UAAU,kBAAM,OAAO;QAC3B,kBAAM,KAAK,CAAC,KAAK,cAAc,aAAa,MAAM,CAAC;QACnD;OACA;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IASY,uDAAmD,MAAA;8BAD/D,yCAAU,kCAAqB,oCAAoC,CAAC;;;;oBAE5D;2EAAA,YAAe;;;;;;AADxB,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IAGZ,YACC,SAEC;AAED,YAAM,OAAO;AACb,WAAK,qBAAqB,QAAQ;IACnC;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,qBAAqB,IAAI,QAAQ,CAAC;AAExC,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;OACA;IACF;IAEO;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK,CAAC,KAAK,kBAAkB,CAAC;AACnD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAIY,iDAA6C,MAAA;8BADzD,yCAAU,kCAAqB,8BAA8B,CAAC;;;;oBAEtD;qEAAA,YAAe;;;;;;AADxB,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;;;;IAWA,4BAAwB,MAAA;8BADpC,yCAAU,kCAAqB,SAAS,CAAC;;;;oBACI;gDAAA,YAAe;;;;;;AAA7D,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAqD;AAErD,YAAM,OAAO;AACb,WAAK,YAAY,QAAQ;AACzB,WAAK,QAAQ,QAAQ;IACtB;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,YAAY,IAAI,QAAQ,CAAC;AAC/B,YAAM,eAAe,IAAI,QAAQ,CAAC,KAAK;AACvC,YAAM,QAAQ,CAAC,EAAE,eAAe;AAEhC,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;OACA;IACF;IAEO;IACA;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK,CAAC,KAAK,WAAW,KAAK,QAAQ,IAAM,CAAC,CAAC;AAChE,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IASY,yBAAqB,MAAA;8BADjC,yCAAU,kCAAqB,MAAM,CAAC;;;;oBACI;6CAAA,YAAe;;;;;;AAA1D,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAkD;AAElD,YAAM,OAAO;AACb,WAAK,YAAY,QAAQ;IAC1B;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AAEvC,YAAM,eAAe,IAAI,QAAQ,CAAC,KAAK;AACvC,YAAM,YAAY,CAAC,EAAE,eAAe;AAEpC,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;OACA;IACF;IAEO;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK,CAAC,GAAM,KAAK,YAAY,IAAM,CAAC,CAAC;AAC1D,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAUY,4BAAwB,MAAA;8BADpC,yCAAU,kCAAqB,SAAS,CAAC;;;;oBACI;gDAAA,YAAe;;;;;;AAA7D,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAqD;AAErD,YAAM,OAAO;AACb,WAAK,WAAW,QAAQ;AACxB,WAAK,QAAQ,QAAQ;IACtB;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,WAAW,IAAI,QAAQ,CAAC,MAAM;AACpC,YAAM,eAAe,IAAI,QAAQ,CAAC,KAAK;AACvC,YAAM,QAAQ,CAAC,EAAE,eAAe;AAEhC,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;OACA;IACF;IAEO;IACA;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK;QACzB,KAAK,WAAW,IAAO;QACvB,KAAK,QAAQ,IAAM;OACnB;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAIY,uCAAmC,MAAA;8BAD/C,yCAAU,kCAAqB,oBAAoB,CAAC;;;;oBAE5C;2DAAA,YAAgC;;;;;;AADzC,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;;;;IAUA,qCAAiC,MAAA;8BAD7C,yCAAU,kCAAqB,kBAAkB,CAAC;;;;oBACI;yDAAA,YAAe;;;;;;AAAtE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAA8D;AAE9D,YAAM,OAAO;AACb,UAAI,QAAQ,QAAQ,KAAK,CAAC,MAAM,IAAI,KAAK,IAAI,qBAAS,GAAG;AACxD,cAAM,IAAI,uBACT,sCAAsC,qBAAS,KAC/C,4BAAgB,gBAAgB;MAElC;AACA,WAAK,UAAU,QAAQ;IACxB;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,UAAU,CAAC,GAAG,IAAI,QAAQ,SAAS,GAAG,CAAC,CAAC,EAAE,OAC/C,CAAC,OAAO,KAAK,KAAK,MAAM,qBAAS;AAGlC,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;OACA;IACF;IAEO;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,MAAM,GAAG,CAAC;AAC/B,eAAS,IAAI,GAAG,IAAI,KAAK,QAAQ,UAAU,IAAI,GAAG,KAAK;AACtD,aAAK,QAAQ,CAAC,IAAI,KAAK,QAAQ,CAAC;MACjC;AACA,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IASY,uBAAmB,MAAA;8BAD/B,yCAAU,kCAAqB,IAAI,CAAC;;;;oBACI;2CAAA,YAAe;;;;;;AAAxD,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAgD;AAEhD,YAAM,OAAO;AACb,WAAK,aAAa,QAAQ;IAC3B;IAEO,OAAO,KAAK,KAAY,KAAqB;AACnD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,aAAa,IAAI,QAAQ,CAAC;AAEhC,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;OACA;IACF;IAEO;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK,CAAC,KAAK,UAAU,CAAC;AAC3C,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IASY,6BAAyB,MAAA;8BADrC,yCAAU,kCAAqB,UAAU,CAAC;;;;oBACI;iDAAA,YAAe;;;;;;AAA9D,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAsD;AAEtD,YAAM,OAAO;AACb,WAAK,WAAW,QAAQ;IACzB;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,uCACC,IAAI,QAAQ,CAAC,MAAM,KAAQ,IAAI,QAAQ,CAAC,MAAM,CAAI;AAEnD,YAAM,WAAW,IAAI,QAAQ,CAAC,MAAM;AAEpC,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;OACA;IACF;IAEO;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK,CAAC,KAAK,WAAW,IAAO,CAAI,CAAC;AACvD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IASY,2BAAuB,MAAA;8BADnC,yCAAU,kCAAqB,QAAQ,CAAC;;;;oBACI;+CAAA,YAAe;;;;;;AAA5D,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAoD;AAEpD,YAAM,OAAO;AACb,UAAI,QAAQ,iBAAiB,KAAK,QAAQ,iBAAiB,IAAI;AAC9D,cAAM,IAAI,uBACT,GAAG,KAAK,YAAY,IAAI,mDACxB,4BAAgB,gBAAgB;MAElC;AACA,WAAK,iBAAiB,QAAQ;IAC/B;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,UAAI;AAEJ,UAAI,IAAI,QAAQ,UAAU,GAAG;AAE5B,yBAAiB,IAAI,QAAQ,CAAC;MAC/B,WAAW,IAAI,QAAQ,WAAW,GAAG;AACpC,yBAAiB;UAChB;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACA;UACC,QAAQ,IAAI,QAAQ,CAAC,CAAC;AACxB,YAAI,mBAAmB;AAAI,2BAAiB;MAC7C,OAAO;AACN,oCAAgB,KAAK,yBAAyB;MAC/C;AAEA,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;OACA;IACF;;IAGO;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK,CAAC,GAAG,KAAK,cAAc,CAAC;AAClD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IASY,8BAA0B,MAAA;8BADtC,yCAAU,kCAAqB,WAAW,CAAC;;;;oBACI;kDAAA,YAAe;;;;;;AAA/D,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAuD;AAEvD,YAAM,OAAO;AACb,WAAK,kBAAkB,QAAQ;IAChC;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,aAAa,IAAI,QAAQ,CAAC;AAChC,uCAAgB,IAAI,QAAQ,UAAU,IAAI,UAAU;AACpD,YAAM,kBAAkB;QACvB,GAAG,IAAI,QAAQ,SAAS,GAAG,IAAI,UAAU;;AAG1C,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;OACA;IACF;IAEO;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK;QACzB,KAAK,gBAAgB;QACrB,GAAG,KAAK;OACR;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAUY,iCAA6B,MAAA;8BAFzC,yCAAU,kCAAqB,cAAc,OAC7C,kDAAmB,0BAA0B,CAAC;;;;oBACI;qDAAA,YAAe;;;;;;AAAlE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAA0D;AAE1D,YAAM,OAAO;AACb,WAAK,aAAa,QAAQ;IAC3B;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,aAAa,IAAI,QAAQ,CAAC;AAEhC,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;OACA;IACF;IAEO;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK,CAAC,KAAK,UAAU,CAAC;AAC3C,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAUY,kCAA8B,MAAA;8BAD1C,yCAAU,kCAAqB,eAAe,CAAC;;;;oBACI;sDAAA,YAAe;;;;;;AAAnE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAA2D;AAE3D,YAAM,OAAO;AACb,WAAK,eAAe,QAAQ;AAC5B,WAAK,kBAAkB,QAAQ;IAChC;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,eAAe,IAAI,QAAQ,CAAC;AAClC,YAAM,kBAAkB,IAAI,QAAQ,CAAC,MAAM;AAE3C,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;OACA;IACF;IAEO;IACA;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK;QACzB,KAAK;QACL,KAAK,kBAAkB,IAAO;OAC9B;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;AAGD,SAAS,uCACR,MACA,UAAwC;AAExC,SAAO,SAAS,iBAAiB,KAAK;AACvC;IAaa,6BAAyB,MAAA;8BALrC,yCAAU,kCAAqB,UAAU,OACzC,kDACA,gCACA,sCAAsC,CACtC;;;;oBAC8C;iDAAA,YAAe;;;;;;AAA9D,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAsD;AAEtD,YAAM,OAAO;AACb,WAAK,eAAe,QAAQ;AAC5B,WAAK,UAAU,QAAQ;IACxB;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,eAAe,IAAI,QAAQ,CAAC;AAClC,YAAM,aAAa,IAAI,QAAQ,CAAC;AAChC,uCAAgB,IAAI,QAAQ,UAAU,IAAI,UAAU;AACpD,YAAM,UAAU,CAAC,GAAG,IAAI,QAAQ,SAAS,GAAG,IAAI,UAAU,CAAC;AAE3D,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;OACA;IACF;IAEO;IACA;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK;QACzB,KAAK;QACL,KAAK,QAAQ;QACb,GAAG,KAAK;OACR;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAUY,6BAAyB,MAAA;8BADrC,yCAAU,kCAAqB,UAAU,CAAC;;;;oBACI;iDAAA,YAAe;;;;;;AAA9D,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAsD;AAEtD,YAAM,OAAO;AACb,WAAK,UAAU,QAAQ;AACvB,WAAK,iBAAiB,QAAQ;IAC/B;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,UAAU,IAAI,QAAQ,CAAC,MAAM;AACnC,YAAM,iBAAqC,IAAI,QAAQ,CAAC,KAAK;AAE7D,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;OACA;IACF;IAEO;IACA;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK;QACzB,KAAK,UAAU,IAAO;QACtB,KAAK,kBAAkB;OACvB;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAIY,iCAA6B,MAAA;8BADzC,yCAAU,kCAAqB,cAAc,CAAC;;;;oBAEtC;qDAAA,YAAmC;;;;;;AAD5C,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;;;;IAWA,4CAAwC,MAAA;8BADpD,yCAAU,kCAAqB,yBAAyB,CAAC;;;;oBACI;gEAAA,YAAe;;;;;;AAA7E,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAqE;AAErE,YAAM,OAAO;AACb,WAAK,eAAe,QAAQ;AAC5B,WAAK,cAAc,QAAQ;IAC5B;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,eAAe,IAAI,QAAQ,CAAC;AAClC,YAAM,cAAc,IAAI,QAAQ,CAAC;AAEjC,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;OACA;IACF;IAEO;IACA;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK,CAAC,KAAK,cAAc,KAAK,WAAW,CAAC;AAC/D,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAIY,+CAA2C,MAAA;8BADvD,yCAAU,kCAAqB,4BAA4B,CAAC;;;;oBAEpD;mEAAA,YAAwC;;;;;;AADjD,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;;;;IAUA,oDAAgD,MAAA;8BAD5D,yCAAU,kCAAqB,iCAAiC,CAAC;;;;oBAEzD;wEAAA,YAAe;;;;;;AADxB,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IAGZ,YACC,SAEC;AAED,YAAM,OAAO;AACb,UAAI,QAAQ,UAAU,WAAW,GAAG;AACnC,cAAM,IAAI,uBACT,gCACA,4BAAgB,gBAAgB;MAElC;AACA,WAAK,YAAY,QAAQ;IAC1B;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,YAAY,IAAI,QAAQ,SAAS,GAAG,CAAC;AAE3C,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;OACA;IACF;IAEO;IAEA,UAAU,KAAsB;AACtC,WAAK,UAAU,kBAAM,KAAK,KAAK,SAAS;AACxC,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;IAIY,kCAA8B,MAAA;8BAD1C,yCAAU,kCAAqB,eAAe,CAAC;;;;oBAEvC;sDAAA,YAAmC;;;;;;AAD5C,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;;;;IAKA,6CAAyC,MAAA;8BADrD,yCAAU,kCAAqB,0BAA0B,CAAC;;;;oBAElD;iEAAA,YAAmC;;;;;;AAD5C,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;;;;",
4
+ "sourcesContent": ["import {\n\ttype BasicDeviceClass,\n\tCommandClasses,\n\ttype DataRate,\n\ttype FLiRS,\n\tMAX_NODES,\n\tMAX_REPEATERS,\n\ttype NodeInformationFrame,\n\ttype NodeProtocolInfoAndDeviceClass,\n\ttype NodeType,\n\ttype ProtocolVersion,\n\ttype WithAddress,\n\tZWaveDataRate,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tencodeBitMask,\n\tencodeNodeInformationFrame,\n\tencodeNodeProtocolInfoAndDeviceClass,\n\tparseBitMask,\n\tparseNodeInformationFrame,\n\tparseNodeProtocolInfoAndDeviceClass,\n\tvalidatePayload,\n} from \"@zwave-js/core\";\nimport type { CCEncodingContext, CCParsingContext } from \"@zwave-js/host\";\nimport { Bytes } from \"@zwave-js/shared/safe\";\nimport { type CCRaw, CommandClass } from \"../lib/CommandClass.js\";\nimport {\n\tCCCommand,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n} from \"../lib/CommandClassDecorators.js\";\nimport {\n\ttype NetworkTransferStatus,\n\tWakeUpTime,\n\tZWaveProtocolCommand,\n\tparseWakeUpTime,\n} from \"../lib/_Types.js\";\n\nenum DataRateBitmask {\n\t\"9k6\" = 0b001,\n\t\"40k\" = 0b010,\n\t\"100k\" = 0b100,\n}\n\nfunction dataRate2Bitmask(dataRate: ZWaveDataRate): DataRateBitmask {\n\treturn dataRate === ZWaveDataRate[\"100k\"]\n\t\t? DataRateBitmask[\"100k\"]\n\t\t: dataRate === ZWaveDataRate[\"40k\"]\n\t\t? DataRateBitmask[\"40k\"]\n\t\t: DataRateBitmask[\"9k6\"];\n}\n\nfunction bitmask2DataRate(mask: DataRateBitmask): ZWaveDataRate {\n\treturn mask === DataRateBitmask[\"100k\"]\n\t\t? ZWaveDataRate[\"100k\"]\n\t\t: mask === DataRateBitmask[\"40k\"]\n\t\t? ZWaveDataRate[\"40k\"]\n\t\t: ZWaveDataRate[\"9k6\"];\n}\n\n@commandClass(CommandClasses[\"Z-Wave Protocol\"])\n@implementedVersion(1)\nexport class ZWaveProtocolCC extends CommandClass {\n\tdeclare ccCommand: ZWaveProtocolCommand;\n}\n\n// @publicAPI\n// eslint-disable-next-line @typescript-eslint/no-empty-object-type\nexport interface ZWaveProtocolCCNodeInformationFrameOptions\n\textends NodeInformationFrame\n{}\n\n@CCCommand(ZWaveProtocolCommand.NodeInformationFrame)\nexport class ZWaveProtocolCCNodeInformationFrame extends ZWaveProtocolCC\n\timplements NodeInformationFrame\n{\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCNodeInformationFrameOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.basicDeviceClass = options.basicDeviceClass;\n\t\tthis.genericDeviceClass = options.genericDeviceClass;\n\t\tthis.specificDeviceClass = options.specificDeviceClass;\n\t\tthis.isListening = options.isListening;\n\t\tthis.isFrequentListening = options.isFrequentListening;\n\t\tthis.isRouting = options.isRouting;\n\t\tthis.supportedDataRates = options.supportedDataRates;\n\t\tthis.protocolVersion = options.protocolVersion;\n\t\tthis.optionalFunctionality = options.optionalFunctionality;\n\t\tthis.nodeType = options.nodeType;\n\t\tthis.supportsSecurity = options.supportsSecurity;\n\t\tthis.supportsBeaming = options.supportsBeaming;\n\t\tthis.supportedCCs = options.supportedCCs;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCNodeInformationFrame {\n\t\tconst nif = parseNodeInformationFrame(raw.payload);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t...nif,\n\t\t});\n\t}\n\n\tpublic basicDeviceClass: BasicDeviceClass;\n\tpublic genericDeviceClass: number;\n\tpublic specificDeviceClass: number;\n\tpublic isListening: boolean;\n\tpublic isFrequentListening: FLiRS;\n\tpublic isRouting: boolean;\n\tpublic supportedDataRates: DataRate[];\n\tpublic protocolVersion: ProtocolVersion;\n\tpublic optionalFunctionality: boolean;\n\tpublic nodeType: NodeType;\n\tpublic supportsSecurity: boolean;\n\tpublic supportsBeaming: boolean;\n\tpublic supportedCCs: CommandClasses[];\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = encodeNodeInformationFrame(this);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n@CCCommand(ZWaveProtocolCommand.RequestNodeInformationFrame)\n@expectedCCResponse(ZWaveProtocolCCNodeInformationFrame)\nexport class ZWaveProtocolCCRequestNodeInformationFrame\n\textends ZWaveProtocolCC\n{}\n\n// @publicAPI\nexport interface ZWaveProtocolCCAssignIDsOptions {\n\tassignedNodeId: number;\n\thomeId: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.AssignIDs)\nexport class ZWaveProtocolCCAssignIDs extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCAssignIDsOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.assignedNodeId = options.assignedNodeId;\n\t\tthis.homeId = options.homeId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCAssignIDs {\n\t\tvalidatePayload(raw.payload.length >= 5);\n\t\tconst assignedNodeId = raw.payload[0];\n\t\tconst homeId = raw.payload.readUInt32BE(1);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tassignedNodeId,\n\t\t\thomeId,\n\t\t});\n\t}\n\n\tpublic assignedNodeId: number;\n\tpublic homeId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = new Bytes(5);\n\t\tthis.payload[0] = this.assignedNodeId;\n\t\tthis.payload.writeUInt32BE(this.homeId, 1);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCFindNodesInRangeOptions {\n\tcandidateNodeIds: number[];\n\twakeUpTime: WakeUpTime;\n\tdataRate?: ZWaveDataRate;\n}\n\n@CCCommand(ZWaveProtocolCommand.FindNodesInRange)\nexport class ZWaveProtocolCCFindNodesInRange extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCFindNodesInRangeOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.candidateNodeIds = options.candidateNodeIds;\n\t\tthis.wakeUpTime = options.wakeUpTime;\n\t\tthis.dataRate = options.dataRate ?? ZWaveDataRate[\"9k6\"];\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCFindNodesInRange {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst speedPresent = raw.payload[0] & 0b1000_0000;\n\t\tconst bitmaskLength = raw.payload[0] & 0b0001_1111;\n\n\t\tvalidatePayload(raw.payload.length >= 1 + bitmaskLength);\n\t\tconst candidateNodeIds = parseBitMask(\n\t\t\traw.payload.subarray(1, 1 + bitmaskLength),\n\t\t);\n\t\tconst rest = raw.payload.subarray(1 + bitmaskLength);\n\n\t\tlet dataRate: ZWaveDataRate;\n\t\tlet wakeUpTime: WakeUpTime;\n\t\tif (speedPresent) {\n\t\t\tvalidatePayload(rest.length >= 1);\n\t\t\tif (rest.length === 1) {\n\t\t\t\tdataRate = rest[0] & 0b111;\n\t\t\t\twakeUpTime = WakeUpTime.None;\n\t\t\t} else if (rest.length === 2) {\n\t\t\t\twakeUpTime = parseWakeUpTime(rest[0]);\n\t\t\t\tdataRate = rest[1] & 0b111;\n\t\t\t} else {\n\t\t\t\tvalidatePayload.fail(\"Invalid payload length\");\n\t\t\t}\n\t\t} else if (rest.length >= 1) {\n\t\t\twakeUpTime = parseWakeUpTime(rest[0]);\n\t\t\tdataRate = ZWaveDataRate[\"9k6\"];\n\t\t} else {\n\t\t\twakeUpTime = WakeUpTime.None;\n\t\t\tdataRate = ZWaveDataRate[\"9k6\"];\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tcandidateNodeIds,\n\t\t\tdataRate,\n\t\t\twakeUpTime,\n\t\t});\n\t}\n\n\tpublic candidateNodeIds: number[];\n\tpublic wakeUpTime: WakeUpTime;\n\tpublic dataRate: ZWaveDataRate;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tconst nodesBitmask = encodeBitMask(this.candidateNodeIds, MAX_NODES);\n\t\tconst speedAndLength = 0b1000_0000 | nodesBitmask.length;\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([speedAndLength]),\n\t\t\tnodesBitmask,\n\t\t\tBytes.from([this.wakeUpTime, this.dataRate]),\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCRangeInfoOptions {\n\tneighborNodeIds: number[];\n\twakeUpTime?: WakeUpTime;\n}\n\n@CCCommand(ZWaveProtocolCommand.RangeInfo)\nexport class ZWaveProtocolCCRangeInfo extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCRangeInfoOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.neighborNodeIds = options.neighborNodeIds;\n\t\tthis.wakeUpTime = options.wakeUpTime;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCRangeInfo {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst bitmaskLength = raw.payload[0] & 0b0001_1111;\n\n\t\tvalidatePayload(raw.payload.length >= 1 + bitmaskLength);\n\t\tconst neighborNodeIds = parseBitMask(\n\t\t\traw.payload.subarray(1, 1 + bitmaskLength),\n\t\t);\n\n\t\tlet wakeUpTime: WakeUpTime | undefined;\n\t\tif (raw.payload.length >= 2 + bitmaskLength) {\n\t\t\twakeUpTime = parseWakeUpTime(\n\t\t\t\traw.payload[1 + bitmaskLength],\n\t\t\t);\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tneighborNodeIds,\n\t\t\twakeUpTime,\n\t\t});\n\t}\n\n\tpublic neighborNodeIds: number[];\n\tpublic wakeUpTime?: WakeUpTime;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tconst nodesBitmask = encodeBitMask(this.neighborNodeIds, MAX_NODES);\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([nodesBitmask.length]),\n\t\t\tnodesBitmask,\n\t\t\tthis.wakeUpTime != undefined\n\t\t\t\t? Bytes.from([this.wakeUpTime])\n\t\t\t\t: new Bytes(),\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n@CCCommand(ZWaveProtocolCommand.GetNodesInRange)\n@expectedCCResponse(ZWaveProtocolCCRangeInfo)\nexport class ZWaveProtocolCCGetNodesInRange extends ZWaveProtocolCC {}\n\n// @publicAPI\nexport interface ZWaveProtocolCCCommandCompleteOptions {\n\tsequenceNumber: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.CommandComplete)\nexport class ZWaveProtocolCCCommandComplete extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCCommandCompleteOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.sequenceNumber = options.sequenceNumber;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCCommandComplete {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst sequenceNumber = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsequenceNumber,\n\t\t});\n\t}\n\n\tpublic sequenceNumber: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.sequenceNumber]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCTransferPresentationOptions {\n\tsupportsNWI: boolean;\n\tincludeNode: boolean;\n\texcludeNode: boolean;\n}\n\n@CCCommand(ZWaveProtocolCommand.TransferPresentation)\nexport class ZWaveProtocolCCTransferPresentation extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCTransferPresentationOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.includeNode && options.excludeNode) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`${this.constructor.name}: the includeNode and excludeNode options cannot both be true`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.supportsNWI = options.supportsNWI;\n\t\tthis.includeNode = options.includeNode;\n\t\tthis.excludeNode = options.excludeNode;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCTransferPresentation {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst option = raw.payload[0];\n\t\tconst supportsNWI = !!(option & 0b0001);\n\t\tconst excludeNode = !!(option & 0b0010);\n\t\tconst includeNode = !!(option & 0b0100);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsupportsNWI,\n\t\t\texcludeNode,\n\t\t\tincludeNode,\n\t\t});\n\t}\n\n\tpublic supportsNWI: boolean;\n\tpublic includeNode: boolean;\n\tpublic excludeNode: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\t(this.supportsNWI ? 0b0001 : 0)\n\t\t\t| (this.excludeNode ? 0b0010 : 0)\n\t\t\t| (this.includeNode ? 0b0100 : 0),\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCTransferNodeInformationOptions\n\textends NodeProtocolInfoAndDeviceClass\n{\n\tsequenceNumber: number;\n\tsourceNodeId: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.TransferNodeInformation)\nexport class ZWaveProtocolCCTransferNodeInformation extends ZWaveProtocolCC\n\timplements NodeProtocolInfoAndDeviceClass\n{\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCTransferNodeInformationOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.sequenceNumber = options.sequenceNumber;\n\t\tthis.sourceNodeId = options.sourceNodeId;\n\n\t\tthis.basicDeviceClass = options.basicDeviceClass;\n\t\tthis.genericDeviceClass = options.genericDeviceClass;\n\t\tthis.specificDeviceClass = options.specificDeviceClass;\n\t\tthis.isListening = options.isListening;\n\t\tthis.isFrequentListening = options.isFrequentListening;\n\t\tthis.isRouting = options.isRouting;\n\t\tthis.supportedDataRates = options.supportedDataRates;\n\t\tthis.protocolVersion = options.protocolVersion;\n\t\tthis.optionalFunctionality = options.optionalFunctionality;\n\t\tthis.nodeType = options.nodeType;\n\t\tthis.supportsSecurity = options.supportsSecurity;\n\t\tthis.supportsBeaming = options.supportsBeaming;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCTransferNodeInformation {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst sequenceNumber = raw.payload[0];\n\t\tconst sourceNodeId = raw.payload[1];\n\n\t\tconst { info } = parseNodeProtocolInfoAndDeviceClass(\n\t\t\traw.payload.subarray(2),\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsequenceNumber,\n\t\t\tsourceNodeId,\n\t\t\t...info,\n\t\t});\n\t}\n\n\tpublic sequenceNumber: number;\n\tpublic sourceNodeId: number;\n\tpublic basicDeviceClass: BasicDeviceClass;\n\tpublic genericDeviceClass: number;\n\tpublic specificDeviceClass: number;\n\tpublic isListening: boolean;\n\tpublic isFrequentListening: FLiRS;\n\tpublic isRouting: boolean;\n\tpublic supportedDataRates: DataRate[];\n\tpublic protocolVersion: ProtocolVersion;\n\tpublic optionalFunctionality: boolean;\n\tpublic nodeType: NodeType;\n\tpublic supportsSecurity: boolean;\n\tpublic supportsBeaming: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.sequenceNumber, this.sourceNodeId]),\n\t\t\tencodeNodeProtocolInfoAndDeviceClass(this),\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCTransferRangeInformationOptions {\n\tsequenceNumber: number;\n\ttestedNodeId: number;\n\tneighborNodeIds: number[];\n}\n\n@CCCommand(ZWaveProtocolCommand.TransferRangeInformation)\nexport class ZWaveProtocolCCTransferRangeInformation extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCTransferRangeInformationOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.sequenceNumber = options.sequenceNumber;\n\t\tthis.testedNodeId = options.testedNodeId;\n\t\tthis.neighborNodeIds = options.neighborNodeIds;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCTransferRangeInformation {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst sequenceNumber = raw.payload[0];\n\t\tconst testedNodeId = raw.payload[1];\n\t\tconst bitmaskLength = raw.payload[2];\n\n\t\tvalidatePayload(raw.payload.length >= 3 + bitmaskLength);\n\t\tconst neighborNodeIds = parseBitMask(\n\t\t\traw.payload.subarray(3, 3 + bitmaskLength),\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsequenceNumber,\n\t\t\ttestedNodeId,\n\t\t\tneighborNodeIds,\n\t\t});\n\t}\n\n\tpublic sequenceNumber: number;\n\tpublic testedNodeId: number;\n\tpublic neighborNodeIds: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tconst nodesBitmask = encodeBitMask(this.neighborNodeIds, MAX_NODES);\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([\n\t\t\t\tthis.sequenceNumber,\n\t\t\t\tthis.testedNodeId,\n\t\t\t\tnodesBitmask.length,\n\t\t\t]),\n\t\t\tnodesBitmask,\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCTransferEndOptions {\n\tstatus: NetworkTransferStatus;\n}\n\n@CCCommand(ZWaveProtocolCommand.TransferEnd)\nexport class ZWaveProtocolCCTransferEnd extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCTransferEndOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.status = options.status;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCTransferEnd {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst status: NetworkTransferStatus = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tstatus,\n\t\t});\n\t}\n\n\tpublic status: NetworkTransferStatus;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.status]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCAssignReturnRouteOptions {\n\tdestinationNodeId: number;\n\trouteIndex: number;\n\trepeaters: number[];\n\tdestinationWakeUp: WakeUpTime;\n\tdestinationSpeed: ZWaveDataRate;\n}\n\n@CCCommand(ZWaveProtocolCommand.AssignReturnRoute)\nexport class ZWaveProtocolCCAssignReturnRoute extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCAssignReturnRouteOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.repeaters.length > MAX_REPEATERS) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`${this.constructor.name}: too many repeaters`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\n\t\tthis.destinationNodeId = options.destinationNodeId;\n\t\tthis.routeIndex = options.routeIndex;\n\t\tthis.repeaters = options.repeaters;\n\t\tthis.destinationWakeUp = options.destinationWakeUp;\n\t\tthis.destinationSpeed = options.destinationSpeed;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCAssignReturnRoute {\n\t\tvalidatePayload(raw.payload.length >= 7);\n\t\tconst destinationNodeId = raw.payload[0];\n\t\tconst routeIndex = raw.payload[1] >>> 4;\n\t\tconst numRepeaters = raw.payload[1] & 0b1111;\n\t\tconst repeaters = [...raw.payload.subarray(2, 2 + numRepeaters)];\n\t\tconst speedAndWakeup = raw.payload[2 + numRepeaters];\n\t\tconst destinationSpeed = bitmask2DataRate(\n\t\t\t(speedAndWakeup >>> 3) & 0b111,\n\t\t);\n\t\tconst destinationWakeUp: WakeUpTime = (speedAndWakeup >>> 1) & 0b11;\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tdestinationNodeId,\n\t\t\trouteIndex,\n\t\t\trepeaters,\n\t\t\tdestinationSpeed,\n\t\t\tdestinationWakeUp,\n\t\t});\n\t}\n\n\tpublic destinationNodeId: number;\n\tpublic routeIndex: number;\n\tpublic repeaters: number[];\n\tpublic destinationWakeUp: WakeUpTime;\n\tpublic destinationSpeed: ZWaveDataRate;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tconst routeByte = (this.routeIndex << 4) | this.repeaters.length;\n\t\tconst speedMask = dataRate2Bitmask(this.destinationSpeed);\n\t\tconst speedByte = (speedMask << 3) | (this.destinationWakeUp << 1);\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.destinationNodeId,\n\t\t\trouteByte,\n\t\t\t...this.repeaters,\n\t\t\tspeedByte,\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCNewNodeRegisteredOptions\n\textends NodeInformationFrame\n{\n\tnewNodeId: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.NewNodeRegistered)\nexport class ZWaveProtocolCCNewNodeRegistered extends ZWaveProtocolCC\n\timplements NodeInformationFrame\n{\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCNewNodeRegisteredOptions>,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.newNodeId = options.newNodeId;\n\t\tthis.basicDeviceClass = options.basicDeviceClass;\n\t\tthis.genericDeviceClass = options.genericDeviceClass;\n\t\tthis.specificDeviceClass = options.specificDeviceClass;\n\t\tthis.isListening = options.isListening;\n\t\tthis.isFrequentListening = options.isFrequentListening;\n\t\tthis.isRouting = options.isRouting;\n\t\tthis.supportedDataRates = options.supportedDataRates;\n\t\tthis.protocolVersion = options.protocolVersion;\n\t\tthis.optionalFunctionality = options.optionalFunctionality;\n\t\tthis.nodeType = options.nodeType;\n\t\tthis.supportsSecurity = options.supportsSecurity;\n\t\tthis.supportsBeaming = options.supportsBeaming;\n\t\tthis.supportedCCs = options.supportedCCs;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCNewNodeRegistered {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst newNodeId = raw.payload[0];\n\n\t\tconst nif = parseNodeInformationFrame(raw.payload.subarray(1));\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tnewNodeId,\n\t\t\t...nif,\n\t\t});\n\t}\n\n\tpublic newNodeId: number;\n\tpublic basicDeviceClass: BasicDeviceClass;\n\tpublic genericDeviceClass: number;\n\tpublic specificDeviceClass: number;\n\tpublic isListening: boolean;\n\tpublic isFrequentListening: FLiRS;\n\tpublic isRouting: boolean;\n\tpublic supportedDataRates: DataRate[];\n\tpublic protocolVersion: ProtocolVersion;\n\tpublic optionalFunctionality: boolean;\n\tpublic nodeType: NodeType;\n\tpublic supportsSecurity: boolean;\n\tpublic supportsBeaming: boolean;\n\tpublic supportedCCs: CommandClasses[];\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.newNodeId]),\n\t\t\tencodeNodeInformationFrame(this),\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCNewRangeRegisteredOptions {\n\ttestedNodeId: number;\n\tneighborNodeIds: number[];\n}\n\n@CCCommand(ZWaveProtocolCommand.NewRangeRegistered)\nexport class ZWaveProtocolCCNewRangeRegistered extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCNewRangeRegisteredOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.testedNodeId = options.testedNodeId;\n\t\tthis.neighborNodeIds = options.neighborNodeIds;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCNewRangeRegistered {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst testedNodeId = raw.payload[0];\n\t\tconst numNeighbors = raw.payload[1];\n\t\tconst neighborNodeIds = [\n\t\t\t...raw.payload.subarray(2, 2 + numNeighbors),\n\t\t];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttestedNodeId,\n\t\t\tneighborNodeIds,\n\t\t});\n\t}\n\n\tpublic testedNodeId: number;\n\tpublic neighborNodeIds: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tconst nodesBitmask = encodeBitMask(this.neighborNodeIds, MAX_NODES);\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.testedNodeId, nodesBitmask.length]),\n\t\t\tnodesBitmask,\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCTransferNewPrimaryControllerCompleteOptions {\n\tgenericDeviceClass: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.TransferNewPrimaryControllerComplete)\nexport class ZWaveProtocolCCTransferNewPrimaryControllerComplete\n\textends ZWaveProtocolCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<\n\t\t\tZWaveProtocolCCTransferNewPrimaryControllerCompleteOptions\n\t\t>,\n\t) {\n\t\tsuper(options);\n\t\tthis.genericDeviceClass = options.genericDeviceClass;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCTransferNewPrimaryControllerComplete {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst genericDeviceClass = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tgenericDeviceClass,\n\t\t});\n\t}\n\n\tpublic genericDeviceClass: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.genericDeviceClass]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n@CCCommand(ZWaveProtocolCommand.AutomaticControllerUpdateStart)\nexport class ZWaveProtocolCCAutomaticControllerUpdateStart\n\textends ZWaveProtocolCC\n{}\n\n// @publicAPI\nexport interface ZWaveProtocolCCSUCNodeIDOptions {\n\tsucNodeId: number;\n\tisSIS: boolean;\n}\n\n@CCCommand(ZWaveProtocolCommand.SUCNodeID)\nexport class ZWaveProtocolCCSUCNodeID extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCSUCNodeIDOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.sucNodeId = options.sucNodeId;\n\t\tthis.isSIS = options.isSIS;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCSUCNodeID {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst sucNodeId = raw.payload[0];\n\t\tconst capabilities = raw.payload[1] ?? 0;\n\t\tconst isSIS = !!(capabilities & 0b1);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tsucNodeId,\n\t\t\tisSIS,\n\t\t});\n\t}\n\n\tpublic sucNodeId: number;\n\tpublic isSIS: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.sucNodeId, this.isSIS ? 0b1 : 0]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCSetSUCOptions {\n\tenableSIS: boolean;\n}\n\n@CCCommand(ZWaveProtocolCommand.SetSUC)\nexport class ZWaveProtocolCCSetSUC extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCSetSUCOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.enableSIS = options.enableSIS;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCSetSUC {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\t// Byte 0 must be 0x01 or ignored\n\t\tconst capabilities = raw.payload[1] ?? 0;\n\t\tconst enableSIS = !!(capabilities & 0b1);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tenableSIS,\n\t\t});\n\t}\n\n\tpublic enableSIS: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([0x01, this.enableSIS ? 0b1 : 0]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCSetSUCAckOptions {\n\taccepted: boolean;\n\tisSIS: boolean;\n}\n\n@CCCommand(ZWaveProtocolCommand.SetSUCAck)\nexport class ZWaveProtocolCCSetSUCAck extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCSetSUCAckOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.accepted = options.accepted;\n\t\tthis.isSIS = options.isSIS;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCSetSUCAck {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst accepted = raw.payload[0] === 0x01;\n\t\tconst capabilities = raw.payload[1] ?? 0;\n\t\tconst isSIS = !!(capabilities & 0b1);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\taccepted,\n\t\t\tisSIS,\n\t\t});\n\t}\n\n\tpublic accepted: boolean;\n\tpublic isSIS: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.accepted ? 0x01 : 0x00,\n\t\t\tthis.isSIS ? 0b1 : 0,\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n@CCCommand(ZWaveProtocolCommand.AssignSUCReturnRoute)\nexport class ZWaveProtocolCCAssignSUCReturnRoute\n\textends ZWaveProtocolCCAssignReturnRoute\n{}\n\n// @publicAPI\nexport interface ZWaveProtocolCCStaticRouteRequestOptions {\n\tnodeIds: number[];\n}\n\n@CCCommand(ZWaveProtocolCommand.StaticRouteRequest)\nexport class ZWaveProtocolCCStaticRouteRequest extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCStaticRouteRequestOptions>,\n\t) {\n\t\tsuper(options);\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.nodeIds = options.nodeIds;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCStaticRouteRequest {\n\t\tvalidatePayload(raw.payload.length >= 5);\n\t\tconst nodeIds = [...raw.payload.subarray(0, 5)].filter(\n\t\t\t(id) => id > 0 && id <= MAX_NODES,\n\t\t);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tnodeIds,\n\t\t});\n\t}\n\n\tpublic nodeIds: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.alloc(5, 0);\n\t\tfor (let i = 0; i < this.nodeIds.length && i < 5; i++) {\n\t\t\tthis.payload[i] = this.nodeIds[i];\n\t\t}\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCLostOptions {\n\tlostNodeId: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.Lost)\nexport class ZWaveProtocolCCLost extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCLostOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.lostNodeId = options.lostNodeId;\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): ZWaveProtocolCCLost {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst lostNodeId = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tlostNodeId,\n\t\t});\n\t}\n\n\tpublic lostNodeId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.lostNodeId]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCAcceptLostOptions {\n\taccepted: boolean;\n}\n\n@CCCommand(ZWaveProtocolCommand.AcceptLost)\nexport class ZWaveProtocolCCAcceptLost extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCAcceptLostOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.accepted = options.accepted;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCAcceptLost {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tvalidatePayload(\n\t\t\traw.payload[0] === 0x04 || raw.payload[0] === 0x05,\n\t\t);\n\t\tconst accepted = raw.payload[0] === 0x05;\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\taccepted,\n\t\t});\n\t}\n\n\tpublic accepted: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.accepted ? 0x05 : 0x04]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCNOPPowerOptions {\n\tpowerDampening: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.NOPPower)\nexport class ZWaveProtocolCCNOPPower extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCNOPPowerOptions>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.powerDampening < 0 || options.powerDampening > 14) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`${this.constructor.name}: power dampening must be between 0 and 14 dBm!`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.powerDampening = options.powerDampening;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCNOPPower {\n\t\tlet powerDampening;\n\n\t\tif (raw.payload.length >= 2) {\n\t\t\t// Ignore byte 0\n\t\t\tpowerDampening = raw.payload[1];\n\t\t} else if (raw.payload.length === 1) {\n\t\t\tpowerDampening = [\n\t\t\t\t0xf0,\n\t\t\t\t0xc8,\n\t\t\t\t0xa7,\n\t\t\t\t0x91,\n\t\t\t\t0x77,\n\t\t\t\t0x67,\n\t\t\t\t0x60,\n\t\t\t\t0x46,\n\t\t\t\t0x38,\n\t\t\t\t0x35,\n\t\t\t\t0x32,\n\t\t\t\t0x30,\n\t\t\t\t0x24,\n\t\t\t\t0x22,\n\t\t\t\t0x20,\n\t\t\t].indexOf(raw.payload[0]);\n\t\t\tif (powerDampening === -1) powerDampening = 0;\n\t\t} else {\n\t\t\tvalidatePayload.fail(\"Invalid payload length!\");\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tpowerDampening,\n\t\t});\n\t}\n\n\t// Power dampening in (negative) dBm. A value of 2 means -2 dBm.\n\tpublic powerDampening: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([0, this.powerDampening]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCReservedIDsOptions {\n\treservedNodeIDs: number[];\n}\n\n@CCCommand(ZWaveProtocolCommand.ReservedIDs)\nexport class ZWaveProtocolCCReservedIDs extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCReservedIDsOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.reservedNodeIDs = options.reservedNodeIDs;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCReservedIDs {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst numNodeIDs = raw.payload[0];\n\t\tvalidatePayload(raw.payload.length >= 1 + numNodeIDs);\n\t\tconst reservedNodeIDs = [\n\t\t\t...raw.payload.subarray(1, 1 + numNodeIDs),\n\t\t];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\treservedNodeIDs,\n\t\t});\n\t}\n\n\tpublic reservedNodeIDs: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.reservedNodeIDs.length,\n\t\t\t...this.reservedNodeIDs,\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCReserveNodeIDsOptions {\n\tnumNodeIDs: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.ReserveNodeIDs)\n@expectedCCResponse(ZWaveProtocolCCReservedIDs)\nexport class ZWaveProtocolCCReserveNodeIDs extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCReserveNodeIDsOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.numNodeIDs = options.numNodeIDs;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCReserveNodeIDs {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst numNodeIDs = raw.payload[0];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tnumNodeIDs,\n\t\t});\n\t}\n\n\tpublic numNodeIDs: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.numNodeIDs]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCNodesExistReplyOptions {\n\tnodeMaskType: number;\n\tnodeListUpdated: boolean;\n}\n\n@CCCommand(ZWaveProtocolCommand.NodesExistReply)\nexport class ZWaveProtocolCCNodesExistReply extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCNodesExistReplyOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.nodeMaskType = options.nodeMaskType;\n\t\tthis.nodeListUpdated = options.nodeListUpdated;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCNodesExistReply {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst nodeMaskType = raw.payload[0];\n\t\tconst nodeListUpdated = raw.payload[1] === 0x01;\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tnodeMaskType,\n\t\t\tnodeListUpdated,\n\t\t});\n\t}\n\n\tpublic nodeMaskType: number;\n\tpublic nodeListUpdated: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.nodeMaskType,\n\t\t\tthis.nodeListUpdated ? 0x01 : 0x00,\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\nfunction testResponseForZWaveProtocolNodesExist(\n\tsent: ZWaveProtocolCCNodesExist,\n\treceived: ZWaveProtocolCCNodesExistReply,\n) {\n\treturn received.nodeMaskType === sent.nodeMaskType;\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCNodesExistOptions {\n\tnodeMaskType: number;\n\tnodeIDs: number[];\n}\n\n@CCCommand(ZWaveProtocolCommand.NodesExist)\n@expectedCCResponse(\n\tZWaveProtocolCCNodesExistReply,\n\ttestResponseForZWaveProtocolNodesExist,\n)\nexport class ZWaveProtocolCCNodesExist extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCNodesExistOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.nodeMaskType = options.nodeMaskType;\n\t\tthis.nodeIDs = options.nodeIDs;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCNodesExist {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst nodeMaskType = raw.payload[0];\n\t\tconst numNodeIDs = raw.payload[1];\n\t\tvalidatePayload(raw.payload.length >= 2 + numNodeIDs);\n\t\tconst nodeIDs = [...raw.payload.subarray(2, 2 + numNodeIDs)];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tnodeMaskType,\n\t\t\tnodeIDs,\n\t\t});\n\t}\n\n\tpublic nodeMaskType: number;\n\tpublic nodeIDs: number[];\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.nodeMaskType,\n\t\t\tthis.nodeIDs.length,\n\t\t\t...this.nodeIDs,\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n// @publicAPI\nexport interface ZWaveProtocolCCSetNWIModeOptions {\n\tenabled: boolean;\n\ttimeoutMinutes?: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.SetNWIMode)\nexport class ZWaveProtocolCCSetNWIMode extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCSetNWIModeOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.enabled = options.enabled;\n\t\tthis.timeoutMinutes = options.timeoutMinutes;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCSetNWIMode {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst enabled = raw.payload[0] === 0x01;\n\t\tconst timeoutMinutes: number | undefined = raw.payload[1] || undefined;\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tenabled,\n\t\t\ttimeoutMinutes,\n\t\t});\n\t}\n\n\tpublic enabled: boolean;\n\tpublic timeoutMinutes?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.enabled ? 0x01 : 0x00,\n\t\t\tthis.timeoutMinutes ?? 0x00,\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n@CCCommand(ZWaveProtocolCommand.ExcludeRequest)\nexport class ZWaveProtocolCCExcludeRequest\n\textends ZWaveProtocolCCNodeInformationFrame\n{}\n\n// @publicAPI\nexport interface ZWaveProtocolCCAssignReturnRoutePriorityOptions {\n\ttargetNodeId: number;\n\trouteNumber: number;\n}\n\n@CCCommand(ZWaveProtocolCommand.AssignReturnRoutePriority)\nexport class ZWaveProtocolCCAssignReturnRoutePriority extends ZWaveProtocolCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ZWaveProtocolCCAssignReturnRoutePriorityOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.targetNodeId = options.targetNodeId;\n\t\tthis.routeNumber = options.routeNumber;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCAssignReturnRoutePriority {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst targetNodeId = raw.payload[0];\n\t\tconst routeNumber = raw.payload[1];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\ttargetNodeId,\n\t\t\trouteNumber,\n\t\t});\n\t}\n\n\tpublic targetNodeId: number;\n\tpublic routeNumber: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from([this.targetNodeId, this.routeNumber]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n@CCCommand(ZWaveProtocolCommand.AssignSUCReturnRoutePriority)\nexport class ZWaveProtocolCCAssignSUCReturnRoutePriority\n\textends ZWaveProtocolCCAssignReturnRoutePriority\n{}\n\n// @publicAPI\nexport interface ZWaveProtocolCCSmartStartIncludedNodeInformationOptions {\n\tnwiHomeId: Uint8Array;\n}\n\n@CCCommand(ZWaveProtocolCommand.SmartStartIncludedNodeInformation)\nexport class ZWaveProtocolCCSmartStartIncludedNodeInformation\n\textends ZWaveProtocolCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<\n\t\t\tZWaveProtocolCCSmartStartIncludedNodeInformationOptions\n\t\t>,\n\t) {\n\t\tsuper(options);\n\t\tif (options.nwiHomeId.length !== 4) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t`nwiHomeId must have length 4`,\n\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.nwiHomeId = options.nwiHomeId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ZWaveProtocolCCSmartStartIncludedNodeInformation {\n\t\tvalidatePayload(raw.payload.length >= 4);\n\t\tconst nwiHomeId = raw.payload.subarray(0, 4);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tnwiHomeId,\n\t\t});\n\t}\n\n\tpublic nwiHomeId: Uint8Array;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tthis.payload = Bytes.from(this.nwiHomeId);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\n@CCCommand(ZWaveProtocolCommand.SmartStartPrime)\nexport class ZWaveProtocolCCSmartStartPrime\n\textends ZWaveProtocolCCNodeInformationFrame\n{}\n\n@CCCommand(ZWaveProtocolCommand.SmartStartInclusionRequest)\nexport class ZWaveProtocolCCSmartStartInclusionRequest\n\textends ZWaveProtocolCCNodeInformationFrame\n{}\n"],
5
+ "mappings": "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",
6
6
  "names": ["DataRateBitmask"]
7
7
  }
@@ -32,8 +32,9 @@ __export(Decorators_exports, {
32
32
  manufacturerProprietaryAPI: () => manufacturerProprietaryAPI
33
33
  });
34
34
  module.exports = __toCommonJS(Decorators_exports);
35
- var import_core = require("@zwave-js/core");
36
- const manufacturerIdDecorator = (0, import_core.createSimpleReflectionDecorator)({
35
+ var import_error = require("@zwave-js/core/error");
36
+ var import_reflection = require("@zwave-js/core/reflection");
37
+ const manufacturerIdDecorator = (0, import_reflection.createSimpleReflectionDecorator)({
37
38
  name: "manufacturerId"
38
39
  });
39
40
  const manufacturerId = manufacturerIdDecorator.decorator;
@@ -41,17 +42,17 @@ const getManufacturerId = manufacturerIdDecorator.lookupValue;
41
42
  function getManufacturerIdStatic(classConstructor) {
42
43
  const ret = manufacturerIdDecorator.lookupValueStatic(classConstructor);
43
44
  if (ret == void 0) {
44
- throw new import_core.ZWaveError(`No manufacturer ID defined for ${classConstructor.name}!`, import_core.ZWaveErrorCodes.CC_Invalid);
45
+ throw new import_error.ZWaveError(`No manufacturer ID defined for ${classConstructor.name}!`, import_error.ZWaveErrorCodes.CC_Invalid);
45
46
  }
46
47
  return ret;
47
48
  }
48
49
  const getManufacturerProprietaryCCConstructor = manufacturerIdDecorator.lookupConstructor;
49
- const manufacturerProprietaryAPIDecorator = (0, import_core.createSimpleReflectionDecorator)({
50
+ const manufacturerProprietaryAPIDecorator = (0, import_reflection.createSimpleReflectionDecorator)({
50
51
  name: "manufacturerProprietaryAPI"
51
52
  });
52
53
  const manufacturerProprietaryAPI = manufacturerProprietaryAPIDecorator.decorator;
53
54
  const getManufacturerProprietaryAPI = manufacturerProprietaryAPIDecorator.lookupConstructor;
54
- const FibaroCCAndCommandDecorator = (0, import_core.createReflectionDecoratorPair)({ superName: "fibaroCC", subName: "fibaroCCCommand" });
55
+ const FibaroCCAndCommandDecorator = (0, import_reflection.createReflectionDecoratorPair)({ superName: "fibaroCC", subName: "fibaroCCCommand" });
55
56
  const fibaroCC = FibaroCCAndCommandDecorator.superDecorator;
56
57
  const getFibaroCCId = FibaroCCAndCommandDecorator.lookupSuperValue;
57
58
  const getFibaroCCConstructor = FibaroCCAndCommandDecorator.lookupSuperConstructor;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/cc/manufacturerProprietary/Decorators.ts"],
4
- "sourcesContent": ["import {\n\tZWaveError,\n\tZWaveErrorCodes,\n\tcreateReflectionDecoratorPair,\n\tcreateSimpleReflectionDecorator,\n} from \"@zwave-js/core\";\nimport type { APIConstructor, CCAPI } from \"../../lib/API.js\";\nimport type {\n\tManufacturerProprietaryCC,\n\tManufacturerProprietaryCCAPI,\n\tManufacturerProprietaryCCConstructor,\n} from \"../ManufacturerProprietaryCC.js\";\nimport type { FibaroCC } from \"./FibaroCC.js\";\n\n// === Define the manufacturer ID for a given Manufacturer Proprietary CC subclass\n\nconst manufacturerIdDecorator = createSimpleReflectionDecorator<\n\ttypeof ManufacturerProprietaryCC,\n\t[manufacturerId: number],\n\tManufacturerProprietaryCCConstructor\n>({\n\tname: \"manufacturerId\",\n});\n\n/**\n * @publicAPI\n * Defines the Manufacturer ID associated with a specific implementation of the Manufacturer Proprietary CC\n */\nexport const manufacturerId = manufacturerIdDecorator.decorator;\n\n/**\n * @publicAPI\n * Retrieves the Manufacturer ID defined for a specific implementation of the Manufacturer Proprietary CC\n */\nexport const getManufacturerId = manufacturerIdDecorator.lookupValue;\n\n/**\n * @publicAPI\n * Retrieves the Manufacturer ID defined for a specific implementation of the Manufacturer Proprietary CC\n */\nexport function getManufacturerIdStatic<\n\tT extends ManufacturerProprietaryCCConstructor,\n>(classConstructor: T): number {\n\t// retrieve the current metadata\n\tconst ret = manufacturerIdDecorator.lookupValueStatic(classConstructor);\n\tif (ret == undefined) {\n\t\tthrow new ZWaveError(\n\t\t\t`No manufacturer ID defined for ${classConstructor.name}!`,\n\t\t\tZWaveErrorCodes.CC_Invalid,\n\t\t);\n\t}\n\treturn ret;\n}\n\n/**\n * @publicAPI\n * Looks up the Manufacturer Proprietary CC constructor for a given Manufacturer ID\n */\nexport const getManufacturerProprietaryCCConstructor =\n\tmanufacturerIdDecorator.lookupConstructor;\n\nconst manufacturerProprietaryAPIDecorator = createSimpleReflectionDecorator<\n\ttypeof CCAPI,\n\t[manufacturerId: number],\n\tAPIConstructor<ManufacturerProprietaryCCAPI>\n>({\n\tname: \"manufacturerProprietaryAPI\",\n});\n\n/**\n * @publicAPI\n * Defines the manufacturer ID a Proprietary CC API implementation belongs to\n */\nexport const manufacturerProprietaryAPI =\n\tmanufacturerProprietaryAPIDecorator.decorator;\n\n/**\n * @publicAPI\n * Retrieves the Proprietary CC API constructor for a given Manufacturer ID\n */\nexport const getManufacturerProprietaryAPI =\n\tmanufacturerProprietaryAPIDecorator.lookupConstructor;\n\n// Fibaro CC specific decorators\n\n// Decorators for easy lookup\n\nconst FibaroCCAndCommandDecorator = createReflectionDecoratorPair<\n\ttypeof FibaroCC,\n\t[fibaroCCId: number],\n\t[fibaroCCCommand: number],\n\tManufacturerProprietaryCCConstructor<typeof FibaroCC>\n>({ superName: \"fibaroCC\", subName: \"fibaroCCCommand\" });\n\n/**\n * @publicAPI\n * Defines the Fibaro CC ID a subclass of a Fibaro CC implements\n */\nexport const fibaroCC = FibaroCCAndCommandDecorator.superDecorator;\n\n/**\n * @publicAPI\n * Retrieves the Fibaro CC ID a subclass of a Fibaro CC implements\n */\nexport const getFibaroCCId = FibaroCCAndCommandDecorator.lookupSuperValue;\n\n/**\n * @publicAPI\n * Looks up the Fibaro CC constructor for a given Fibaro CC ID\n */\nexport const getFibaroCCConstructor =\n\tFibaroCCAndCommandDecorator.lookupSuperConstructor;\n\n/**\n * @publicAPI\n * Defines the Fibaro CC command a subclass of the Fibaro CC implements\n */\n\nexport const fibaroCCCommand = FibaroCCAndCommandDecorator.subDecorator;\n\n/**\n * @publicAPI\n * Retrieves the Fibaro CC command a subclass of a Fibaro CC implements\n */\nexport const getFibaroCCCommand = FibaroCCAndCommandDecorator.lookupSubValue;\n\n/**\n * @publicAPI\n * Looks up the Fibaro CC constructor for a given Fibaro CC ID and command\n */\nexport const getFibaroCCCommandConstructor =\n\tFibaroCCAndCommandDecorator.lookupSubConstructor;\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;AAAA,kBAKO;AAWP,MAAM,8BAA0B,6CAI9B;EACD,MAAM;CACN;AAMM,MAAM,iBAAiB,wBAAwB;AAM/C,MAAM,oBAAoB,wBAAwB;AAMnD,SAAU,wBAEd,kBAAmB;AAEpB,QAAM,MAAM,wBAAwB,kBAAkB,gBAAgB;AACtE,MAAI,OAAO,QAAW;AACrB,UAAM,IAAI,uBACT,kCAAkC,iBAAiB,IAAI,KACvD,4BAAgB,UAAU;EAE5B;AACA,SAAO;AACR;AAMO,MAAM,0CACZ,wBAAwB;AAEzB,MAAM,0CAAsC,6CAI1C;EACD,MAAM;CACN;AAMM,MAAM,6BACZ,oCAAoC;AAM9B,MAAM,gCACZ,oCAAoC;AAMrC,MAAM,kCAA8B,2CAKlC,EAAE,WAAW,YAAY,SAAS,kBAAiB,CAAE;AAMhD,MAAM,WAAW,4BAA4B;AAM7C,MAAM,gBAAgB,4BAA4B;AAMlD,MAAM,yBACZ,4BAA4B;AAOtB,MAAM,kBAAkB,4BAA4B;AAMpD,MAAM,qBAAqB,4BAA4B;AAMvD,MAAM,gCACZ,4BAA4B;",
4
+ "sourcesContent": ["import { ZWaveError, ZWaveErrorCodes } from \"@zwave-js/core/error\";\nimport {\n\tcreateReflectionDecoratorPair,\n\tcreateSimpleReflectionDecorator,\n} from \"@zwave-js/core/reflection\";\nimport type { APIConstructor, CCAPI } from \"../../lib/API.js\";\nimport type {\n\tManufacturerProprietaryCC,\n\tManufacturerProprietaryCCAPI,\n\tManufacturerProprietaryCCConstructor,\n} from \"../ManufacturerProprietaryCC.js\";\nimport type { FibaroCC } from \"./FibaroCC.js\";\n\n// === Define the manufacturer ID for a given Manufacturer Proprietary CC subclass\n\nconst manufacturerIdDecorator = createSimpleReflectionDecorator<\n\ttypeof ManufacturerProprietaryCC,\n\t[manufacturerId: number],\n\tManufacturerProprietaryCCConstructor\n>({\n\tname: \"manufacturerId\",\n});\n\n/**\n * @publicAPI\n * Defines the Manufacturer ID associated with a specific implementation of the Manufacturer Proprietary CC\n */\nexport const manufacturerId = manufacturerIdDecorator.decorator;\n\n/**\n * @publicAPI\n * Retrieves the Manufacturer ID defined for a specific implementation of the Manufacturer Proprietary CC\n */\nexport const getManufacturerId = manufacturerIdDecorator.lookupValue;\n\n/**\n * @publicAPI\n * Retrieves the Manufacturer ID defined for a specific implementation of the Manufacturer Proprietary CC\n */\nexport function getManufacturerIdStatic<\n\tT extends ManufacturerProprietaryCCConstructor,\n>(classConstructor: T): number {\n\t// retrieve the current metadata\n\tconst ret = manufacturerIdDecorator.lookupValueStatic(classConstructor);\n\tif (ret == undefined) {\n\t\tthrow new ZWaveError(\n\t\t\t`No manufacturer ID defined for ${classConstructor.name}!`,\n\t\t\tZWaveErrorCodes.CC_Invalid,\n\t\t);\n\t}\n\treturn ret;\n}\n\n/**\n * @publicAPI\n * Looks up the Manufacturer Proprietary CC constructor for a given Manufacturer ID\n */\nexport const getManufacturerProprietaryCCConstructor =\n\tmanufacturerIdDecorator.lookupConstructor;\n\nconst manufacturerProprietaryAPIDecorator = createSimpleReflectionDecorator<\n\ttypeof CCAPI,\n\t[manufacturerId: number],\n\tAPIConstructor<ManufacturerProprietaryCCAPI>\n>({\n\tname: \"manufacturerProprietaryAPI\",\n});\n\n/**\n * @publicAPI\n * Defines the manufacturer ID a Proprietary CC API implementation belongs to\n */\nexport const manufacturerProprietaryAPI =\n\tmanufacturerProprietaryAPIDecorator.decorator;\n\n/**\n * @publicAPI\n * Retrieves the Proprietary CC API constructor for a given Manufacturer ID\n */\nexport const getManufacturerProprietaryAPI =\n\tmanufacturerProprietaryAPIDecorator.lookupConstructor;\n\n// Fibaro CC specific decorators\n\n// Decorators for easy lookup\n\nconst FibaroCCAndCommandDecorator = createReflectionDecoratorPair<\n\ttypeof FibaroCC,\n\t[fibaroCCId: number],\n\t[fibaroCCCommand: number],\n\tManufacturerProprietaryCCConstructor<typeof FibaroCC>\n>({ superName: \"fibaroCC\", subName: \"fibaroCCCommand\" });\n\n/**\n * @publicAPI\n * Defines the Fibaro CC ID a subclass of a Fibaro CC implements\n */\nexport const fibaroCC = FibaroCCAndCommandDecorator.superDecorator;\n\n/**\n * @publicAPI\n * Retrieves the Fibaro CC ID a subclass of a Fibaro CC implements\n */\nexport const getFibaroCCId = FibaroCCAndCommandDecorator.lookupSuperValue;\n\n/**\n * @publicAPI\n * Looks up the Fibaro CC constructor for a given Fibaro CC ID\n */\nexport const getFibaroCCConstructor =\n\tFibaroCCAndCommandDecorator.lookupSuperConstructor;\n\n/**\n * @publicAPI\n * Defines the Fibaro CC command a subclass of the Fibaro CC implements\n */\n\nexport const fibaroCCCommand = FibaroCCAndCommandDecorator.subDecorator;\n\n/**\n * @publicAPI\n * Retrieves the Fibaro CC command a subclass of a Fibaro CC implements\n */\nexport const getFibaroCCCommand = FibaroCCAndCommandDecorator.lookupSubValue;\n\n/**\n * @publicAPI\n * Looks up the Fibaro CC constructor for a given Fibaro CC ID and command\n */\nexport const getFibaroCCCommandConstructor =\n\tFibaroCCAndCommandDecorator.lookupSubConstructor;\n"],
5
+ "mappings": ";;;;;;;;;;;;;;;;;;AAAA;;;;;;;;;;;;;;;;AAAA,mBAA4C;AAC5C,wBAGO;AAWP,MAAM,8BAA0B,mDAI9B;EACD,MAAM;CACN;AAMM,MAAM,iBAAiB,wBAAwB;AAM/C,MAAM,oBAAoB,wBAAwB;AAMnD,SAAU,wBAEd,kBAAmB;AAEpB,QAAM,MAAM,wBAAwB,kBAAkB,gBAAgB;AACtE,MAAI,OAAO,QAAW;AACrB,UAAM,IAAI,wBACT,kCAAkC,iBAAiB,IAAI,KACvD,6BAAgB,UAAU;EAE5B;AACA,SAAO;AACR;AAMO,MAAM,0CACZ,wBAAwB;AAEzB,MAAM,0CAAsC,mDAI1C;EACD,MAAM;CACN;AAMM,MAAM,6BACZ,oCAAoC;AAM9B,MAAM,gCACZ,oCAAoC;AAMrC,MAAM,kCAA8B,iDAKlC,EAAE,WAAW,YAAY,SAAS,kBAAiB,CAAE;AAMhD,MAAM,WAAW,4BAA4B;AAM7C,MAAM,gBAAgB,4BAA4B;AAMlD,MAAM,yBACZ,4BAA4B;AAOtB,MAAM,kBAAkB,4BAA4B;AAMpD,MAAM,qBAAqB,4BAA4B;AAMvD,MAAM,gCACZ,4BAA4B;",
6
6
  "names": []
7
7
  }
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../../src/cc/manufacturerProprietary/FibaroCC.ts"],
4
- "sourcesContent": ["import {\n\tCommandClasses,\n\ttype MaybeUnknown,\n\ttype MessageOrCCLogEntry,\n\ttype MessageRecord,\n\ttype ValueID,\n\tValueMetadata,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tparseMaybeNumber,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport type {\n\tCCEncodingContext,\n\tCCParsingContext,\n\tGetDeviceConfig,\n\tGetValueDB,\n} from \"@zwave-js/host/safe\";\nimport { Bytes, pick } from \"@zwave-js/shared\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { isArray } from \"alcalzone-shared/typeguards\";\nimport {\n\tPOLL_VALUE,\n\ttype PollValueImplementation,\n\tSET_VALUE,\n\ttype SetValueImplementation,\n\tthrowMissingPropertyKey,\n\tthrowUnsupportedProperty,\n\tthrowUnsupportedPropertyKey,\n\tthrowWrongValueType,\n} from \"../../lib/API.js\";\nimport {\n\ttype CCRaw,\n\ttype CommandClassOptions,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n\ttype RefreshValuesContext,\n} from \"../../lib/CommandClass.js\";\nimport { expectedCCResponse } from \"../../lib/CommandClassDecorators.js\";\nimport {\n\tManufacturerProprietaryCC,\n\tManufacturerProprietaryCCAPI,\n} from \"../ManufacturerProprietaryCC.js\";\nimport {\n\tfibaroCC,\n\tfibaroCCCommand,\n\tgetFibaroCCCommand,\n\tgetFibaroCCCommandConstructor,\n\tgetFibaroCCConstructor,\n\tgetFibaroCCId,\n\tmanufacturerId,\n\tmanufacturerProprietaryAPI,\n} from \"./Decorators.js\";\n\nexport const MANUFACTURERID_FIBARO = 0x10f;\n\n/** Returns the ValueID used to store the current venetian blind position */\nexport function getFibaroVenetianBlindPositionValueId(\n\tendpoint: number,\n): ValueID {\n\treturn {\n\t\tcommandClass: CommandClasses[\"Manufacturer Proprietary\"],\n\t\tendpoint,\n\t\tproperty: \"fibaro\",\n\t\tpropertyKey: \"venetianBlindsPosition\",\n\t};\n}\n\n/** Returns the value metadata for venetian blind position */\nexport function getFibaroVenetianBlindPositionMetadata(): ValueMetadata {\n\treturn {\n\t\t...ValueMetadata.Level,\n\t\tlabel: \"Venetian blinds position\",\n\t};\n}\n\n/** Returns the ValueID used to store the current venetian blind tilt */\nexport function getFibaroVenetianBlindTiltValueId(endpoint: number): ValueID {\n\treturn {\n\t\tcommandClass: CommandClasses[\"Manufacturer Proprietary\"],\n\t\tendpoint,\n\t\tproperty: \"fibaro\",\n\t\tpropertyKey: \"venetianBlindsTilt\",\n\t};\n}\n\n/** Returns the value metadata for venetian blind tilt */\nexport function getFibaroVenetianBlindTiltMetadata(): ValueMetadata {\n\treturn {\n\t\t...ValueMetadata.Level,\n\t\tlabel: \"Venetian blinds tilt\",\n\t};\n}\n\nfunction getSupportedFibaroCCIDs(\n\tctx: GetDeviceConfig,\n\tnodeId: number,\n): FibaroCCIDs[] {\n\tconst proprietaryConfig = ctx.getDeviceConfig?.(\n\t\tnodeId,\n\t)?.proprietary;\n\tif (proprietaryConfig && isArray(proprietaryConfig.fibaroCCs)) {\n\t\treturn proprietaryConfig.fibaroCCs as FibaroCCIDs[];\n\t}\n\n\treturn [];\n}\n\nexport enum FibaroCCIDs {\n\tVenetianBlind = 0x26,\n}\n\n@manufacturerProprietaryAPI(MANUFACTURERID_FIBARO)\nexport class FibaroCCAPI extends ManufacturerProprietaryCCAPI {\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async fibaroVenetianBlindsGet() {\n\t\tconst cc = new FibaroVenetianBlindCCGet({\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\tFibaroVenetianBlindCCReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\"position\", \"tilt\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async fibaroVenetianBlindsSetPosition(value: number): Promise<void> {\n\t\tconst cc = new FibaroVenetianBlindCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tposition: value,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t@validateArgs()\n\tpublic async fibaroVenetianBlindsSetTilt(value: number): Promise<void> {\n\t\tconst cc = new FibaroVenetianBlindCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttilt: value,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(\n\t\t\tthis: FibaroCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t\tvalue,\n\t\t) {\n\t\t\tif (property !== \"fibaro\") {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\n\t\t\tif (propertyKey === \"venetianBlindsPosition\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait this.fibaroVenetianBlindsSetPosition(value);\n\t\t\t} else if (propertyKey === \"venetianBlindsTilt\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait this.fibaroVenetianBlindsSetTilt(value);\n\t\t\t} else {\n\t\t\t\t// unsupported property key, ignore...\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Verify the current value after a delay\n\t\t\tthis.schedulePoll({ property, propertyKey }, value);\n\n\t\t\treturn undefined;\n\t\t};\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(this: FibaroCCAPI, { property, propertyKey }) {\n\t\t\tif (property !== \"fibaro\") {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t} else if (propertyKey == undefined) {\n\t\t\t\tthrowMissingPropertyKey(this.ccId, property);\n\t\t\t}\n\n\t\t\tswitch (propertyKey) {\n\t\t\t\tcase \"venetianBlindsPosition\":\n\t\t\t\t\treturn (await this.fibaroVenetianBlindsGet())?.position;\n\t\t\t\tcase \"venetianBlindsTilt\":\n\t\t\t\t\treturn (await this.fibaroVenetianBlindsGet())?.tilt;\n\t\t\t\tdefault:\n\t\t\t\t\tthrowUnsupportedPropertyKey(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t);\n\t\t\t}\n\t\t};\n\t}\n}\n\n@manufacturerId(MANUFACTURERID_FIBARO)\nexport class FibaroCC extends ManufacturerProprietaryCC {\n\tpublic constructor(\n\t\toptions: CommandClassOptions,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.fibaroCCId = getFibaroCCId(this);\n\t\tthis.fibaroCCCommand = getFibaroCCCommand(this);\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): FibaroCC {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst fibaroCCId = raw.payload[0];\n\t\tconst fibaroCCCommand = raw.payload[1];\n\n\t\tconst FibaroConstructor = getFibaroCCCommandConstructor(\n\t\t\tfibaroCCId,\n\t\t\tfibaroCCCommand,\n\t\t);\n\t\tif (FibaroConstructor) {\n\t\t\treturn FibaroConstructor.from(\n\t\t\t\traw.withPayload(raw.payload.subarray(2)),\n\t\t\t\tctx,\n\t\t\t);\n\t\t}\n\n\t\treturn new FibaroCC({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t});\n\t}\n\n\tpublic fibaroCCId?: number;\n\tpublic fibaroCCCommand?: number;\n\n\tpublic async interview(\n\t\tctx: InterviewContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\n\t\t// Iterate through all supported Fibaro CCs and interview them\n\t\tconst supportedFibaroCCIDs = getSupportedFibaroCCIDs(ctx, node.id);\n\t\tfor (const ccId of supportedFibaroCCIDs) {\n\t\t\tconst SubConstructor = getFibaroCCConstructor(ccId);\n\t\t\tif (SubConstructor) {\n\t\t\t\tconst instance = new SubConstructor({ nodeId: node.id });\n\t\t\t\tawait instance.interview(ctx);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async refreshValues(\n\t\tctx: RefreshValuesContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\n\t\t// Iterate through all supported Fibaro CCs and let them refresh their values\n\t\tconst supportedFibaroCCIDs = getSupportedFibaroCCIDs(ctx, node.id);\n\t\tfor (const ccId of supportedFibaroCCIDs) {\n\t\t\tconst SubConstructor = getFibaroCCConstructor(ccId);\n\t\t\tif (SubConstructor) {\n\t\t\t\tconst instance = new SubConstructor({ nodeId: node.id });\n\t\t\t\tawait instance.refreshValues(ctx);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tif (this.fibaroCCId == undefined) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"Cannot serialize a Fibaro CC without a Fibaro CC ID\",\n\t\t\t\tZWaveErrorCodes.CC_Invalid,\n\t\t\t);\n\t\t} else if (this.fibaroCCCommand == undefined) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"Cannot serialize a Fibaro CC without a Fibaro CC Command\",\n\t\t\t\tZWaveErrorCodes.CC_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.fibaroCCId, this.fibaroCCCommand]),\n\t\t\tthis.payload,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n}\n\nexport enum FibaroVenetianBlindCCCommand {\n\tSet = 0x01,\n\tGet = 0x02,\n\tReport = 0x03,\n}\n\n@fibaroCC(FibaroCCIDs.VenetianBlind)\nexport class FibaroVenetianBlindCC extends FibaroCC {\n\tdeclare fibaroCCId: FibaroCCIDs.VenetianBlind;\n\tdeclare fibaroCCCommand: FibaroVenetianBlindCCCommand;\n\n\tpublic constructor(\n\t\toptions: CommandClassOptions,\n\t) {\n\t\tsuper(options);\n\t\tthis.fibaroCCId = FibaroCCIDs.VenetianBlind;\n\t}\n\n\tpublic async interview(ctx: InterviewContext): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: `Interviewing Fibaro Venetian Blind CC...`,\n\t\t\tdirection: \"none\",\n\t\t});\n\n\t\t// Nothing special, just get the values\n\t\tawait this.refreshValues(ctx);\n\t}\n\n\tpublic async refreshValues(ctx: RefreshValuesContext): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\n\t\tctx.logNode(node.id, {\n\t\t\tmessage: \"Requesting venetian blind position and tilt...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst resp = await ctx.sendCommand<FibaroVenetianBlindCCReport>(\n\t\t\tnew FibaroVenetianBlindCCGet({\n\t\t\t\tnodeId: this.nodeId,\n\t\t\t\tendpointIndex: this.endpointIndex,\n\t\t\t}),\n\t\t);\n\t\tif (resp) {\n\t\t\tconst logMessage = `received venetian blind state:\nposition: ${resp.position}\ntilt: ${resp.tilt}`;\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: logMessage,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t}\n\t}\n}\n\n// @publicAPI\nexport type FibaroVenetianBlindCCSetOptions =\n\t| {\n\t\tposition: number;\n\t}\n\t| {\n\t\ttilt: number;\n\t}\n\t| {\n\t\tposition: number;\n\t\ttilt: number;\n\t};\n\n@fibaroCCCommand(FibaroVenetianBlindCCCommand.Set)\nexport class FibaroVenetianBlindCCSet extends FibaroVenetianBlindCC {\n\tpublic constructor(\n\t\toptions: WithAddress<FibaroVenetianBlindCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.fibaroCCCommand = FibaroVenetianBlindCCCommand.Set;\n\n\t\tif (\"position\" in options) this.position = options.position;\n\t\tif (\"tilt\" in options) this.tilt = options.tilt;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): FibaroVenetianBlindCCSet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\t}\n\n\tpublic position: number | undefined;\n\tpublic tilt: number | undefined;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tconst controlByte = (this.position != undefined ? 0b10 : 0)\n\t\t\t| (this.tilt != undefined ? 0b01 : 0);\n\t\tthis.payload = Bytes.from([\n\t\t\tcontrolByte,\n\t\t\tthis.position ?? 0,\n\t\t\tthis.tilt ?? 0,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {};\n\t\tif (this.position != undefined) {\n\t\t\tmessage.position = this.position;\n\t\t}\n\t\tif (this.tilt != undefined) {\n\t\t\tmessage.tilt = this.tilt;\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 FibaroVenetianBlindCCReportOptions {\n\tposition?: MaybeUnknown<number>;\n\ttilt?: MaybeUnknown<number>;\n}\n\n@fibaroCCCommand(FibaroVenetianBlindCCCommand.Report)\nexport class FibaroVenetianBlindCCReport extends FibaroVenetianBlindCC {\n\tpublic constructor(\n\t\toptions: WithAddress<FibaroVenetianBlindCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.fibaroCCCommand = FibaroVenetianBlindCCCommand.Report;\n\n\t\t// TODO: Check implementation:\n\t\tthis.position = options.position;\n\t\tthis.tilt = options.tilt;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): FibaroVenetianBlindCCReport {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\t// When the node sends a report, payload[0] === 0b11. This is probably a\n\t\t// bit mask for position and tilt\n\t\tlet position: MaybeUnknown<number> | undefined;\n\t\tif (!!(raw.payload[0] & 0b10)) {\n\t\t\tposition = parseMaybeNumber(raw.payload[1]);\n\t\t}\n\n\t\tlet tilt: MaybeUnknown<number> | undefined;\n\t\tif (!!(raw.payload[0] & 0b01)) {\n\t\t\ttilt = parseMaybeNumber(raw.payload[2]);\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tposition,\n\t\t\ttilt,\n\t\t});\n\t}\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\t\tconst valueDB = this.getValueDB(ctx);\n\n\t\tif (this.position != undefined) {\n\t\t\tconst positionValueId = getFibaroVenetianBlindPositionValueId(\n\t\t\t\tthis.endpointIndex,\n\t\t\t);\n\t\t\tvalueDB.setMetadata(positionValueId, {\n\t\t\t\t...ValueMetadata.Level,\n\t\t\t\tlabel: \"Venetian blinds position\",\n\t\t\t});\n\t\t\tvalueDB.setValue(positionValueId, this.position);\n\t\t}\n\t\tif (this.tilt != undefined) {\n\t\t\tconst tiltValueId = getFibaroVenetianBlindTiltValueId(\n\t\t\t\tthis.endpointIndex,\n\t\t\t);\n\t\t\tvalueDB.setMetadata(tiltValueId, {\n\t\t\t\t...ValueMetadata.Level,\n\t\t\t\tlabel: \"Venetian blinds tilt\",\n\t\t\t});\n\t\t\tvalueDB.setValue(tiltValueId, this.tilt);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tpublic position: MaybeUnknown<number> | undefined;\n\tpublic tilt: MaybeUnknown<number> | undefined;\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {};\n\t\tif (this.position != undefined) {\n\t\t\tmessage.position = this.position;\n\t\t}\n\t\tif (this.tilt != undefined) {\n\t\t\tmessage.tilt = this.tilt;\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@fibaroCCCommand(FibaroVenetianBlindCCCommand.Get)\n@expectedCCResponse(FibaroVenetianBlindCCReport)\nexport class FibaroVenetianBlindCCGet extends FibaroVenetianBlindCC {\n\tpublic constructor(\n\t\toptions: CommandClassOptions,\n\t) {\n\t\tsuper(options);\n\t\tthis.fibaroCCCommand = FibaroVenetianBlindCCCommand.Get;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): FibaroVenetianBlindCCGet {\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t});\n\t}\n}\n"],
5
- "mappings": ";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,kBAYO;AAOP,oBAA4B;AAE5B,wBAAwB;AACxB,iBASO;AAQP,oCAAmC;AACnC,uCAGO;AACP,wBASO;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAEA,MAAM,wBAAwB;AAG/B,SAAU,sCACf,UAAgB;AAEhB,SAAO;IACN,cAAc,2BAAe,0BAA0B;IACvD;IACA,UAAU;IACV,aAAa;;AAEf;AAGM,SAAU,yCAAsC;AACrD,SAAO;IACN,GAAG,0BAAc;IACjB,OAAO;;AAET;AAGM,SAAU,kCAAkC,UAAgB;AACjE,SAAO;IACN,cAAc,2BAAe,0BAA0B;IACvD;IACA,UAAU;IACV,aAAa;;AAEf;AAGM,SAAU,qCAAkC;AACjD,SAAO;IACN,GAAG,0BAAc;IACjB,OAAO;;AAET;AAEA,SAAS,wBACR,KACA,QAAc;AAEd,QAAM,oBAAoB,IAAI,kBAC7B,MAAM,GACJ;AACH,MAAI,yBAAqB,2BAAQ,kBAAkB,SAAS,GAAG;AAC9D,WAAO,kBAAkB;EAC1B;AAEA,SAAO,CAAA;AACR;AAEA,IAAY;CAAZ,SAAYA,cAAW;AACtB,EAAAA,aAAAA,aAAA,eAAA,IAAA,EAAA,IAAA;AACD,GAFY,gBAAA,cAAW,CAAA,EAAA;IAKV,eAAW,MAAA;8BADvB,8CAA2B,qBAAqB,CAAC;;;;oBACjB;mCAAA,YAA4B;;;;;;AAA7D,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;;IAEL,MAAM,0BAAuB;AACnC,YAAM,KAAK,IAAI,yBAAyB;QACvC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;OAC7B;AACD,YAAM,WAAW,MAAM,KAAK,KAAK,YAGhC,IACA,KAAK,cAAc;AAEpB,UAAI,UAAU;AACb,mBAAO,oBAAK,UAAU,CAAC,YAAY,MAAM,CAAC;MAC3C;IACD;IAGO,MAAM,gCAAgC,OAAa;;AACzD,YAAM,KAAK,IAAI,yBAAyB;QACvC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B,UAAU;OACV;AACD,YAAM,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;;IAI7C,MAAM,4BAA4B,OAAa;;AACrD,YAAM,KAAK,IAAI,yBAAyB;QACvC,QAAQ,KAAK,SAAS;QACtB,eAAe,KAAK,SAAS;QAC7B,MAAM;OACN;AACD,YAAM,KAAK,KAAK,YAAY,IAAI,KAAK,cAAc;;IAGpD,KAAwB,oBAAS,IAAC;AACjC,aAAO,eAEN,EAAE,UAAU,YAAW,GACvB,OAAK;AAEL,YAAI,aAAa,UAAU;AAC1B,mDAAyB,KAAK,MAAM,QAAQ;QAC7C;AAEA,YAAI,gBAAgB,0BAA0B;AAC7C,cAAI,OAAO,UAAU,UAAU;AAC9B,gDACC,KAAK,MACL,UACA,UACA,OAAO,KAAK;UAEd;AACA,gBAAM,KAAK,gCAAgC,KAAK;QACjD,WAAW,gBAAgB,sBAAsB;AAChD,cAAI,OAAO,UAAU,UAAU;AAC9B,gDACC,KAAK,MACL,UACA,UACA,OAAO,KAAK;UAEd;AACA,gBAAM,KAAK,4BAA4B,KAAK;QAC7C,OAAO;AAEN;QACD;AAGA,aAAK,aAAa,EAAE,UAAU,YAAW,GAAI,KAAK;AAElD,eAAO;MACR;IACD;IAEA,KAAe,qBAAU,IAAC;AACzB,aAAO,eAAkC,EAAE,UAAU,YAAW,GAAE;AACjE,YAAI,aAAa,UAAU;AAC1B,mDAAyB,KAAK,MAAM,QAAQ;QAC7C,WAAW,eAAe,QAAW;AACpC,kDAAwB,KAAK,MAAM,QAAQ;QAC5C;AAEA,gBAAQ,aAAa;UACpB,KAAK;AACJ,oBAAQ,MAAM,KAAK,wBAAuB,IAAK;UAChD,KAAK;AACJ,oBAAQ,MAAM,KAAK,wBAAuB,IAAK;UAChD;AACC,wDACC,KAAK,MACL,UACA,WAAW;QAEd;MACD;IACD;;;;IAIY,YAAQ,MAAA;8BADpB,kCAAe,qBAAqB,CAAC;;;;oBACR;gCAAA,YAAyB;;;;;;AAAvD,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAA4B;AAE5B,YAAM,OAAO;AAEb,WAAK,iBAAa,iCAAc,IAAI;AACpC,WAAK,sBAAkB,sCAAmB,IAAI;IAC/C;IAEO,OAAO,KAAK,KAAY,KAAqB;AACnD,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AACvC,YAAM,aAAa,IAAI,QAAQ,CAAC;AAChC,YAAMC,mBAAkB,IAAI,QAAQ,CAAC;AAErC,YAAM,wBAAoB,iDACzB,YACAA,gBAAe;AAEhB,UAAI,mBAAmB;AACtB,eAAO,kBAAkB,KACxB,IAAI,YAAY,IAAI,QAAQ,SAAS,CAAC,CAAC,GACvC,GAAG;MAEL;AAEA,aAAO,IAAIC,UAAS;QACnB,QAAQ,IAAI;OACZ;IACF;IAEO;IACA;IAEA,MAAM,UACZ,KAAqB;AAErB,YAAM,OAAO,KAAK,QAAQ,GAAG;AAG7B,YAAM,uBAAuB,wBAAwB,KAAK,KAAK,EAAE;AACjE,iBAAW,QAAQ,sBAAsB;AACxC,cAAM,qBAAiB,0CAAuB,IAAI;AAClD,YAAI,gBAAgB;AACnB,gBAAM,WAAW,IAAI,eAAe,EAAE,QAAQ,KAAK,GAAE,CAAE;AACvD,gBAAM,SAAS,UAAU,GAAG;QAC7B;MACD;IACD;IAEO,MAAM,cACZ,KAAyB;AAEzB,YAAM,OAAO,KAAK,QAAQ,GAAG;AAG7B,YAAM,uBAAuB,wBAAwB,KAAK,KAAK,EAAE;AACjE,iBAAW,QAAQ,sBAAsB;AACxC,cAAM,qBAAiB,0CAAuB,IAAI;AAClD,YAAI,gBAAgB;AACnB,gBAAM,WAAW,IAAI,eAAe,EAAE,QAAQ,KAAK,GAAE,CAAE;AACvD,gBAAM,SAAS,cAAc,GAAG;QACjC;MACD;IACD;IAEO,UAAU,KAAsB;AACtC,UAAI,KAAK,cAAc,QAAW;AACjC,cAAM,IAAI,uBACT,uDACA,4BAAgB,UAAU;MAE5B,WAAW,KAAK,mBAAmB,QAAW;AAC7C,cAAM,IAAI,uBACT,4DACA,4BAAgB,UAAU;MAE5B;AACA,WAAK,UAAU,oBAAM,OAAO;QAC3B,oBAAM,KAAK,CAAC,KAAK,YAAY,KAAK,eAAe,CAAC;QAClD,KAAK;OACL;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;;;;AAGD,IAAY;CAAZ,SAAYC,+BAA4B;AACvC,EAAAA,8BAAAA,8BAAA,KAAA,IAAA,CAAA,IAAA;AACA,EAAAA,8BAAAA,8BAAA,KAAA,IAAA,CAAA,IAAA;AACA,EAAAA,8BAAAA,8BAAA,QAAA,IAAA,CAAA,IAAA;AACD,GAJY,iCAAA,+BAA4B,CAAA,EAAA;IAO3B,yBAAqB,MAAA;8BADjC,4BAAS,YAAY,aAAa,CAAC;;;;oBACO;6CAAA,YAAQ;;;;;;AAAnD,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IAIZ,YACC,SAA4B;AAE5B,YAAM,OAAO;AACb,WAAK,aAAa,YAAY;IAC/B;IAEO,MAAM,UAAU,KAAqB;AAC3C,YAAM,OAAO,KAAK,QAAQ,GAAG;AAE7B,UAAI,QAAQ,KAAK,IAAI;QACpB,UAAU,KAAK;QACf,SAAS;QACT,WAAW;OACX;AAGD,YAAM,KAAK,cAAc,GAAG;IAC7B;IAEO,MAAM,cAAc,KAAyB;AACnD,YAAM,OAAO,KAAK,QAAQ,GAAG;AAE7B,UAAI,QAAQ,KAAK,IAAI;QACpB,SAAS;QACT,WAAW;OACX;AACD,YAAM,OAAO,MAAM,IAAI,YACtB,IAAI,yBAAyB;QAC5B,QAAQ,KAAK;QACb,eAAe,KAAK;OACpB,CAAC;AAEH,UAAI,MAAM;AACT,cAAM,aAAa;YACV,KAAK,QAAQ;YACb,KAAK,IAAI;AAClB,YAAI,QAAQ,KAAK,IAAI;UACpB,SAAS;UACT,WAAW;SACX;MACF;IACD;;;;IAiBY,4BAAwB,MAAA;8BADpC,mCAAgB,6BAA6B,GAAG,CAAC;;;;oBACJ;gDAAA,YAAqB;;;;;;AAAnE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAqD;AAErD,YAAM,OAAO;AACb,WAAK,kBAAkB,6BAA6B;AAEpD,UAAI,cAAc;AAAS,aAAK,WAAW,QAAQ;AACnD,UAAI,UAAU;AAAS,aAAK,OAAO,QAAQ;IAC5C;IAEO,OAAO,KACb,MACA,MAAsB;AAGtB,YAAM,IAAI,uBACT,GAAG,KAAK,IAAI,qCACZ,4BAAgB,8BAA8B;IAEhD;IAEO;IACA;IAEA,UAAU,KAAsB;AACtC,YAAM,eAAe,KAAK,YAAY,SAAY,IAAO,MACrD,KAAK,QAAQ,SAAY,IAAO;AACpC,WAAK,UAAU,oBAAM,KAAK;QACzB;QACA,KAAK,YAAY;QACjB,KAAK,QAAQ;OACb;AACD,aAAO,MAAM,UAAU,GAAG;IAC3B;IAEO,WAAW,KAAgB;AACjC,YAAM,UAAyB,CAAA;AAC/B,UAAI,KAAK,YAAY,QAAW;AAC/B,gBAAQ,WAAW,KAAK;MACzB;AACA,UAAI,KAAK,QAAQ,QAAW;AAC3B,gBAAQ,OAAO,KAAK;MACrB;AACA,aAAO;QACN,GAAG,MAAM,WAAW,GAAG;QACvB;;IAEF;;;;IAUY,+BAA2B,MAAA;8BADvC,mCAAgB,6BAA6B,MAAM,CAAC;;;;oBACJ;mDAAA,YAAqB;;;;;;AAAtE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAAwD;AAExD,YAAM,OAAO;AACb,WAAK,kBAAkB,6BAA6B;AAGpD,WAAK,WAAW,QAAQ;AACxB,WAAK,OAAO,QAAQ;IACrB;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,uCAAgB,IAAI,QAAQ,UAAU,CAAC;AAGvC,UAAI;AACJ,UAAI,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,IAAO;AAC9B,uBAAW,8BAAiB,IAAI,QAAQ,CAAC,CAAC;MAC3C;AAEA,UAAI;AACJ,UAAI,CAAC,EAAE,IAAI,QAAQ,CAAC,IAAI,IAAO;AAC9B,mBAAO,8BAAiB,IAAI,QAAQ,CAAC,CAAC;MACvC;AAEA,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;QACZ;QACA;OACA;IACF;IAEO,cAAc,KAAyB;AAC7C,UAAI,CAAC,MAAM,cAAc,GAAG;AAAG,eAAO;AACtC,YAAM,UAAU,KAAK,WAAW,GAAG;AAEnC,UAAI,KAAK,YAAY,QAAW;AAC/B,cAAM,kBAAkB,sCACvB,KAAK,aAAa;AAEnB,gBAAQ,YAAY,iBAAiB;UACpC,GAAG,0BAAc;UACjB,OAAO;SACP;AACD,gBAAQ,SAAS,iBAAiB,KAAK,QAAQ;MAChD;AACA,UAAI,KAAK,QAAQ,QAAW;AAC3B,cAAM,cAAc,kCACnB,KAAK,aAAa;AAEnB,gBAAQ,YAAY,aAAa;UAChC,GAAG,0BAAc;UACjB,OAAO;SACP;AACD,gBAAQ,SAAS,aAAa,KAAK,IAAI;MACxC;AAEA,aAAO;IACR;IAEO;IACA;IAEA,WAAW,KAAgB;AACjC,YAAM,UAAyB,CAAA;AAC/B,UAAI,KAAK,YAAY,QAAW;AAC/B,gBAAQ,WAAW,KAAK;MACzB;AACA,UAAI,KAAK,QAAQ,QAAW;AAC3B,gBAAQ,OAAO,KAAK;MACrB;AACA,aAAO;QACN,GAAG,MAAM,WAAW,GAAG;QACvB;;IAEF;;;;IAKY,4BAAwB,MAAA;8BAFpC,mCAAgB,6BAA6B,GAAG,OAChD,kDAAmB,2BAA2B,CAAC;;;;oBACF;gDAAA,YAAqB;;;;;;AAAnE,mBAAA,MAAA,mBAAA,EAAA,OAAA,WAAA,GAAA,kBAAA,EAAA,MAAA,SAAA,MAAA,WAAA,MAAA,UAAA,UAAA,GAAA,MAAA,uBAAA;;;AAAa,wBAAA,YAAA,uBAAA;;IACZ,YACC,SAA4B;AAE5B,YAAM,OAAO;AACb,WAAK,kBAAkB,6BAA6B;IACrD;IAEO,OAAO,KACb,KACA,KAAqB;AAErB,aAAO,IAAI,KAAK;QACf,QAAQ,IAAI;OACZ;IACF;;;;",
4
+ "sourcesContent": ["import {\n\tCommandClasses,\n\ttype MaybeUnknown,\n\ttype MessageOrCCLogEntry,\n\ttype MessageRecord,\n\ttype ValueID,\n\tValueMetadata,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tparseMaybeNumber,\n\tvalidatePayload,\n} from \"@zwave-js/core/safe\";\nimport type {\n\tCCEncodingContext,\n\tCCParsingContext,\n\tGetDeviceConfig,\n\tGetValueDB,\n} from \"@zwave-js/host/safe\";\nimport { Bytes, pick } from \"@zwave-js/shared\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { isArray } from \"alcalzone-shared/typeguards\";\nimport {\n\tPOLL_VALUE,\n\ttype PollValueImplementation,\n\tSET_VALUE,\n\ttype SetValueImplementation,\n\tthrowMissingPropertyKey,\n\tthrowUnsupportedProperty,\n\tthrowUnsupportedPropertyKey,\n\tthrowWrongValueType,\n} from \"../../lib/API.js\";\nimport {\n\ttype CCRaw,\n\ttype CommandClassOptions,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n\ttype RefreshValuesContext,\n} from \"../../lib/CommandClass.js\";\nimport { expectedCCResponse } from \"../../lib/CommandClassDecorators.js\";\nimport {\n\tManufacturerProprietaryCC,\n\tManufacturerProprietaryCCAPI,\n} from \"../ManufacturerProprietaryCC.js\";\nimport {\n\tfibaroCC,\n\tfibaroCCCommand,\n\tgetFibaroCCCommand,\n\tgetFibaroCCCommandConstructor,\n\tgetFibaroCCConstructor,\n\tgetFibaroCCId,\n\tmanufacturerId,\n\tmanufacturerProprietaryAPI,\n} from \"./Decorators.js\";\n\nexport const MANUFACTURERID_FIBARO = 0x10f;\n\n/** Returns the ValueID used to store the current venetian blind position */\nexport function getFibaroVenetianBlindPositionValueId(\n\tendpoint: number,\n): ValueID {\n\treturn {\n\t\tcommandClass: CommandClasses[\"Manufacturer Proprietary\"],\n\t\tendpoint,\n\t\tproperty: \"fibaro\",\n\t\tpropertyKey: \"venetianBlindsPosition\",\n\t};\n}\n\n/** Returns the value metadata for venetian blind position */\nexport function getFibaroVenetianBlindPositionMetadata(): ValueMetadata {\n\treturn {\n\t\t...ValueMetadata.Level,\n\t\tlabel: \"Venetian blinds position\",\n\t};\n}\n\n/** Returns the ValueID used to store the current venetian blind tilt */\nexport function getFibaroVenetianBlindTiltValueId(endpoint: number): ValueID {\n\treturn {\n\t\tcommandClass: CommandClasses[\"Manufacturer Proprietary\"],\n\t\tendpoint,\n\t\tproperty: \"fibaro\",\n\t\tpropertyKey: \"venetianBlindsTilt\",\n\t};\n}\n\n/** Returns the value metadata for venetian blind tilt */\nexport function getFibaroVenetianBlindTiltMetadata(): ValueMetadata {\n\treturn {\n\t\t...ValueMetadata.Level,\n\t\tlabel: \"Venetian blinds tilt\",\n\t};\n}\n\nfunction getSupportedFibaroCCIDs(\n\tctx: GetDeviceConfig,\n\tnodeId: number,\n): FibaroCCIDs[] {\n\tconst proprietaryConfig = ctx.getDeviceConfig?.(\n\t\tnodeId,\n\t)?.proprietary;\n\tif (proprietaryConfig && isArray(proprietaryConfig.fibaroCCs)) {\n\t\treturn proprietaryConfig.fibaroCCs as FibaroCCIDs[];\n\t}\n\n\treturn [];\n}\n\nexport enum FibaroCCIDs {\n\tVenetianBlind = 0x26,\n}\n\n@manufacturerProprietaryAPI(MANUFACTURERID_FIBARO)\nexport class FibaroCCAPI extends ManufacturerProprietaryCCAPI {\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async fibaroVenetianBlindsGet() {\n\t\tconst cc = new FibaroVenetianBlindCCGet({\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\tFibaroVenetianBlindCCReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\t\tif (response) {\n\t\t\treturn pick(response, [\"position\", \"tilt\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async fibaroVenetianBlindsSetPosition(value: number): Promise<void> {\n\t\tconst cc = new FibaroVenetianBlindCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\tposition: value,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\t@validateArgs()\n\tpublic async fibaroVenetianBlindsSetTilt(value: number): Promise<void> {\n\t\tconst cc = new FibaroVenetianBlindCCSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\ttilt: value,\n\t\t});\n\t\tawait this.host.sendCommand(cc, this.commandOptions);\n\t}\n\n\tprotected override get [SET_VALUE](): SetValueImplementation {\n\t\treturn async function(\n\t\t\tthis: FibaroCCAPI,\n\t\t\t{ property, propertyKey },\n\t\t\tvalue,\n\t\t) {\n\t\t\tif (property !== \"fibaro\") {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t}\n\n\t\t\tif (propertyKey === \"venetianBlindsPosition\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait this.fibaroVenetianBlindsSetPosition(value);\n\t\t\t} else if (propertyKey === \"venetianBlindsTilt\") {\n\t\t\t\tif (typeof value !== \"number\") {\n\t\t\t\t\tthrowWrongValueType(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\t\"number\",\n\t\t\t\t\t\ttypeof value,\n\t\t\t\t\t);\n\t\t\t\t}\n\t\t\t\tawait this.fibaroVenetianBlindsSetTilt(value);\n\t\t\t} else {\n\t\t\t\t// unsupported property key, ignore...\n\t\t\t\treturn;\n\t\t\t}\n\n\t\t\t// Verify the current value after a delay\n\t\t\tthis.schedulePoll({ property, propertyKey }, value);\n\n\t\t\treturn undefined;\n\t\t};\n\t}\n\n\tprotected get [POLL_VALUE](): PollValueImplementation {\n\t\treturn async function(this: FibaroCCAPI, { property, propertyKey }) {\n\t\t\tif (property !== \"fibaro\") {\n\t\t\t\tthrowUnsupportedProperty(this.ccId, property);\n\t\t\t} else if (propertyKey == undefined) {\n\t\t\t\tthrowMissingPropertyKey(this.ccId, property);\n\t\t\t}\n\n\t\t\tswitch (propertyKey) {\n\t\t\t\tcase \"venetianBlindsPosition\":\n\t\t\t\t\treturn (await this.fibaroVenetianBlindsGet())?.position;\n\t\t\t\tcase \"venetianBlindsTilt\":\n\t\t\t\t\treturn (await this.fibaroVenetianBlindsGet())?.tilt;\n\t\t\t\tdefault:\n\t\t\t\t\tthrowUnsupportedPropertyKey(\n\t\t\t\t\t\tthis.ccId,\n\t\t\t\t\t\tproperty,\n\t\t\t\t\t\tpropertyKey,\n\t\t\t\t\t);\n\t\t\t}\n\t\t};\n\t}\n}\n\n@manufacturerId(MANUFACTURERID_FIBARO)\nexport class FibaroCC extends ManufacturerProprietaryCC {\n\tpublic constructor(\n\t\toptions: CommandClassOptions,\n\t) {\n\t\tsuper(options);\n\n\t\tthis.fibaroCCId = getFibaroCCId(this);\n\t\tthis.fibaroCCCommand = getFibaroCCCommand(this);\n\t}\n\n\tpublic static from(raw: CCRaw, ctx: CCParsingContext): FibaroCC {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst fibaroCCId = raw.payload[0];\n\t\tconst fibaroCCCommand = raw.payload[1];\n\n\t\tconst FibaroConstructor = getFibaroCCCommandConstructor(\n\t\t\tfibaroCCId,\n\t\t\tfibaroCCCommand,\n\t\t);\n\t\tif (FibaroConstructor) {\n\t\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\t\treturn FibaroConstructor.from(\n\t\t\t\traw.withPayload(raw.payload.subarray(2)),\n\t\t\t\tctx,\n\t\t\t);\n\t\t}\n\n\t\treturn new FibaroCC({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t});\n\t}\n\n\tpublic fibaroCCId?: number;\n\tpublic fibaroCCCommand?: number;\n\n\tpublic async interview(\n\t\tctx: InterviewContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\n\t\t// Iterate through all supported Fibaro CCs and interview them\n\t\tconst supportedFibaroCCIDs = getSupportedFibaroCCIDs(ctx, node.id);\n\t\tfor (const ccId of supportedFibaroCCIDs) {\n\t\t\tconst SubConstructor = getFibaroCCConstructor(ccId);\n\t\t\tif (SubConstructor) {\n\t\t\t\tconst instance = new SubConstructor({ nodeId: node.id });\n\t\t\t\tawait instance.interview(ctx);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic async refreshValues(\n\t\tctx: RefreshValuesContext,\n\t): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\n\t\t// Iterate through all supported Fibaro CCs and let them refresh their values\n\t\tconst supportedFibaroCCIDs = getSupportedFibaroCCIDs(ctx, node.id);\n\t\tfor (const ccId of supportedFibaroCCIDs) {\n\t\t\tconst SubConstructor = getFibaroCCConstructor(ccId);\n\t\t\tif (SubConstructor) {\n\t\t\t\tconst instance = new SubConstructor({ nodeId: node.id });\n\t\t\t\tawait instance.refreshValues(ctx);\n\t\t\t}\n\t\t}\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tif (this.fibaroCCId == undefined) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"Cannot serialize a Fibaro CC without a Fibaro CC ID\",\n\t\t\t\tZWaveErrorCodes.CC_Invalid,\n\t\t\t);\n\t\t} else if (this.fibaroCCCommand == undefined) {\n\t\t\tthrow new ZWaveError(\n\t\t\t\t\"Cannot serialize a Fibaro CC without a Fibaro CC Command\",\n\t\t\t\tZWaveErrorCodes.CC_Invalid,\n\t\t\t);\n\t\t}\n\t\tthis.payload = Bytes.concat([\n\t\t\tBytes.from([this.fibaroCCId, this.fibaroCCCommand]),\n\t\t\tthis.payload,\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n}\n\nexport enum FibaroVenetianBlindCCCommand {\n\tSet = 0x01,\n\tGet = 0x02,\n\tReport = 0x03,\n}\n\n@fibaroCC(FibaroCCIDs.VenetianBlind)\nexport class FibaroVenetianBlindCC extends FibaroCC {\n\tdeclare fibaroCCId: FibaroCCIDs.VenetianBlind;\n\tdeclare fibaroCCCommand: FibaroVenetianBlindCCCommand;\n\n\tpublic constructor(\n\t\toptions: CommandClassOptions,\n\t) {\n\t\tsuper(options);\n\t\tthis.fibaroCCId = FibaroCCIDs.VenetianBlind;\n\t}\n\n\tpublic async interview(ctx: InterviewContext): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\n\t\tctx.logNode(node.id, {\n\t\t\tendpoint: this.endpointIndex,\n\t\t\tmessage: `Interviewing Fibaro Venetian Blind CC...`,\n\t\t\tdirection: \"none\",\n\t\t});\n\n\t\t// Nothing special, just get the values\n\t\tawait this.refreshValues(ctx);\n\t}\n\n\tpublic async refreshValues(ctx: RefreshValuesContext): Promise<void> {\n\t\tconst node = this.getNode(ctx)!;\n\n\t\tctx.logNode(node.id, {\n\t\t\tmessage: \"Requesting venetian blind position and tilt...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst resp = await ctx.sendCommand<FibaroVenetianBlindCCReport>(\n\t\t\tnew FibaroVenetianBlindCCGet({\n\t\t\t\tnodeId: this.nodeId,\n\t\t\t\tendpointIndex: this.endpointIndex,\n\t\t\t}),\n\t\t);\n\t\tif (resp) {\n\t\t\tconst logMessage = `received venetian blind state:\nposition: ${resp.position}\ntilt: ${resp.tilt}`;\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tmessage: logMessage,\n\t\t\t\tdirection: \"inbound\",\n\t\t\t});\n\t\t}\n\t}\n}\n\n// @publicAPI\nexport type FibaroVenetianBlindCCSetOptions =\n\t| {\n\t\tposition: number;\n\t}\n\t| {\n\t\ttilt: number;\n\t}\n\t| {\n\t\tposition: number;\n\t\ttilt: number;\n\t};\n\n@fibaroCCCommand(FibaroVenetianBlindCCCommand.Set)\nexport class FibaroVenetianBlindCCSet extends FibaroVenetianBlindCC {\n\tpublic constructor(\n\t\toptions: WithAddress<FibaroVenetianBlindCCSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.fibaroCCCommand = FibaroVenetianBlindCCCommand.Set;\n\n\t\tif (\"position\" in options) this.position = options.position;\n\t\tif (\"tilt\" in options) this.tilt = options.tilt;\n\t}\n\n\tpublic static from(\n\t\t_raw: CCRaw,\n\t\t_ctx: CCParsingContext,\n\t): FibaroVenetianBlindCCSet {\n\t\t// TODO: Deserialize payload\n\t\tthrow new ZWaveError(\n\t\t\t`${this.name}: deserialization not implemented`,\n\t\t\tZWaveErrorCodes.Deserialization_NotImplemented,\n\t\t);\n\t}\n\n\tpublic position: number | undefined;\n\tpublic tilt: number | undefined;\n\n\tpublic serialize(ctx: CCEncodingContext): Bytes {\n\t\tconst controlByte = (this.position != undefined ? 0b10 : 0)\n\t\t\t| (this.tilt != undefined ? 0b01 : 0);\n\t\tthis.payload = Bytes.from([\n\t\t\tcontrolByte,\n\t\t\tthis.position ?? 0,\n\t\t\tthis.tilt ?? 0,\n\t\t]);\n\t\t// eslint-disable-next-line @typescript-eslint/no-deprecated\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {};\n\t\tif (this.position != undefined) {\n\t\t\tmessage.position = this.position;\n\t\t}\n\t\tif (this.tilt != undefined) {\n\t\t\tmessage.tilt = this.tilt;\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 FibaroVenetianBlindCCReportOptions {\n\tposition?: MaybeUnknown<number>;\n\ttilt?: MaybeUnknown<number>;\n}\n\n@fibaroCCCommand(FibaroVenetianBlindCCCommand.Report)\nexport class FibaroVenetianBlindCCReport extends FibaroVenetianBlindCC {\n\tpublic constructor(\n\t\toptions: WithAddress<FibaroVenetianBlindCCReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.fibaroCCCommand = FibaroVenetianBlindCCCommand.Report;\n\n\t\t// TODO: Check implementation:\n\t\tthis.position = options.position;\n\t\tthis.tilt = options.tilt;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): FibaroVenetianBlindCCReport {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\t// When the node sends a report, payload[0] === 0b11. This is probably a\n\t\t// bit mask for position and tilt\n\t\tlet position: MaybeUnknown<number> | undefined;\n\t\tif (!!(raw.payload[0] & 0b10)) {\n\t\t\tposition = parseMaybeNumber(raw.payload[1]);\n\t\t}\n\n\t\tlet tilt: MaybeUnknown<number> | undefined;\n\t\tif (!!(raw.payload[0] & 0b01)) {\n\t\t\ttilt = parseMaybeNumber(raw.payload[2]);\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tposition,\n\t\t\ttilt,\n\t\t});\n\t}\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\t\tconst valueDB = this.getValueDB(ctx);\n\n\t\tif (this.position != undefined) {\n\t\t\tconst positionValueId = getFibaroVenetianBlindPositionValueId(\n\t\t\t\tthis.endpointIndex,\n\t\t\t);\n\t\t\tvalueDB.setMetadata(positionValueId, {\n\t\t\t\t...ValueMetadata.Level,\n\t\t\t\tlabel: \"Venetian blinds position\",\n\t\t\t});\n\t\t\tvalueDB.setValue(positionValueId, this.position);\n\t\t}\n\t\tif (this.tilt != undefined) {\n\t\t\tconst tiltValueId = getFibaroVenetianBlindTiltValueId(\n\t\t\t\tthis.endpointIndex,\n\t\t\t);\n\t\t\tvalueDB.setMetadata(tiltValueId, {\n\t\t\t\t...ValueMetadata.Level,\n\t\t\t\tlabel: \"Venetian blinds tilt\",\n\t\t\t});\n\t\t\tvalueDB.setValue(tiltValueId, this.tilt);\n\t\t}\n\n\t\treturn true;\n\t}\n\n\tpublic position: MaybeUnknown<number> | undefined;\n\tpublic tilt: MaybeUnknown<number> | undefined;\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tconst message: MessageRecord = {};\n\t\tif (this.position != undefined) {\n\t\t\tmessage.position = this.position;\n\t\t}\n\t\tif (this.tilt != undefined) {\n\t\t\tmessage.tilt = this.tilt;\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@fibaroCCCommand(FibaroVenetianBlindCCCommand.Get)\n@expectedCCResponse(FibaroVenetianBlindCCReport)\nexport class FibaroVenetianBlindCCGet extends FibaroVenetianBlindCC {\n\tpublic constructor(\n\t\toptions: CommandClassOptions,\n\t) {\n\t\tsuper(options);\n\t\tthis.fibaroCCCommand = FibaroVenetianBlindCCCommand.Get;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): FibaroVenetianBlindCCGet {\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t});\n\t}\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["FibaroCCIDs", "fibaroCCCommand", "FibaroCC", "FibaroVenetianBlindCCCommand"]
7
7
  }
@@ -25,8 +25,12 @@ export declare class CCRaw {
25
25
  }
26
26
  export declare class CommandClass implements CCId {
27
27
  constructor(options: CommandClassOptions);
28
+ /** @deprecated Use {@link parseAsync} instead */
28
29
  static parse(data: Uint8Array, ctx: CCParsingContext): CommandClass;
30
+ static parseAsync(data: Uint8Array, ctx: CCParsingContext): Promise<CommandClass>;
31
+ /** @deprecated Use {@link fromAsync} instead */
29
32
  static from(raw: CCRaw, ctx: CCParsingContext): CommandClass;
33
+ static fromAsync(raw: CCRaw, ctx: CCParsingContext): Promise<CommandClass>;
30
34
  /** This CC's identifier */
31
35
  ccId: CommandClasses;
32
36
  ccCommand?: number;
@@ -56,8 +60,13 @@ export declare class CommandClass implements CCId {
56
60
  setInterviewComplete(host: GetValueDB, complete: boolean): void;
57
61
  /**
58
62
  * Serializes this CommandClass to be embedded in a message payload or another CC
63
+ * @deprecated Use {@link serializeAsync} instead
59
64
  */
60
65
  serialize(ctx: CCEncodingContext): Bytes;
66
+ /**
67
+ * Serializes this CommandClass to be embedded in a message payload or another CC
68
+ */
69
+ serializeAsync(ctx: CCEncodingContext): Promise<Bytes>;
61
70
  prepareRetransmission(): void;
62
71
  /**
63
72
  * Create an instance of the given CC without checking whether it is supported.
@@ -177,8 +186,13 @@ export declare class CommandClass implements CCId {
177
186
  * @param _session The previously received set of messages received in this partial CC session
178
187
  */
179
188
  expectMoreMessages(_session: CommandClass[]): boolean;
180
- /** Include previously received partial responses into a final CC */
189
+ /**
190
+ * Include previously received partial responses into a final CC
191
+ * @deprecated Use {@link mergePartialCCsAsync} instead
192
+ */
181
193
  mergePartialCCs(_partials: CommandClass[], _ctx: CCParsingContext): void;
194
+ /** Include previously received partial responses into a final CC */
195
+ mergePartialCCsAsync(_partials: CommandClass[], _ctx: CCParsingContext): Promise<void>;
182
196
  /** Tests whether this CC expects at least one command in return */
183
197
  expectsCCResponse(): boolean;
184
198
  isExpectedCCResponse(received: CommandClass): boolean;