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

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (376) hide show
  1. package/build/cjs/cc/AlarmSensorCC.d.ts +79 -161
  2. package/build/cjs/cc/AlarmSensorCC.js +12 -50
  3. package/build/cjs/cc/AlarmSensorCC.js.map +2 -2
  4. package/build/cjs/cc/AssociationCC.d.ts +63 -199
  5. package/build/cjs/cc/AssociationCC.js +9 -22
  6. package/build/cjs/cc/AssociationCC.js.map +2 -2
  7. package/build/cjs/cc/AssociationGroupInfoCC.d.ts +66 -166
  8. package/build/cjs/cc/AssociationGroupInfoCC.js +11 -22
  9. package/build/cjs/cc/AssociationGroupInfoCC.js.map +2 -2
  10. package/build/cjs/cc/BarrierOperatorCC.d.ts +86 -294
  11. package/build/cjs/cc/BarrierOperatorCC.js +12 -44
  12. package/build/cjs/cc/BarrierOperatorCC.js.map +2 -2
  13. package/build/cjs/cc/BasicCC.d.ts +85 -331
  14. package/build/cjs/cc/BasicCC.js +15 -46
  15. package/build/cjs/cc/BasicCC.js.map +2 -2
  16. package/build/cjs/cc/BatteryCC.d.ts +237 -835
  17. package/build/cjs/cc/BatteryCC.js +7 -84
  18. package/build/cjs/cc/BatteryCC.js.map +2 -2
  19. package/build/cjs/cc/BinarySensorCC.d.ts +34 -99
  20. package/build/cjs/cc/BinarySensorCC.js +9 -29
  21. package/build/cjs/cc/BinarySensorCC.js.map +2 -2
  22. package/build/cjs/cc/BinarySwitchCC.d.ts +45 -197
  23. package/build/cjs/cc/BinarySwitchCC.js +6 -22
  24. package/build/cjs/cc/BinarySwitchCC.js.map +2 -2
  25. package/build/cjs/cc/CentralSceneCC.d.ts +77 -296
  26. package/build/cjs/cc/CentralSceneCC.js +7 -30
  27. package/build/cjs/cc/CentralSceneCC.js.map +2 -2
  28. package/build/cjs/cc/ClimateControlScheduleCC.d.ts +45 -160
  29. package/build/cjs/cc/ClimateControlScheduleCC.js +5 -24
  30. package/build/cjs/cc/ClimateControlScheduleCC.js.map +2 -2
  31. package/build/cjs/cc/ColorSwitchCC.d.ts +130 -457
  32. package/build/cjs/cc/ColorSwitchCC.js +23 -75
  33. package/build/cjs/cc/ColorSwitchCC.js.map +2 -2
  34. package/build/cjs/cc/ConfigurationCC.d.ts +32 -100
  35. package/build/cjs/cc/ConfigurationCC.js +11 -31
  36. package/build/cjs/cc/ConfigurationCC.js.map +2 -2
  37. package/build/cjs/cc/DoorLockCC.d.ts +512 -1823
  38. package/build/cjs/cc/DoorLockCC.js +51 -156
  39. package/build/cjs/cc/DoorLockCC.js.map +2 -2
  40. package/build/cjs/cc/DoorLockLoggingCC.d.ts +11 -63
  41. package/build/cjs/cc/DoorLockLoggingCC.js +4 -8
  42. package/build/cjs/cc/DoorLockLoggingCC.js.map +2 -2
  43. package/build/cjs/cc/EnergyProductionCC.d.ts +14 -29
  44. package/build/cjs/cc/EnergyProductionCC.js +5 -17
  45. package/build/cjs/cc/EnergyProductionCC.js.map +2 -2
  46. package/build/cjs/cc/EntryControlCC.d.ts +73 -324
  47. package/build/cjs/cc/EntryControlCC.js +9 -36
  48. package/build/cjs/cc/EntryControlCC.js.map +2 -2
  49. package/build/cjs/cc/FirmwareUpdateMetaDataCC.d.ts +78 -390
  50. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js +5 -26
  51. package/build/cjs/cc/FirmwareUpdateMetaDataCC.js.map +2 -2
  52. package/build/cjs/cc/HumidityControlModeCC.d.ts +31 -131
  53. package/build/cjs/cc/HumidityControlModeCC.js +6 -15
  54. package/build/cjs/cc/HumidityControlModeCC.js.map +2 -2
  55. package/build/cjs/cc/HumidityControlOperatingStateCC.d.ts +17 -65
  56. package/build/cjs/cc/HumidityControlOperatingStateCC.js +4 -12
  57. package/build/cjs/cc/HumidityControlOperatingStateCC.js.map +2 -2
  58. package/build/cjs/cc/HumidityControlSetpointCC.d.ts +51 -128
  59. package/build/cjs/cc/HumidityControlSetpointCC.js +10 -28
  60. package/build/cjs/cc/HumidityControlSetpointCC.js.map +2 -2
  61. package/build/cjs/cc/IndicatorCC.d.ts +123 -365
  62. package/build/cjs/cc/IndicatorCC.js +15 -61
  63. package/build/cjs/cc/IndicatorCC.js.map +2 -2
  64. package/build/cjs/cc/IrrigationCC.d.ts +826 -2317
  65. package/build/cjs/cc/IrrigationCC.js +29 -233
  66. package/build/cjs/cc/IrrigationCC.js.map +2 -2
  67. package/build/cjs/cc/LanguageCC.d.ts +31 -133
  68. package/build/cjs/cc/LanguageCC.js +4 -15
  69. package/build/cjs/cc/LanguageCC.js.map +2 -2
  70. package/build/cjs/cc/LockCC.d.ts +14 -64
  71. package/build/cjs/cc/LockCC.js +4 -12
  72. package/build/cjs/cc/LockCC.js.map +2 -2
  73. package/build/cjs/cc/ManufacturerProprietaryCC.js.map +2 -2
  74. package/build/cjs/cc/ManufacturerSpecificCC.d.ts +77 -239
  75. package/build/cjs/cc/ManufacturerSpecificCC.js +5 -26
  76. package/build/cjs/cc/ManufacturerSpecificCC.js.map +2 -2
  77. package/build/cjs/cc/MeterCC.d.ts +119 -393
  78. package/build/cjs/cc/MeterCC.js +25 -69
  79. package/build/cjs/cc/MeterCC.js.map +2 -2
  80. package/build/cjs/cc/MultiChannelAssociationCC.d.ts +66 -166
  81. package/build/cjs/cc/MultiChannelAssociationCC.js +10 -23
  82. package/build/cjs/cc/MultiChannelAssociationCC.js.map +2 -2
  83. package/build/cjs/cc/MultiChannelCC.d.ts +119 -499
  84. package/build/cjs/cc/MultiChannelCC.js +18 -46
  85. package/build/cjs/cc/MultiChannelCC.js.map +2 -2
  86. package/build/cjs/cc/MultilevelSensorCC.d.ts +46 -130
  87. package/build/cjs/cc/MultilevelSensorCC.js +12 -33
  88. package/build/cjs/cc/MultilevelSensorCC.js.map +2 -2
  89. package/build/cjs/cc/MultilevelSwitchCC.d.ts +160 -525
  90. package/build/cjs/cc/MultilevelSwitchCC.js +13 -107
  91. package/build/cjs/cc/MultilevelSwitchCC.js.map +2 -2
  92. package/build/cjs/cc/NodeNamingCC.d.ts +33 -135
  93. package/build/cjs/cc/NodeNamingCC.js +5 -16
  94. package/build/cjs/cc/NodeNamingCC.js.map +2 -2
  95. package/build/cjs/cc/NotificationCC.d.ts +262 -702
  96. package/build/cjs/cc/NotificationCC.js +29 -112
  97. package/build/cjs/cc/NotificationCC.js.map +2 -2
  98. package/build/cjs/cc/ProtectionCC.d.ts +118 -524
  99. package/build/cjs/cc/ProtectionCC.js +15 -50
  100. package/build/cjs/cc/ProtectionCC.js.map +2 -2
  101. package/build/cjs/cc/SceneActivationCC.d.ts +33 -132
  102. package/build/cjs/cc/SceneActivationCC.js +4 -17
  103. package/build/cjs/cc/SceneActivationCC.js.map +2 -2
  104. package/build/cjs/cc/SceneActuatorConfigurationCC.d.ts +34 -61
  105. package/build/cjs/cc/SceneActuatorConfigurationCC.js +9 -21
  106. package/build/cjs/cc/SceneActuatorConfigurationCC.js.map +2 -2
  107. package/build/cjs/cc/SceneControllerConfigurationCC.d.ts +34 -61
  108. package/build/cjs/cc/SceneControllerConfigurationCC.js +10 -22
  109. package/build/cjs/cc/SceneControllerConfigurationCC.js.map +2 -2
  110. package/build/cjs/cc/ScheduleEntryLockCC.d.ts +95 -299
  111. package/build/cjs/cc/ScheduleEntryLockCC.js +13 -30
  112. package/build/cjs/cc/ScheduleEntryLockCC.js.map +2 -2
  113. package/build/cjs/cc/SoundSwitchCC.d.ts +72 -261
  114. package/build/cjs/cc/SoundSwitchCC.js +11 -43
  115. package/build/cjs/cc/SoundSwitchCC.js.map +2 -2
  116. package/build/cjs/cc/SupervisionCC.d.ts +17 -33
  117. package/build/cjs/cc/SupervisionCC.js +4 -9
  118. package/build/cjs/cc/SupervisionCC.js.map +2 -2
  119. package/build/cjs/cc/ThermostatFanModeCC.d.ts +44 -195
  120. package/build/cjs/cc/ThermostatFanModeCC.js +8 -21
  121. package/build/cjs/cc/ThermostatFanModeCC.js.map +2 -2
  122. package/build/cjs/cc/ThermostatFanStateCC.d.ts +17 -65
  123. package/build/cjs/cc/ThermostatFanStateCC.js +4 -12
  124. package/build/cjs/cc/ThermostatFanStateCC.js.map +2 -2
  125. package/build/cjs/cc/ThermostatModeCC.d.ts +44 -195
  126. package/build/cjs/cc/ThermostatModeCC.js +8 -21
  127. package/build/cjs/cc/ThermostatModeCC.js.map +2 -2
  128. package/build/cjs/cc/ThermostatOperatingStateCC.d.ts +17 -65
  129. package/build/cjs/cc/ThermostatOperatingStateCC.js +4 -12
  130. package/build/cjs/cc/ThermostatOperatingStateCC.js.map +2 -2
  131. package/build/cjs/cc/ThermostatSetpointCC.d.ts +49 -129
  132. package/build/cjs/cc/ThermostatSetpointCC.js +10 -25
  133. package/build/cjs/cc/ThermostatSetpointCC.js.map +2 -2
  134. package/build/cjs/cc/TimeParametersCC.d.ts +12 -63
  135. package/build/cjs/cc/TimeParametersCC.js +4 -11
  136. package/build/cjs/cc/TimeParametersCC.js.map +2 -2
  137. package/build/cjs/cc/UserCodeCC.d.ts +311 -1066
  138. package/build/cjs/cc/UserCodeCC.js +33 -98
  139. package/build/cjs/cc/UserCodeCC.js.map +2 -2
  140. package/build/cjs/cc/VersionCC.d.ts +289 -1003
  141. package/build/cjs/cc/VersionCC.js +7 -98
  142. package/build/cjs/cc/VersionCC.js.map +2 -2
  143. package/build/cjs/cc/WakeUpCC.d.ts +49 -201
  144. package/build/cjs/cc/WakeUpCC.js +6 -26
  145. package/build/cjs/cc/WakeUpCC.js.map +2 -2
  146. package/build/cjs/cc/WindowCoveringCC.d.ts +126 -220
  147. package/build/cjs/cc/WindowCoveringCC.js +16 -128
  148. package/build/cjs/cc/WindowCoveringCC.js.map +2 -2
  149. package/build/cjs/cc/ZWavePlusCC.d.ts +69 -329
  150. package/build/cjs/cc/ZWavePlusCC.js +4 -25
  151. package/build/cjs/cc/ZWavePlusCC.js.map +2 -2
  152. package/build/cjs/cc/_CCValues.generated.d.ts +15814 -0
  153. package/build/cjs/cc/_CCValues.generated.js +8723 -0
  154. package/build/cjs/cc/_CCValues.generated.js.map +7 -0
  155. package/build/cjs/lib/CCValueUtils.d.ts +14 -0
  156. package/build/cjs/lib/CCValueUtils.js +93 -0
  157. package/build/cjs/lib/CCValueUtils.js.map +7 -0
  158. package/build/cjs/lib/Values.d.ts +6 -105
  159. package/build/cjs/lib/Values.js +13 -107
  160. package/build/cjs/lib/Values.js.map +3 -3
  161. package/build/esm/cc/AlarmSensorCC.d.ts +79 -161
  162. package/build/esm/cc/AlarmSensorCC.d.ts.map +1 -1
  163. package/build/esm/cc/AlarmSensorCC.js +2 -39
  164. package/build/esm/cc/AlarmSensorCC.js.map +1 -1
  165. package/build/esm/cc/AssociationCC.d.ts +63 -199
  166. package/build/esm/cc/AssociationCC.d.ts.map +1 -1
  167. package/build/esm/cc/AssociationCC.js +2 -14
  168. package/build/esm/cc/AssociationCC.js.map +1 -1
  169. package/build/esm/cc/AssociationGroupInfoCC.d.ts +66 -166
  170. package/build/esm/cc/AssociationGroupInfoCC.d.ts.map +1 -1
  171. package/build/esm/cc/AssociationGroupInfoCC.js +2 -13
  172. package/build/esm/cc/AssociationGroupInfoCC.js.map +1 -1
  173. package/build/esm/cc/BarrierOperatorCC.d.ts +86 -294
  174. package/build/esm/cc/BarrierOperatorCC.d.ts.map +1 -1
  175. package/build/esm/cc/BarrierOperatorCC.js +2 -34
  176. package/build/esm/cc/BarrierOperatorCC.js.map +1 -1
  177. package/build/esm/cc/BasicCC.d.ts +85 -331
  178. package/build/esm/cc/BasicCC.d.ts.map +1 -1
  179. package/build/esm/cc/BasicCC.js +2 -32
  180. package/build/esm/cc/BasicCC.js.map +1 -1
  181. package/build/esm/cc/BatteryCC.d.ts +237 -835
  182. package/build/esm/cc/BatteryCC.d.ts.map +1 -1
  183. package/build/esm/cc/BatteryCC.js +2 -78
  184. package/build/esm/cc/BatteryCC.js.map +1 -1
  185. package/build/esm/cc/BinarySensorCC.d.ts +34 -99
  186. package/build/esm/cc/BinarySensorCC.d.ts.map +1 -1
  187. package/build/esm/cc/BinarySensorCC.js +2 -16
  188. package/build/esm/cc/BinarySensorCC.js.map +1 -1
  189. package/build/esm/cc/BinarySwitchCC.d.ts +45 -197
  190. package/build/esm/cc/BinarySwitchCC.d.ts.map +1 -1
  191. package/build/esm/cc/BinarySwitchCC.js +2 -17
  192. package/build/esm/cc/BinarySwitchCC.js.map +1 -1
  193. package/build/esm/cc/CentralSceneCC.d.ts +77 -296
  194. package/build/esm/cc/CentralSceneCC.d.ts.map +1 -1
  195. package/build/esm/cc/CentralSceneCC.js +2 -26
  196. package/build/esm/cc/CentralSceneCC.js.map +1 -1
  197. package/build/esm/cc/ClimateControlScheduleCC.d.ts +45 -160
  198. package/build/esm/cc/ClimateControlScheduleCC.d.ts.map +1 -1
  199. package/build/esm/cc/ClimateControlScheduleCC.js +2 -23
  200. package/build/esm/cc/ClimateControlScheduleCC.js.map +1 -1
  201. package/build/esm/cc/ColorSwitchCC.d.ts +130 -457
  202. package/build/esm/cc/ColorSwitchCC.d.ts.map +1 -1
  203. package/build/esm/cc/ColorSwitchCC.js +2 -52
  204. package/build/esm/cc/ColorSwitchCC.js.map +1 -1
  205. package/build/esm/cc/ConfigurationCC.d.ts +32 -100
  206. package/build/esm/cc/ConfigurationCC.d.ts.map +1 -1
  207. package/build/esm/cc/ConfigurationCC.js +2 -15
  208. package/build/esm/cc/ConfigurationCC.js.map +1 -1
  209. package/build/esm/cc/DoorLockCC.d.ts +512 -1823
  210. package/build/esm/cc/DoorLockCC.d.ts.map +1 -1
  211. package/build/esm/cc/DoorLockCC.js +9 -127
  212. package/build/esm/cc/DoorLockCC.js.map +1 -1
  213. package/build/esm/cc/DoorLockLoggingCC.d.ts +11 -63
  214. package/build/esm/cc/DoorLockLoggingCC.d.ts.map +1 -1
  215. package/build/esm/cc/DoorLockLoggingCC.js +2 -5
  216. package/build/esm/cc/DoorLockLoggingCC.js.map +1 -1
  217. package/build/esm/cc/EnergyProductionCC.d.ts +14 -29
  218. package/build/esm/cc/EnergyProductionCC.d.ts.map +1 -1
  219. package/build/esm/cc/EnergyProductionCC.js +2 -13
  220. package/build/esm/cc/EnergyProductionCC.js.map +1 -1
  221. package/build/esm/cc/EntryControlCC.d.ts +73 -324
  222. package/build/esm/cc/EntryControlCC.d.ts.map +1 -1
  223. package/build/esm/cc/EntryControlCC.js +2 -28
  224. package/build/esm/cc/EntryControlCC.js.map +1 -1
  225. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts +78 -390
  226. package/build/esm/cc/FirmwareUpdateMetaDataCC.d.ts.map +1 -1
  227. package/build/esm/cc/FirmwareUpdateMetaDataCC.js +2 -23
  228. package/build/esm/cc/FirmwareUpdateMetaDataCC.js.map +1 -1
  229. package/build/esm/cc/HumidityControlModeCC.d.ts +31 -131
  230. package/build/esm/cc/HumidityControlModeCC.d.ts.map +1 -1
  231. package/build/esm/cc/HumidityControlModeCC.js +2 -10
  232. package/build/esm/cc/HumidityControlModeCC.js.map +1 -1
  233. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts +17 -65
  234. package/build/esm/cc/HumidityControlOperatingStateCC.d.ts.map +1 -1
  235. package/build/esm/cc/HumidityControlOperatingStateCC.js +2 -9
  236. package/build/esm/cc/HumidityControlOperatingStateCC.js.map +1 -1
  237. package/build/esm/cc/HumidityControlSetpointCC.d.ts +51 -128
  238. package/build/esm/cc/HumidityControlSetpointCC.d.ts.map +1 -1
  239. package/build/esm/cc/HumidityControlSetpointCC.js +2 -19
  240. package/build/esm/cc/HumidityControlSetpointCC.js.map +1 -1
  241. package/build/esm/cc/IndicatorCC.d.ts +123 -365
  242. package/build/esm/cc/IndicatorCC.d.ts.map +1 -1
  243. package/build/esm/cc/IndicatorCC.js +2 -43
  244. package/build/esm/cc/IndicatorCC.js.map +1 -1
  245. package/build/esm/cc/IrrigationCC.d.ts +826 -2317
  246. package/build/esm/cc/IrrigationCC.d.ts.map +1 -1
  247. package/build/esm/cc/IrrigationCC.js +3 -222
  248. package/build/esm/cc/IrrigationCC.js.map +1 -1
  249. package/build/esm/cc/LanguageCC.d.ts +31 -133
  250. package/build/esm/cc/LanguageCC.d.ts.map +1 -1
  251. package/build/esm/cc/LanguageCC.js +2 -12
  252. package/build/esm/cc/LanguageCC.js.map +1 -1
  253. package/build/esm/cc/LockCC.d.ts +14 -64
  254. package/build/esm/cc/LockCC.d.ts.map +1 -1
  255. package/build/esm/cc/LockCC.js +2 -9
  256. package/build/esm/cc/LockCC.js.map +1 -1
  257. package/build/esm/cc/ManufacturerProprietaryCC.d.ts.map +1 -1
  258. package/build/esm/cc/ManufacturerProprietaryCC.js +0 -1
  259. package/build/esm/cc/ManufacturerProprietaryCC.js.map +1 -1
  260. package/build/esm/cc/ManufacturerSpecificCC.d.ts +77 -239
  261. package/build/esm/cc/ManufacturerSpecificCC.d.ts.map +1 -1
  262. package/build/esm/cc/ManufacturerSpecificCC.js +2 -24
  263. package/build/esm/cc/ManufacturerSpecificCC.js.map +1 -1
  264. package/build/esm/cc/MeterCC.d.ts +119 -393
  265. package/build/esm/cc/MeterCC.d.ts.map +1 -1
  266. package/build/esm/cc/MeterCC.js +3 -49
  267. package/build/esm/cc/MeterCC.js.map +1 -1
  268. package/build/esm/cc/MultiChannelAssociationCC.d.ts +66 -166
  269. package/build/esm/cc/MultiChannelAssociationCC.d.ts.map +1 -1
  270. package/build/esm/cc/MultiChannelAssociationCC.js +2 -14
  271. package/build/esm/cc/MultiChannelAssociationCC.js.map +1 -1
  272. package/build/esm/cc/MultiChannelCC.d.ts +119 -499
  273. package/build/esm/cc/MultiChannelCC.d.ts.map +1 -1
  274. package/build/esm/cc/MultiChannelCC.js +2 -30
  275. package/build/esm/cc/MultiChannelCC.js.map +1 -1
  276. package/build/esm/cc/MultilevelSensorCC.d.ts +46 -130
  277. package/build/esm/cc/MultilevelSensorCC.d.ts.map +1 -1
  278. package/build/esm/cc/MultilevelSensorCC.js +2 -22
  279. package/build/esm/cc/MultilevelSensorCC.js.map +1 -1
  280. package/build/esm/cc/MultilevelSwitchCC.d.ts +160 -525
  281. package/build/esm/cc/MultilevelSwitchCC.d.ts.map +1 -1
  282. package/build/esm/cc/MultilevelSwitchCC.js +5 -101
  283. package/build/esm/cc/MultilevelSwitchCC.js.map +1 -1
  284. package/build/esm/cc/NodeNamingCC.d.ts +33 -135
  285. package/build/esm/cc/NodeNamingCC.d.ts.map +1 -1
  286. package/build/esm/cc/NodeNamingCC.js +2 -12
  287. package/build/esm/cc/NodeNamingCC.js.map +1 -1
  288. package/build/esm/cc/NotificationCC.d.ts +262 -702
  289. package/build/esm/cc/NotificationCC.d.ts.map +1 -1
  290. package/build/esm/cc/NotificationCC.js +3 -85
  291. package/build/esm/cc/NotificationCC.js.map +1 -1
  292. package/build/esm/cc/ProtectionCC.d.ts +118 -524
  293. package/build/esm/cc/ProtectionCC.d.ts.map +1 -1
  294. package/build/esm/cc/ProtectionCC.js +2 -36
  295. package/build/esm/cc/ProtectionCC.js.map +1 -1
  296. package/build/esm/cc/SceneActivationCC.d.ts +33 -132
  297. package/build/esm/cc/SceneActivationCC.d.ts.map +1 -1
  298. package/build/esm/cc/SceneActivationCC.js +2 -14
  299. package/build/esm/cc/SceneActivationCC.js.map +1 -1
  300. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts +34 -61
  301. package/build/esm/cc/SceneActuatorConfigurationCC.d.ts.map +1 -1
  302. package/build/esm/cc/SceneActuatorConfigurationCC.js +2 -14
  303. package/build/esm/cc/SceneActuatorConfigurationCC.js.map +1 -1
  304. package/build/esm/cc/SceneControllerConfigurationCC.d.ts +34 -61
  305. package/build/esm/cc/SceneControllerConfigurationCC.d.ts.map +1 -1
  306. package/build/esm/cc/SceneControllerConfigurationCC.js +2 -14
  307. package/build/esm/cc/SceneControllerConfigurationCC.js.map +1 -1
  308. package/build/esm/cc/ScheduleEntryLockCC.d.ts +95 -299
  309. package/build/esm/cc/ScheduleEntryLockCC.d.ts.map +1 -1
  310. package/build/esm/cc/ScheduleEntryLockCC.js +2 -17
  311. package/build/esm/cc/ScheduleEntryLockCC.js.map +1 -1
  312. package/build/esm/cc/SoundSwitchCC.d.ts +72 -261
  313. package/build/esm/cc/SoundSwitchCC.d.ts.map +1 -1
  314. package/build/esm/cc/SoundSwitchCC.js +2 -33
  315. package/build/esm/cc/SoundSwitchCC.js.map +1 -1
  316. package/build/esm/cc/SupervisionCC.d.ts +17 -33
  317. package/build/esm/cc/SupervisionCC.d.ts.map +1 -1
  318. package/build/esm/cc/SupervisionCC.js +2 -7
  319. package/build/esm/cc/SupervisionCC.js.map +1 -1
  320. package/build/esm/cc/ThermostatFanModeCC.d.ts +44 -195
  321. package/build/esm/cc/ThermostatFanModeCC.d.ts.map +1 -1
  322. package/build/esm/cc/ThermostatFanModeCC.js +2 -14
  323. package/build/esm/cc/ThermostatFanModeCC.js.map +1 -1
  324. package/build/esm/cc/ThermostatFanStateCC.d.ts +17 -65
  325. package/build/esm/cc/ThermostatFanStateCC.d.ts.map +1 -1
  326. package/build/esm/cc/ThermostatFanStateCC.js +2 -9
  327. package/build/esm/cc/ThermostatFanStateCC.js.map +1 -1
  328. package/build/esm/cc/ThermostatModeCC.d.ts +44 -195
  329. package/build/esm/cc/ThermostatModeCC.d.ts.map +1 -1
  330. package/build/esm/cc/ThermostatModeCC.js +2 -14
  331. package/build/esm/cc/ThermostatModeCC.js.map +1 -1
  332. package/build/esm/cc/ThermostatOperatingStateCC.d.ts +17 -65
  333. package/build/esm/cc/ThermostatOperatingStateCC.d.ts.map +1 -1
  334. package/build/esm/cc/ThermostatOperatingStateCC.js +2 -9
  335. package/build/esm/cc/ThermostatOperatingStateCC.js.map +1 -1
  336. package/build/esm/cc/ThermostatSetpointCC.d.ts +49 -129
  337. package/build/esm/cc/ThermostatSetpointCC.d.ts.map +1 -1
  338. package/build/esm/cc/ThermostatSetpointCC.js +2 -16
  339. package/build/esm/cc/ThermostatSetpointCC.js.map +1 -1
  340. package/build/esm/cc/TimeParametersCC.d.ts +12 -63
  341. package/build/esm/cc/TimeParametersCC.d.ts.map +1 -1
  342. package/build/esm/cc/TimeParametersCC.js +2 -8
  343. package/build/esm/cc/TimeParametersCC.js.map +1 -1
  344. package/build/esm/cc/UserCodeCC.d.ts +311 -1066
  345. package/build/esm/cc/UserCodeCC.d.ts.map +1 -1
  346. package/build/esm/cc/UserCodeCC.js +2 -60
  347. package/build/esm/cc/UserCodeCC.js.map +1 -1
  348. package/build/esm/cc/VersionCC.d.ts +289 -1003
  349. package/build/esm/cc/VersionCC.d.ts.map +1 -1
  350. package/build/esm/cc/VersionCC.js +2 -92
  351. package/build/esm/cc/VersionCC.js.map +1 -1
  352. package/build/esm/cc/WakeUpCC.d.ts +49 -201
  353. package/build/esm/cc/WakeUpCC.d.ts.map +1 -1
  354. package/build/esm/cc/WakeUpCC.js +2 -21
  355. package/build/esm/cc/WakeUpCC.js.map +1 -1
  356. package/build/esm/cc/WindowCoveringCC.d.ts +126 -220
  357. package/build/esm/cc/WindowCoveringCC.d.ts.map +1 -1
  358. package/build/esm/cc/WindowCoveringCC.js +3 -103
  359. package/build/esm/cc/WindowCoveringCC.js.map +1 -1
  360. package/build/esm/cc/ZWavePlusCC.d.ts +69 -329
  361. package/build/esm/cc/ZWavePlusCC.d.ts.map +1 -1
  362. package/build/esm/cc/ZWavePlusCC.js +2 -25
  363. package/build/esm/cc/ZWavePlusCC.js.map +1 -1
  364. package/build/esm/cc/_CCValues.generated.d.ts +15814 -0
  365. package/build/esm/cc/_CCValues.generated.d.ts.map +1 -0
  366. package/build/esm/cc/_CCValues.generated.js +9187 -0
  367. package/build/esm/cc/_CCValues.generated.js.map +1 -0
  368. package/build/esm/lib/CCValueUtils.d.ts +14 -0
  369. package/build/esm/lib/CCValueUtils.d.ts.map +1 -0
  370. package/build/esm/lib/CCValueUtils.js +62 -0
  371. package/build/esm/lib/CCValueUtils.js.map +1 -0
  372. package/build/esm/lib/Values.d.ts +6 -105
  373. package/build/esm/lib/Values.d.ts.map +1 -1
  374. package/build/esm/lib/Values.js +7 -104
  375. package/build/esm/lib/Values.js.map +1 -1
  376. package/package.json +9 -7
@@ -41,7 +41,7 @@ __export(ScheduleEntryLockCC_exports, {
41
41
  ScheduleEntryLockCCTimeOffsetGet: () => ScheduleEntryLockCCTimeOffsetGet,
42
42
  ScheduleEntryLockCCTimeOffsetReport: () => ScheduleEntryLockCCTimeOffsetReport,
43
43
  ScheduleEntryLockCCTimeOffsetSet: () => ScheduleEntryLockCCTimeOffsetSet,
44
- ScheduleEntryLockCCValues: () => ScheduleEntryLockCCValues,
44
+ ScheduleEntryLockCCValues: () => import_CCValues_generated.ScheduleEntryLockCCValues,
45
45
  ScheduleEntryLockCCWeekDayScheduleGet: () => ScheduleEntryLockCCWeekDayScheduleGet,
46
46
  ScheduleEntryLockCCWeekDayScheduleReport: () => ScheduleEntryLockCCWeekDayScheduleReport,
47
47
  ScheduleEntryLockCCWeekDayScheduleSet: () => ScheduleEntryLockCCWeekDayScheduleSet,
@@ -60,6 +60,7 @@ var import_Values = require("../lib/Values.js");
60
60
  var import_Types = require("../lib/_Types.js");
61
61
  var import_serializers = require("../lib/serializers.js");
62
62
  var import_UserCodeCC = require("./UserCodeCC.js");
63
+ var import_CCValues_generated = require("./_CCValues.generated.js");
63
64
  var __runInitializers = function(thisArg, initializers, value) {
64
65
  var useValue = arguments.length > 2;
65
66
  for (var i = 0; i < initializers.length; i++) {
@@ -101,26 +102,8 @@ var __esDecorate = function(ctor, descriptorIn, decorators, contextIn, initializ
101
102
  done = true;
102
103
  };
103
104
  const { validateArgs_ScheduleEntryLockCCAPI_setEnabled, validateArgs_ScheduleEntryLockCCAPI_setWeekDaySchedule, validateArgs_ScheduleEntryLockCCAPI_getWeekDaySchedule, validateArgs_ScheduleEntryLockCCAPI_setYearDaySchedule, validateArgs_ScheduleEntryLockCCAPI_getYearDaySchedule, validateArgs_ScheduleEntryLockCCAPI_setDailyRepeatingSchedule, validateArgs_ScheduleEntryLockCCAPI_getDailyRepeatingSchedule, validateArgs_ScheduleEntryLockCCAPI_setTimezone } = __validateArgs;
104
- const ScheduleEntryLockCCValues = Object.freeze({
105
- ...import_Values.V.defineStaticCCValues(import_core.CommandClasses["Schedule Entry Lock"], {
106
- ...import_Values.V.staticProperty("numWeekDaySlots", void 0, { internal: true }),
107
- ...import_Values.V.staticProperty("numYearDaySlots", void 0, { internal: true }),
108
- ...import_Values.V.staticProperty("numDailyRepeatingSlots", void 0, {
109
- internal: true
110
- })
111
- }),
112
- ...import_Values.V.defineDynamicCCValues(import_core.CommandClasses["Schedule Entry Lock"], {
113
- ...import_Values.V.dynamicPropertyAndKeyWithName("userEnabled", "userEnabled", (userId) => userId, ({ property, propertyKey }) => property === "userEnabled" && typeof propertyKey === "number", void 0, { internal: true }),
114
- ...import_Values.V.dynamicPropertyAndKeyWithName("scheduleKind", "scheduleKind", (userId) => userId, ({ property, propertyKey }) => property === "scheduleKind" && typeof propertyKey === "number", void 0, { internal: true }),
115
- ...import_Values.V.dynamicPropertyAndKeyWithName("schedule", "schedule", (scheduleKind, userId, slotId) => toPropertyKey(scheduleKind, userId, slotId), ({ property, propertyKey }) => property === "schedule" && typeof propertyKey === "number", void 0, { internal: true })
116
- })
117
- });
118
- function toPropertyKey(scheduleKind, userId, slotId) {
119
- return scheduleKind << 16 | userId << 8 | slotId;
120
- }
121
- __name(toPropertyKey, "toPropertyKey");
122
105
  function persistSchedule(ctx, scheduleKind, userId, slotId, schedule) {
123
- const scheduleValue = ScheduleEntryLockCCValues.schedule(scheduleKind, userId, slotId);
106
+ const scheduleValue = import_CCValues_generated.ScheduleEntryLockCCValues.schedule(scheduleKind, userId, slotId);
124
107
  if (schedule != void 0) {
125
108
  this.setValue(ctx, scheduleValue, schedule);
126
109
  } else {
@@ -129,12 +112,12 @@ function persistSchedule(ctx, scheduleKind, userId, slotId, schedule) {
129
112
  }
130
113
  __name(persistSchedule, "persistSchedule");
131
114
  function setUserCodeScheduleKindCached(ctx, endpoint, userId, scheduleKind) {
132
- ctx.getValueDB(endpoint.nodeId).setValue(ScheduleEntryLockCCValues.scheduleKind(userId).endpoint(endpoint.index), scheduleKind);
115
+ ctx.getValueDB(endpoint.nodeId).setValue(import_CCValues_generated.ScheduleEntryLockCCValues.scheduleKind(userId).endpoint(endpoint.index), scheduleKind);
133
116
  }
134
117
  __name(setUserCodeScheduleKindCached, "setUserCodeScheduleKindCached");
135
118
  function setUserCodeScheduleEnabledCached(ctx, endpoint, userId, enabled) {
136
119
  const setEnabled = /* @__PURE__ */ __name((userId2) => {
137
- ctx.getValueDB(endpoint.nodeId).setValue(ScheduleEntryLockCCValues.userEnabled(userId2).endpoint(endpoint.index), enabled);
120
+ ctx.getValueDB(endpoint.nodeId).setValue(import_CCValues_generated.ScheduleEntryLockCCValues.userEnabled(userId2).endpoint(endpoint.index), enabled);
138
121
  }, "setEnabled");
139
122
  if (userId == void 0) {
140
123
  const numUsers = import_UserCodeCC.UserCodeCC.getSupportedUsersCached(ctx, endpoint) ?? 0;
@@ -443,7 +426,7 @@ let ScheduleEntryLockCCAPI = (() => {
443
426
  return ScheduleEntryLockCCAPI2 = _classThis;
444
427
  })();
445
428
  let ScheduleEntryLockCC = (() => {
446
- let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_core.CommandClasses["Schedule Entry Lock"]), (0, import_CommandClassDecorators.implementedVersion)(3), (0, import_CommandClassDecorators.ccValues)(ScheduleEntryLockCCValues)];
429
+ let _classDecorators = [(0, import_CommandClassDecorators.commandClass)(import_core.CommandClasses["Schedule Entry Lock"]), (0, import_CommandClassDecorators.implementedVersion)(3), (0, import_CommandClassDecorators.ccValues)(import_CCValues_generated.ScheduleEntryLockCCValues)];
447
430
  let _classDescriptor;
448
431
  let _classExtraInitializers = [];
449
432
  let _classThis;
@@ -509,21 +492,21 @@ daily repeating: ${slotsResp.numDailyRepeatingSlots}`;
509
492
  * This only works AFTER the interview process
510
493
  */
511
494
  static getNumWeekDaySlotsCached(ctx, endpoint) {
512
- return ctx.getValueDB(endpoint.nodeId).getValue(ScheduleEntryLockCCValues.numWeekDaySlots.endpoint(endpoint.index)) || 0;
495
+ return ctx.getValueDB(endpoint.nodeId).getValue(import_CCValues_generated.ScheduleEntryLockCCValues.numWeekDaySlots.endpoint(endpoint.index)) || 0;
513
496
  }
514
497
  /**
515
498
  * Returns the number of supported day-of-year slots.
516
499
  * This only works AFTER the interview process
517
500
  */
518
501
  static getNumYearDaySlotsCached(ctx, endpoint) {
519
- return ctx.getValueDB(endpoint.nodeId).getValue(ScheduleEntryLockCCValues.numYearDaySlots.endpoint(endpoint.index)) || 0;
502
+ return ctx.getValueDB(endpoint.nodeId).getValue(import_CCValues_generated.ScheduleEntryLockCCValues.numYearDaySlots.endpoint(endpoint.index)) || 0;
520
503
  }
521
504
  /**
522
505
  * Returns the number of supported daily-repeating slots.
523
506
  * This only works AFTER the interview process
524
507
  */
525
508
  static getNumDailyRepeatingSlotsCached(ctx, endpoint) {
526
- return ctx.getValueDB(endpoint.nodeId).getValue(ScheduleEntryLockCCValues.numDailyRepeatingSlots.endpoint(endpoint.index)) || 0;
509
+ return ctx.getValueDB(endpoint.nodeId).getValue(import_CCValues_generated.ScheduleEntryLockCCValues.numDailyRepeatingSlots.endpoint(endpoint.index)) || 0;
527
510
  }
528
511
  /**
529
512
  * Returns whether scheduling for a given user ID (most likely) enabled. Since the Schedule Entry Lock CC
@@ -534,7 +517,7 @@ daily repeating: ${slotsResp.numDailyRepeatingSlots}`;
534
517
  * only the desired ones.
535
518
  */
536
519
  static getUserCodeScheduleEnabledCached(ctx, endpoint, userId) {
537
- return !!ctx.getValueDB(endpoint.nodeId).getValue(ScheduleEntryLockCCValues.userEnabled(userId).endpoint(endpoint.index));
520
+ return !!ctx.getValueDB(endpoint.nodeId).getValue(import_CCValues_generated.ScheduleEntryLockCCValues.userEnabled(userId).endpoint(endpoint.index));
538
521
  }
539
522
  /**
540
523
  * Returns which scheduling kind is (most likely) enabled for a given user ID . Since the Schedule Entry Lock CC
@@ -545,7 +528,7 @@ daily repeating: ${slotsResp.numDailyRepeatingSlots}`;
545
528
  * which will automatically switch the user to that scheduling kind.
546
529
  */
547
530
  static getUserCodeScheduleKindCached(ctx, endpoint, userId) {
548
- return ctx.getValueDB(endpoint.nodeId).getValue(ScheduleEntryLockCCValues.scheduleKind(userId).endpoint(endpoint.index));
531
+ return ctx.getValueDB(endpoint.nodeId).getValue(import_CCValues_generated.ScheduleEntryLockCCValues.scheduleKind(userId).endpoint(endpoint.index));
549
532
  }
550
533
  /**
551
534
  * Returns the assumed state of a schedule. Since the Schedule Entry Lock CC
@@ -556,7 +539,7 @@ daily repeating: ${slotsResp.numDailyRepeatingSlots}`;
556
539
  * This only works AFTER the interview process.
557
540
  */
558
541
  static getScheduleCached(ctx, endpoint, scheduleKind, userId, slotId) {
559
- return ctx.getValueDB(endpoint.nodeId).getValue(ScheduleEntryLockCCValues.schedule(scheduleKind, userId, slotId).endpoint(endpoint.index));
542
+ return ctx.getValueDB(endpoint.nodeId).getValue(import_CCValues_generated.ScheduleEntryLockCCValues.schedule(scheduleKind, userId, slotId).endpoint(endpoint.index));
560
543
  }
561
544
  };
562
545
  return ScheduleEntryLockCC2 = _classThis;
@@ -663,7 +646,7 @@ let ScheduleEntryLockCCEnableAllSet = (() => {
663
646
  return ScheduleEntryLockCCEnableAllSet2 = _classThis;
664
647
  })();
665
648
  let ScheduleEntryLockCCSupportedReport = (() => {
666
- let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.ScheduleEntryLockCommand.SupportedReport), (0, import_CommandClassDecorators.ccValueProperty)("numWeekDaySlots", ScheduleEntryLockCCValues.numWeekDaySlots), (0, import_CommandClassDecorators.ccValueProperty)("numYearDaySlots", ScheduleEntryLockCCValues.numYearDaySlots), (0, import_CommandClassDecorators.ccValueProperty)("numDailyRepeatingSlots", ScheduleEntryLockCCValues.numDailyRepeatingSlots)];
649
+ let _classDecorators = [(0, import_CommandClassDecorators.CCCommand)(import_Types.ScheduleEntryLockCommand.SupportedReport), (0, import_CommandClassDecorators.ccValueProperty)("numWeekDaySlots", import_CCValues_generated.ScheduleEntryLockCCValues.numWeekDaySlots), (0, import_CommandClassDecorators.ccValueProperty)("numYearDaySlots", import_CCValues_generated.ScheduleEntryLockCCValues.numYearDaySlots), (0, import_CommandClassDecorators.ccValueProperty)("numDailyRepeatingSlots", import_CCValues_generated.ScheduleEntryLockCCValues.numDailyRepeatingSlots)];
667
650
  let _classDescriptor;
668
651
  let _classExtraInitializers = [];
669
652
  let _classThis;
@@ -1,7 +1,7 @@
1
1
  {
2
2
  "version": 3,
3
3
  "sources": ["../../../src/cc/ScheduleEntryLockCC.ts"],
4
- "sourcesContent": ["import { type CCEncodingContext, type CCParsingContext } from \"@zwave-js/cc\";\nimport {\n\tCommandClasses,\n\ttype GetValueDB,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype MessageRecord,\n\ttype SupervisionResult,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tencodeBitMask,\n\tgetDSTInfo,\n\tisUnsupervisedOrSucceeded,\n\tparseBitMask,\n\tvalidatePayload,\n} from \"@zwave-js/core\";\nimport { type EndpointId, type MaybeNotKnown } from \"@zwave-js/core/safe\";\nimport {\n\ttype AllOrNone,\n\tBytes,\n\tformatDate,\n\tformatTime,\n\tgetEnumMemberName,\n\tpick,\n} from \"@zwave-js/shared\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { CCAPI } from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport {\n\tScheduleEntryLockCommand,\n\ttype ScheduleEntryLockDailyRepeatingSchedule,\n\tScheduleEntryLockScheduleKind,\n\tScheduleEntryLockSetAction,\n\ttype ScheduleEntryLockSlotId,\n\ttype ScheduleEntryLockWeekDaySchedule,\n\tScheduleEntryLockWeekday,\n\ttype ScheduleEntryLockYearDaySchedule,\n\ttype Timezone,\n} from \"../lib/_Types.js\";\nimport { encodeTimezone, parseTimezone } from \"../lib/serializers.js\";\nimport { UserCodeCC } from \"./UserCodeCC.js\";\n\nexport const ScheduleEntryLockCCValues = Object.freeze({\n\t...V.defineStaticCCValues(CommandClasses[\"Schedule Entry Lock\"], {\n\t\t...V.staticProperty(\"numWeekDaySlots\", undefined, { internal: true }),\n\t\t...V.staticProperty(\"numYearDaySlots\", undefined, { internal: true }),\n\t\t...V.staticProperty(\"numDailyRepeatingSlots\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t}),\n\n\t...V.defineDynamicCCValues(CommandClasses[\"Schedule Entry Lock\"], {\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"userEnabled\",\n\t\t\t\"userEnabled\",\n\t\t\t(userId: number) => userId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"userEnabled\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"scheduleKind\",\n\t\t\t\"scheduleKind\",\n\t\t\t(userId: number) => userId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"scheduleKind\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"schedule\",\n\t\t\t\"schedule\",\n\t\t\t(\n\t\t\t\tscheduleKind: ScheduleEntryLockScheduleKind,\n\t\t\t\tuserId: number,\n\t\t\t\tslotId: number,\n\t\t\t) => toPropertyKey(scheduleKind, userId, slotId),\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"schedule\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t}),\n});\n\nfunction toPropertyKey(\n\tscheduleKind: ScheduleEntryLockScheduleKind,\n\tuserId: number,\n\tslotId: number,\n): number {\n\treturn (scheduleKind << 16) | (userId << 8) | slotId;\n}\n\n/** Caches information about a schedule */\nfunction persistSchedule(\n\tthis: ScheduleEntryLockCC,\n\tctx: GetValueDB,\n\tscheduleKind: ScheduleEntryLockScheduleKind,\n\tuserId: number,\n\tslotId: number,\n\tschedule:\n\t\t| ScheduleEntryLockWeekDaySchedule\n\t\t| ScheduleEntryLockYearDaySchedule\n\t\t| ScheduleEntryLockDailyRepeatingSchedule\n\t\t| false\n\t\t| undefined,\n): void {\n\tconst scheduleValue = ScheduleEntryLockCCValues.schedule(\n\t\tscheduleKind,\n\t\tuserId,\n\t\tslotId,\n\t);\n\n\tif (schedule != undefined) {\n\t\tthis.setValue(ctx, scheduleValue, schedule);\n\t} else {\n\t\tthis.removeValue(ctx, scheduleValue);\n\t}\n}\n\n/** Updates the schedule kind assumed to be active for user in the cache */\nfunction setUserCodeScheduleKindCached(\n\tctx: GetValueDB,\n\tendpoint: EndpointId,\n\tuserId: number,\n\tscheduleKind: ScheduleEntryLockScheduleKind,\n): void {\n\tctx\n\t\t.getValueDB(endpoint.nodeId)\n\t\t.setValue(\n\t\t\tScheduleEntryLockCCValues.scheduleKind(userId).endpoint(\n\t\t\t\tendpoint.index,\n\t\t\t),\n\t\t\tscheduleKind,\n\t\t);\n}\n\n/** Updates whether scheduling is active for one or all user(s) in the cache */\nfunction setUserCodeScheduleEnabledCached(\n\tctx: GetValueDB,\n\tendpoint: EndpointId,\n\tuserId: number | undefined,\n\tenabled: boolean,\n): void {\n\tconst setEnabled = (userId: number) => {\n\t\tctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.setValue(\n\t\t\t\tScheduleEntryLockCCValues.userEnabled(userId).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t\tenabled,\n\t\t\t);\n\t};\n\n\tif (userId == undefined) {\n\t\t// Enable/disable all users\n\t\tconst numUsers = UserCodeCC.getSupportedUsersCached(ctx, endpoint)\n\t\t\t?? 0;\n\n\t\tfor (let userId = 1; userId <= numUsers; userId++) {\n\t\t\tsetEnabled(userId);\n\t\t}\n\t} else {\n\t\tsetEnabled(userId);\n\t}\n}\n\n@API(CommandClasses[\"Schedule Entry Lock\"])\nexport class ScheduleEntryLockCCAPI extends CCAPI {\n\tpublic supportsCommand(\n\t\tcmd: ScheduleEntryLockCommand,\n\t): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase ScheduleEntryLockCommand.EnableSet:\n\t\t\tcase ScheduleEntryLockCommand.EnableAllSet:\n\t\t\tcase ScheduleEntryLockCommand.WeekDayScheduleSet:\n\t\t\tcase ScheduleEntryLockCommand.WeekDayScheduleGet:\n\t\t\tcase ScheduleEntryLockCommand.YearDayScheduleSet:\n\t\t\tcase ScheduleEntryLockCommand.YearDayScheduleGet:\n\t\t\tcase ScheduleEntryLockCommand.SupportedGet:\n\t\t\t\treturn true; // V1\n\n\t\t\tcase ScheduleEntryLockCommand.TimeOffsetSet:\n\t\t\tcase ScheduleEntryLockCommand.TimeOffsetGet:\n\t\t\t\treturn this.version >= 2;\n\n\t\t\tcase ScheduleEntryLockCommand.DailyRepeatingScheduleSet:\n\t\t\tcase ScheduleEntryLockCommand.DailyRepeatingScheduleGet:\n\t\t\t\treturn this.version >= 3;\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\t/**\n\t * Enables or disables schedules. If a user ID is given, that user's\n\t * schedules will be enabled or disabled. If no user ID is given, all schedules\n\t * will be affected.\n\t */\n\t@validateArgs()\n\tpublic async setEnabled(\n\t\tenabled: boolean,\n\t\tuserId?: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tlet result: SupervisionResult | undefined;\n\t\tif (userId != undefined) {\n\t\t\tthis.assertSupportsCommand(\n\t\t\t\tScheduleEntryLockCommand,\n\t\t\t\tScheduleEntryLockCommand.EnableSet,\n\t\t\t);\n\n\t\t\tconst cc = new ScheduleEntryLockCCEnableSet({\n\t\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t\tuserId,\n\t\t\t\tenabled,\n\t\t\t});\n\n\t\t\tresult = await this.host.sendCommand(cc, this.commandOptions);\n\t\t} else {\n\t\t\tthis.assertSupportsCommand(\n\t\t\t\tScheduleEntryLockCommand,\n\t\t\t\tScheduleEntryLockCommand.EnableAllSet,\n\t\t\t);\n\n\t\t\tconst cc = new ScheduleEntryLockCCEnableAllSet({\n\t\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t\tenabled,\n\t\t\t});\n\n\t\t\tresult = await this.host.sendCommand(cc, this.commandOptions);\n\t\t}\n\n\t\tif (this.isSinglecast() && isUnsupervisedOrSucceeded(result)) {\n\t\t\t// Remember the new state in the cache\n\t\t\tsetUserCodeScheduleEnabledCached(\n\t\t\t\tthis.host,\n\t\t\t\tthis.endpoint,\n\t\t\t\tuserId,\n\t\t\t\tenabled,\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getNumSlots() {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.SupportedGet,\n\t\t);\n\n\t\tconst cc = new ScheduleEntryLockCCSupportedGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\n\t\tconst result = await this.host.sendCommand<\n\t\t\tScheduleEntryLockCCSupportedReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\tif (result) {\n\t\t\treturn pick(result, [\n\t\t\t\t\"numWeekDaySlots\",\n\t\t\t\t\"numYearDaySlots\",\n\t\t\t\t\"numDailyRepeatingSlots\",\n\t\t\t]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async setWeekDaySchedule(\n\t\tslot: ScheduleEntryLockSlotId,\n\t\tschedule?: ScheduleEntryLockWeekDaySchedule,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.WeekDayScheduleSet,\n\t\t);\n\n\t\tif (this.isSinglecast()) {\n\t\t\tconst numSlots = ScheduleEntryLockCC.getNumWeekDaySlotsCached(\n\t\t\t\tthis.host,\n\t\t\t\tthis.endpoint,\n\t\t\t);\n\n\t\t\tif (slot.slotId < 1 || slot.slotId > numSlots) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`The schedule slot # must be between 1 and the number of supported day-of-week slots ${numSlots}.`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (schedule) {\n\t\t\tif (\n\t\t\t\tschedule.stopHour < schedule.startHour\n\t\t\t\t|| schedule.stopHour === schedule.startHour\n\t\t\t\t\t&& schedule.stopMinute <= schedule.startMinute\n\t\t\t) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`The stop time must be after the start time.`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst cc = new ScheduleEntryLockCCWeekDayScheduleSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...slot,\n\t\t\t...(schedule\n\t\t\t\t? {\n\t\t\t\t\taction: ScheduleEntryLockSetAction.Set,\n\t\t\t\t\t...schedule,\n\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\taction: ScheduleEntryLockSetAction.Erase,\n\t\t\t\t}),\n\t\t});\n\n\t\tconst result = await this.host.sendCommand(cc, this.commandOptions);\n\n\t\tif (this.isSinglecast() && isUnsupervisedOrSucceeded(result)) {\n\t\t\t// Editing (but not erasing) a schedule will enable scheduling for that user\n\t\t\t// and switch it to the current scheduling kind\n\t\t\tif (!!schedule) {\n\t\t\t\tsetUserCodeScheduleEnabledCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t\tslot.userId,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t\tsetUserCodeScheduleKindCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t\tslot.userId,\n\t\t\t\t\tScheduleEntryLockScheduleKind.WeekDay,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// And cache the schedule\n\t\t\tpersistSchedule.call(\n\t\t\t\tcc,\n\t\t\t\tthis.host,\n\t\t\t\tScheduleEntryLockScheduleKind.WeekDay,\n\t\t\t\tslot.userId,\n\t\t\t\tslot.slotId,\n\t\t\t\tschedule ?? false,\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t@validateArgs()\n\tpublic async getWeekDaySchedule(\n\t\tslot: ScheduleEntryLockSlotId,\n\t): Promise<MaybeNotKnown<ScheduleEntryLockWeekDaySchedule>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.WeekDayScheduleSet,\n\t\t);\n\n\t\tconst cc = new ScheduleEntryLockCCWeekDayScheduleGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...slot,\n\t\t});\n\t\tconst result = await this.host.sendCommand<\n\t\t\tScheduleEntryLockCCWeekDayScheduleReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\tif (result?.weekday != undefined) {\n\t\t\treturn {\n\t\t\t\tweekday: result.weekday,\n\t\t\t\tstartHour: result.startHour!,\n\t\t\t\tstartMinute: result.startMinute!,\n\t\t\t\tstopHour: result.stopHour!,\n\t\t\t\tstopMinute: result.stopMinute!,\n\t\t\t};\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async setYearDaySchedule(\n\t\tslot: ScheduleEntryLockSlotId,\n\t\tschedule?: ScheduleEntryLockYearDaySchedule,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.YearDayScheduleSet,\n\t\t);\n\n\t\tif (this.isSinglecast()) {\n\t\t\tconst numSlots = ScheduleEntryLockCC.getNumYearDaySlotsCached(\n\t\t\t\tthis.host,\n\t\t\t\tthis.endpoint,\n\t\t\t);\n\n\t\t\tif (slot.slotId < 1 || slot.slotId > numSlots) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`The schedule slot # must be between 1 and the number of supported day-of-year slots ${numSlots}.`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (schedule) {\n\t\t\tconst startDate = new Date(\n\t\t\t\tschedule.startYear,\n\t\t\t\tschedule.startMonth - 1,\n\t\t\t\tschedule.startDay,\n\t\t\t\tschedule.startHour,\n\t\t\t\tschedule.startMinute,\n\t\t\t);\n\t\t\tconst stopDate = new Date(\n\t\t\t\tschedule.stopYear,\n\t\t\t\tschedule.stopMonth - 1,\n\t\t\t\tschedule.stopDay,\n\t\t\t\tschedule.stopHour,\n\t\t\t\tschedule.stopMinute,\n\t\t\t);\n\t\t\tif (stopDate <= startDate) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`The stop date must be after the start date.`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst cc = new ScheduleEntryLockCCYearDayScheduleSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...slot,\n\t\t\t...(schedule\n\t\t\t\t? {\n\t\t\t\t\taction: ScheduleEntryLockSetAction.Set,\n\t\t\t\t\t...schedule,\n\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\taction: ScheduleEntryLockSetAction.Erase,\n\t\t\t\t}),\n\t\t});\n\n\t\tconst result = await this.host.sendCommand(cc, this.commandOptions);\n\n\t\tif (this.isSinglecast() && isUnsupervisedOrSucceeded(result)) {\n\t\t\t// Editing (but not erasing) a schedule will enable scheduling for that user\n\t\t\t// and switch it to the current scheduling kind\n\t\t\tif (!!schedule) {\n\t\t\t\tsetUserCodeScheduleEnabledCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t\tslot.userId,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t\tsetUserCodeScheduleKindCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t\tslot.userId,\n\t\t\t\t\tScheduleEntryLockScheduleKind.YearDay,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// And cache the schedule\n\t\t\tpersistSchedule.call(\n\t\t\t\tcc,\n\t\t\t\tthis.host,\n\t\t\t\tScheduleEntryLockScheduleKind.YearDay,\n\t\t\t\tslot.userId,\n\t\t\t\tslot.slotId,\n\t\t\t\tschedule ?? false,\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t@validateArgs()\n\tpublic async getYearDaySchedule(\n\t\tslot: ScheduleEntryLockSlotId,\n\t): Promise<MaybeNotKnown<ScheduleEntryLockYearDaySchedule>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.YearDayScheduleSet,\n\t\t);\n\n\t\tconst cc = new ScheduleEntryLockCCYearDayScheduleGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...slot,\n\t\t});\n\t\tconst result = await this.host.sendCommand<\n\t\t\tScheduleEntryLockCCYearDayScheduleReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\tif (result?.startYear != undefined) {\n\t\t\treturn {\n\t\t\t\tstartYear: result.startYear,\n\t\t\t\tstartMonth: result.startMonth!,\n\t\t\t\tstartDay: result.startDay!,\n\t\t\t\tstartHour: result.startHour!,\n\t\t\t\tstartMinute: result.startMinute!,\n\t\t\t\tstopYear: result.stopYear!,\n\t\t\t\tstopMonth: result.stopMonth!,\n\t\t\t\tstopDay: result.stopDay!,\n\t\t\t\tstopHour: result.stopHour!,\n\t\t\t\tstopMinute: result.stopMinute!,\n\t\t\t};\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async setDailyRepeatingSchedule(\n\t\tslot: ScheduleEntryLockSlotId,\n\t\tschedule?: ScheduleEntryLockDailyRepeatingSchedule,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.DailyRepeatingScheduleSet,\n\t\t);\n\n\t\tif (this.isSinglecast()) {\n\t\t\tconst numSlots = ScheduleEntryLockCC\n\t\t\t\t.getNumDailyRepeatingSlotsCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t);\n\n\t\t\tif (slot.slotId < 1 || slot.slotId > numSlots) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`The schedule slot # must be between 1 and the number of supported daily repeating slots ${numSlots}.`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst cc = new ScheduleEntryLockCCDailyRepeatingScheduleSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...slot,\n\t\t\t...(schedule\n\t\t\t\t? {\n\t\t\t\t\taction: ScheduleEntryLockSetAction.Set,\n\t\t\t\t\t...schedule,\n\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\taction: ScheduleEntryLockSetAction.Erase,\n\t\t\t\t}),\n\t\t});\n\n\t\tconst result = await this.host.sendCommand(cc, this.commandOptions);\n\n\t\tif (this.isSinglecast() && isUnsupervisedOrSucceeded(result)) {\n\t\t\t// Editing (but not erasing) a schedule will enable scheduling for that user\n\t\t\t// and switch it to the current scheduling kind\n\t\t\tif (!!schedule) {\n\t\t\t\tsetUserCodeScheduleEnabledCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t\tslot.userId,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t\tsetUserCodeScheduleKindCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t\tslot.userId,\n\t\t\t\t\tScheduleEntryLockScheduleKind.DailyRepeating,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// And cache the schedule\n\t\t\tpersistSchedule.call(\n\t\t\t\tcc,\n\t\t\t\tthis.host,\n\t\t\t\tScheduleEntryLockScheduleKind.DailyRepeating,\n\t\t\t\tslot.userId,\n\t\t\t\tslot.slotId,\n\t\t\t\tschedule ?? false,\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t@validateArgs()\n\tpublic async getDailyRepeatingSchedule(\n\t\tslot: ScheduleEntryLockSlotId,\n\t): Promise<MaybeNotKnown<ScheduleEntryLockDailyRepeatingSchedule>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.DailyRepeatingScheduleSet,\n\t\t);\n\n\t\tconst cc = new ScheduleEntryLockCCDailyRepeatingScheduleGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...slot,\n\t\t});\n\t\tconst result = await this.host.sendCommand<\n\t\t\tScheduleEntryLockCCDailyRepeatingScheduleReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\tif (result?.weekdays != undefined) {\n\t\t\treturn {\n\t\t\t\tweekdays: result.weekdays,\n\t\t\t\tstartHour: result.startHour!,\n\t\t\t\tstartMinute: result.startMinute!,\n\t\t\t\tdurationHour: result.durationHour!,\n\t\t\t\tdurationMinute: result.durationMinute!,\n\t\t\t};\n\t\t}\n\t}\n\n\tpublic async getTimezone(): Promise<MaybeNotKnown<Timezone>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.TimeOffsetGet,\n\t\t);\n\n\t\tconst cc = new ScheduleEntryLockCCTimeOffsetGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst result = await this.host.sendCommand<\n\t\t\tScheduleEntryLockCCTimeOffsetReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\tif (result) {\n\t\t\treturn pick(result, [\"standardOffset\", \"dstOffset\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async setTimezone(\n\t\ttimezone: Timezone,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.TimeOffsetSet,\n\t\t);\n\n\t\tconst cc = new ScheduleEntryLockCCTimeOffsetSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...timezone,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n}\n\n@commandClass(CommandClasses[\"Schedule Entry Lock\"])\n@implementedVersion(3)\n@ccValues(ScheduleEntryLockCCValues)\nexport class ScheduleEntryLockCC extends CommandClass {\n\tdeclare ccCommand: ScheduleEntryLockCommand;\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[\"Schedule Entry Lock\"],\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 supported number of schedule slots...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst slotsResp = await api.getNumSlots();\n\t\tif (slotsResp) {\n\t\t\tlet logMessage = `received supported number of schedule slots:\nday of week: ${slotsResp.numWeekDaySlots}\nday of year: ${slotsResp.numYearDaySlots}`;\n\t\t\tif (slotsResp.numDailyRepeatingSlots != undefined) {\n\t\t\t\tlogMessage += `\ndaily repeating: ${slotsResp.numDailyRepeatingSlots}`;\n\t\t\t}\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// If the timezone is not configured with the Time CC, do it here\n\t\tif (\n\t\t\tapi.supportsCommand(ScheduleEntryLockCommand.TimeOffsetSet)\n\t\t\t&& (!endpoint.supportsCC(CommandClasses.Time)\n\t\t\t\t|| endpoint.getCCVersion(CommandClasses.Time) < 2)\n\t\t) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: \"setting timezone information...\",\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\t// Set the correct timezone on this node\n\t\t\tconst timezone = getDSTInfo();\n\t\t\tawait api.setTimezone(timezone);\n\t\t}\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n\n\t/**\n\t * Returns the number of supported day-of-week slots.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getNumWeekDaySlotsCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): number {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tScheduleEntryLockCCValues.numWeekDaySlots.endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t) || 0;\n\t}\n\n\t/**\n\t * Returns the number of supported day-of-year slots.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getNumYearDaySlotsCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): number {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tScheduleEntryLockCCValues.numYearDaySlots.endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t) || 0;\n\t}\n\n\t/**\n\t * Returns the number of supported daily-repeating slots.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getNumDailyRepeatingSlotsCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): number {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tScheduleEntryLockCCValues.numDailyRepeatingSlots.endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t) || 0;\n\t}\n\n\t/**\n\t * Returns whether scheduling for a given user ID (most likely) enabled. Since the Schedule Entry Lock CC\n\t * provides no way to query the enabled state, Z-Wave JS tracks this in its own cache.\n\t *\n\t * This only works AFTER the interview process and is likely to be wrong if a device\n\t * with existing schedules is queried. To be sure, disable scheduling for all users and enable\n\t * only the desired ones.\n\t */\n\tpublic static getUserCodeScheduleEnabledCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tuserId: number,\n\t): boolean {\n\t\treturn !!ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tScheduleEntryLockCCValues.userEnabled(userId).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t);\n\t}\n\n\t/**\n\t * Returns which scheduling kind is (most likely) enabled for a given user ID . Since the Schedule Entry Lock CC\n\t * provides no way to query the current state, Z-Wave JS tracks this in its own cache.\n\t *\n\t * This only works AFTER the interview process and is likely to be wrong if a device\n\t * with existing schedules is queried. To be sure, edit a schedule of the desired kind\n\t * which will automatically switch the user to that scheduling kind.\n\t */\n\tpublic static getUserCodeScheduleKindCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tuserId: number,\n\t): MaybeNotKnown<ScheduleEntryLockScheduleKind> {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue<ScheduleEntryLockScheduleKind>(\n\t\t\t\tScheduleEntryLockCCValues.scheduleKind(userId).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t);\n\t}\n\n\tpublic static getScheduleCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tscheduleKind: ScheduleEntryLockScheduleKind.WeekDay,\n\t\tuserId: number,\n\t\tslotId: number,\n\t): MaybeNotKnown<ScheduleEntryLockWeekDaySchedule | false>;\n\n\tpublic static getScheduleCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tscheduleKind: ScheduleEntryLockScheduleKind.YearDay,\n\t\tuserId: number,\n\t\tslotId: number,\n\t): MaybeNotKnown<ScheduleEntryLockYearDaySchedule | false>;\n\n\tpublic static getScheduleCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tscheduleKind: ScheduleEntryLockScheduleKind.DailyRepeating,\n\t\tuserId: number,\n\t\tslotId: number,\n\t): MaybeNotKnown<ScheduleEntryLockDailyRepeatingSchedule | false>;\n\n\t// Catch-all overload for applications which haven't narrowed `scheduleKind`\n\tpublic static getScheduleCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tscheduleKind: ScheduleEntryLockScheduleKind,\n\t\tuserId: number,\n\t\tslotId: number,\n\t): MaybeNotKnown<\n\t\t| ScheduleEntryLockWeekDaySchedule\n\t\t| ScheduleEntryLockYearDaySchedule\n\t\t| ScheduleEntryLockDailyRepeatingSchedule\n\t\t| false\n\t>;\n\n\t/**\n\t * Returns the assumed state of a schedule. Since the Schedule Entry Lock CC\n\t * provides no way to query the current state, Z-Wave JS tracks this in its own cache.\n\t *\n\t * A return value of `false` means the slot is empty, a return value of `undefined` means the information is not cached yet.\n\t *\n\t * This only works AFTER the interview process.\n\t */\n\tpublic static getScheduleCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tscheduleKind: ScheduleEntryLockScheduleKind,\n\t\tuserId: number,\n\t\tslotId: number,\n\t): MaybeNotKnown<\n\t\t| ScheduleEntryLockWeekDaySchedule\n\t\t| ScheduleEntryLockYearDaySchedule\n\t\t| ScheduleEntryLockDailyRepeatingSchedule\n\t\t| false\n\t> {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tScheduleEntryLockCCValues.schedule(\n\t\t\t\t\tscheduleKind,\n\t\t\t\t\tuserId,\n\t\t\t\t\tslotId,\n\t\t\t\t).endpoint(endpoint.index),\n\t\t\t);\n\t}\n}\n\n// @publicAPI\nexport interface ScheduleEntryLockCCEnableSetOptions {\n\tuserId: number;\n\tenabled: boolean;\n}\n\n@CCCommand(ScheduleEntryLockCommand.EnableSet)\n@useSupervision()\nexport class ScheduleEntryLockCCEnableSet extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCEnableSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.enabled = options.enabled;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCEnableSet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst userId = raw.payload[0];\n\t\tconst enabled: boolean = raw.payload[1] === 0x01;\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tuserId,\n\t\t\tenabled,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic enabled: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.userId, this.enabled ? 0x01 : 0x00]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\taction: this.enabled ? \"enable\" : \"disable\",\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface ScheduleEntryLockCCEnableAllSetOptions {\n\tenabled: boolean;\n}\n\n@CCCommand(ScheduleEntryLockCommand.EnableAllSet)\n@useSupervision()\nexport class ScheduleEntryLockCCEnableAllSet extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCEnableAllSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.enabled = options.enabled;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCEnableAllSet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst enabled: boolean = raw.payload[0] === 0x01;\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tenabled,\n\t\t});\n\t}\n\n\tpublic enabled: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.enabled ? 0x01 : 0x00]);\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\taction: this.enabled ? \"enable all\" : \"disable all\",\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface ScheduleEntryLockCCSupportedReportOptions {\n\tnumWeekDaySlots: number;\n\tnumYearDaySlots: number;\n\tnumDailyRepeatingSlots?: number;\n}\n\n@CCCommand(ScheduleEntryLockCommand.SupportedReport)\n@ccValueProperty(\"numWeekDaySlots\", ScheduleEntryLockCCValues.numWeekDaySlots)\n@ccValueProperty(\"numYearDaySlots\", ScheduleEntryLockCCValues.numYearDaySlots)\n@ccValueProperty(\n\t\"numDailyRepeatingSlots\",\n\tScheduleEntryLockCCValues.numDailyRepeatingSlots,\n)\nexport class ScheduleEntryLockCCSupportedReport extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCSupportedReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.numWeekDaySlots = options.numWeekDaySlots;\n\t\tthis.numYearDaySlots = options.numYearDaySlots;\n\t\tthis.numDailyRepeatingSlots = options.numDailyRepeatingSlots;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCSupportedReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst numWeekDaySlots = raw.payload[0];\n\t\tconst numYearDaySlots = raw.payload[1];\n\t\tlet numDailyRepeatingSlots: number | undefined;\n\t\tif (raw.payload.length >= 3) {\n\t\t\tnumDailyRepeatingSlots = raw.payload[2];\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tnumWeekDaySlots,\n\t\t\tnumYearDaySlots,\n\t\t\tnumDailyRepeatingSlots,\n\t\t});\n\t}\n\n\tpublic numWeekDaySlots: number;\n\n\tpublic numYearDaySlots: number;\n\n\tpublic numDailyRepeatingSlots: number | undefined;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.numWeekDaySlots,\n\t\t\tthis.numYearDaySlots,\n\t\t\tthis.numDailyRepeatingSlots ?? 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\t\t\"no. of weekday schedule slots\": this.numWeekDaySlots,\n\t\t\t\"no. of day-of-year schedule slots\": this.numYearDaySlots,\n\t\t};\n\t\tif (this.numDailyRepeatingSlots != undefined) {\n\t\t\tmessage[\"no. of daily repeating schedule slots\"] =\n\t\t\t\tthis.numDailyRepeatingSlots;\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@CCCommand(ScheduleEntryLockCommand.SupportedGet)\n@expectedCCResponse(ScheduleEntryLockCCSupportedReport)\nexport class ScheduleEntryLockCCSupportedGet extends ScheduleEntryLockCC {}\n\n/** @publicAPI */\nexport type ScheduleEntryLockCCWeekDayScheduleSetOptions =\n\t& ScheduleEntryLockSlotId\n\t& (\n\t\t| {\n\t\t\taction: ScheduleEntryLockSetAction.Erase;\n\t\t}\n\t\t| ({\n\t\t\taction: ScheduleEntryLockSetAction.Set;\n\t\t} & ScheduleEntryLockWeekDaySchedule)\n\t);\n\n@CCCommand(ScheduleEntryLockCommand.WeekDayScheduleSet)\n@useSupervision()\nexport class ScheduleEntryLockCCWeekDayScheduleSet extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCWeekDayScheduleSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t\tthis.action = options.action;\n\t\tif (options.action === ScheduleEntryLockSetAction.Set) {\n\t\t\tthis.weekday = options.weekday;\n\t\t\tthis.startHour = options.startHour;\n\t\t\tthis.startMinute = options.startMinute;\n\t\t\tthis.stopHour = options.stopHour;\n\t\t\tthis.stopMinute = options.stopMinute;\n\t\t}\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCWeekDayScheduleSet {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst action: ScheduleEntryLockSetAction = raw.payload[0];\n\n\t\tvalidatePayload(\n\t\t\taction === ScheduleEntryLockSetAction.Set\n\t\t\t\t|| action === ScheduleEntryLockSetAction.Erase,\n\t\t);\n\t\tconst userId = raw.payload[1];\n\t\tconst slotId = raw.payload[2];\n\n\t\tif (action !== ScheduleEntryLockSetAction.Set) {\n\t\t\treturn new this({\n\t\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t\taction,\n\t\t\t\tuserId,\n\t\t\t\tslotId,\n\t\t\t});\n\t\t}\n\n\t\tvalidatePayload(raw.payload.length >= 8);\n\t\tconst weekday: ScheduleEntryLockWeekday = raw.payload[3];\n\t\tconst startHour = raw.payload[4];\n\t\tconst startMinute = raw.payload[5];\n\t\tconst stopHour = raw.payload[6];\n\t\tconst stopMinute = raw.payload[7];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\taction,\n\t\t\tuserId,\n\t\t\tslotId,\n\t\t\tweekday,\n\t\t\tstartHour,\n\t\t\tstartMinute,\n\t\t\tstopHour,\n\t\t\tstopMinute,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\n\tpublic action: ScheduleEntryLockSetAction;\n\n\tpublic weekday?: ScheduleEntryLockWeekday;\n\tpublic startHour?: number;\n\tpublic startMinute?: number;\n\tpublic stopHour?: number;\n\tpublic stopMinute?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.action,\n\t\t\tthis.userId,\n\t\t\tthis.slotId,\n\t\t\t// The report should have these fields set to 0xff\n\t\t\t// if the slot is erased. The specs don't mention anything\n\t\t\t// for the Set command, so we just assume the same is okay\n\t\t\tthis.weekday ?? 0xff,\n\t\t\tthis.startHour ?? 0xff,\n\t\t\tthis.startMinute ?? 0xff,\n\t\t\tthis.stopHour ?? 0xff,\n\t\t\tthis.stopMinute ?? 0xff,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tlet message: MessageRecord;\n\t\tif (this.action === ScheduleEntryLockSetAction.Erase) {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\taction: \"erase\",\n\t\t\t};\n\t\t} else {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\taction: \"set\",\n\t\t\t\tweekday: getEnumMemberName(\n\t\t\t\t\tScheduleEntryLockWeekday,\n\t\t\t\t\tthis.weekday!,\n\t\t\t\t),\n\t\t\t\t\"start time\": formatTime(\n\t\t\t\t\tthis.startHour ?? 0,\n\t\t\t\t\tthis.startMinute ?? 0,\n\t\t\t\t),\n\t\t\t\t\"end time\": formatTime(\n\t\t\t\t\tthis.stopHour ?? 0,\n\t\t\t\t\tthis.stopMinute ?? 0,\n\t\t\t\t),\n\t\t\t};\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 type ScheduleEntryLockCCWeekDayScheduleReportOptions =\n\t& ScheduleEntryLockSlotId\n\t& AllOrNone<ScheduleEntryLockWeekDaySchedule>;\n\n@CCCommand(ScheduleEntryLockCommand.WeekDayScheduleReport)\nexport class ScheduleEntryLockCCWeekDayScheduleReport\n\textends ScheduleEntryLockCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCWeekDayScheduleReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t\tthis.weekday = options.weekday;\n\t\tthis.startHour = options.startHour;\n\t\tthis.startMinute = options.startMinute;\n\t\tthis.stopHour = options.stopHour;\n\t\tthis.stopMinute = options.stopMinute;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCWeekDayScheduleReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst userId = raw.payload[0];\n\t\tconst slotId = raw.payload[1];\n\n\t\tlet ccOptions: ScheduleEntryLockCCWeekDayScheduleReportOptions = {\n\t\t\tuserId,\n\t\t\tslotId,\n\t\t};\n\n\t\tlet weekday: ScheduleEntryLockWeekday | undefined;\n\t\tlet startHour: number | undefined;\n\t\tlet startMinute: number | undefined;\n\t\tlet stopHour: number | undefined;\n\t\tlet stopMinute: number | undefined;\n\n\t\tif (raw.payload.length >= 7) {\n\t\t\tif (raw.payload[2] !== 0xff) {\n\t\t\t\tweekday = raw.payload[2];\n\t\t\t}\n\t\t\tif (raw.payload[3] !== 0xff) {\n\t\t\t\tstartHour = raw.payload[3];\n\t\t\t}\n\t\t\tif (raw.payload[4] !== 0xff) {\n\t\t\t\tstartMinute = raw.payload[4];\n\t\t\t}\n\t\t\tif (raw.payload[5] !== 0xff) {\n\t\t\t\tstopHour = raw.payload[5];\n\t\t\t}\n\t\t\tif (raw.payload[6] !== 0xff) {\n\t\t\t\tstopMinute = raw.payload[6];\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tweekday != undefined\n\t\t\t&& startHour != undefined\n\t\t\t&& startMinute != undefined\n\t\t\t&& stopHour != undefined\n\t\t\t&& stopMinute != undefined\n\t\t) {\n\t\t\tccOptions = {\n\t\t\t\t...ccOptions,\n\t\t\t\tweekday,\n\t\t\t\tstartHour,\n\t\t\t\tstartMinute,\n\t\t\t\tstopHour,\n\t\t\t\tstopMinute,\n\t\t\t};\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t...ccOptions,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\tpublic weekday?: ScheduleEntryLockWeekday;\n\tpublic startHour?: number;\n\tpublic startMinute?: number;\n\tpublic stopHour?: number;\n\tpublic stopMinute?: number;\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\tpersistSchedule.call(\n\t\t\tthis,\n\t\t\tctx,\n\t\t\tScheduleEntryLockScheduleKind.WeekDay,\n\t\t\tthis.userId,\n\t\t\tthis.slotId,\n\t\t\tthis.weekday != undefined\n\t\t\t\t? {\n\t\t\t\t\tweekday: this.weekday,\n\t\t\t\t\tstartHour: this.startHour!,\n\t\t\t\t\tstartMinute: this.startMinute!,\n\t\t\t\t\tstopHour: this.stopHour!,\n\t\t\t\t\tstopMinute: this.stopMinute!,\n\t\t\t\t}\n\t\t\t\t: false,\n\t\t);\n\n\t\treturn true;\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.userId,\n\t\t\tthis.slotId,\n\t\t\tthis.weekday ?? 0xff,\n\t\t\tthis.startHour ?? 0xff,\n\t\t\tthis.startMinute ?? 0xff,\n\t\t\tthis.stopHour ?? 0xff,\n\t\t\tthis.stopMinute ?? 0xff,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tlet message: MessageRecord;\n\t\tif (this.weekday == undefined) {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\tschedule: \"(empty)\",\n\t\t\t};\n\t\t} else {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\tweekday: getEnumMemberName(\n\t\t\t\t\tScheduleEntryLockWeekday,\n\t\t\t\t\tthis.weekday,\n\t\t\t\t),\n\t\t\t\t\"start time\": formatTime(\n\t\t\t\t\tthis.startHour ?? 0,\n\t\t\t\t\tthis.startMinute ?? 0,\n\t\t\t\t),\n\t\t\t\t\"end time\": formatTime(\n\t\t\t\t\tthis.stopHour ?? 0,\n\t\t\t\t\tthis.stopMinute ?? 0,\n\t\t\t\t),\n\t\t\t};\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 type ScheduleEntryLockCCWeekDayScheduleGetOptions =\n\tScheduleEntryLockSlotId;\n\n@CCCommand(ScheduleEntryLockCommand.WeekDayScheduleGet)\n@expectedCCResponse(ScheduleEntryLockCCWeekDayScheduleReport)\nexport class ScheduleEntryLockCCWeekDayScheduleGet extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCWeekDayScheduleGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCWeekDayScheduleGet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst userId = raw.payload[0];\n\t\tconst slotId = raw.payload[1];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tuserId,\n\t\t\tslotId,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.userId, this.slotId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t},\n\t\t};\n\t}\n}\n\n/** @publicAPI */\nexport type ScheduleEntryLockCCYearDayScheduleSetOptions =\n\t& ScheduleEntryLockSlotId\n\t& (\n\t\t| {\n\t\t\taction: ScheduleEntryLockSetAction.Erase;\n\t\t}\n\t\t| ({\n\t\t\taction: ScheduleEntryLockSetAction.Set;\n\t\t} & ScheduleEntryLockYearDaySchedule)\n\t);\n\n@CCCommand(ScheduleEntryLockCommand.YearDayScheduleSet)\n@useSupervision()\nexport class ScheduleEntryLockCCYearDayScheduleSet extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCYearDayScheduleSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t\tthis.action = options.action;\n\t\tif (options.action === ScheduleEntryLockSetAction.Set) {\n\t\t\tthis.startYear = options.startYear;\n\t\t\tthis.startMonth = options.startMonth;\n\t\t\tthis.startDay = options.startDay;\n\t\t\tthis.startHour = options.startHour;\n\t\t\tthis.startMinute = options.startMinute;\n\t\t\tthis.stopYear = options.stopYear;\n\t\t\tthis.stopMonth = options.stopMonth;\n\t\t\tthis.stopDay = options.stopDay;\n\t\t\tthis.stopHour = options.stopHour;\n\t\t\tthis.stopMinute = options.stopMinute;\n\t\t}\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCYearDayScheduleSet {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst action: ScheduleEntryLockSetAction = raw.payload[0];\n\n\t\tvalidatePayload(\n\t\t\taction === ScheduleEntryLockSetAction.Set\n\t\t\t\t|| action === ScheduleEntryLockSetAction.Erase,\n\t\t);\n\t\tconst userId = raw.payload[1];\n\t\tconst slotId = raw.payload[2];\n\n\t\tif (action !== ScheduleEntryLockSetAction.Set) {\n\t\t\treturn new this({\n\t\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t\taction,\n\t\t\t\tuserId,\n\t\t\t\tslotId,\n\t\t\t});\n\t\t}\n\n\t\tvalidatePayload(raw.payload.length >= 13);\n\t\tconst startYear = raw.payload[3];\n\t\tconst startMonth = raw.payload[4];\n\t\tconst startDay = raw.payload[5];\n\t\tconst startHour = raw.payload[6];\n\t\tconst startMinute = raw.payload[7];\n\t\tconst stopYear = raw.payload[8];\n\t\tconst stopMonth = raw.payload[9];\n\t\tconst stopDay = raw.payload[10];\n\t\tconst stopHour = raw.payload[11];\n\t\tconst stopMinute = raw.payload[12];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\taction,\n\t\t\tuserId,\n\t\t\tslotId,\n\t\t\tstartYear,\n\t\t\tstartMonth,\n\t\t\tstartDay,\n\t\t\tstartHour,\n\t\t\tstartMinute,\n\t\t\tstopYear,\n\t\t\tstopMonth,\n\t\t\tstopDay,\n\t\t\tstopHour,\n\t\t\tstopMinute,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\n\tpublic action: ScheduleEntryLockSetAction;\n\n\tpublic startYear?: number;\n\tpublic startMonth?: number;\n\tpublic startDay?: number;\n\tpublic startHour?: number;\n\tpublic startMinute?: number;\n\tpublic stopYear?: number;\n\tpublic stopMonth?: number;\n\tpublic stopDay?: number;\n\tpublic stopHour?: number;\n\tpublic stopMinute?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.action,\n\t\t\tthis.userId,\n\t\t\tthis.slotId,\n\t\t\t// The report should have these fields set to 0xff\n\t\t\t// if the slot is erased. The specs don't mention anything\n\t\t\t// for the Set command, so we just assume the same is okay\n\t\t\tthis.startYear ?? 0xff,\n\t\t\tthis.startMonth ?? 0xff,\n\t\t\tthis.startDay ?? 0xff,\n\t\t\tthis.startHour ?? 0xff,\n\t\t\tthis.startMinute ?? 0xff,\n\t\t\tthis.stopYear ?? 0xff,\n\t\t\tthis.stopMonth ?? 0xff,\n\t\t\tthis.stopDay ?? 0xff,\n\t\t\tthis.stopHour ?? 0xff,\n\t\t\tthis.stopMinute ?? 0xff,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tlet message: MessageRecord;\n\t\tif (this.action === ScheduleEntryLockSetAction.Erase) {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\taction: \"erase\",\n\t\t\t};\n\t\t} else {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\taction: \"set\",\n\t\t\t\t\"start date\": `${\n\t\t\t\t\tformatDate(\n\t\t\t\t\t\tthis.startYear ?? 0,\n\t\t\t\t\t\tthis.startMonth ?? 0,\n\t\t\t\t\t\tthis.startDay ?? 0,\n\t\t\t\t\t)\n\t\t\t\t} ${formatTime(this.startHour ?? 0, this.startMinute ?? 0)}`,\n\t\t\t\t\"end date\": `${\n\t\t\t\t\tformatDate(\n\t\t\t\t\t\tthis.stopYear ?? 0,\n\t\t\t\t\t\tthis.stopMonth ?? 0,\n\t\t\t\t\t\tthis.stopDay ?? 0,\n\t\t\t\t\t)\n\t\t\t\t} ${formatTime(this.stopHour ?? 0, this.stopMinute ?? 0)}`,\n\t\t\t};\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 type ScheduleEntryLockCCYearDayScheduleReportOptions =\n\t& ScheduleEntryLockSlotId\n\t& AllOrNone<ScheduleEntryLockYearDaySchedule>;\n\n@CCCommand(ScheduleEntryLockCommand.YearDayScheduleReport)\nexport class ScheduleEntryLockCCYearDayScheduleReport\n\textends ScheduleEntryLockCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCYearDayScheduleReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t\tthis.startYear = options.startYear;\n\t\tthis.startMonth = options.startMonth;\n\t\tthis.startDay = options.startDay;\n\t\tthis.startHour = options.startHour;\n\t\tthis.startMinute = options.startMinute;\n\t\tthis.stopYear = options.stopYear;\n\t\tthis.stopMonth = options.stopMonth;\n\t\tthis.stopDay = options.stopDay;\n\t\tthis.stopHour = options.stopHour;\n\t\tthis.stopMinute = options.stopMinute;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCYearDayScheduleReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst userId = raw.payload[0];\n\t\tconst slotId = raw.payload[1];\n\n\t\tlet ccOptions: ScheduleEntryLockCCYearDayScheduleReportOptions = {\n\t\t\tuserId,\n\t\t\tslotId,\n\t\t};\n\n\t\tlet startYear: number | undefined;\n\t\tlet startMonth: number | undefined;\n\t\tlet startDay: number | undefined;\n\t\tlet startHour: number | undefined;\n\t\tlet startMinute: number | undefined;\n\t\tlet stopYear: number | undefined;\n\t\tlet stopMonth: number | undefined;\n\t\tlet stopDay: number | undefined;\n\t\tlet stopHour: number | undefined;\n\t\tlet stopMinute: number | undefined;\n\n\t\tif (raw.payload.length >= 12) {\n\t\t\tif (raw.payload[2] !== 0xff) {\n\t\t\t\tstartYear = raw.payload[2];\n\t\t\t}\n\t\t\tif (raw.payload[3] !== 0xff) {\n\t\t\t\tstartMonth = raw.payload[3];\n\t\t\t}\n\t\t\tif (raw.payload[4] !== 0xff) {\n\t\t\t\tstartDay = raw.payload[4];\n\t\t\t}\n\t\t\tif (raw.payload[5] !== 0xff) {\n\t\t\t\tstartHour = raw.payload[5];\n\t\t\t}\n\t\t\tif (raw.payload[6] !== 0xff) {\n\t\t\t\tstartMinute = raw.payload[6];\n\t\t\t}\n\t\t\tif (raw.payload[7] !== 0xff) {\n\t\t\t\tstopYear = raw.payload[7];\n\t\t\t}\n\t\t\tif (raw.payload[8] !== 0xff) {\n\t\t\t\tstopMonth = raw.payload[8];\n\t\t\t}\n\t\t\tif (raw.payload[9] !== 0xff) {\n\t\t\t\tstopDay = raw.payload[9];\n\t\t\t}\n\t\t\tif (raw.payload[10] !== 0xff) {\n\t\t\t\tstopHour = raw.payload[10];\n\t\t\t}\n\t\t\tif (raw.payload[11] !== 0xff) {\n\t\t\t\tstopMinute = raw.payload[11];\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tstartYear != undefined\n\t\t\t&& startMonth != undefined\n\t\t\t&& startDay != undefined\n\t\t\t&& startHour != undefined\n\t\t\t&& startMinute != undefined\n\t\t\t&& stopYear != undefined\n\t\t\t&& stopMonth != undefined\n\t\t\t&& stopDay != undefined\n\t\t\t&& stopHour != undefined\n\t\t\t&& stopMinute != undefined\n\t\t) {\n\t\t\tccOptions = {\n\t\t\t\t...ccOptions,\n\t\t\t\tstartYear,\n\t\t\t\tstartMonth,\n\t\t\t\tstartDay,\n\t\t\t\tstartHour,\n\t\t\t\tstartMinute,\n\t\t\t\tstopYear,\n\t\t\t\tstopMonth,\n\t\t\t\tstopDay,\n\t\t\t\tstopHour,\n\t\t\t\tstopMinute,\n\t\t\t};\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t...ccOptions,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\tpublic startYear?: number;\n\tpublic startMonth?: number;\n\tpublic startDay?: number;\n\tpublic startHour?: number;\n\tpublic startMinute?: number;\n\tpublic stopYear?: number;\n\tpublic stopMonth?: number;\n\tpublic stopDay?: number;\n\tpublic stopHour?: number;\n\tpublic stopMinute?: number;\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\tpersistSchedule.call(\n\t\t\tthis,\n\t\t\tctx,\n\t\t\tScheduleEntryLockScheduleKind.YearDay,\n\t\t\tthis.userId,\n\t\t\tthis.slotId,\n\t\t\tthis.startYear != undefined\n\t\t\t\t? {\n\t\t\t\t\tstartYear: this.startYear,\n\t\t\t\t\tstartMonth: this.startMonth!,\n\t\t\t\t\tstartDay: this.startDay!,\n\t\t\t\t\tstartHour: this.startHour!,\n\t\t\t\t\tstartMinute: this.startMinute!,\n\t\t\t\t\tstopYear: this.stopYear!,\n\t\t\t\t\tstopMonth: this.stopMonth!,\n\t\t\t\t\tstopDay: this.stopDay!,\n\t\t\t\t\tstopHour: this.stopHour!,\n\t\t\t\t\tstopMinute: this.stopMinute!,\n\t\t\t\t}\n\t\t\t\t: false,\n\t\t);\n\n\t\treturn true;\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.userId,\n\t\t\tthis.slotId,\n\t\t\tthis.startYear ?? 0xff,\n\t\t\tthis.startMonth ?? 0xff,\n\t\t\tthis.startDay ?? 0xff,\n\t\t\tthis.startHour ?? 0xff,\n\t\t\tthis.startMinute ?? 0xff,\n\t\t\tthis.stopYear ?? 0xff,\n\t\t\tthis.stopMonth ?? 0xff,\n\t\t\tthis.stopDay ?? 0xff,\n\t\t\tthis.stopHour ?? 0xff,\n\t\t\tthis.stopMinute ?? 0xff,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tlet message: MessageRecord;\n\t\tif (this.startYear !== undefined) {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\tschedule: \"(empty)\",\n\t\t\t};\n\t\t} else {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\taction: \"set\",\n\t\t\t\t\"start date\": `${\n\t\t\t\t\tformatDate(\n\t\t\t\t\t\tthis.startYear ?? 0,\n\t\t\t\t\t\tthis.startMonth ?? 0,\n\t\t\t\t\t\tthis.startDay ?? 0,\n\t\t\t\t\t)\n\t\t\t\t} ${formatTime(this.startHour ?? 0, this.startMinute ?? 0)}`,\n\t\t\t\t\"end date\": `${\n\t\t\t\t\tformatDate(\n\t\t\t\t\t\tthis.stopYear ?? 0,\n\t\t\t\t\t\tthis.stopMonth ?? 0,\n\t\t\t\t\t\tthis.stopDay ?? 0,\n\t\t\t\t\t)\n\t\t\t\t} ${formatTime(this.stopHour ?? 0, this.stopMinute ?? 0)}`,\n\t\t\t};\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 type ScheduleEntryLockCCYearDayScheduleGetOptions =\n\tScheduleEntryLockSlotId;\n\n@CCCommand(ScheduleEntryLockCommand.YearDayScheduleGet)\n@expectedCCResponse(ScheduleEntryLockCCYearDayScheduleReport)\nexport class ScheduleEntryLockCCYearDayScheduleGet extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCYearDayScheduleGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCYearDayScheduleGet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst userId = raw.payload[0];\n\t\tconst slotId = raw.payload[1];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tuserId,\n\t\t\tslotId,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.userId, this.slotId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface ScheduleEntryLockCCTimeOffsetSetOptions {\n\tstandardOffset: number;\n\tdstOffset: number;\n}\n\n@CCCommand(ScheduleEntryLockCommand.TimeOffsetSet)\n@useSupervision()\nexport class ScheduleEntryLockCCTimeOffsetSet extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCTimeOffsetSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.standardOffset = options.standardOffset;\n\t\tthis.dstOffset = options.dstOffset;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCTimeOffsetSet {\n\t\tconst { standardOffset, dstOffset } = parseTimezone(raw.payload);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tstandardOffset,\n\t\t\tdstOffset,\n\t\t});\n\t}\n\n\tpublic standardOffset: number;\n\tpublic dstOffset: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = encodeTimezone({\n\t\t\tstandardOffset: this.standardOffset,\n\t\t\tdstOffset: this.dstOffset,\n\t\t});\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"standard time offset\": `${this.standardOffset} minutes`,\n\t\t\t\t\"DST offset\": `${this.dstOffset} minutes`,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface ScheduleEntryLockCCTimeOffsetReportOptions {\n\tstandardOffset: number;\n\tdstOffset: number;\n}\n\n@CCCommand(ScheduleEntryLockCommand.TimeOffsetReport)\nexport class ScheduleEntryLockCCTimeOffsetReport extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCTimeOffsetReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.standardOffset = options.standardOffset;\n\t\tthis.dstOffset = options.dstOffset;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCTimeOffsetReport {\n\t\tconst { standardOffset, dstOffset } = parseTimezone(raw.payload);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tstandardOffset,\n\t\t\tdstOffset,\n\t\t});\n\t}\n\n\tpublic standardOffset: number;\n\tpublic dstOffset: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = encodeTimezone({\n\t\t\tstandardOffset: this.standardOffset,\n\t\t\tdstOffset: this.dstOffset,\n\t\t});\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"standard time offset\": `${this.standardOffset} minutes`,\n\t\t\t\t\"DST offset\": `${this.dstOffset} minutes`,\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(ScheduleEntryLockCommand.TimeOffsetGet)\n@expectedCCResponse(ScheduleEntryLockCCTimeOffsetReport)\nexport class ScheduleEntryLockCCTimeOffsetGet extends ScheduleEntryLockCC {}\n\n/** @publicAPI */\nexport type ScheduleEntryLockCCDailyRepeatingScheduleSetOptions =\n\t& ScheduleEntryLockSlotId\n\t& (\n\t\t| {\n\t\t\taction: ScheduleEntryLockSetAction.Erase;\n\t\t}\n\t\t| ({\n\t\t\taction: ScheduleEntryLockSetAction.Set;\n\t\t} & ScheduleEntryLockDailyRepeatingSchedule)\n\t);\n\n@CCCommand(ScheduleEntryLockCommand.DailyRepeatingScheduleSet)\n@useSupervision()\nexport class ScheduleEntryLockCCDailyRepeatingScheduleSet\n\textends ScheduleEntryLockCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<\n\t\t\tScheduleEntryLockCCDailyRepeatingScheduleSetOptions\n\t\t>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t\tthis.action = options.action;\n\t\tif (options.action === ScheduleEntryLockSetAction.Set) {\n\t\t\tthis.weekdays = options.weekdays;\n\t\t\tthis.startHour = options.startHour;\n\t\t\tthis.startMinute = options.startMinute;\n\t\t\tthis.durationHour = options.durationHour;\n\t\t\tthis.durationMinute = options.durationMinute;\n\t\t}\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCDailyRepeatingScheduleSet {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst action: ScheduleEntryLockSetAction = raw.payload[0];\n\n\t\tvalidatePayload(\n\t\t\taction === ScheduleEntryLockSetAction.Set\n\t\t\t\t|| action === ScheduleEntryLockSetAction.Erase,\n\t\t);\n\t\tconst userId = raw.payload[1];\n\t\tconst slotId = raw.payload[2];\n\n\t\tif (action !== ScheduleEntryLockSetAction.Set) {\n\t\t\treturn new this({\n\t\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t\taction,\n\t\t\t\tuserId,\n\t\t\t\tslotId,\n\t\t\t});\n\t\t}\n\n\t\tvalidatePayload(raw.payload.length >= 8);\n\t\tconst weekdays: ScheduleEntryLockWeekday[] = parseBitMask(\n\t\t\traw.payload.subarray(3, 4),\n\t\t\tScheduleEntryLockWeekday.Sunday,\n\t\t);\n\t\tconst startHour = raw.payload[4];\n\t\tconst startMinute = raw.payload[5];\n\t\tconst durationHour = raw.payload[6];\n\t\tconst durationMinute = raw.payload[7];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\taction,\n\t\t\tuserId,\n\t\t\tslotId,\n\t\t\tweekdays,\n\t\t\tstartHour,\n\t\t\tstartMinute,\n\t\t\tdurationHour,\n\t\t\tdurationMinute,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\n\tpublic action: ScheduleEntryLockSetAction;\n\n\tpublic weekdays?: ScheduleEntryLockWeekday[];\n\tpublic startHour?: number;\n\tpublic startMinute?: number;\n\tpublic durationHour?: number;\n\tpublic durationMinute?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.action, this.userId, this.slotId]);\n\t\tif (this.action === ScheduleEntryLockSetAction.Set) {\n\t\t\tthis.payload = Bytes.concat([\n\t\t\t\tthis.payload,\n\t\t\t\tencodeBitMask(\n\t\t\t\t\tthis.weekdays!,\n\t\t\t\t\tScheduleEntryLockWeekday.Saturday,\n\t\t\t\t\tScheduleEntryLockWeekday.Sunday,\n\t\t\t\t),\n\t\t\t\tBytes.from([\n\t\t\t\t\tthis.startHour!,\n\t\t\t\t\tthis.startMinute!,\n\t\t\t\t\tthis.durationHour!,\n\t\t\t\t\tthis.durationMinute!,\n\t\t\t\t]),\n\t\t\t]);\n\t\t} else {\n\t\t\t// Not sure if this is correct\n\t\t\tthis.payload = Bytes.concat([this.payload, Bytes.alloc(5, 0xff)]);\n\t\t}\n\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tlet message: MessageRecord;\n\t\tif (this.action === ScheduleEntryLockSetAction.Erase) {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\taction: \"erase\",\n\t\t\t};\n\t\t} else {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\taction: \"set\",\n\t\t\t\tweekdays: this.weekdays!.map((w) =>\n\t\t\t\t\tgetEnumMemberName(ScheduleEntryLockWeekday, w)\n\t\t\t\t).join(\", \"),\n\t\t\t\t\"start time\": formatTime(\n\t\t\t\t\tthis.startHour ?? 0,\n\t\t\t\t\tthis.startMinute ?? 0,\n\t\t\t\t),\n\t\t\t\tduration: formatTime(\n\t\t\t\t\tthis.durationHour ?? 0,\n\t\t\t\t\tthis.durationMinute ?? 0,\n\t\t\t\t),\n\t\t\t};\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 type ScheduleEntryLockCCDailyRepeatingScheduleReportOptions =\n\t& ScheduleEntryLockSlotId\n\t& AllOrNone<ScheduleEntryLockDailyRepeatingSchedule>;\n\n@CCCommand(ScheduleEntryLockCommand.DailyRepeatingScheduleReport)\nexport class ScheduleEntryLockCCDailyRepeatingScheduleReport\n\textends ScheduleEntryLockCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<\n\t\t\tScheduleEntryLockCCDailyRepeatingScheduleReportOptions\n\t\t>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t\tthis.weekdays = options.weekdays;\n\t\tthis.startHour = options.startHour;\n\t\tthis.startMinute = options.startMinute;\n\t\tthis.durationHour = options.durationHour;\n\t\tthis.durationMinute = options.durationMinute;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCDailyRepeatingScheduleReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst userId = raw.payload[0];\n\t\tconst slotId = raw.payload[1];\n\n\t\tif (raw.payload.length >= 7 && raw.payload[2] !== 0) {\n\t\t\t// Only parse the schedule if it is present and some weekday is selected\n\t\t\tconst weekdays: ScheduleEntryLockWeekday[] = parseBitMask(\n\t\t\t\traw.payload.subarray(2, 3),\n\t\t\t\tScheduleEntryLockWeekday.Sunday,\n\t\t\t);\n\t\t\tconst startHour = raw.payload[3];\n\t\t\tconst startMinute = raw.payload[4];\n\t\t\tconst durationHour = raw.payload[5];\n\t\t\tconst durationMinute = raw.payload[6];\n\n\t\t\treturn new this({\n\t\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t\tuserId,\n\t\t\t\tslotId,\n\t\t\t\tweekdays,\n\t\t\t\tstartHour,\n\t\t\t\tstartMinute,\n\t\t\t\tdurationHour,\n\t\t\t\tdurationMinute,\n\t\t\t});\n\t\t} else {\n\t\t\treturn new this({\n\t\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t\tuserId,\n\t\t\t\tslotId,\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\n\tpublic weekdays?: ScheduleEntryLockWeekday[];\n\tpublic startHour?: number;\n\tpublic startMinute?: number;\n\tpublic durationHour?: number;\n\tpublic durationMinute?: number;\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\tpersistSchedule.call(\n\t\t\tthis,\n\t\t\tctx,\n\t\t\tScheduleEntryLockScheduleKind.DailyRepeating,\n\t\t\tthis.userId,\n\t\t\tthis.slotId,\n\t\t\tthis.weekdays?.length\n\t\t\t\t? {\n\t\t\t\t\tweekdays: this.weekdays,\n\t\t\t\t\tstartHour: this.startHour!,\n\t\t\t\t\tstartMinute: this.startMinute!,\n\t\t\t\t\tdurationHour: this.durationHour!,\n\t\t\t\t\tdurationMinute: this.durationMinute!,\n\t\t\t\t}\n\t\t\t\t: false,\n\t\t);\n\n\t\treturn true;\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.userId, this.slotId]);\n\t\tif (this.weekdays) {\n\t\t\tthis.payload = Bytes.concat([\n\t\t\t\tthis.payload,\n\t\t\t\tencodeBitMask(\n\t\t\t\t\tthis.weekdays,\n\t\t\t\t\tScheduleEntryLockWeekday.Saturday,\n\t\t\t\t\tScheduleEntryLockWeekday.Sunday,\n\t\t\t\t),\n\t\t\t\tBytes.from([\n\t\t\t\t\tthis.startHour!,\n\t\t\t\t\tthis.startMinute!,\n\t\t\t\t\tthis.durationHour!,\n\t\t\t\t\tthis.durationMinute!,\n\t\t\t\t]),\n\t\t\t]);\n\t\t} else {\n\t\t\t// Not sure if this is correct, but at least we won't parse it incorrectly ourselves when setting everything to 0\n\t\t\tthis.payload = Bytes.concat([this.payload, Bytes.alloc(5, 0)]);\n\t\t}\n\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tlet message: MessageRecord;\n\t\tif (!this.weekdays) {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\tschedule: \"(empty)\",\n\t\t\t};\n\t\t} else {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\taction: \"set\",\n\t\t\t\tweekdays: this.weekdays\n\t\t\t\t\t.map((w) => getEnumMemberName(ScheduleEntryLockWeekday, w))\n\t\t\t\t\t.join(\", \"),\n\t\t\t\t\"start time\": formatTime(\n\t\t\t\t\tthis.startHour ?? 0,\n\t\t\t\t\tthis.startMinute ?? 0,\n\t\t\t\t),\n\t\t\t\tduration: formatTime(\n\t\t\t\t\tthis.durationHour ?? 0,\n\t\t\t\t\tthis.durationMinute ?? 0,\n\t\t\t\t),\n\t\t\t};\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 type ScheduleEntryLockCCDailyRepeatingScheduleGetOptions =\n\tScheduleEntryLockSlotId;\n\n@CCCommand(ScheduleEntryLockCommand.DailyRepeatingScheduleGet)\n@expectedCCResponse(ScheduleEntryLockCCDailyRepeatingScheduleReport)\nexport class ScheduleEntryLockCCDailyRepeatingScheduleGet\n\textends ScheduleEntryLockCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<\n\t\t\tScheduleEntryLockCCDailyRepeatingScheduleGetOptions\n\t\t>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCDailyRepeatingScheduleGet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst userId = raw.payload[0];\n\t\tconst slotId = raw.payload[1];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tuserId,\n\t\t\tslotId,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.userId, this.slotId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t},\n\t\t};\n\t}\n}\n"],
5
- "mappings": "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",
4
+ "sourcesContent": ["import { type CCEncodingContext, type CCParsingContext } from \"@zwave-js/cc\";\nimport {\n\tCommandClasses,\n\ttype GetValueDB,\n\ttype MessageOrCCLogEntry,\n\tMessagePriority,\n\ttype MessageRecord,\n\ttype SupervisionResult,\n\ttype WithAddress,\n\tZWaveError,\n\tZWaveErrorCodes,\n\tencodeBitMask,\n\tgetDSTInfo,\n\tisUnsupervisedOrSucceeded,\n\tparseBitMask,\n\tvalidatePayload,\n} from \"@zwave-js/core\";\nimport { type EndpointId, type MaybeNotKnown } from \"@zwave-js/core/safe\";\nimport {\n\ttype AllOrNone,\n\tBytes,\n\tformatDate,\n\tformatTime,\n\tgetEnumMemberName,\n\tpick,\n} from \"@zwave-js/shared\";\nimport { validateArgs } from \"@zwave-js/transformers\";\nimport { CCAPI } from \"../lib/API.js\";\nimport {\n\ttype CCRaw,\n\tCommandClass,\n\ttype InterviewContext,\n\ttype PersistValuesContext,\n} from \"../lib/CommandClass.js\";\nimport {\n\tAPI,\n\tCCCommand,\n\tccValueProperty,\n\tccValues,\n\tcommandClass,\n\texpectedCCResponse,\n\timplementedVersion,\n\tuseSupervision,\n} from \"../lib/CommandClassDecorators.js\";\nimport { V } from \"../lib/Values.js\";\nimport {\n\tScheduleEntryLockCommand,\n\ttype ScheduleEntryLockDailyRepeatingSchedule,\n\tScheduleEntryLockScheduleKind,\n\tScheduleEntryLockSetAction,\n\ttype ScheduleEntryLockSlotId,\n\ttype ScheduleEntryLockWeekDaySchedule,\n\tScheduleEntryLockWeekday,\n\ttype ScheduleEntryLockYearDaySchedule,\n\ttype Timezone,\n} from \"../lib/_Types.js\";\nimport { encodeTimezone, parseTimezone } from \"../lib/serializers.js\";\nimport { UserCodeCC } from \"./UserCodeCC.js\";\n\nexport const ScheduleEntryLockCCValues = V.defineCCValues(\n\tCommandClasses[\"Schedule Entry Lock\"],\n\t{\n\t\t...V.staticProperty(\"numWeekDaySlots\", undefined, { internal: true }),\n\t\t...V.staticProperty(\"numYearDaySlots\", undefined, { internal: true }),\n\t\t...V.staticProperty(\"numDailyRepeatingSlots\", undefined, {\n\t\t\tinternal: true,\n\t\t}),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"userEnabled\",\n\t\t\t\"userEnabled\",\n\t\t\t(userId: number) => userId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"userEnabled\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"scheduleKind\",\n\t\t\t\"scheduleKind\",\n\t\t\t(userId: number) => userId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"scheduleKind\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t\t...V.dynamicPropertyAndKeyWithName(\n\t\t\t\"schedule\",\n\t\t\t\"schedule\",\n\t\t\t(\n\t\t\t\tscheduleKind: ScheduleEntryLockScheduleKind,\n\t\t\t\tuserId: number,\n\t\t\t\tslotId: number,\n\t\t\t) => (scheduleKind << 16) | (userId << 8) | slotId,\n\t\t\t({ property, propertyKey }) =>\n\t\t\t\tproperty === \"schedule\" && typeof propertyKey === \"number\",\n\t\t\tundefined,\n\t\t\t{ internal: true },\n\t\t),\n\t},\n);\n\n/** Caches information about a schedule */\nfunction persistSchedule(\n\tthis: ScheduleEntryLockCC,\n\tctx: GetValueDB,\n\tscheduleKind: ScheduleEntryLockScheduleKind,\n\tuserId: number,\n\tslotId: number,\n\tschedule:\n\t\t| ScheduleEntryLockWeekDaySchedule\n\t\t| ScheduleEntryLockYearDaySchedule\n\t\t| ScheduleEntryLockDailyRepeatingSchedule\n\t\t| false\n\t\t| undefined,\n): void {\n\tconst scheduleValue = ScheduleEntryLockCCValues.schedule(\n\t\tscheduleKind,\n\t\tuserId,\n\t\tslotId,\n\t);\n\n\tif (schedule != undefined) {\n\t\tthis.setValue(ctx, scheduleValue, schedule);\n\t} else {\n\t\tthis.removeValue(ctx, scheduleValue);\n\t}\n}\n\n/** Updates the schedule kind assumed to be active for user in the cache */\nfunction setUserCodeScheduleKindCached(\n\tctx: GetValueDB,\n\tendpoint: EndpointId,\n\tuserId: number,\n\tscheduleKind: ScheduleEntryLockScheduleKind,\n): void {\n\tctx\n\t\t.getValueDB(endpoint.nodeId)\n\t\t.setValue(\n\t\t\tScheduleEntryLockCCValues.scheduleKind(userId).endpoint(\n\t\t\t\tendpoint.index,\n\t\t\t),\n\t\t\tscheduleKind,\n\t\t);\n}\n\n/** Updates whether scheduling is active for one or all user(s) in the cache */\nfunction setUserCodeScheduleEnabledCached(\n\tctx: GetValueDB,\n\tendpoint: EndpointId,\n\tuserId: number | undefined,\n\tenabled: boolean,\n): void {\n\tconst setEnabled = (userId: number) => {\n\t\tctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.setValue(\n\t\t\t\tScheduleEntryLockCCValues.userEnabled(userId).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t\tenabled,\n\t\t\t);\n\t};\n\n\tif (userId == undefined) {\n\t\t// Enable/disable all users\n\t\tconst numUsers = UserCodeCC.getSupportedUsersCached(ctx, endpoint)\n\t\t\t?? 0;\n\n\t\tfor (let userId = 1; userId <= numUsers; userId++) {\n\t\t\tsetEnabled(userId);\n\t\t}\n\t} else {\n\t\tsetEnabled(userId);\n\t}\n}\n\n@API(CommandClasses[\"Schedule Entry Lock\"])\nexport class ScheduleEntryLockCCAPI extends CCAPI {\n\tpublic supportsCommand(\n\t\tcmd: ScheduleEntryLockCommand,\n\t): MaybeNotKnown<boolean> {\n\t\tswitch (cmd) {\n\t\t\tcase ScheduleEntryLockCommand.EnableSet:\n\t\t\tcase ScheduleEntryLockCommand.EnableAllSet:\n\t\t\tcase ScheduleEntryLockCommand.WeekDayScheduleSet:\n\t\t\tcase ScheduleEntryLockCommand.WeekDayScheduleGet:\n\t\t\tcase ScheduleEntryLockCommand.YearDayScheduleSet:\n\t\t\tcase ScheduleEntryLockCommand.YearDayScheduleGet:\n\t\t\tcase ScheduleEntryLockCommand.SupportedGet:\n\t\t\t\treturn true; // V1\n\n\t\t\tcase ScheduleEntryLockCommand.TimeOffsetSet:\n\t\t\tcase ScheduleEntryLockCommand.TimeOffsetGet:\n\t\t\t\treturn this.version >= 2;\n\n\t\t\tcase ScheduleEntryLockCommand.DailyRepeatingScheduleSet:\n\t\t\tcase ScheduleEntryLockCommand.DailyRepeatingScheduleGet:\n\t\t\t\treturn this.version >= 3;\n\t\t}\n\t\treturn super.supportsCommand(cmd);\n\t}\n\n\t/**\n\t * Enables or disables schedules. If a user ID is given, that user's\n\t * schedules will be enabled or disabled. If no user ID is given, all schedules\n\t * will be affected.\n\t */\n\t@validateArgs()\n\tpublic async setEnabled(\n\t\tenabled: boolean,\n\t\tuserId?: number,\n\t): Promise<SupervisionResult | undefined> {\n\t\tlet result: SupervisionResult | undefined;\n\t\tif (userId != undefined) {\n\t\t\tthis.assertSupportsCommand(\n\t\t\t\tScheduleEntryLockCommand,\n\t\t\t\tScheduleEntryLockCommand.EnableSet,\n\t\t\t);\n\n\t\t\tconst cc = new ScheduleEntryLockCCEnableSet({\n\t\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t\tuserId,\n\t\t\t\tenabled,\n\t\t\t});\n\n\t\t\tresult = await this.host.sendCommand(cc, this.commandOptions);\n\t\t} else {\n\t\t\tthis.assertSupportsCommand(\n\t\t\t\tScheduleEntryLockCommand,\n\t\t\t\tScheduleEntryLockCommand.EnableAllSet,\n\t\t\t);\n\n\t\t\tconst cc = new ScheduleEntryLockCCEnableAllSet({\n\t\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t\tenabled,\n\t\t\t});\n\n\t\t\tresult = await this.host.sendCommand(cc, this.commandOptions);\n\t\t}\n\n\t\tif (this.isSinglecast() && isUnsupervisedOrSucceeded(result)) {\n\t\t\t// Remember the new state in the cache\n\t\t\tsetUserCodeScheduleEnabledCached(\n\t\t\t\tthis.host,\n\t\t\t\tthis.endpoint,\n\t\t\t\tuserId,\n\t\t\t\tenabled,\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t// eslint-disable-next-line @typescript-eslint/explicit-module-boundary-types\n\tpublic async getNumSlots() {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.SupportedGet,\n\t\t);\n\n\t\tconst cc = new ScheduleEntryLockCCSupportedGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\n\t\tconst result = await this.host.sendCommand<\n\t\t\tScheduleEntryLockCCSupportedReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\tif (result) {\n\t\t\treturn pick(result, [\n\t\t\t\t\"numWeekDaySlots\",\n\t\t\t\t\"numYearDaySlots\",\n\t\t\t\t\"numDailyRepeatingSlots\",\n\t\t\t]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async setWeekDaySchedule(\n\t\tslot: ScheduleEntryLockSlotId,\n\t\tschedule?: ScheduleEntryLockWeekDaySchedule,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.WeekDayScheduleSet,\n\t\t);\n\n\t\tif (this.isSinglecast()) {\n\t\t\tconst numSlots = ScheduleEntryLockCC.getNumWeekDaySlotsCached(\n\t\t\t\tthis.host,\n\t\t\t\tthis.endpoint,\n\t\t\t);\n\n\t\t\tif (slot.slotId < 1 || slot.slotId > numSlots) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`The schedule slot # must be between 1 and the number of supported day-of-week slots ${numSlots}.`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (schedule) {\n\t\t\tif (\n\t\t\t\tschedule.stopHour < schedule.startHour\n\t\t\t\t|| schedule.stopHour === schedule.startHour\n\t\t\t\t\t&& schedule.stopMinute <= schedule.startMinute\n\t\t\t) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`The stop time must be after the start time.`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst cc = new ScheduleEntryLockCCWeekDayScheduleSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...slot,\n\t\t\t...(schedule\n\t\t\t\t? {\n\t\t\t\t\taction: ScheduleEntryLockSetAction.Set,\n\t\t\t\t\t...schedule,\n\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\taction: ScheduleEntryLockSetAction.Erase,\n\t\t\t\t}),\n\t\t});\n\n\t\tconst result = await this.host.sendCommand(cc, this.commandOptions);\n\n\t\tif (this.isSinglecast() && isUnsupervisedOrSucceeded(result)) {\n\t\t\t// Editing (but not erasing) a schedule will enable scheduling for that user\n\t\t\t// and switch it to the current scheduling kind\n\t\t\tif (!!schedule) {\n\t\t\t\tsetUserCodeScheduleEnabledCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t\tslot.userId,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t\tsetUserCodeScheduleKindCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t\tslot.userId,\n\t\t\t\t\tScheduleEntryLockScheduleKind.WeekDay,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// And cache the schedule\n\t\t\tpersistSchedule.call(\n\t\t\t\tcc,\n\t\t\t\tthis.host,\n\t\t\t\tScheduleEntryLockScheduleKind.WeekDay,\n\t\t\t\tslot.userId,\n\t\t\t\tslot.slotId,\n\t\t\t\tschedule ?? false,\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t@validateArgs()\n\tpublic async getWeekDaySchedule(\n\t\tslot: ScheduleEntryLockSlotId,\n\t): Promise<MaybeNotKnown<ScheduleEntryLockWeekDaySchedule>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.WeekDayScheduleSet,\n\t\t);\n\n\t\tconst cc = new ScheduleEntryLockCCWeekDayScheduleGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...slot,\n\t\t});\n\t\tconst result = await this.host.sendCommand<\n\t\t\tScheduleEntryLockCCWeekDayScheduleReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\tif (result?.weekday != undefined) {\n\t\t\treturn {\n\t\t\t\tweekday: result.weekday,\n\t\t\t\tstartHour: result.startHour!,\n\t\t\t\tstartMinute: result.startMinute!,\n\t\t\t\tstopHour: result.stopHour!,\n\t\t\t\tstopMinute: result.stopMinute!,\n\t\t\t};\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async setYearDaySchedule(\n\t\tslot: ScheduleEntryLockSlotId,\n\t\tschedule?: ScheduleEntryLockYearDaySchedule,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.YearDayScheduleSet,\n\t\t);\n\n\t\tif (this.isSinglecast()) {\n\t\t\tconst numSlots = ScheduleEntryLockCC.getNumYearDaySlotsCached(\n\t\t\t\tthis.host,\n\t\t\t\tthis.endpoint,\n\t\t\t);\n\n\t\t\tif (slot.slotId < 1 || slot.slotId > numSlots) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`The schedule slot # must be between 1 and the number of supported day-of-year slots ${numSlots}.`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tif (schedule) {\n\t\t\tconst startDate = new Date(\n\t\t\t\tschedule.startYear,\n\t\t\t\tschedule.startMonth - 1,\n\t\t\t\tschedule.startDay,\n\t\t\t\tschedule.startHour,\n\t\t\t\tschedule.startMinute,\n\t\t\t);\n\t\t\tconst stopDate = new Date(\n\t\t\t\tschedule.stopYear,\n\t\t\t\tschedule.stopMonth - 1,\n\t\t\t\tschedule.stopDay,\n\t\t\t\tschedule.stopHour,\n\t\t\t\tschedule.stopMinute,\n\t\t\t);\n\t\t\tif (stopDate <= startDate) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`The stop date must be after the start date.`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst cc = new ScheduleEntryLockCCYearDayScheduleSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...slot,\n\t\t\t...(schedule\n\t\t\t\t? {\n\t\t\t\t\taction: ScheduleEntryLockSetAction.Set,\n\t\t\t\t\t...schedule,\n\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\taction: ScheduleEntryLockSetAction.Erase,\n\t\t\t\t}),\n\t\t});\n\n\t\tconst result = await this.host.sendCommand(cc, this.commandOptions);\n\n\t\tif (this.isSinglecast() && isUnsupervisedOrSucceeded(result)) {\n\t\t\t// Editing (but not erasing) a schedule will enable scheduling for that user\n\t\t\t// and switch it to the current scheduling kind\n\t\t\tif (!!schedule) {\n\t\t\t\tsetUserCodeScheduleEnabledCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t\tslot.userId,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t\tsetUserCodeScheduleKindCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t\tslot.userId,\n\t\t\t\t\tScheduleEntryLockScheduleKind.YearDay,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// And cache the schedule\n\t\t\tpersistSchedule.call(\n\t\t\t\tcc,\n\t\t\t\tthis.host,\n\t\t\t\tScheduleEntryLockScheduleKind.YearDay,\n\t\t\t\tslot.userId,\n\t\t\t\tslot.slotId,\n\t\t\t\tschedule ?? false,\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t@validateArgs()\n\tpublic async getYearDaySchedule(\n\t\tslot: ScheduleEntryLockSlotId,\n\t): Promise<MaybeNotKnown<ScheduleEntryLockYearDaySchedule>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.YearDayScheduleSet,\n\t\t);\n\n\t\tconst cc = new ScheduleEntryLockCCYearDayScheduleGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...slot,\n\t\t});\n\t\tconst result = await this.host.sendCommand<\n\t\t\tScheduleEntryLockCCYearDayScheduleReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\tif (result?.startYear != undefined) {\n\t\t\treturn {\n\t\t\t\tstartYear: result.startYear,\n\t\t\t\tstartMonth: result.startMonth!,\n\t\t\t\tstartDay: result.startDay!,\n\t\t\t\tstartHour: result.startHour!,\n\t\t\t\tstartMinute: result.startMinute!,\n\t\t\t\tstopYear: result.stopYear!,\n\t\t\t\tstopMonth: result.stopMonth!,\n\t\t\t\tstopDay: result.stopDay!,\n\t\t\t\tstopHour: result.stopHour!,\n\t\t\t\tstopMinute: result.stopMinute!,\n\t\t\t};\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async setDailyRepeatingSchedule(\n\t\tslot: ScheduleEntryLockSlotId,\n\t\tschedule?: ScheduleEntryLockDailyRepeatingSchedule,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.DailyRepeatingScheduleSet,\n\t\t);\n\n\t\tif (this.isSinglecast()) {\n\t\t\tconst numSlots = ScheduleEntryLockCC\n\t\t\t\t.getNumDailyRepeatingSlotsCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t);\n\n\t\t\tif (slot.slotId < 1 || slot.slotId > numSlots) {\n\t\t\t\tthrow new ZWaveError(\n\t\t\t\t\t`The schedule slot # must be between 1 and the number of supported daily repeating slots ${numSlots}.`,\n\t\t\t\t\tZWaveErrorCodes.Argument_Invalid,\n\t\t\t\t);\n\t\t\t}\n\t\t}\n\n\t\tconst cc = new ScheduleEntryLockCCDailyRepeatingScheduleSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...slot,\n\t\t\t...(schedule\n\t\t\t\t? {\n\t\t\t\t\taction: ScheduleEntryLockSetAction.Set,\n\t\t\t\t\t...schedule,\n\t\t\t\t}\n\t\t\t\t: {\n\t\t\t\t\taction: ScheduleEntryLockSetAction.Erase,\n\t\t\t\t}),\n\t\t});\n\n\t\tconst result = await this.host.sendCommand(cc, this.commandOptions);\n\n\t\tif (this.isSinglecast() && isUnsupervisedOrSucceeded(result)) {\n\t\t\t// Editing (but not erasing) a schedule will enable scheduling for that user\n\t\t\t// and switch it to the current scheduling kind\n\t\t\tif (!!schedule) {\n\t\t\t\tsetUserCodeScheduleEnabledCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t\tslot.userId,\n\t\t\t\t\ttrue,\n\t\t\t\t);\n\t\t\t\tsetUserCodeScheduleKindCached(\n\t\t\t\t\tthis.host,\n\t\t\t\t\tthis.endpoint,\n\t\t\t\t\tslot.userId,\n\t\t\t\t\tScheduleEntryLockScheduleKind.DailyRepeating,\n\t\t\t\t);\n\t\t\t}\n\n\t\t\t// And cache the schedule\n\t\t\tpersistSchedule.call(\n\t\t\t\tcc,\n\t\t\t\tthis.host,\n\t\t\t\tScheduleEntryLockScheduleKind.DailyRepeating,\n\t\t\t\tslot.userId,\n\t\t\t\tslot.slotId,\n\t\t\t\tschedule ?? false,\n\t\t\t);\n\t\t}\n\n\t\treturn result;\n\t}\n\n\t@validateArgs()\n\tpublic async getDailyRepeatingSchedule(\n\t\tslot: ScheduleEntryLockSlotId,\n\t): Promise<MaybeNotKnown<ScheduleEntryLockDailyRepeatingSchedule>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.DailyRepeatingScheduleSet,\n\t\t);\n\n\t\tconst cc = new ScheduleEntryLockCCDailyRepeatingScheduleGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...slot,\n\t\t});\n\t\tconst result = await this.host.sendCommand<\n\t\t\tScheduleEntryLockCCDailyRepeatingScheduleReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\tif (result?.weekdays != undefined) {\n\t\t\treturn {\n\t\t\t\tweekdays: result.weekdays,\n\t\t\t\tstartHour: result.startHour!,\n\t\t\t\tstartMinute: result.startMinute!,\n\t\t\t\tdurationHour: result.durationHour!,\n\t\t\t\tdurationMinute: result.durationMinute!,\n\t\t\t};\n\t\t}\n\t}\n\n\tpublic async getTimezone(): Promise<MaybeNotKnown<Timezone>> {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.TimeOffsetGet,\n\t\t);\n\n\t\tconst cc = new ScheduleEntryLockCCTimeOffsetGet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t});\n\t\tconst result = await this.host.sendCommand<\n\t\t\tScheduleEntryLockCCTimeOffsetReport\n\t\t>(\n\t\t\tcc,\n\t\t\tthis.commandOptions,\n\t\t);\n\n\t\tif (result) {\n\t\t\treturn pick(result, [\"standardOffset\", \"dstOffset\"]);\n\t\t}\n\t}\n\n\t@validateArgs()\n\tpublic async setTimezone(\n\t\ttimezone: Timezone,\n\t): Promise<SupervisionResult | undefined> {\n\t\tthis.assertSupportsCommand(\n\t\t\tScheduleEntryLockCommand,\n\t\t\tScheduleEntryLockCommand.TimeOffsetSet,\n\t\t);\n\n\t\tconst cc = new ScheduleEntryLockCCTimeOffsetSet({\n\t\t\tnodeId: this.endpoint.nodeId,\n\t\t\tendpointIndex: this.endpoint.index,\n\t\t\t...timezone,\n\t\t});\n\n\t\treturn this.host.sendCommand(cc, this.commandOptions);\n\t}\n}\n\n@commandClass(CommandClasses[\"Schedule Entry Lock\"])\n@implementedVersion(3)\n@ccValues(ScheduleEntryLockCCValues)\nexport class ScheduleEntryLockCC extends CommandClass {\n\tdeclare ccCommand: ScheduleEntryLockCommand;\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[\"Schedule Entry Lock\"],\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 supported number of schedule slots...\",\n\t\t\tdirection: \"outbound\",\n\t\t});\n\t\tconst slotsResp = await api.getNumSlots();\n\t\tif (slotsResp) {\n\t\t\tlet logMessage = `received supported number of schedule slots:\nday of week: ${slotsResp.numWeekDaySlots}\nday of year: ${slotsResp.numYearDaySlots}`;\n\t\t\tif (slotsResp.numDailyRepeatingSlots != undefined) {\n\t\t\t\tlogMessage += `\ndaily repeating: ${slotsResp.numDailyRepeatingSlots}`;\n\t\t\t}\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// If the timezone is not configured with the Time CC, do it here\n\t\tif (\n\t\t\tapi.supportsCommand(ScheduleEntryLockCommand.TimeOffsetSet)\n\t\t\t&& (!endpoint.supportsCC(CommandClasses.Time)\n\t\t\t\t|| endpoint.getCCVersion(CommandClasses.Time) < 2)\n\t\t) {\n\t\t\tctx.logNode(node.id, {\n\t\t\t\tendpoint: this.endpointIndex,\n\t\t\t\tmessage: \"setting timezone information...\",\n\t\t\t\tdirection: \"outbound\",\n\t\t\t});\n\t\t\t// Set the correct timezone on this node\n\t\t\tconst timezone = getDSTInfo();\n\t\t\tawait api.setTimezone(timezone);\n\t\t}\n\n\t\t// Remember that the interview is complete\n\t\tthis.setInterviewComplete(ctx, true);\n\t}\n\n\t/**\n\t * Returns the number of supported day-of-week slots.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getNumWeekDaySlotsCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): number {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tScheduleEntryLockCCValues.numWeekDaySlots.endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t) || 0;\n\t}\n\n\t/**\n\t * Returns the number of supported day-of-year slots.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getNumYearDaySlotsCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): number {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tScheduleEntryLockCCValues.numYearDaySlots.endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t) || 0;\n\t}\n\n\t/**\n\t * Returns the number of supported daily-repeating slots.\n\t * This only works AFTER the interview process\n\t */\n\tpublic static getNumDailyRepeatingSlotsCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t): number {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tScheduleEntryLockCCValues.numDailyRepeatingSlots.endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t) || 0;\n\t}\n\n\t/**\n\t * Returns whether scheduling for a given user ID (most likely) enabled. Since the Schedule Entry Lock CC\n\t * provides no way to query the enabled state, Z-Wave JS tracks this in its own cache.\n\t *\n\t * This only works AFTER the interview process and is likely to be wrong if a device\n\t * with existing schedules is queried. To be sure, disable scheduling for all users and enable\n\t * only the desired ones.\n\t */\n\tpublic static getUserCodeScheduleEnabledCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tuserId: number,\n\t): boolean {\n\t\treturn !!ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tScheduleEntryLockCCValues.userEnabled(userId).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t);\n\t}\n\n\t/**\n\t * Returns which scheduling kind is (most likely) enabled for a given user ID . Since the Schedule Entry Lock CC\n\t * provides no way to query the current state, Z-Wave JS tracks this in its own cache.\n\t *\n\t * This only works AFTER the interview process and is likely to be wrong if a device\n\t * with existing schedules is queried. To be sure, edit a schedule of the desired kind\n\t * which will automatically switch the user to that scheduling kind.\n\t */\n\tpublic static getUserCodeScheduleKindCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tuserId: number,\n\t): MaybeNotKnown<ScheduleEntryLockScheduleKind> {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue<ScheduleEntryLockScheduleKind>(\n\t\t\t\tScheduleEntryLockCCValues.scheduleKind(userId).endpoint(\n\t\t\t\t\tendpoint.index,\n\t\t\t\t),\n\t\t\t);\n\t}\n\n\tpublic static getScheduleCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tscheduleKind: ScheduleEntryLockScheduleKind.WeekDay,\n\t\tuserId: number,\n\t\tslotId: number,\n\t): MaybeNotKnown<ScheduleEntryLockWeekDaySchedule | false>;\n\n\tpublic static getScheduleCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tscheduleKind: ScheduleEntryLockScheduleKind.YearDay,\n\t\tuserId: number,\n\t\tslotId: number,\n\t): MaybeNotKnown<ScheduleEntryLockYearDaySchedule | false>;\n\n\tpublic static getScheduleCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tscheduleKind: ScheduleEntryLockScheduleKind.DailyRepeating,\n\t\tuserId: number,\n\t\tslotId: number,\n\t): MaybeNotKnown<ScheduleEntryLockDailyRepeatingSchedule | false>;\n\n\t// Catch-all overload for applications which haven't narrowed `scheduleKind`\n\tpublic static getScheduleCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tscheduleKind: ScheduleEntryLockScheduleKind,\n\t\tuserId: number,\n\t\tslotId: number,\n\t): MaybeNotKnown<\n\t\t| ScheduleEntryLockWeekDaySchedule\n\t\t| ScheduleEntryLockYearDaySchedule\n\t\t| ScheduleEntryLockDailyRepeatingSchedule\n\t\t| false\n\t>;\n\n\t/**\n\t * Returns the assumed state of a schedule. Since the Schedule Entry Lock CC\n\t * provides no way to query the current state, Z-Wave JS tracks this in its own cache.\n\t *\n\t * A return value of `false` means the slot is empty, a return value of `undefined` means the information is not cached yet.\n\t *\n\t * This only works AFTER the interview process.\n\t */\n\tpublic static getScheduleCached(\n\t\tctx: GetValueDB,\n\t\tendpoint: EndpointId,\n\t\tscheduleKind: ScheduleEntryLockScheduleKind,\n\t\tuserId: number,\n\t\tslotId: number,\n\t): MaybeNotKnown<\n\t\t| ScheduleEntryLockWeekDaySchedule\n\t\t| ScheduleEntryLockYearDaySchedule\n\t\t| ScheduleEntryLockDailyRepeatingSchedule\n\t\t| false\n\t> {\n\t\treturn ctx\n\t\t\t.getValueDB(endpoint.nodeId)\n\t\t\t.getValue(\n\t\t\t\tScheduleEntryLockCCValues.schedule(\n\t\t\t\t\tscheduleKind,\n\t\t\t\t\tuserId,\n\t\t\t\t\tslotId,\n\t\t\t\t).endpoint(endpoint.index),\n\t\t\t);\n\t}\n}\n\n// @publicAPI\nexport interface ScheduleEntryLockCCEnableSetOptions {\n\tuserId: number;\n\tenabled: boolean;\n}\n\n@CCCommand(ScheduleEntryLockCommand.EnableSet)\n@useSupervision()\nexport class ScheduleEntryLockCCEnableSet extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCEnableSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.enabled = options.enabled;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCEnableSet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst userId = raw.payload[0];\n\t\tconst enabled: boolean = raw.payload[1] === 0x01;\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tuserId,\n\t\t\tenabled,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic enabled: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.userId, this.enabled ? 0x01 : 0x00]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\taction: this.enabled ? \"enable\" : \"disable\",\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface ScheduleEntryLockCCEnableAllSetOptions {\n\tenabled: boolean;\n}\n\n@CCCommand(ScheduleEntryLockCommand.EnableAllSet)\n@useSupervision()\nexport class ScheduleEntryLockCCEnableAllSet extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCEnableAllSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.enabled = options.enabled;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCEnableAllSet {\n\t\tvalidatePayload(raw.payload.length >= 1);\n\t\tconst enabled: boolean = raw.payload[0] === 0x01;\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tenabled,\n\t\t});\n\t}\n\n\tpublic enabled: boolean;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.enabled ? 0x01 : 0x00]);\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\taction: this.enabled ? \"enable all\" : \"disable all\",\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface ScheduleEntryLockCCSupportedReportOptions {\n\tnumWeekDaySlots: number;\n\tnumYearDaySlots: number;\n\tnumDailyRepeatingSlots?: number;\n}\n\n@CCCommand(ScheduleEntryLockCommand.SupportedReport)\n@ccValueProperty(\"numWeekDaySlots\", ScheduleEntryLockCCValues.numWeekDaySlots)\n@ccValueProperty(\"numYearDaySlots\", ScheduleEntryLockCCValues.numYearDaySlots)\n@ccValueProperty(\n\t\"numDailyRepeatingSlots\",\n\tScheduleEntryLockCCValues.numDailyRepeatingSlots,\n)\nexport class ScheduleEntryLockCCSupportedReport extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCSupportedReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.numWeekDaySlots = options.numWeekDaySlots;\n\t\tthis.numYearDaySlots = options.numYearDaySlots;\n\t\tthis.numDailyRepeatingSlots = options.numDailyRepeatingSlots;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCSupportedReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst numWeekDaySlots = raw.payload[0];\n\t\tconst numYearDaySlots = raw.payload[1];\n\t\tlet numDailyRepeatingSlots: number | undefined;\n\t\tif (raw.payload.length >= 3) {\n\t\t\tnumDailyRepeatingSlots = raw.payload[2];\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tnumWeekDaySlots,\n\t\t\tnumYearDaySlots,\n\t\t\tnumDailyRepeatingSlots,\n\t\t});\n\t}\n\n\tpublic numWeekDaySlots: number;\n\n\tpublic numYearDaySlots: number;\n\n\tpublic numDailyRepeatingSlots: number | undefined;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.numWeekDaySlots,\n\t\t\tthis.numYearDaySlots,\n\t\t\tthis.numDailyRepeatingSlots ?? 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\t\t\"no. of weekday schedule slots\": this.numWeekDaySlots,\n\t\t\t\"no. of day-of-year schedule slots\": this.numYearDaySlots,\n\t\t};\n\t\tif (this.numDailyRepeatingSlots != undefined) {\n\t\t\tmessage[\"no. of daily repeating schedule slots\"] =\n\t\t\t\tthis.numDailyRepeatingSlots;\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@CCCommand(ScheduleEntryLockCommand.SupportedGet)\n@expectedCCResponse(ScheduleEntryLockCCSupportedReport)\nexport class ScheduleEntryLockCCSupportedGet extends ScheduleEntryLockCC {}\n\n/** @publicAPI */\nexport type ScheduleEntryLockCCWeekDayScheduleSetOptions =\n\t& ScheduleEntryLockSlotId\n\t& (\n\t\t| {\n\t\t\taction: ScheduleEntryLockSetAction.Erase;\n\t\t}\n\t\t| ({\n\t\t\taction: ScheduleEntryLockSetAction.Set;\n\t\t} & ScheduleEntryLockWeekDaySchedule)\n\t);\n\n@CCCommand(ScheduleEntryLockCommand.WeekDayScheduleSet)\n@useSupervision()\nexport class ScheduleEntryLockCCWeekDayScheduleSet extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCWeekDayScheduleSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t\tthis.action = options.action;\n\t\tif (options.action === ScheduleEntryLockSetAction.Set) {\n\t\t\tthis.weekday = options.weekday;\n\t\t\tthis.startHour = options.startHour;\n\t\t\tthis.startMinute = options.startMinute;\n\t\t\tthis.stopHour = options.stopHour;\n\t\t\tthis.stopMinute = options.stopMinute;\n\t\t}\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCWeekDayScheduleSet {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst action: ScheduleEntryLockSetAction = raw.payload[0];\n\n\t\tvalidatePayload(\n\t\t\taction === ScheduleEntryLockSetAction.Set\n\t\t\t\t|| action === ScheduleEntryLockSetAction.Erase,\n\t\t);\n\t\tconst userId = raw.payload[1];\n\t\tconst slotId = raw.payload[2];\n\n\t\tif (action !== ScheduleEntryLockSetAction.Set) {\n\t\t\treturn new this({\n\t\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t\taction,\n\t\t\t\tuserId,\n\t\t\t\tslotId,\n\t\t\t});\n\t\t}\n\n\t\tvalidatePayload(raw.payload.length >= 8);\n\t\tconst weekday: ScheduleEntryLockWeekday = raw.payload[3];\n\t\tconst startHour = raw.payload[4];\n\t\tconst startMinute = raw.payload[5];\n\t\tconst stopHour = raw.payload[6];\n\t\tconst stopMinute = raw.payload[7];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\taction,\n\t\t\tuserId,\n\t\t\tslotId,\n\t\t\tweekday,\n\t\t\tstartHour,\n\t\t\tstartMinute,\n\t\t\tstopHour,\n\t\t\tstopMinute,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\n\tpublic action: ScheduleEntryLockSetAction;\n\n\tpublic weekday?: ScheduleEntryLockWeekday;\n\tpublic startHour?: number;\n\tpublic startMinute?: number;\n\tpublic stopHour?: number;\n\tpublic stopMinute?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.action,\n\t\t\tthis.userId,\n\t\t\tthis.slotId,\n\t\t\t// The report should have these fields set to 0xff\n\t\t\t// if the slot is erased. The specs don't mention anything\n\t\t\t// for the Set command, so we just assume the same is okay\n\t\t\tthis.weekday ?? 0xff,\n\t\t\tthis.startHour ?? 0xff,\n\t\t\tthis.startMinute ?? 0xff,\n\t\t\tthis.stopHour ?? 0xff,\n\t\t\tthis.stopMinute ?? 0xff,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tlet message: MessageRecord;\n\t\tif (this.action === ScheduleEntryLockSetAction.Erase) {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\taction: \"erase\",\n\t\t\t};\n\t\t} else {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\taction: \"set\",\n\t\t\t\tweekday: getEnumMemberName(\n\t\t\t\t\tScheduleEntryLockWeekday,\n\t\t\t\t\tthis.weekday!,\n\t\t\t\t),\n\t\t\t\t\"start time\": formatTime(\n\t\t\t\t\tthis.startHour ?? 0,\n\t\t\t\t\tthis.startMinute ?? 0,\n\t\t\t\t),\n\t\t\t\t\"end time\": formatTime(\n\t\t\t\t\tthis.stopHour ?? 0,\n\t\t\t\t\tthis.stopMinute ?? 0,\n\t\t\t\t),\n\t\t\t};\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 type ScheduleEntryLockCCWeekDayScheduleReportOptions =\n\t& ScheduleEntryLockSlotId\n\t& AllOrNone<ScheduleEntryLockWeekDaySchedule>;\n\n@CCCommand(ScheduleEntryLockCommand.WeekDayScheduleReport)\nexport class ScheduleEntryLockCCWeekDayScheduleReport\n\textends ScheduleEntryLockCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCWeekDayScheduleReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t\tthis.weekday = options.weekday;\n\t\tthis.startHour = options.startHour;\n\t\tthis.startMinute = options.startMinute;\n\t\tthis.stopHour = options.stopHour;\n\t\tthis.stopMinute = options.stopMinute;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCWeekDayScheduleReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst userId = raw.payload[0];\n\t\tconst slotId = raw.payload[1];\n\n\t\tlet ccOptions: ScheduleEntryLockCCWeekDayScheduleReportOptions = {\n\t\t\tuserId,\n\t\t\tslotId,\n\t\t};\n\n\t\tlet weekday: ScheduleEntryLockWeekday | undefined;\n\t\tlet startHour: number | undefined;\n\t\tlet startMinute: number | undefined;\n\t\tlet stopHour: number | undefined;\n\t\tlet stopMinute: number | undefined;\n\n\t\tif (raw.payload.length >= 7) {\n\t\t\tif (raw.payload[2] !== 0xff) {\n\t\t\t\tweekday = raw.payload[2];\n\t\t\t}\n\t\t\tif (raw.payload[3] !== 0xff) {\n\t\t\t\tstartHour = raw.payload[3];\n\t\t\t}\n\t\t\tif (raw.payload[4] !== 0xff) {\n\t\t\t\tstartMinute = raw.payload[4];\n\t\t\t}\n\t\t\tif (raw.payload[5] !== 0xff) {\n\t\t\t\tstopHour = raw.payload[5];\n\t\t\t}\n\t\t\tif (raw.payload[6] !== 0xff) {\n\t\t\t\tstopMinute = raw.payload[6];\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tweekday != undefined\n\t\t\t&& startHour != undefined\n\t\t\t&& startMinute != undefined\n\t\t\t&& stopHour != undefined\n\t\t\t&& stopMinute != undefined\n\t\t) {\n\t\t\tccOptions = {\n\t\t\t\t...ccOptions,\n\t\t\t\tweekday,\n\t\t\t\tstartHour,\n\t\t\t\tstartMinute,\n\t\t\t\tstopHour,\n\t\t\t\tstopMinute,\n\t\t\t};\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t...ccOptions,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\tpublic weekday?: ScheduleEntryLockWeekday;\n\tpublic startHour?: number;\n\tpublic startMinute?: number;\n\tpublic stopHour?: number;\n\tpublic stopMinute?: number;\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\tpersistSchedule.call(\n\t\t\tthis,\n\t\t\tctx,\n\t\t\tScheduleEntryLockScheduleKind.WeekDay,\n\t\t\tthis.userId,\n\t\t\tthis.slotId,\n\t\t\tthis.weekday != undefined\n\t\t\t\t? {\n\t\t\t\t\tweekday: this.weekday,\n\t\t\t\t\tstartHour: this.startHour!,\n\t\t\t\t\tstartMinute: this.startMinute!,\n\t\t\t\t\tstopHour: this.stopHour!,\n\t\t\t\t\tstopMinute: this.stopMinute!,\n\t\t\t\t}\n\t\t\t\t: false,\n\t\t);\n\n\t\treturn true;\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.userId,\n\t\t\tthis.slotId,\n\t\t\tthis.weekday ?? 0xff,\n\t\t\tthis.startHour ?? 0xff,\n\t\t\tthis.startMinute ?? 0xff,\n\t\t\tthis.stopHour ?? 0xff,\n\t\t\tthis.stopMinute ?? 0xff,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tlet message: MessageRecord;\n\t\tif (this.weekday == undefined) {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\tschedule: \"(empty)\",\n\t\t\t};\n\t\t} else {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\tweekday: getEnumMemberName(\n\t\t\t\t\tScheduleEntryLockWeekday,\n\t\t\t\t\tthis.weekday,\n\t\t\t\t),\n\t\t\t\t\"start time\": formatTime(\n\t\t\t\t\tthis.startHour ?? 0,\n\t\t\t\t\tthis.startMinute ?? 0,\n\t\t\t\t),\n\t\t\t\t\"end time\": formatTime(\n\t\t\t\t\tthis.stopHour ?? 0,\n\t\t\t\t\tthis.stopMinute ?? 0,\n\t\t\t\t),\n\t\t\t};\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 type ScheduleEntryLockCCWeekDayScheduleGetOptions =\n\tScheduleEntryLockSlotId;\n\n@CCCommand(ScheduleEntryLockCommand.WeekDayScheduleGet)\n@expectedCCResponse(ScheduleEntryLockCCWeekDayScheduleReport)\nexport class ScheduleEntryLockCCWeekDayScheduleGet extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCWeekDayScheduleGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCWeekDayScheduleGet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst userId = raw.payload[0];\n\t\tconst slotId = raw.payload[1];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tuserId,\n\t\t\tslotId,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.userId, this.slotId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t},\n\t\t};\n\t}\n}\n\n/** @publicAPI */\nexport type ScheduleEntryLockCCYearDayScheduleSetOptions =\n\t& ScheduleEntryLockSlotId\n\t& (\n\t\t| {\n\t\t\taction: ScheduleEntryLockSetAction.Erase;\n\t\t}\n\t\t| ({\n\t\t\taction: ScheduleEntryLockSetAction.Set;\n\t\t} & ScheduleEntryLockYearDaySchedule)\n\t);\n\n@CCCommand(ScheduleEntryLockCommand.YearDayScheduleSet)\n@useSupervision()\nexport class ScheduleEntryLockCCYearDayScheduleSet extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCYearDayScheduleSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t\tthis.action = options.action;\n\t\tif (options.action === ScheduleEntryLockSetAction.Set) {\n\t\t\tthis.startYear = options.startYear;\n\t\t\tthis.startMonth = options.startMonth;\n\t\t\tthis.startDay = options.startDay;\n\t\t\tthis.startHour = options.startHour;\n\t\t\tthis.startMinute = options.startMinute;\n\t\t\tthis.stopYear = options.stopYear;\n\t\t\tthis.stopMonth = options.stopMonth;\n\t\t\tthis.stopDay = options.stopDay;\n\t\t\tthis.stopHour = options.stopHour;\n\t\t\tthis.stopMinute = options.stopMinute;\n\t\t}\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCYearDayScheduleSet {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst action: ScheduleEntryLockSetAction = raw.payload[0];\n\n\t\tvalidatePayload(\n\t\t\taction === ScheduleEntryLockSetAction.Set\n\t\t\t\t|| action === ScheduleEntryLockSetAction.Erase,\n\t\t);\n\t\tconst userId = raw.payload[1];\n\t\tconst slotId = raw.payload[2];\n\n\t\tif (action !== ScheduleEntryLockSetAction.Set) {\n\t\t\treturn new this({\n\t\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t\taction,\n\t\t\t\tuserId,\n\t\t\t\tslotId,\n\t\t\t});\n\t\t}\n\n\t\tvalidatePayload(raw.payload.length >= 13);\n\t\tconst startYear = raw.payload[3];\n\t\tconst startMonth = raw.payload[4];\n\t\tconst startDay = raw.payload[5];\n\t\tconst startHour = raw.payload[6];\n\t\tconst startMinute = raw.payload[7];\n\t\tconst stopYear = raw.payload[8];\n\t\tconst stopMonth = raw.payload[9];\n\t\tconst stopDay = raw.payload[10];\n\t\tconst stopHour = raw.payload[11];\n\t\tconst stopMinute = raw.payload[12];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\taction,\n\t\t\tuserId,\n\t\t\tslotId,\n\t\t\tstartYear,\n\t\t\tstartMonth,\n\t\t\tstartDay,\n\t\t\tstartHour,\n\t\t\tstartMinute,\n\t\t\tstopYear,\n\t\t\tstopMonth,\n\t\t\tstopDay,\n\t\t\tstopHour,\n\t\t\tstopMinute,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\n\tpublic action: ScheduleEntryLockSetAction;\n\n\tpublic startYear?: number;\n\tpublic startMonth?: number;\n\tpublic startDay?: number;\n\tpublic startHour?: number;\n\tpublic startMinute?: number;\n\tpublic stopYear?: number;\n\tpublic stopMonth?: number;\n\tpublic stopDay?: number;\n\tpublic stopHour?: number;\n\tpublic stopMinute?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.action,\n\t\t\tthis.userId,\n\t\t\tthis.slotId,\n\t\t\t// The report should have these fields set to 0xff\n\t\t\t// if the slot is erased. The specs don't mention anything\n\t\t\t// for the Set command, so we just assume the same is okay\n\t\t\tthis.startYear ?? 0xff,\n\t\t\tthis.startMonth ?? 0xff,\n\t\t\tthis.startDay ?? 0xff,\n\t\t\tthis.startHour ?? 0xff,\n\t\t\tthis.startMinute ?? 0xff,\n\t\t\tthis.stopYear ?? 0xff,\n\t\t\tthis.stopMonth ?? 0xff,\n\t\t\tthis.stopDay ?? 0xff,\n\t\t\tthis.stopHour ?? 0xff,\n\t\t\tthis.stopMinute ?? 0xff,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tlet message: MessageRecord;\n\t\tif (this.action === ScheduleEntryLockSetAction.Erase) {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\taction: \"erase\",\n\t\t\t};\n\t\t} else {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\taction: \"set\",\n\t\t\t\t\"start date\": `${\n\t\t\t\t\tformatDate(\n\t\t\t\t\t\tthis.startYear ?? 0,\n\t\t\t\t\t\tthis.startMonth ?? 0,\n\t\t\t\t\t\tthis.startDay ?? 0,\n\t\t\t\t\t)\n\t\t\t\t} ${formatTime(this.startHour ?? 0, this.startMinute ?? 0)}`,\n\t\t\t\t\"end date\": `${\n\t\t\t\t\tformatDate(\n\t\t\t\t\t\tthis.stopYear ?? 0,\n\t\t\t\t\t\tthis.stopMonth ?? 0,\n\t\t\t\t\t\tthis.stopDay ?? 0,\n\t\t\t\t\t)\n\t\t\t\t} ${formatTime(this.stopHour ?? 0, this.stopMinute ?? 0)}`,\n\t\t\t};\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 type ScheduleEntryLockCCYearDayScheduleReportOptions =\n\t& ScheduleEntryLockSlotId\n\t& AllOrNone<ScheduleEntryLockYearDaySchedule>;\n\n@CCCommand(ScheduleEntryLockCommand.YearDayScheduleReport)\nexport class ScheduleEntryLockCCYearDayScheduleReport\n\textends ScheduleEntryLockCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCYearDayScheduleReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t\tthis.startYear = options.startYear;\n\t\tthis.startMonth = options.startMonth;\n\t\tthis.startDay = options.startDay;\n\t\tthis.startHour = options.startHour;\n\t\tthis.startMinute = options.startMinute;\n\t\tthis.stopYear = options.stopYear;\n\t\tthis.stopMonth = options.stopMonth;\n\t\tthis.stopDay = options.stopDay;\n\t\tthis.stopHour = options.stopHour;\n\t\tthis.stopMinute = options.stopMinute;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCYearDayScheduleReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst userId = raw.payload[0];\n\t\tconst slotId = raw.payload[1];\n\n\t\tlet ccOptions: ScheduleEntryLockCCYearDayScheduleReportOptions = {\n\t\t\tuserId,\n\t\t\tslotId,\n\t\t};\n\n\t\tlet startYear: number | undefined;\n\t\tlet startMonth: number | undefined;\n\t\tlet startDay: number | undefined;\n\t\tlet startHour: number | undefined;\n\t\tlet startMinute: number | undefined;\n\t\tlet stopYear: number | undefined;\n\t\tlet stopMonth: number | undefined;\n\t\tlet stopDay: number | undefined;\n\t\tlet stopHour: number | undefined;\n\t\tlet stopMinute: number | undefined;\n\n\t\tif (raw.payload.length >= 12) {\n\t\t\tif (raw.payload[2] !== 0xff) {\n\t\t\t\tstartYear = raw.payload[2];\n\t\t\t}\n\t\t\tif (raw.payload[3] !== 0xff) {\n\t\t\t\tstartMonth = raw.payload[3];\n\t\t\t}\n\t\t\tif (raw.payload[4] !== 0xff) {\n\t\t\t\tstartDay = raw.payload[4];\n\t\t\t}\n\t\t\tif (raw.payload[5] !== 0xff) {\n\t\t\t\tstartHour = raw.payload[5];\n\t\t\t}\n\t\t\tif (raw.payload[6] !== 0xff) {\n\t\t\t\tstartMinute = raw.payload[6];\n\t\t\t}\n\t\t\tif (raw.payload[7] !== 0xff) {\n\t\t\t\tstopYear = raw.payload[7];\n\t\t\t}\n\t\t\tif (raw.payload[8] !== 0xff) {\n\t\t\t\tstopMonth = raw.payload[8];\n\t\t\t}\n\t\t\tif (raw.payload[9] !== 0xff) {\n\t\t\t\tstopDay = raw.payload[9];\n\t\t\t}\n\t\t\tif (raw.payload[10] !== 0xff) {\n\t\t\t\tstopHour = raw.payload[10];\n\t\t\t}\n\t\t\tif (raw.payload[11] !== 0xff) {\n\t\t\t\tstopMinute = raw.payload[11];\n\t\t\t}\n\t\t}\n\n\t\tif (\n\t\t\tstartYear != undefined\n\t\t\t&& startMonth != undefined\n\t\t\t&& startDay != undefined\n\t\t\t&& startHour != undefined\n\t\t\t&& startMinute != undefined\n\t\t\t&& stopYear != undefined\n\t\t\t&& stopMonth != undefined\n\t\t\t&& stopDay != undefined\n\t\t\t&& stopHour != undefined\n\t\t\t&& stopMinute != undefined\n\t\t) {\n\t\t\tccOptions = {\n\t\t\t\t...ccOptions,\n\t\t\t\tstartYear,\n\t\t\t\tstartMonth,\n\t\t\t\tstartDay,\n\t\t\t\tstartHour,\n\t\t\t\tstartMinute,\n\t\t\t\tstopYear,\n\t\t\t\tstopMonth,\n\t\t\t\tstopDay,\n\t\t\t\tstopHour,\n\t\t\t\tstopMinute,\n\t\t\t};\n\t\t}\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t...ccOptions,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\tpublic startYear?: number;\n\tpublic startMonth?: number;\n\tpublic startDay?: number;\n\tpublic startHour?: number;\n\tpublic startMinute?: number;\n\tpublic stopYear?: number;\n\tpublic stopMonth?: number;\n\tpublic stopDay?: number;\n\tpublic stopHour?: number;\n\tpublic stopMinute?: number;\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\tpersistSchedule.call(\n\t\t\tthis,\n\t\t\tctx,\n\t\t\tScheduleEntryLockScheduleKind.YearDay,\n\t\t\tthis.userId,\n\t\t\tthis.slotId,\n\t\t\tthis.startYear != undefined\n\t\t\t\t? {\n\t\t\t\t\tstartYear: this.startYear,\n\t\t\t\t\tstartMonth: this.startMonth!,\n\t\t\t\t\tstartDay: this.startDay!,\n\t\t\t\t\tstartHour: this.startHour!,\n\t\t\t\t\tstartMinute: this.startMinute!,\n\t\t\t\t\tstopYear: this.stopYear!,\n\t\t\t\t\tstopMonth: this.stopMonth!,\n\t\t\t\t\tstopDay: this.stopDay!,\n\t\t\t\t\tstopHour: this.stopHour!,\n\t\t\t\t\tstopMinute: this.stopMinute!,\n\t\t\t\t}\n\t\t\t\t: false,\n\t\t);\n\n\t\treturn true;\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([\n\t\t\tthis.userId,\n\t\t\tthis.slotId,\n\t\t\tthis.startYear ?? 0xff,\n\t\t\tthis.startMonth ?? 0xff,\n\t\t\tthis.startDay ?? 0xff,\n\t\t\tthis.startHour ?? 0xff,\n\t\t\tthis.startMinute ?? 0xff,\n\t\t\tthis.stopYear ?? 0xff,\n\t\t\tthis.stopMonth ?? 0xff,\n\t\t\tthis.stopDay ?? 0xff,\n\t\t\tthis.stopHour ?? 0xff,\n\t\t\tthis.stopMinute ?? 0xff,\n\t\t]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tlet message: MessageRecord;\n\t\tif (this.startYear !== undefined) {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\tschedule: \"(empty)\",\n\t\t\t};\n\t\t} else {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\taction: \"set\",\n\t\t\t\t\"start date\": `${\n\t\t\t\t\tformatDate(\n\t\t\t\t\t\tthis.startYear ?? 0,\n\t\t\t\t\t\tthis.startMonth ?? 0,\n\t\t\t\t\t\tthis.startDay ?? 0,\n\t\t\t\t\t)\n\t\t\t\t} ${formatTime(this.startHour ?? 0, this.startMinute ?? 0)}`,\n\t\t\t\t\"end date\": `${\n\t\t\t\t\tformatDate(\n\t\t\t\t\t\tthis.stopYear ?? 0,\n\t\t\t\t\t\tthis.stopMonth ?? 0,\n\t\t\t\t\t\tthis.stopDay ?? 0,\n\t\t\t\t\t)\n\t\t\t\t} ${formatTime(this.stopHour ?? 0, this.stopMinute ?? 0)}`,\n\t\t\t};\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 type ScheduleEntryLockCCYearDayScheduleGetOptions =\n\tScheduleEntryLockSlotId;\n\n@CCCommand(ScheduleEntryLockCommand.YearDayScheduleGet)\n@expectedCCResponse(ScheduleEntryLockCCYearDayScheduleReport)\nexport class ScheduleEntryLockCCYearDayScheduleGet extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCYearDayScheduleGetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCYearDayScheduleGet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst userId = raw.payload[0];\n\t\tconst slotId = raw.payload[1];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tuserId,\n\t\t\tslotId,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.userId, this.slotId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface ScheduleEntryLockCCTimeOffsetSetOptions {\n\tstandardOffset: number;\n\tdstOffset: number;\n}\n\n@CCCommand(ScheduleEntryLockCommand.TimeOffsetSet)\n@useSupervision()\nexport class ScheduleEntryLockCCTimeOffsetSet extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCTimeOffsetSetOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.standardOffset = options.standardOffset;\n\t\tthis.dstOffset = options.dstOffset;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCTimeOffsetSet {\n\t\tconst { standardOffset, dstOffset } = parseTimezone(raw.payload);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tstandardOffset,\n\t\t\tdstOffset,\n\t\t});\n\t}\n\n\tpublic standardOffset: number;\n\tpublic dstOffset: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = encodeTimezone({\n\t\t\tstandardOffset: this.standardOffset,\n\t\t\tdstOffset: this.dstOffset,\n\t\t});\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"standard time offset\": `${this.standardOffset} minutes`,\n\t\t\t\t\"DST offset\": `${this.dstOffset} minutes`,\n\t\t\t},\n\t\t};\n\t}\n}\n\n// @publicAPI\nexport interface ScheduleEntryLockCCTimeOffsetReportOptions {\n\tstandardOffset: number;\n\tdstOffset: number;\n}\n\n@CCCommand(ScheduleEntryLockCommand.TimeOffsetReport)\nexport class ScheduleEntryLockCCTimeOffsetReport extends ScheduleEntryLockCC {\n\tpublic constructor(\n\t\toptions: WithAddress<ScheduleEntryLockCCTimeOffsetReportOptions>,\n\t) {\n\t\tsuper(options);\n\t\tthis.standardOffset = options.standardOffset;\n\t\tthis.dstOffset = options.dstOffset;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCTimeOffsetReport {\n\t\tconst { standardOffset, dstOffset } = parseTimezone(raw.payload);\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tstandardOffset,\n\t\t\tdstOffset,\n\t\t});\n\t}\n\n\tpublic standardOffset: number;\n\tpublic dstOffset: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = encodeTimezone({\n\t\t\tstandardOffset: this.standardOffset,\n\t\t\tdstOffset: this.dstOffset,\n\t\t});\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"standard time offset\": `${this.standardOffset} minutes`,\n\t\t\t\t\"DST offset\": `${this.dstOffset} minutes`,\n\t\t\t},\n\t\t};\n\t}\n}\n\n@CCCommand(ScheduleEntryLockCommand.TimeOffsetGet)\n@expectedCCResponse(ScheduleEntryLockCCTimeOffsetReport)\nexport class ScheduleEntryLockCCTimeOffsetGet extends ScheduleEntryLockCC {}\n\n/** @publicAPI */\nexport type ScheduleEntryLockCCDailyRepeatingScheduleSetOptions =\n\t& ScheduleEntryLockSlotId\n\t& (\n\t\t| {\n\t\t\taction: ScheduleEntryLockSetAction.Erase;\n\t\t}\n\t\t| ({\n\t\t\taction: ScheduleEntryLockSetAction.Set;\n\t\t} & ScheduleEntryLockDailyRepeatingSchedule)\n\t);\n\n@CCCommand(ScheduleEntryLockCommand.DailyRepeatingScheduleSet)\n@useSupervision()\nexport class ScheduleEntryLockCCDailyRepeatingScheduleSet\n\textends ScheduleEntryLockCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<\n\t\t\tScheduleEntryLockCCDailyRepeatingScheduleSetOptions\n\t\t>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t\tthis.action = options.action;\n\t\tif (options.action === ScheduleEntryLockSetAction.Set) {\n\t\t\tthis.weekdays = options.weekdays;\n\t\t\tthis.startHour = options.startHour;\n\t\t\tthis.startMinute = options.startMinute;\n\t\t\tthis.durationHour = options.durationHour;\n\t\t\tthis.durationMinute = options.durationMinute;\n\t\t}\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCDailyRepeatingScheduleSet {\n\t\tvalidatePayload(raw.payload.length >= 3);\n\t\tconst action: ScheduleEntryLockSetAction = raw.payload[0];\n\n\t\tvalidatePayload(\n\t\t\taction === ScheduleEntryLockSetAction.Set\n\t\t\t\t|| action === ScheduleEntryLockSetAction.Erase,\n\t\t);\n\t\tconst userId = raw.payload[1];\n\t\tconst slotId = raw.payload[2];\n\n\t\tif (action !== ScheduleEntryLockSetAction.Set) {\n\t\t\treturn new this({\n\t\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t\taction,\n\t\t\t\tuserId,\n\t\t\t\tslotId,\n\t\t\t});\n\t\t}\n\n\t\tvalidatePayload(raw.payload.length >= 8);\n\t\tconst weekdays: ScheduleEntryLockWeekday[] = parseBitMask(\n\t\t\traw.payload.subarray(3, 4),\n\t\t\tScheduleEntryLockWeekday.Sunday,\n\t\t);\n\t\tconst startHour = raw.payload[4];\n\t\tconst startMinute = raw.payload[5];\n\t\tconst durationHour = raw.payload[6];\n\t\tconst durationMinute = raw.payload[7];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\taction,\n\t\t\tuserId,\n\t\t\tslotId,\n\t\t\tweekdays,\n\t\t\tstartHour,\n\t\t\tstartMinute,\n\t\t\tdurationHour,\n\t\t\tdurationMinute,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\n\tpublic action: ScheduleEntryLockSetAction;\n\n\tpublic weekdays?: ScheduleEntryLockWeekday[];\n\tpublic startHour?: number;\n\tpublic startMinute?: number;\n\tpublic durationHour?: number;\n\tpublic durationMinute?: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.action, this.userId, this.slotId]);\n\t\tif (this.action === ScheduleEntryLockSetAction.Set) {\n\t\t\tthis.payload = Bytes.concat([\n\t\t\t\tthis.payload,\n\t\t\t\tencodeBitMask(\n\t\t\t\t\tthis.weekdays!,\n\t\t\t\t\tScheduleEntryLockWeekday.Saturday,\n\t\t\t\t\tScheduleEntryLockWeekday.Sunday,\n\t\t\t\t),\n\t\t\t\tBytes.from([\n\t\t\t\t\tthis.startHour!,\n\t\t\t\t\tthis.startMinute!,\n\t\t\t\t\tthis.durationHour!,\n\t\t\t\t\tthis.durationMinute!,\n\t\t\t\t]),\n\t\t\t]);\n\t\t} else {\n\t\t\t// Not sure if this is correct\n\t\t\tthis.payload = Bytes.concat([this.payload, Bytes.alloc(5, 0xff)]);\n\t\t}\n\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tlet message: MessageRecord;\n\t\tif (this.action === ScheduleEntryLockSetAction.Erase) {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\taction: \"erase\",\n\t\t\t};\n\t\t} else {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\taction: \"set\",\n\t\t\t\tweekdays: this.weekdays!.map((w) =>\n\t\t\t\t\tgetEnumMemberName(ScheduleEntryLockWeekday, w)\n\t\t\t\t).join(\", \"),\n\t\t\t\t\"start time\": formatTime(\n\t\t\t\t\tthis.startHour ?? 0,\n\t\t\t\t\tthis.startMinute ?? 0,\n\t\t\t\t),\n\t\t\t\tduration: formatTime(\n\t\t\t\t\tthis.durationHour ?? 0,\n\t\t\t\t\tthis.durationMinute ?? 0,\n\t\t\t\t),\n\t\t\t};\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 type ScheduleEntryLockCCDailyRepeatingScheduleReportOptions =\n\t& ScheduleEntryLockSlotId\n\t& AllOrNone<ScheduleEntryLockDailyRepeatingSchedule>;\n\n@CCCommand(ScheduleEntryLockCommand.DailyRepeatingScheduleReport)\nexport class ScheduleEntryLockCCDailyRepeatingScheduleReport\n\textends ScheduleEntryLockCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<\n\t\t\tScheduleEntryLockCCDailyRepeatingScheduleReportOptions\n\t\t>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t\tthis.weekdays = options.weekdays;\n\t\tthis.startHour = options.startHour;\n\t\tthis.startMinute = options.startMinute;\n\t\tthis.durationHour = options.durationHour;\n\t\tthis.durationMinute = options.durationMinute;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCDailyRepeatingScheduleReport {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst userId = raw.payload[0];\n\t\tconst slotId = raw.payload[1];\n\n\t\tif (raw.payload.length >= 7 && raw.payload[2] !== 0) {\n\t\t\t// Only parse the schedule if it is present and some weekday is selected\n\t\t\tconst weekdays: ScheduleEntryLockWeekday[] = parseBitMask(\n\t\t\t\traw.payload.subarray(2, 3),\n\t\t\t\tScheduleEntryLockWeekday.Sunday,\n\t\t\t);\n\t\t\tconst startHour = raw.payload[3];\n\t\t\tconst startMinute = raw.payload[4];\n\t\t\tconst durationHour = raw.payload[5];\n\t\t\tconst durationMinute = raw.payload[6];\n\n\t\t\treturn new this({\n\t\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t\tuserId,\n\t\t\t\tslotId,\n\t\t\t\tweekdays,\n\t\t\t\tstartHour,\n\t\t\t\tstartMinute,\n\t\t\t\tdurationHour,\n\t\t\t\tdurationMinute,\n\t\t\t});\n\t\t} else {\n\t\t\treturn new this({\n\t\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\t\tuserId,\n\t\t\t\tslotId,\n\t\t\t});\n\t\t}\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\n\tpublic weekdays?: ScheduleEntryLockWeekday[];\n\tpublic startHour?: number;\n\tpublic startMinute?: number;\n\tpublic durationHour?: number;\n\tpublic durationMinute?: number;\n\n\tpublic persistValues(ctx: PersistValuesContext): boolean {\n\t\tif (!super.persistValues(ctx)) return false;\n\n\t\tpersistSchedule.call(\n\t\t\tthis,\n\t\t\tctx,\n\t\t\tScheduleEntryLockScheduleKind.DailyRepeating,\n\t\t\tthis.userId,\n\t\t\tthis.slotId,\n\t\t\tthis.weekdays?.length\n\t\t\t\t? {\n\t\t\t\t\tweekdays: this.weekdays,\n\t\t\t\t\tstartHour: this.startHour!,\n\t\t\t\t\tstartMinute: this.startMinute!,\n\t\t\t\t\tdurationHour: this.durationHour!,\n\t\t\t\t\tdurationMinute: this.durationMinute!,\n\t\t\t\t}\n\t\t\t\t: false,\n\t\t);\n\n\t\treturn true;\n\t}\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.userId, this.slotId]);\n\t\tif (this.weekdays) {\n\t\t\tthis.payload = Bytes.concat([\n\t\t\t\tthis.payload,\n\t\t\t\tencodeBitMask(\n\t\t\t\t\tthis.weekdays,\n\t\t\t\t\tScheduleEntryLockWeekday.Saturday,\n\t\t\t\t\tScheduleEntryLockWeekday.Sunday,\n\t\t\t\t),\n\t\t\t\tBytes.from([\n\t\t\t\t\tthis.startHour!,\n\t\t\t\t\tthis.startMinute!,\n\t\t\t\t\tthis.durationHour!,\n\t\t\t\t\tthis.durationMinute!,\n\t\t\t\t]),\n\t\t\t]);\n\t\t} else {\n\t\t\t// Not sure if this is correct, but at least we won't parse it incorrectly ourselves when setting everything to 0\n\t\t\tthis.payload = Bytes.concat([this.payload, Bytes.alloc(5, 0)]);\n\t\t}\n\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\tlet message: MessageRecord;\n\t\tif (!this.weekdays) {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\tschedule: \"(empty)\",\n\t\t\t};\n\t\t} else {\n\t\t\tmessage = {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t\taction: \"set\",\n\t\t\t\tweekdays: this.weekdays\n\t\t\t\t\t.map((w) => getEnumMemberName(ScheduleEntryLockWeekday, w))\n\t\t\t\t\t.join(\", \"),\n\t\t\t\t\"start time\": formatTime(\n\t\t\t\t\tthis.startHour ?? 0,\n\t\t\t\t\tthis.startMinute ?? 0,\n\t\t\t\t),\n\t\t\t\tduration: formatTime(\n\t\t\t\t\tthis.durationHour ?? 0,\n\t\t\t\t\tthis.durationMinute ?? 0,\n\t\t\t\t),\n\t\t\t};\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 type ScheduleEntryLockCCDailyRepeatingScheduleGetOptions =\n\tScheduleEntryLockSlotId;\n\n@CCCommand(ScheduleEntryLockCommand.DailyRepeatingScheduleGet)\n@expectedCCResponse(ScheduleEntryLockCCDailyRepeatingScheduleReport)\nexport class ScheduleEntryLockCCDailyRepeatingScheduleGet\n\textends ScheduleEntryLockCC\n{\n\tpublic constructor(\n\t\toptions: WithAddress<\n\t\t\tScheduleEntryLockCCDailyRepeatingScheduleGetOptions\n\t\t>,\n\t) {\n\t\tsuper(options);\n\t\tthis.userId = options.userId;\n\t\tthis.slotId = options.slotId;\n\t}\n\n\tpublic static from(\n\t\traw: CCRaw,\n\t\tctx: CCParsingContext,\n\t): ScheduleEntryLockCCDailyRepeatingScheduleGet {\n\t\tvalidatePayload(raw.payload.length >= 2);\n\t\tconst userId = raw.payload[0];\n\t\tconst slotId = raw.payload[1];\n\n\t\treturn new this({\n\t\t\tnodeId: ctx.sourceNodeId,\n\t\t\tuserId,\n\t\t\tslotId,\n\t\t});\n\t}\n\n\tpublic userId: number;\n\tpublic slotId: number;\n\n\tpublic serialize(ctx: CCEncodingContext): Promise<Bytes> {\n\t\tthis.payload = Bytes.from([this.userId, this.slotId]);\n\t\treturn super.serialize(ctx);\n\t}\n\n\tpublic toLogEntry(ctx?: GetValueDB): MessageOrCCLogEntry {\n\t\treturn {\n\t\t\t...super.toLogEntry(ctx),\n\t\t\tmessage: {\n\t\t\t\t\"user ID\": this.userId,\n\t\t\t\t\"slot #\": this.slotId,\n\t\t\t},\n\t\t};\n\t}\n}\n"],
5
+ "mappings": "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",
6
6
  "names": ["userId"]
7
7
  }