homeassistant-stubs 2024.11.2__py3-none-any.whl → 2024.12.0__py3-none-any.whl

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 (393) hide show
  1. homeassistant-stubs/__main__.pyi +1 -0
  2. homeassistant-stubs/auth/mfa_modules/totp.pyi +4 -4
  3. homeassistant-stubs/backup_restore.pyi +17 -0
  4. homeassistant-stubs/components/airnow/config_flow.pyi +3 -3
  5. homeassistant-stubs/components/alarm_control_panel/__init__.pyi +2 -2
  6. homeassistant-stubs/components/amberelectric/config_flow.pyi +1 -1
  7. homeassistant-stubs/components/amberelectric/coordinator.pyi +7 -7
  8. homeassistant-stubs/components/amberelectric/sensor.pyi +3 -4
  9. homeassistant-stubs/components/analytics_insights/config_flow.pyi +3 -3
  10. homeassistant-stubs/components/androidtv/config_flow.pyi +2 -2
  11. homeassistant-stubs/components/androidtv_remote/config_flow.pyi +2 -2
  12. homeassistant-stubs/components/apsystems/coordinator.pyi +1 -1
  13. homeassistant-stubs/components/assist_pipeline/audio_enhancer.pyi +2 -3
  14. homeassistant-stubs/components/assist_pipeline/pipeline.pyi +4 -2
  15. homeassistant-stubs/components/assist_pipeline/vad.pyi +7 -4
  16. homeassistant-stubs/components/axis/config_flow.pyi +2 -2
  17. homeassistant-stubs/components/backup/http.pyi +7 -3
  18. homeassistant-stubs/components/backup/manager.pyi +8 -0
  19. homeassistant-stubs/components/backup/websocket.pyi +1 -0
  20. homeassistant-stubs/components/bang_olufsen/const.pyi +1 -6
  21. homeassistant-stubs/components/bang_olufsen/diagnostics.pyi +6 -0
  22. homeassistant-stubs/components/bang_olufsen/media_player.pyi +11 -5
  23. homeassistant-stubs/components/bang_olufsen/websocket.pyi +2 -2
  24. homeassistant-stubs/components/bmw_connected_drive/config_flow.pyi +7 -3
  25. homeassistant-stubs/components/bmw_connected_drive/const.pyi +3 -0
  26. homeassistant-stubs/components/brother/sensor.pyi +0 -1
  27. homeassistant-stubs/components/cambridge_audio/__init__.pyi +1 -0
  28. homeassistant-stubs/components/cambridge_audio/config_flow.pyi +1 -0
  29. homeassistant-stubs/components/cambridge_audio/media_player.pyi +1 -0
  30. homeassistant-stubs/components/cambridge_audio/select.pyi +3 -1
  31. homeassistant-stubs/components/cambridge_audio/switch.pyi +3 -1
  32. homeassistant-stubs/components/camera/__init__.pyi +5 -3
  33. homeassistant-stubs/components/camera/webrtc.pyi +10 -6
  34. homeassistant-stubs/components/canary/config_flow.pyi +0 -2
  35. homeassistant-stubs/components/climate/__init__.pyi +10 -3
  36. homeassistant-stubs/components/climate/const.pyi +6 -0
  37. homeassistant-stubs/components/climate/reproduce_state.pyi +1 -1
  38. homeassistant-stubs/components/climate/significant_change.pyi +1 -1
  39. homeassistant-stubs/components/cloud/prefs.pyi +1 -1
  40. homeassistant-stubs/components/crownstone/config_flow.pyi +1 -2
  41. homeassistant-stubs/components/deconz/config_flow.pyi +1 -5
  42. homeassistant-stubs/components/demo/climate.pyi +8 -1
  43. homeassistant-stubs/components/demo/config_flow.pyi +0 -1
  44. homeassistant-stubs/components/discovergy/config_flow.pyi +2 -5
  45. homeassistant-stubs/components/dlna_dmr/config_flow.pyi +0 -2
  46. homeassistant-stubs/components/dnsip/config_flow.pyi +2 -2
  47. homeassistant-stubs/components/doorbird/config_flow.pyi +0 -2
  48. homeassistant-stubs/components/dsmr/config_flow.pyi +0 -2
  49. homeassistant-stubs/components/ecovacs/sensor.pyi +1 -1
  50. homeassistant-stubs/components/elevenlabs/config_flow.pyi +2 -2
  51. homeassistant-stubs/components/enphase_envoy/config_flow.pyi +2 -2
  52. homeassistant-stubs/components/eq3btsmart/__init__.pyi +7 -6
  53. homeassistant-stubs/components/eq3btsmart/binary_sensor.pyi +26 -0
  54. homeassistant-stubs/components/eq3btsmart/climate.pyi +4 -15
  55. homeassistant-stubs/components/eq3btsmart/const.pyi +14 -0
  56. homeassistant-stubs/components/eq3btsmart/entity.pyi +17 -3
  57. homeassistant-stubs/components/eq3btsmart/models.pyi +1 -3
  58. homeassistant-stubs/components/eq3btsmart/number.pyi +33 -0
  59. homeassistant-stubs/components/eq3btsmart/sensor.pyi +28 -0
  60. homeassistant-stubs/components/eq3btsmart/switch.pyi +30 -0
  61. homeassistant-stubs/components/esphome/assist_satellite.pyi +1 -0
  62. homeassistant-stubs/components/esphome/config_flow.pyi +0 -2
  63. homeassistant-stubs/components/esphome/entry_data.pyi +8 -1
  64. homeassistant-stubs/components/esphome/ffmpeg_proxy.pyi +1 -0
  65. homeassistant-stubs/components/esphome/media_player.pyi +2 -1
  66. homeassistant-stubs/components/esphome/select.pyi +18 -1
  67. homeassistant-stubs/components/fan/__init__.pyi +1 -1
  68. homeassistant-stubs/components/feedreader/config_flow.pyi +2 -2
  69. homeassistant-stubs/components/filesize/config_flow.pyi +2 -5
  70. homeassistant-stubs/components/fitbit/config_flow.pyi +0 -1
  71. homeassistant-stubs/components/fitbit/sensor.pyi +12 -15
  72. homeassistant-stubs/components/flux_led/config_flow.pyi +1 -3
  73. homeassistant-stubs/components/forecast_solar/config_flow.pyi +0 -2
  74. homeassistant-stubs/components/fritz/config_flow.pyi +4 -4
  75. homeassistant-stubs/components/fritzbox/config_flow.pyi +1 -1
  76. homeassistant-stubs/components/fritzbox_callmonitor/config_flow.pyi +0 -2
  77. homeassistant-stubs/components/fully_kiosk/__init__.pyi +3 -2
  78. homeassistant-stubs/components/fully_kiosk/binary_sensor.pyi +2 -3
  79. homeassistant-stubs/components/fully_kiosk/button.pyi +2 -3
  80. homeassistant-stubs/components/fully_kiosk/camera.pyi +2 -3
  81. homeassistant-stubs/components/fully_kiosk/diagnostics.pyi +2 -3
  82. homeassistant-stubs/components/fully_kiosk/image.pyi +2 -3
  83. homeassistant-stubs/components/fully_kiosk/media_player.pyi +3 -3
  84. homeassistant-stubs/components/fully_kiosk/notify.pyi +2 -3
  85. homeassistant-stubs/components/fully_kiosk/number.pyi +2 -3
  86. homeassistant-stubs/components/fully_kiosk/sensor.pyi +2 -3
  87. homeassistant-stubs/components/fully_kiosk/switch.pyi +2 -3
  88. homeassistant-stubs/components/fyta/__init__.pyi +1 -0
  89. homeassistant-stubs/components/glances/__init__.pyi +0 -2
  90. homeassistant-stubs/components/go2rtc/__init__.pyi +2 -2
  91. homeassistant-stubs/components/google/config_flow.pyi +0 -2
  92. homeassistant-stubs/components/google_assistant_sdk/config_flow.pyi +0 -2
  93. homeassistant-stubs/components/google_cloud/config_flow.pyi +2 -2
  94. homeassistant-stubs/components/google_cloud/helpers.pyi +1 -1
  95. homeassistant-stubs/components/here_travel_time/config_flow.pyi +1 -2
  96. homeassistant-stubs/components/history/__init__.pyi +1 -1
  97. homeassistant-stubs/components/history/helpers.pyi +1 -2
  98. homeassistant-stubs/components/history/websocket_api.pyi +1 -1
  99. homeassistant-stubs/components/history_stats/data.pyi +1 -0
  100. homeassistant-stubs/components/homeassistant_hardware/firmware_config_flow.pyi +4 -3
  101. homeassistant-stubs/components/homeassistant_hardware/silabs_multiprotocol_addon.pyi +0 -1
  102. homeassistant-stubs/components/homekit/config_flow.pyi +1 -2
  103. homeassistant-stubs/components/homewizard/button.pyi +2 -0
  104. homeassistant-stubs/components/homewizard/config_flow.pyi +5 -1
  105. homeassistant-stubs/components/homewizard/const.pyi +1 -1
  106. homeassistant-stubs/components/homewizard/coordinator.pyi +3 -3
  107. homeassistant-stubs/components/homewizard/number.pyi +2 -0
  108. homeassistant-stubs/components/homewizard/sensor.pyi +1 -1
  109. homeassistant-stubs/components/homewizard/switch.pyi +4 -2
  110. homeassistant-stubs/components/huawei_lte/config_flow.pyi +0 -2
  111. homeassistant-stubs/components/husqvarna_automower/api.pyi +6 -0
  112. homeassistant-stubs/components/husqvarna_automower/binary_sensor.pyi +7 -0
  113. homeassistant-stubs/components/husqvarna_automower/button.pyi +1 -0
  114. homeassistant-stubs/components/husqvarna_automower/config_flow.pyi +2 -1
  115. homeassistant-stubs/components/husqvarna_automower/lawn_mower.pyi +2 -1
  116. homeassistant-stubs/components/husqvarna_automower/number.pyi +1 -0
  117. homeassistant-stubs/components/husqvarna_automower/select.pyi +1 -0
  118. homeassistant-stubs/components/husqvarna_automower/switch.pyi +1 -0
  119. homeassistant-stubs/components/hydrawise/sensor.pyi +2 -9
  120. homeassistant-stubs/components/hyperion/config_flow.pyi +0 -2
  121. homeassistant-stubs/components/ibeacon/config_flow.pyi +0 -3
  122. homeassistant-stubs/components/imap/config_flow.pyi +3 -3
  123. homeassistant-stubs/components/imap/sensor.pyi +1 -1
  124. homeassistant-stubs/components/intent/timers.pyi +6 -0
  125. homeassistant-stubs/components/islamic_prayer_times/config_flow.pyi +0 -3
  126. homeassistant-stubs/components/isy994/config_flow.pyi +0 -2
  127. homeassistant-stubs/components/jellyfin/config_flow.pyi +3 -3
  128. homeassistant-stubs/components/jewish_calendar/__init__.pyi +6 -17
  129. homeassistant-stubs/components/jewish_calendar/binary_sensor.pyi +2 -4
  130. homeassistant-stubs/components/jewish_calendar/config_flow.pyi +3 -4
  131. homeassistant-stubs/components/jewish_calendar/entity.pyi +15 -4
  132. homeassistant-stubs/components/jewish_calendar/sensor.pyi +3 -5
  133. homeassistant-stubs/components/knx/__init__.pyi +1 -1
  134. homeassistant-stubs/components/knx/config_flow.pyi +0 -1
  135. homeassistant-stubs/components/knx/light.pyi +3 -3
  136. homeassistant-stubs/components/knx/telegrams.pyi +1 -0
  137. homeassistant-stubs/components/knx/websocket.pyi +1 -0
  138. homeassistant-stubs/components/kraken/config_flow.pyi +0 -3
  139. homeassistant-stubs/components/lamarzocco/__init__.pyi +1 -1
  140. homeassistant-stubs/components/lamarzocco/binary_sensor.pyi +1 -1
  141. homeassistant-stubs/components/lamarzocco/button.pyi +7 -3
  142. homeassistant-stubs/components/lamarzocco/calendar.pyi +1 -1
  143. homeassistant-stubs/components/lamarzocco/config_flow.pyi +10 -6
  144. homeassistant-stubs/components/lamarzocco/coordinator.pyi +3 -3
  145. homeassistant-stubs/components/lamarzocco/diagnostics.pyi +1 -1
  146. homeassistant-stubs/components/lamarzocco/entity.pyi +3 -2
  147. homeassistant-stubs/components/lamarzocco/number.pyi +5 -3
  148. homeassistant-stubs/components/lamarzocco/select.pyi +3 -2
  149. homeassistant-stubs/components/lamarzocco/sensor.pyi +1 -1
  150. homeassistant-stubs/components/lamarzocco/switch.pyi +4 -2
  151. homeassistant-stubs/components/lamarzocco/update.pyi +3 -1
  152. homeassistant-stubs/components/lcn/__init__.pyi +4 -4
  153. homeassistant-stubs/components/lcn/config_flow.pyi +0 -4
  154. homeassistant-stubs/components/lcn/helpers.pyi +2 -4
  155. homeassistant-stubs/components/lcn/schemas.pyi +2 -13
  156. homeassistant-stubs/components/lcn/services.pyi +2 -0
  157. homeassistant-stubs/components/lektrico/binary_sensor.pyi +27 -0
  158. homeassistant-stubs/components/linkplay/button.pyi +28 -0
  159. homeassistant-stubs/components/linkplay/diagnostics.pyi +5 -0
  160. homeassistant-stubs/components/linkplay/entity.pyi +16 -0
  161. homeassistant-stubs/components/linkplay/media_player.pyi +3 -8
  162. homeassistant-stubs/components/linkplay/utils.pyi +12 -0
  163. homeassistant-stubs/components/litejet/config_flow.pyi +0 -3
  164. homeassistant-stubs/components/matter/adapter.pyi +1 -0
  165. homeassistant-stubs/components/matter/const.pyi +1 -0
  166. homeassistant-stubs/components/matter/discovery.pyi +1 -0
  167. homeassistant-stubs/components/matter/entity.pyi +2 -1
  168. homeassistant-stubs/components/matter/models.pyi +4 -2
  169. homeassistant-stubs/components/media_extractor/__init__.pyi +1 -2
  170. homeassistant-stubs/components/media_extractor/config_flow.pyi +0 -1
  171. homeassistant-stubs/components/mikrotik/config_flow.pyi +0 -3
  172. homeassistant-stubs/components/mjpeg/config_flow.pyi +0 -3
  173. homeassistant-stubs/components/mold_indicator/sensor.pyi +3 -5
  174. homeassistant-stubs/components/monzo/coordinator.pyi +1 -1
  175. homeassistant-stubs/components/mopeka/config_flow.pyi +0 -2
  176. homeassistant-stubs/components/mqtt/__init__.pyi +1 -0
  177. homeassistant-stubs/components/mqtt/alarm_control_panel.pyi +1 -0
  178. homeassistant-stubs/components/mqtt/binary_sensor.pyi +1 -0
  179. homeassistant-stubs/components/mqtt/button.pyi +1 -0
  180. homeassistant-stubs/components/mqtt/camera.pyi +1 -0
  181. homeassistant-stubs/components/mqtt/climate.pyi +1 -0
  182. homeassistant-stubs/components/mqtt/config_flow.pyi +3 -4
  183. homeassistant-stubs/components/mqtt/cover.pyi +1 -0
  184. homeassistant-stubs/components/mqtt/device_tracker.pyi +1 -0
  185. homeassistant-stubs/components/mqtt/entity.pyi +1 -0
  186. homeassistant-stubs/components/mqtt/event.pyi +1 -0
  187. homeassistant-stubs/components/mqtt/fan.pyi +1 -0
  188. homeassistant-stubs/components/mqtt/humidifier.pyi +1 -0
  189. homeassistant-stubs/components/mqtt/image.pyi +1 -0
  190. homeassistant-stubs/components/mqtt/lawn_mower.pyi +1 -0
  191. homeassistant-stubs/components/mqtt/light/__init__.pyi +2 -0
  192. homeassistant-stubs/components/mqtt/lock.pyi +1 -0
  193. homeassistant-stubs/components/mqtt/notify.pyi +1 -0
  194. homeassistant-stubs/components/mqtt/number.pyi +1 -0
  195. homeassistant-stubs/components/mqtt/scene.pyi +1 -0
  196. homeassistant-stubs/components/mqtt/select.pyi +1 -0
  197. homeassistant-stubs/components/mqtt/sensor.pyi +1 -0
  198. homeassistant-stubs/components/mqtt/siren.pyi +1 -0
  199. homeassistant-stubs/components/mqtt/subscription.pyi +1 -1
  200. homeassistant-stubs/components/mqtt/switch.pyi +1 -0
  201. homeassistant-stubs/components/mqtt/text.pyi +1 -0
  202. homeassistant-stubs/components/mqtt/update.pyi +1 -0
  203. homeassistant-stubs/components/mqtt/vacuum.pyi +1 -0
  204. homeassistant-stubs/components/mqtt/valve.pyi +1 -0
  205. homeassistant-stubs/components/mqtt/water_heater.pyi +1 -0
  206. homeassistant-stubs/components/music_assistant/__init__.pyi +27 -0
  207. homeassistant-stubs/components/music_assistant/config_flow.pyi +24 -0
  208. homeassistant-stubs/components/music_assistant/const.pyi +12 -0
  209. homeassistant-stubs/components/music_assistant/entity.pyi +24 -0
  210. homeassistant-stubs/components/music_assistant/media_browser.pyi +33 -0
  211. homeassistant-stubs/components/music_assistant/media_player.pyi +96 -0
  212. homeassistant-stubs/components/nasweb/__init__.pyi +19 -0
  213. homeassistant-stubs/components/nasweb/config_flow.pyi +27 -0
  214. homeassistant-stubs/components/nasweb/const.pyi +5 -0
  215. homeassistant-stubs/components/nasweb/coordinator.pyi +42 -0
  216. homeassistant-stubs/components/nasweb/nasweb_data.pyi +20 -0
  217. homeassistant-stubs/components/nasweb/switch.pyi +35 -0
  218. homeassistant-stubs/components/nest/camera.pyi +3 -5
  219. homeassistant-stubs/components/netatmo/config_flow.pyi +0 -1
  220. homeassistant-stubs/components/nightscout/sensor.pyi +4 -3
  221. homeassistant-stubs/components/nordpool/__init__.pyi +9 -0
  222. homeassistant-stubs/components/nordpool/config_flow.pyi +19 -0
  223. homeassistant-stubs/components/nordpool/const.pyi +9 -0
  224. homeassistant-stubs/components/nordpool/coordinator.pyi +20 -0
  225. homeassistant-stubs/components/nordpool/diagnostics.pyi +5 -0
  226. homeassistant-stubs/components/nordpool/entity.pyi +14 -0
  227. homeassistant-stubs/components/nordpool/sensor.pyi +69 -0
  228. homeassistant-stubs/components/number/const.pyi +3 -1
  229. homeassistant-stubs/components/nut/__init__.pyi +4 -1
  230. homeassistant-stubs/components/nut/config_flow.pyi +0 -2
  231. homeassistant-stubs/components/nut/sensor.pyi +1 -1
  232. homeassistant-stubs/components/onewire/config_flow.pyi +4 -2
  233. homeassistant-stubs/components/onkyo/config_flow.pyi +3 -2
  234. homeassistant-stubs/components/openai_conversation/config_flow.pyi +0 -1
  235. homeassistant-stubs/components/opensky/config_flow.pyi +3 -3
  236. homeassistant-stubs/components/p1_monitor/__init__.pyi +3 -3
  237. homeassistant-stubs/components/p1_monitor/diagnostics.pyi +1 -2
  238. homeassistant-stubs/components/p1_monitor/sensor.pyi +1 -1
  239. homeassistant-stubs/components/ping/__init__.pyi +2 -6
  240. homeassistant-stubs/components/ping/config_flow.pyi +2 -2
  241. homeassistant-stubs/components/plugwise/climate.pyi +4 -2
  242. homeassistant-stubs/components/plugwise/entity.pyi +2 -2
  243. homeassistant-stubs/components/plugwise/number.pyi +2 -2
  244. homeassistant-stubs/components/plugwise/select.pyi +2 -1
  245. homeassistant-stubs/components/proximity/config_flow.pyi +0 -3
  246. homeassistant-stubs/components/pure_energie/__init__.pyi +4 -5
  247. homeassistant-stubs/components/pure_energie/diagnostics.pyi +2 -4
  248. homeassistant-stubs/components/pure_energie/sensor.pyi +3 -3
  249. homeassistant-stubs/components/purpleair/config_flow.pyi +1 -2
  250. homeassistant-stubs/components/rainmachine/config_flow.pyi +0 -3
  251. homeassistant-stubs/components/recollect_waste/config_flow.pyi +1 -3
  252. homeassistant-stubs/components/recorder/core.pyi +1 -0
  253. homeassistant-stubs/components/recorder/history/legacy.pyi +4 -4
  254. homeassistant-stubs/components/recorder/history/modern.pyi +2 -2
  255. homeassistant-stubs/components/recorder/pool.pyi +1 -1
  256. homeassistant-stubs/components/recorder/queries.pyi +1 -0
  257. homeassistant-stubs/components/recorder/statistics.pyi +1 -1
  258. homeassistant-stubs/components/recorder/table_managers/states.pyi +7 -0
  259. homeassistant-stubs/components/recorder/websocket_api.pyi +1 -1
  260. homeassistant-stubs/components/renault/config_flow.pyi +4 -5
  261. homeassistant-stubs/components/renault/services.pyi +1 -0
  262. homeassistant-stubs/components/reolink/__init__.pyi +28 -0
  263. homeassistant-stubs/components/reolink/binary_sensor.pyi +34 -0
  264. homeassistant-stubs/components/reolink/button.pyi +48 -0
  265. homeassistant-stubs/components/reolink/camera.pyi +28 -0
  266. homeassistant-stubs/components/reolink/config_flow.pyi +35 -0
  267. homeassistant-stubs/components/reolink/const.pyi +2 -0
  268. homeassistant-stubs/components/reolink/diagnostics.pyi +5 -0
  269. homeassistant-stubs/components/reolink/entity.pyi +69 -0
  270. homeassistant-stubs/components/reolink/exceptions.pyi +7 -0
  271. homeassistant-stubs/components/reolink/host.pyi +82 -0
  272. homeassistant-stubs/components/reolink/light.pyi +55 -0
  273. homeassistant-stubs/components/reolink/media_source.pyi +27 -0
  274. homeassistant-stubs/components/reolink/number.pyi +69 -0
  275. homeassistant-stubs/components/reolink/select.pyi +54 -0
  276. homeassistant-stubs/components/reolink/sensor.pyi +55 -0
  277. homeassistant-stubs/components/reolink/services.pyi +12 -0
  278. homeassistant-stubs/components/reolink/siren.pyi +26 -0
  279. homeassistant-stubs/components/reolink/switch.pyi +65 -0
  280. homeassistant-stubs/components/reolink/update.pyi +71 -0
  281. homeassistant-stubs/components/reolink/util.pyi +18 -0
  282. homeassistant-stubs/components/rfxtrx/config_flow.pyi +2 -3
  283. homeassistant-stubs/components/ring/__init__.pyi +0 -1
  284. homeassistant-stubs/components/ring/camera.pyi +22 -6
  285. homeassistant-stubs/components/rituals_perfume_genie/select.pyi +1 -1
  286. homeassistant-stubs/components/roborock/config_flow.pyi +5 -3
  287. homeassistant-stubs/components/roborock/sensor.pyi +1 -1
  288. homeassistant-stubs/components/roku/config_flow.pyi +3 -3
  289. homeassistant-stubs/components/romy/sensor.pyi +1 -1
  290. homeassistant-stubs/components/rtsp_to_webrtc/__init__.pyi +1 -0
  291. homeassistant-stubs/components/rtsp_to_webrtc/config_flow.pyi +0 -2
  292. homeassistant-stubs/components/sensor/const.pyi +4 -2
  293. homeassistant-stubs/components/sensor/device_condition.pyi +2 -0
  294. homeassistant-stubs/components/sensor/device_trigger.pyi +2 -0
  295. homeassistant-stubs/components/shelly/config_flow.pyi +0 -2
  296. homeassistant-stubs/components/shelly/update.pyi +4 -1
  297. homeassistant-stubs/components/simplisafe/config_flow.pyi +0 -2
  298. homeassistant-stubs/components/smlight/config_flow.pyi +1 -1
  299. homeassistant-stubs/components/solarlog/coordinator.pyi +1 -0
  300. homeassistant-stubs/components/sonarr/config_flow.pyi +0 -2
  301. homeassistant-stubs/components/speedtestdotnet/config_flow.pyi +1 -2
  302. homeassistant-stubs/components/spotify/browse_media.pyi +2 -2
  303. homeassistant-stubs/components/spotify/coordinator.pyi +2 -4
  304. homeassistant-stubs/components/sql/config_flow.pyi +2 -2
  305. homeassistant-stubs/components/statistics/sensor.pyi +2 -4
  306. homeassistant-stubs/components/stookwijzer/__init__.pyi +15 -0
  307. homeassistant-stubs/components/stookwijzer/config_flow.pyi +10 -0
  308. homeassistant-stubs/components/stookwijzer/const.pyi +5 -0
  309. homeassistant-stubs/components/stookwijzer/coordinator.pyi +15 -0
  310. homeassistant-stubs/components/stookwijzer/diagnostics.pyi +5 -0
  311. homeassistant-stubs/components/stookwijzer/sensor.pyi +31 -0
  312. homeassistant-stubs/components/stream/const.pyi +3 -2
  313. homeassistant-stubs/components/stream/core.pyi +2 -2
  314. homeassistant-stubs/components/stream/worker.pyi +15 -13
  315. homeassistant-stubs/components/suez_water/__init__.pyi +3 -3
  316. homeassistant-stubs/components/suez_water/config_flow.pyi +2 -1
  317. homeassistant-stubs/components/suez_water/const.pyi +3 -0
  318. homeassistant-stubs/components/suez_water/coordinator.pyi +35 -0
  319. homeassistant-stubs/components/suez_water/sensor.pyi +23 -17
  320. homeassistant-stubs/components/switchbot_cloud/sensor.pyi +3 -1
  321. homeassistant-stubs/components/switcher_kis/button.pyi +1 -1
  322. homeassistant-stubs/components/switcher_kis/cover.pyi +1 -1
  323. homeassistant-stubs/components/switcher_kis/light.pyi +1 -1
  324. homeassistant-stubs/components/switcher_kis/sensor.pyi +2 -0
  325. homeassistant-stubs/components/synology_dsm/config_flow.pyi +0 -2
  326. homeassistant-stubs/components/tedee/binary_sensor.pyi +1 -1
  327. homeassistant-stubs/components/tedee/coordinator.pyi +2 -2
  328. homeassistant-stubs/components/tedee/entity.pyi +1 -1
  329. homeassistant-stubs/components/tedee/lock.pyi +3 -1
  330. homeassistant-stubs/components/tedee/sensor.pyi +1 -1
  331. homeassistant-stubs/components/thethingsnetwork/__init__.pyi +1 -4
  332. homeassistant-stubs/components/threshold/binary_sensor.pyi +4 -0
  333. homeassistant-stubs/components/tibber/__init__.pyi +1 -2
  334. homeassistant-stubs/components/tibber/notify.pyi +1 -10
  335. homeassistant-stubs/components/tod/binary_sensor.pyi +3 -3
  336. homeassistant-stubs/components/tolo/config_flow.pyi +1 -1
  337. homeassistant-stubs/components/tplink/__init__.pyi +1 -1
  338. homeassistant-stubs/components/tplink/config_flow.pyi +6 -3
  339. homeassistant-stubs/components/tplink_omada/__init__.pyi +2 -2
  340. homeassistant-stubs/components/trafikverket_camera/config_flow.pyi +1 -1
  341. homeassistant-stubs/components/trafikverket_camera/coordinator.pyi +2 -3
  342. homeassistant-stubs/components/trafikverket_train/__init__.pyi +3 -0
  343. homeassistant-stubs/components/trafikverket_train/config_flow.pyi +4 -3
  344. homeassistant-stubs/components/trafikverket_train/util.pyi +1 -2
  345. homeassistant-stubs/components/transmission/config_flow.pyi +0 -2
  346. homeassistant-stubs/components/trend/binary_sensor.pyi +1 -0
  347. homeassistant-stubs/components/tts/__init__.pyi +3 -1
  348. homeassistant-stubs/components/unifi/config_flow.pyi +2 -3
  349. homeassistant-stubs/components/unifiprotect/__init__.pyi +1 -1
  350. homeassistant-stubs/components/unifiprotect/config_flow.pyi +0 -2
  351. homeassistant-stubs/components/unifiprotect/const.pyi +5 -0
  352. homeassistant-stubs/components/unifiprotect/event.pyi +17 -4
  353. homeassistant-stubs/components/unifiprotect/views.pyi +7 -1
  354. homeassistant-stubs/components/upcloud/config_flow.pyi +0 -2
  355. homeassistant-stubs/components/watttime/config_flow.pyi +1 -3
  356. homeassistant-stubs/components/webostv/config_flow.pyi +0 -2
  357. homeassistant-stubs/components/websocket_api/http.pyi +2 -1
  358. homeassistant-stubs/components/wemo/config_flow.pyi +0 -3
  359. homeassistant-stubs/components/wled/config_flow.pyi +2 -2
  360. homeassistant-stubs/components/workday/config_flow.pyi +2 -2
  361. homeassistant-stubs/components/yale_smart_alarm/config_flow.pyi +5 -3
  362. homeassistant-stubs/components/yalexs_ble/config_flow.pyi +0 -2
  363. homeassistant-stubs/components/youtube/config_flow.pyi +2 -2
  364. homeassistant-stubs/components/zeroconf/usage.pyi +1 -1
  365. homeassistant-stubs/components/zwave_js/__init__.pyi +1 -1
  366. homeassistant-stubs/components/zwave_js/api.pyi +9 -1
  367. homeassistant-stubs/components/zwave_js/config_flow.pyi +1 -2
  368. homeassistant-stubs/components/zwave_js/const.pyi +1 -0
  369. homeassistant-stubs/config_entries.pyi +15 -7
  370. homeassistant-stubs/const.pyi +26 -1
  371. homeassistant-stubs/core_config.pyi +1 -1
  372. homeassistant-stubs/data_entry_flow.pyi +3 -3
  373. homeassistant-stubs/helpers/device_registry.pyi +0 -1
  374. homeassistant-stubs/helpers/entity.pyi +1 -0
  375. homeassistant-stubs/helpers/entity_platform.pyi +1 -0
  376. homeassistant-stubs/helpers/frame.pyi +12 -3
  377. homeassistant-stubs/helpers/intent.pyi +1 -0
  378. homeassistant-stubs/helpers/llm.pyi +2 -3
  379. homeassistant-stubs/helpers/restore_state.pyi +0 -3
  380. homeassistant-stubs/helpers/schema_config_entry_flow.pyi +5 -2
  381. homeassistant-stubs/helpers/trigger_template_entity.pyi +1 -1
  382. homeassistant-stubs/helpers/update_coordinator.pyi +3 -3
  383. homeassistant-stubs/loader.pyi +1 -0
  384. homeassistant-stubs/runner.pyi +0 -4
  385. homeassistant-stubs/util/json.pyi +3 -3
  386. homeassistant-stubs/util/unit_conversion.pyi +20 -1
  387. homeassistant-stubs/util/unit_system.pyi +7 -4
  388. homeassistant-stubs/util/yaml/loader.pyi +0 -19
  389. {homeassistant_stubs-2024.11.2.dist-info → homeassistant_stubs-2024.12.0.dist-info}/METADATA +2 -2
  390. {homeassistant_stubs-2024.11.2.dist-info → homeassistant_stubs-2024.12.0.dist-info}/RECORD +392 -337
  391. homeassistant-stubs/components/spotify/sensor.pyi +0 -31
  392. {homeassistant_stubs-2024.11.2.dist-info → homeassistant_stubs-2024.12.0.dist-info}/WHEEL +0 -0
  393. {homeassistant_stubs-2024.11.2.dist-info → homeassistant_stubs-2024.12.0.dist-info}/licenses/LICENSE +0 -0
@@ -0,0 +1,69 @@
1
+ from . import ReolinkData as ReolinkData
2
+ from .const import DOMAIN as DOMAIN
3
+ from _typeshed import Incomplete
4
+ from collections.abc import Callable as Callable
5
+ from dataclasses import dataclass
6
+ from homeassistant.core import callback as callback
7
+ from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC as CONNECTION_NETWORK_MAC, DeviceInfo as DeviceInfo
8
+ from homeassistant.helpers.entity import EntityDescription as EntityDescription
9
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity, DataUpdateCoordinator as DataUpdateCoordinator
10
+ from reolink_aio.api import Chime as Chime, Host as Host
11
+
12
+ @dataclass(frozen=True, kw_only=True)
13
+ class ReolinkEntityDescription(EntityDescription):
14
+ cmd_key: str | None = ...
15
+ cmd_id: int | None = ...
16
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=...) -> None: ...
17
+
18
+ @dataclass(frozen=True, kw_only=True)
19
+ class ReolinkChannelEntityDescription(ReolinkEntityDescription):
20
+ supported: Callable[[Host, int], bool] = ...
21
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=...) -> None: ...
22
+
23
+ @dataclass(frozen=True, kw_only=True)
24
+ class ReolinkHostEntityDescription(ReolinkEntityDescription):
25
+ supported: Callable[[Host], bool] = ...
26
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=...) -> None: ...
27
+
28
+ @dataclass(frozen=True, kw_only=True)
29
+ class ReolinkChimeEntityDescription(ReolinkEntityDescription):
30
+ supported: Callable[[Chime], bool] = ...
31
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=...) -> None: ...
32
+
33
+ class ReolinkHostCoordinatorEntity(CoordinatorEntity[DataUpdateCoordinator[None]]):
34
+ _attr_has_entity_name: bool
35
+ entity_description: ReolinkEntityDescription
36
+ _host: Incomplete
37
+ _attr_unique_id: Incomplete
38
+ _conf_url: Incomplete
39
+ _dev_id: Incomplete
40
+ _attr_device_info: Incomplete
41
+ def __init__(self, reolink_data: ReolinkData, coordinator: DataUpdateCoordinator[None] | None = None) -> None: ...
42
+ @property
43
+ def available(self) -> bool: ...
44
+ def _push_callback(self) -> None: ...
45
+ def register_callback(self, unique_id: str, cmd_id: int) -> None: ...
46
+ async def async_added_to_hass(self) -> None: ...
47
+ async def async_will_remove_from_hass(self) -> None: ...
48
+ async def async_update(self) -> None: ...
49
+
50
+ class ReolinkChannelCoordinatorEntity(ReolinkHostCoordinatorEntity):
51
+ _channel: Incomplete
52
+ _attr_unique_id: Incomplete
53
+ _dev_id: Incomplete
54
+ _attr_device_info: Incomplete
55
+ def __init__(self, reolink_data: ReolinkData, channel: int, coordinator: DataUpdateCoordinator[None] | None = None) -> None: ...
56
+ @property
57
+ def available(self) -> bool: ...
58
+ def register_callback(self, unique_id: str, cmd_id: int) -> None: ...
59
+ async def async_added_to_hass(self) -> None: ...
60
+ async def async_will_remove_from_hass(self) -> None: ...
61
+
62
+ class ReolinkChimeCoordinatorEntity(ReolinkChannelCoordinatorEntity):
63
+ _chime: Incomplete
64
+ _attr_unique_id: Incomplete
65
+ _dev_id: Incomplete
66
+ _attr_device_info: Incomplete
67
+ def __init__(self, reolink_data: ReolinkData, chime: Chime, coordinator: DataUpdateCoordinator[None] | None = None) -> None: ...
68
+ @property
69
+ def available(self) -> bool: ...
@@ -0,0 +1,7 @@
1
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
2
+
3
+ class ReolinkException(HomeAssistantError): ...
4
+ class ReolinkSetupException(ReolinkException): ...
5
+ class ReolinkWebhookException(ReolinkException): ...
6
+ class UserNotAdmin(ReolinkException): ...
7
+ class PasswordIncompatible(ReolinkException): ...
@@ -0,0 +1,82 @@
1
+ from .const import CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
2
+ from .exceptions import PasswordIncompatible as PasswordIncompatible, ReolinkSetupException as ReolinkSetupException, ReolinkWebhookException as ReolinkWebhookException, UserNotAdmin as UserNotAdmin
3
+ from _typeshed import Incomplete
4
+ from aiohttp.web import Request as Request
5
+ from collections.abc import Mapping
6
+ from homeassistant.components import webhook as webhook
7
+ from homeassistant.const import CONF_HOST as CONF_HOST, CONF_PASSWORD as CONF_PASSWORD, CONF_PORT as CONF_PORT, CONF_PROTOCOL as CONF_PROTOCOL, CONF_USERNAME as CONF_USERNAME
8
+ from homeassistant.core import CALLBACK_TYPE as CALLBACK_TYPE, HassJob as HassJob, HomeAssistant as HomeAssistant, callback as callback
9
+ from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
10
+ from homeassistant.helpers.device_registry import format_mac as format_mac
11
+ from homeassistant.helpers.dispatcher import async_dispatcher_send as async_dispatcher_send
12
+ from homeassistant.helpers.event import async_call_later as async_call_later
13
+ from homeassistant.helpers.network import NoURLAvailableError as NoURLAvailableError, get_url as get_url
14
+ from homeassistant.util.ssl import SSLCipherList as SSLCipherList
15
+ from reolink_aio.api import Host
16
+ from reolink_aio.enums import SubType
17
+ from typing import Any, Literal
18
+
19
+ DEFAULT_TIMEOUT: int
20
+ FIRST_TCP_PUSH_TIMEOUT: int
21
+ FIRST_ONVIF_TIMEOUT: int
22
+ FIRST_ONVIF_LONG_POLL_TIMEOUT: int
23
+ SUBSCRIPTION_RENEW_THRESHOLD: int
24
+ POLL_INTERVAL_NO_PUSH: int
25
+ LONG_POLL_COOLDOWN: float
26
+ LONG_POLL_ERROR_COOLDOWN: int
27
+ BATTERY_WAKE_UPDATE_INTERVAL: int
28
+ _LOGGER: Incomplete
29
+
30
+ class ReolinkHost:
31
+ _hass: Incomplete
32
+ _unique_id: str
33
+ _api: Incomplete
34
+ last_wake: int
35
+ update_cmd: Incomplete
36
+ firmware_ch_list: Incomplete
37
+ starting: bool
38
+ credential_errors: int
39
+ webhook_id: Incomplete
40
+ _onvif_push_supported: bool
41
+ _onvif_long_poll_supported: bool
42
+ _base_url: str
43
+ _webhook_url: str
44
+ _webhook_reachable: bool
45
+ _long_poll_received: bool
46
+ _long_poll_error: bool
47
+ _cancel_poll: Incomplete
48
+ _cancel_tcp_push_check: Incomplete
49
+ _cancel_onvif_check: Incomplete
50
+ _cancel_long_poll_check: Incomplete
51
+ _poll_job: Incomplete
52
+ _fast_poll_error: bool
53
+ _long_poll_task: Incomplete
54
+ _lost_subscription: bool
55
+ def __init__(self, hass: HomeAssistant, config: Mapping[str, Any], options: Mapping[str, Any]) -> None: ...
56
+ def async_register_update_cmd(self, cmd: str, channel: int | None = None) -> None: ...
57
+ def async_unregister_update_cmd(self, cmd: str, channel: int | None = None) -> None: ...
58
+ @property
59
+ def unique_id(self) -> str: ...
60
+ @property
61
+ def api(self) -> Host: ...
62
+ async def async_init(self) -> None: ...
63
+ async def _async_check_tcp_push(self, *_: Any) -> None: ...
64
+ async def _async_check_onvif(self, *_: Any) -> None: ...
65
+ async def _async_check_onvif_long_poll(self, *_: Any) -> None: ...
66
+ async def update_states(self) -> None: ...
67
+ async def disconnect(self) -> None: ...
68
+ async def _async_start_long_polling(self, initial: bool = False) -> None: ...
69
+ async def _async_stop_long_polling(self) -> None: ...
70
+ async def stop(self, *_: Any) -> None: ...
71
+ async def subscribe(self) -> None: ...
72
+ async def renew(self) -> None: ...
73
+ async def _renew(self, sub_type: Literal[SubType.push, SubType.long_poll]) -> None: ...
74
+ def register_webhook(self) -> None: ...
75
+ def unregister_webhook(self) -> None: ...
76
+ async def _async_long_polling(self, *_: Any) -> None: ...
77
+ async def _async_poll_all_motion(self, *_: Any) -> None: ...
78
+ async def handle_webhook(self, hass: HomeAssistant, webhook_id: str, request: Request) -> None: ...
79
+ async def _process_webhook_data(self, hass: HomeAssistant, webhook_id: str, data: bytes | None) -> None: ...
80
+ def _signal_write_ha_state(self, channels: list[int] | None = None) -> None: ...
81
+ @property
82
+ def event_connection(self) -> str: ...
@@ -0,0 +1,55 @@
1
+ from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkHostCoordinatorEntity as ReolinkHostCoordinatorEntity, ReolinkHostEntityDescription as ReolinkHostEntityDescription
2
+ from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData
3
+ from _typeshed import Incomplete
4
+ from collections.abc import Callable as Callable
5
+ from dataclasses import dataclass
6
+ from homeassistant.components.light import ATTR_BRIGHTNESS as ATTR_BRIGHTNESS, ColorMode as ColorMode, LightEntity as LightEntity, LightEntityDescription as LightEntityDescription
7
+ from homeassistant.const import EntityCategory as EntityCategory
8
+ from homeassistant.core import HomeAssistant as HomeAssistant
9
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceValidationError as ServiceValidationError
10
+ from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
11
+ from reolink_aio.api import Host as Host
12
+ from typing import Any
13
+
14
+ PARALLEL_UPDATES: int
15
+
16
+ @dataclass(frozen=True, kw_only=True)
17
+ class ReolinkLightEntityDescription(LightEntityDescription, ReolinkChannelEntityDescription):
18
+ get_brightness_fn: Callable[[Host, int], int | None] | None = ...
19
+ is_on_fn: Callable[[Host, int], bool]
20
+ set_brightness_fn: Callable[[Host, int, int], Any] | None = ...
21
+ turn_on_off_fn: Callable[[Host, int, bool], Any]
22
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=..., get_brightness_fn=..., is_on_fn, set_brightness_fn=..., turn_on_off_fn) -> None: ...
23
+
24
+ @dataclass(frozen=True, kw_only=True)
25
+ class ReolinkHostLightEntityDescription(LightEntityDescription, ReolinkHostEntityDescription):
26
+ is_on_fn: Callable[[Host], bool]
27
+ turn_on_off_fn: Callable[[Host, bool], Any]
28
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=..., is_on_fn, turn_on_off_fn) -> None: ...
29
+
30
+ LIGHT_ENTITIES: Incomplete
31
+ HOST_LIGHT_ENTITIES: Incomplete
32
+
33
+ async def async_setup_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
34
+
35
+ class ReolinkLightEntity(ReolinkChannelCoordinatorEntity, LightEntity):
36
+ entity_description: ReolinkLightEntityDescription
37
+ _attr_supported_color_modes: Incomplete
38
+ _attr_color_mode: Incomplete
39
+ def __init__(self, reolink_data: ReolinkData, channel: int, entity_description: ReolinkLightEntityDescription) -> None: ...
40
+ @property
41
+ def is_on(self) -> bool: ...
42
+ @property
43
+ def brightness(self) -> int | None: ...
44
+ async def async_turn_off(self, **kwargs: Any) -> None: ...
45
+ async def async_turn_on(self, **kwargs: Any) -> None: ...
46
+
47
+ class ReolinkHostLightEntity(ReolinkHostCoordinatorEntity, LightEntity):
48
+ entity_description: ReolinkHostLightEntityDescription
49
+ _attr_supported_color_modes: Incomplete
50
+ _attr_color_mode: Incomplete
51
+ def __init__(self, reolink_data: ReolinkData, entity_description: ReolinkHostLightEntityDescription) -> None: ...
52
+ @property
53
+ def is_on(self) -> bool: ...
54
+ async def async_turn_off(self, **kwargs: Any) -> None: ...
55
+ async def async_turn_on(self, **kwargs: Any) -> None: ...
@@ -0,0 +1,27 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .host import ReolinkHost as ReolinkHost
3
+ from .util import ReolinkConfigEntry as ReolinkConfigEntry
4
+ from _typeshed import Incomplete
5
+ from homeassistant.components.camera import DynamicStreamSettings as DynamicStreamSettings
6
+ from homeassistant.components.media_player import MediaClass as MediaClass, MediaType as MediaType
7
+ from homeassistant.components.media_source import BrowseMediaSource as BrowseMediaSource, MediaSource as MediaSource, MediaSourceItem as MediaSourceItem, PlayMedia as PlayMedia, Unresolvable as Unresolvable
8
+ from homeassistant.components.stream import create_stream as create_stream
9
+ from homeassistant.config_entries import ConfigEntryState as ConfigEntryState
10
+ from homeassistant.core import HomeAssistant as HomeAssistant
11
+
12
+ _LOGGER: Incomplete
13
+
14
+ async def async_get_media_source(hass: HomeAssistant) -> ReolinkVODMediaSource: ...
15
+ def res_name(stream: str) -> str: ...
16
+ def get_host(hass: HomeAssistant, config_entry_id: str) -> ReolinkHost: ...
17
+
18
+ class ReolinkVODMediaSource(MediaSource):
19
+ name: str
20
+ hass: Incomplete
21
+ def __init__(self, hass: HomeAssistant) -> None: ...
22
+ async def async_resolve_media(self, item: MediaSourceItem) -> PlayMedia: ...
23
+ async def async_browse_media(self, item: MediaSourceItem) -> BrowseMediaSource: ...
24
+ async def _async_generate_root(self) -> BrowseMediaSource: ...
25
+ async def _async_generate_resolution_select(self, config_entry_id: str, channel: int) -> BrowseMediaSource: ...
26
+ async def _async_generate_camera_days(self, config_entry_id: str, channel: int, stream: str) -> BrowseMediaSource: ...
27
+ async def _async_generate_camera_files(self, config_entry_id: str, channel: int, stream: str, year: int, month: int, day: int) -> BrowseMediaSource: ...
@@ -0,0 +1,69 @@
1
+ from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkChimeCoordinatorEntity as ReolinkChimeCoordinatorEntity, ReolinkChimeEntityDescription as ReolinkChimeEntityDescription, ReolinkHostCoordinatorEntity as ReolinkHostCoordinatorEntity, ReolinkHostEntityDescription as ReolinkHostEntityDescription
2
+ from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData
3
+ from _typeshed import Incomplete
4
+ from collections.abc import Callable as Callable
5
+ from dataclasses import dataclass
6
+ from homeassistant.components.number import NumberEntity as NumberEntity, NumberEntityDescription as NumberEntityDescription, NumberMode as NumberMode
7
+ from homeassistant.const import EntityCategory as EntityCategory, UnitOfTime as UnitOfTime
8
+ from homeassistant.core import HomeAssistant as HomeAssistant
9
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceValidationError as ServiceValidationError
10
+ from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
11
+ from reolink_aio.api import Chime as Chime, Host as Host
12
+ from typing import Any
13
+
14
+ PARALLEL_UPDATES: int
15
+
16
+ @dataclass(frozen=True, kw_only=True)
17
+ class ReolinkNumberEntityDescription(NumberEntityDescription, ReolinkChannelEntityDescription):
18
+ get_max_value: Callable[[Host, int], float] | None = ...
19
+ get_min_value: Callable[[Host, int], float] | None = ...
20
+ method: Callable[[Host, int, float], Any]
21
+ mode: NumberMode = ...
22
+ value: Callable[[Host, int], float | None]
23
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=..., max_value=..., min_value=..., mode=..., native_max_value=..., native_min_value=..., native_step=..., native_unit_of_measurement=..., step=..., get_max_value=..., get_min_value=..., method, value) -> None: ...
24
+
25
+ @dataclass(frozen=True, kw_only=True)
26
+ class ReolinkHostNumberEntityDescription(NumberEntityDescription, ReolinkHostEntityDescription):
27
+ method: Callable[[Host, float], Any]
28
+ mode: NumberMode = ...
29
+ value: Callable[[Host], float | None]
30
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=..., max_value=..., min_value=..., mode=..., native_max_value=..., native_min_value=..., native_step=..., native_unit_of_measurement=..., step=..., method, value) -> None: ...
31
+
32
+ @dataclass(frozen=True, kw_only=True)
33
+ class ReolinkChimeNumberEntityDescription(NumberEntityDescription, ReolinkChimeEntityDescription):
34
+ method: Callable[[Chime, float], Any]
35
+ mode: NumberMode = ...
36
+ value: Callable[[Chime], float | None]
37
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=..., max_value=..., min_value=..., mode=..., native_max_value=..., native_min_value=..., native_step=..., native_unit_of_measurement=..., step=..., method, value) -> None: ...
38
+
39
+ NUMBER_ENTITIES: Incomplete
40
+ HOST_NUMBER_ENTITIES: Incomplete
41
+ CHIME_NUMBER_ENTITIES: Incomplete
42
+
43
+ async def async_setup_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
44
+
45
+ class ReolinkNumberEntity(ReolinkChannelCoordinatorEntity, NumberEntity):
46
+ entity_description: ReolinkNumberEntityDescription
47
+ _attr_native_min_value: Incomplete
48
+ _attr_native_max_value: Incomplete
49
+ _attr_mode: Incomplete
50
+ def __init__(self, reolink_data: ReolinkData, channel: int, entity_description: ReolinkNumberEntityDescription) -> None: ...
51
+ @property
52
+ def native_value(self) -> float | None: ...
53
+ async def async_set_native_value(self, value: float) -> None: ...
54
+
55
+ class ReolinkHostNumberEntity(ReolinkHostCoordinatorEntity, NumberEntity):
56
+ entity_description: ReolinkHostNumberEntityDescription
57
+ _attr_mode: Incomplete
58
+ def __init__(self, reolink_data: ReolinkData, entity_description: ReolinkHostNumberEntityDescription) -> None: ...
59
+ @property
60
+ def native_value(self) -> float | None: ...
61
+ async def async_set_native_value(self, value: float) -> None: ...
62
+
63
+ class ReolinkChimeNumberEntity(ReolinkChimeCoordinatorEntity, NumberEntity):
64
+ entity_description: ReolinkChimeNumberEntityDescription
65
+ _attr_mode: Incomplete
66
+ def __init__(self, reolink_data: ReolinkData, chime: Chime, entity_description: ReolinkChimeNumberEntityDescription) -> None: ...
67
+ @property
68
+ def native_value(self) -> float | None: ...
69
+ async def async_set_native_value(self, value: float) -> None: ...
@@ -0,0 +1,54 @@
1
+ from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkChimeCoordinatorEntity as ReolinkChimeCoordinatorEntity, ReolinkChimeEntityDescription as ReolinkChimeEntityDescription
2
+ from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData
3
+ from _typeshed import Incomplete
4
+ from collections.abc import Callable as Callable
5
+ from dataclasses import dataclass
6
+ from homeassistant.components.select import SelectEntity as SelectEntity, SelectEntityDescription as SelectEntityDescription
7
+ from homeassistant.const import EntityCategory as EntityCategory, UnitOfDataRate as UnitOfDataRate, UnitOfFrequency as UnitOfFrequency
8
+ from homeassistant.core import HomeAssistant as HomeAssistant
9
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceValidationError as ServiceValidationError
10
+ from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
11
+ from reolink_aio.api import Chime as Chime, Host as Host
12
+ from typing import Any
13
+
14
+ _LOGGER: Incomplete
15
+ PARALLEL_UPDATES: int
16
+
17
+ @dataclass(frozen=True, kw_only=True)
18
+ class ReolinkSelectEntityDescription(SelectEntityDescription, ReolinkChannelEntityDescription):
19
+ get_options: list[str] | Callable[[Host, int], list[str]]
20
+ method: Callable[[Host, int, str], Any]
21
+ value: Callable[[Host, int], str] | None = ...
22
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=..., options=..., get_options, method, value=...) -> None: ...
23
+
24
+ @dataclass(frozen=True, kw_only=True)
25
+ class ReolinkChimeSelectEntityDescription(SelectEntityDescription, ReolinkChimeEntityDescription):
26
+ get_options: list[str]
27
+ method: Callable[[Chime, str], Any]
28
+ value: Callable[[Chime], str]
29
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=..., options=..., get_options, method, value) -> None: ...
30
+
31
+ def _get_quick_reply_id(api: Host, ch: int, mess: str) -> int: ...
32
+
33
+ SELECT_ENTITIES: Incomplete
34
+ CHIME_SELECT_ENTITIES: Incomplete
35
+
36
+ async def async_setup_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
37
+
38
+ class ReolinkSelectEntity(ReolinkChannelCoordinatorEntity, SelectEntity):
39
+ entity_description: ReolinkSelectEntityDescription
40
+ _log_error: bool
41
+ _attr_options: Incomplete
42
+ def __init__(self, reolink_data: ReolinkData, channel: int, entity_description: ReolinkSelectEntityDescription) -> None: ...
43
+ @property
44
+ def current_option(self) -> str | None: ...
45
+ async def async_select_option(self, option: str) -> None: ...
46
+
47
+ class ReolinkChimeSelectEntity(ReolinkChimeCoordinatorEntity, SelectEntity):
48
+ entity_description: ReolinkChimeSelectEntityDescription
49
+ _log_error: bool
50
+ _attr_options: Incomplete
51
+ def __init__(self, reolink_data: ReolinkData, chime: Chime, entity_description: ReolinkChimeSelectEntityDescription) -> None: ...
52
+ @property
53
+ def current_option(self) -> str | None: ...
54
+ async def async_select_option(self, option: str) -> None: ...
@@ -0,0 +1,55 @@
1
+ from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkHostCoordinatorEntity as ReolinkHostCoordinatorEntity, ReolinkHostEntityDescription as ReolinkHostEntityDescription
2
+ from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData
3
+ from _typeshed import Incomplete
4
+ from collections.abc import Callable as Callable
5
+ from dataclasses import dataclass
6
+ from datetime import date, datetime
7
+ from decimal import Decimal
8
+ from homeassistant.components.sensor import SensorDeviceClass as SensorDeviceClass, SensorEntity as SensorEntity, SensorEntityDescription as SensorEntityDescription, SensorStateClass as SensorStateClass
9
+ from homeassistant.const import EntityCategory as EntityCategory, PERCENTAGE as PERCENTAGE, UnitOfTemperature as UnitOfTemperature
10
+ from homeassistant.core import HomeAssistant as HomeAssistant
11
+ from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
12
+ from homeassistant.helpers.typing import StateType as StateType
13
+ from reolink_aio.api import Host as Host
14
+
15
+ PARALLEL_UPDATES: int
16
+
17
+ @dataclass(frozen=True, kw_only=True)
18
+ class ReolinkSensorEntityDescription(SensorEntityDescription, ReolinkChannelEntityDescription):
19
+ value: Callable[[Host, int], StateType]
20
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=..., last_reset=..., native_unit_of_measurement=..., options=..., state_class=..., suggested_display_precision=..., suggested_unit_of_measurement=..., value) -> None: ...
21
+
22
+ @dataclass(frozen=True, kw_only=True)
23
+ class ReolinkHostSensorEntityDescription(SensorEntityDescription, ReolinkHostEntityDescription):
24
+ value: Callable[[Host], StateType]
25
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=..., last_reset=..., native_unit_of_measurement=..., options=..., state_class=..., suggested_display_precision=..., suggested_unit_of_measurement=..., value) -> None: ...
26
+
27
+ SENSORS: Incomplete
28
+ HOST_SENSORS: Incomplete
29
+ HDD_SENSORS: Incomplete
30
+
31
+ async def async_setup_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
32
+
33
+ class ReolinkSensorEntity(ReolinkChannelCoordinatorEntity, SensorEntity):
34
+ entity_description: ReolinkSensorEntityDescription
35
+ def __init__(self, reolink_data: ReolinkData, channel: int, entity_description: ReolinkSensorEntityDescription) -> None: ...
36
+ @property
37
+ def native_value(self) -> StateType | date | datetime | Decimal: ...
38
+
39
+ class ReolinkHostSensorEntity(ReolinkHostCoordinatorEntity, SensorEntity):
40
+ entity_description: ReolinkHostSensorEntityDescription
41
+ def __init__(self, reolink_data: ReolinkData, entity_description: ReolinkHostSensorEntityDescription) -> None: ...
42
+ @property
43
+ def native_value(self) -> StateType | date | datetime | Decimal: ...
44
+
45
+ class ReolinkHddSensorEntity(ReolinkHostCoordinatorEntity, SensorEntity):
46
+ entity_description: ReolinkSensorEntityDescription
47
+ _hdd_index: Incomplete
48
+ _attr_translation_placeholders: Incomplete
49
+ _attr_unique_id: Incomplete
50
+ _attr_translation_key: str
51
+ def __init__(self, reolink_data: ReolinkData, hdd_index: int, entity_description: ReolinkSensorEntityDescription) -> None: ...
52
+ @property
53
+ def native_value(self) -> StateType | date | datetime | Decimal: ...
54
+ @property
55
+ def available(self) -> bool: ...
@@ -0,0 +1,12 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .host import ReolinkHost as ReolinkHost
3
+ from .util import get_device_uid_and_ch as get_device_uid_and_ch
4
+ from homeassistant.config_entries import ConfigEntryState as ConfigEntryState
5
+ from homeassistant.const import ATTR_DEVICE_ID as ATTR_DEVICE_ID
6
+ from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, callback as callback
7
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceValidationError as ServiceValidationError
8
+ from reolink_aio.api import Chime as Chime
9
+
10
+ ATTR_RINGTONE: str
11
+
12
+ def async_setup_services(hass: HomeAssistant) -> None: ...
@@ -0,0 +1,26 @@
1
+ from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription
2
+ from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData
3
+ from _typeshed import Incomplete
4
+ from dataclasses import dataclass
5
+ from homeassistant.components.siren import ATTR_DURATION as ATTR_DURATION, ATTR_VOLUME_LEVEL as ATTR_VOLUME_LEVEL, SirenEntity as SirenEntity, SirenEntityDescription as SirenEntityDescription, SirenEntityFeature as SirenEntityFeature
6
+ from homeassistant.core import HomeAssistant as HomeAssistant
7
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceValidationError as ServiceValidationError
8
+ from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
9
+ from typing import Any
10
+
11
+ PARALLEL_UPDATES: int
12
+
13
+ @dataclass(frozen=True)
14
+ class ReolinkSirenEntityDescription(SirenEntityDescription, ReolinkChannelEntityDescription):
15
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=..., available_tones=...) -> None: ...
16
+
17
+ SIREN_ENTITIES: Incomplete
18
+
19
+ async def async_setup_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
20
+
21
+ class ReolinkSirenEntity(ReolinkChannelCoordinatorEntity, SirenEntity):
22
+ _attr_supported_features: Incomplete
23
+ entity_description: ReolinkSirenEntityDescription
24
+ def __init__(self, reolink_data: ReolinkData, channel: int, entity_description: ReolinkSirenEntityDescription) -> None: ...
25
+ async def async_turn_on(self, **kwargs: Any) -> None: ...
26
+ async def async_turn_off(self, **kwargs: Any) -> None: ...
@@ -0,0 +1,65 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkChimeCoordinatorEntity as ReolinkChimeCoordinatorEntity, ReolinkChimeEntityDescription as ReolinkChimeEntityDescription, ReolinkHostCoordinatorEntity as ReolinkHostCoordinatorEntity, ReolinkHostEntityDescription as ReolinkHostEntityDescription
3
+ from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData
4
+ from _typeshed import Incomplete
5
+ from collections.abc import Callable as Callable
6
+ from dataclasses import dataclass
7
+ from homeassistant.components.switch import SwitchEntity as SwitchEntity, SwitchEntityDescription as SwitchEntityDescription
8
+ from homeassistant.const import EntityCategory as EntityCategory
9
+ from homeassistant.core import HomeAssistant as HomeAssistant
10
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
11
+ from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
12
+ from reolink_aio.api import Chime as Chime, Host as Host
13
+ from typing import Any
14
+
15
+ PARALLEL_UPDATES: int
16
+
17
+ @dataclass(frozen=True, kw_only=True)
18
+ class ReolinkSwitchEntityDescription(SwitchEntityDescription, ReolinkChannelEntityDescription):
19
+ method: Callable[[Host, int, bool], Any]
20
+ value: Callable[[Host, int], bool | None]
21
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=..., method, value) -> None: ...
22
+
23
+ @dataclass(frozen=True, kw_only=True)
24
+ class ReolinkNVRSwitchEntityDescription(SwitchEntityDescription, ReolinkHostEntityDescription):
25
+ method: Callable[[Host, bool], Any]
26
+ value: Callable[[Host], bool]
27
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=..., method, value) -> None: ...
28
+
29
+ @dataclass(frozen=True, kw_only=True)
30
+ class ReolinkChimeSwitchEntityDescription(SwitchEntityDescription, ReolinkChimeEntityDescription):
31
+ method: Callable[[Chime, bool], Any]
32
+ value: Callable[[Chime], bool | None]
33
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=..., method, value) -> None: ...
34
+
35
+ SWITCH_ENTITIES: Incomplete
36
+ NVR_SWITCH_ENTITIES: Incomplete
37
+ CHIME_SWITCH_ENTITIES: Incomplete
38
+ DEPRECATED_HDR: Incomplete
39
+ DEPRECATED_NVR_SWITCHES: Incomplete
40
+
41
+ async def async_setup_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
42
+
43
+ class ReolinkSwitchEntity(ReolinkChannelCoordinatorEntity, SwitchEntity):
44
+ entity_description: ReolinkSwitchEntityDescription
45
+ def __init__(self, reolink_data: ReolinkData, channel: int, entity_description: ReolinkSwitchEntityDescription) -> None: ...
46
+ @property
47
+ def is_on(self) -> bool | None: ...
48
+ async def async_turn_on(self, **kwargs: Any) -> None: ...
49
+ async def async_turn_off(self, **kwargs: Any) -> None: ...
50
+
51
+ class ReolinkNVRSwitchEntity(ReolinkHostCoordinatorEntity, SwitchEntity):
52
+ entity_description: ReolinkNVRSwitchEntityDescription
53
+ def __init__(self, reolink_data: ReolinkData, entity_description: ReolinkNVRSwitchEntityDescription) -> None: ...
54
+ @property
55
+ def is_on(self) -> bool: ...
56
+ async def async_turn_on(self, **kwargs: Any) -> None: ...
57
+ async def async_turn_off(self, **kwargs: Any) -> None: ...
58
+
59
+ class ReolinkChimeSwitchEntity(ReolinkChimeCoordinatorEntity, SwitchEntity):
60
+ entity_description: ReolinkChimeSwitchEntityDescription
61
+ def __init__(self, reolink_data: ReolinkData, chime: Chime, entity_description: ReolinkChimeSwitchEntityDescription) -> None: ...
62
+ @property
63
+ def is_on(self) -> bool | None: ...
64
+ async def async_turn_on(self, **kwargs: Any) -> None: ...
65
+ async def async_turn_off(self, **kwargs: Any) -> None: ...
@@ -0,0 +1,71 @@
1
+ from . import DEVICE_UPDATE_INTERVAL as DEVICE_UPDATE_INTERVAL
2
+ from .entity import ReolinkChannelCoordinatorEntity as ReolinkChannelCoordinatorEntity, ReolinkChannelEntityDescription as ReolinkChannelEntityDescription, ReolinkHostCoordinatorEntity as ReolinkHostCoordinatorEntity, ReolinkHostEntityDescription as ReolinkHostEntityDescription
3
+ from .util import ReolinkConfigEntry as ReolinkConfigEntry, ReolinkData as ReolinkData
4
+ from _typeshed import Incomplete
5
+ from dataclasses import dataclass
6
+ from homeassistant.components.update import UpdateDeviceClass as UpdateDeviceClass, UpdateEntity as UpdateEntity, UpdateEntityDescription as UpdateEntityDescription, UpdateEntityFeature as UpdateEntityFeature
7
+ from homeassistant.core import CALLBACK_TYPE as CALLBACK_TYPE, HomeAssistant as HomeAssistant
8
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
9
+ from homeassistant.helpers.entity_platform import AddEntitiesCallback as AddEntitiesCallback
10
+ from homeassistant.helpers.event import async_call_later as async_call_later
11
+ from homeassistant.helpers.update_coordinator import CoordinatorEntity as CoordinatorEntity, DataUpdateCoordinator as DataUpdateCoordinator
12
+ from typing import Any
13
+
14
+ PARALLEL_UPDATES: int
15
+ RESUME_AFTER_INSTALL: int
16
+ POLL_AFTER_INSTALL: int
17
+ POLL_PROGRESS: int
18
+
19
+ @dataclass(frozen=True, kw_only=True)
20
+ class ReolinkUpdateEntityDescription(UpdateEntityDescription, ReolinkChannelEntityDescription):
21
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=..., display_precision=...) -> None: ...
22
+
23
+ @dataclass(frozen=True, kw_only=True)
24
+ class ReolinkHostUpdateEntityDescription(UpdateEntityDescription, ReolinkHostEntityDescription):
25
+ def __init__(self, *, key, device_class=..., entity_category=..., entity_registry_enabled_default=..., entity_registry_visible_default=..., force_update=..., icon=..., has_entity_name=..., name=..., translation_key=..., translation_placeholders=..., unit_of_measurement=..., cmd_key=..., cmd_id=..., supported=..., display_precision=...) -> None: ...
26
+
27
+ UPDATE_ENTITIES: Incomplete
28
+ HOST_UPDATE_ENTITIES: Incomplete
29
+
30
+ async def async_setup_entry(hass: HomeAssistant, config_entry: ReolinkConfigEntry, async_add_entities: AddEntitiesCallback) -> None: ...
31
+
32
+ class ReolinkUpdateBaseEntity(CoordinatorEntity[DataUpdateCoordinator[None]], UpdateEntity):
33
+ _attr_release_url: str
34
+ _channel: Incomplete
35
+ _host: Incomplete
36
+ _cancel_update: Incomplete
37
+ _cancel_resume: Incomplete
38
+ _cancel_progress: Incomplete
39
+ _installing: bool
40
+ _reolink_data: Incomplete
41
+ def __init__(self, reolink_data: ReolinkData, channel: int | None, coordinator: DataUpdateCoordinator[None]) -> None: ...
42
+ @property
43
+ def installed_version(self) -> str | None: ...
44
+ @property
45
+ def latest_version(self) -> str | None: ...
46
+ @property
47
+ def in_progress(self) -> bool: ...
48
+ @property
49
+ def update_percentage(self) -> int: ...
50
+ @property
51
+ def supported_features(self) -> UpdateEntityFeature: ...
52
+ @property
53
+ def available(self) -> bool: ...
54
+ def version_is_newer(self, latest_version: str, installed_version: str) -> bool: ...
55
+ async def async_release_notes(self) -> str | None: ...
56
+ async def async_install(self, version: str | None, backup: bool, **kwargs: Any) -> None: ...
57
+ async def _pause_update_coordinator(self) -> None: ...
58
+ async def _resume_update_coordinator(self, *args: Any) -> None: ...
59
+ async def _async_update_progress(self, *args: Any) -> None: ...
60
+ async def _async_update_future(self, *args: Any) -> None: ...
61
+ async def async_added_to_hass(self) -> None: ...
62
+ async def async_will_remove_from_hass(self) -> None: ...
63
+
64
+ class ReolinkUpdateEntity(ReolinkUpdateBaseEntity, ReolinkChannelCoordinatorEntity):
65
+ entity_description: ReolinkUpdateEntityDescription
66
+ _channel: int
67
+ def __init__(self, reolink_data: ReolinkData, channel: int, entity_description: ReolinkUpdateEntityDescription) -> None: ...
68
+
69
+ class ReolinkHostUpdateEntity(ReolinkUpdateBaseEntity, ReolinkHostCoordinatorEntity):
70
+ entity_description: ReolinkHostUpdateEntityDescription
71
+ def __init__(self, reolink_data: ReolinkData, entity_description: ReolinkHostUpdateEntityDescription) -> None: ...
@@ -0,0 +1,18 @@
1
+ from .const import DOMAIN as DOMAIN
2
+ from .host import ReolinkHost as ReolinkHost
3
+ from dataclasses import dataclass
4
+ from homeassistant import config_entries as config_entries
5
+ from homeassistant.core import HomeAssistant as HomeAssistant
6
+ from homeassistant.helpers import device_registry as dr
7
+ from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator
8
+
9
+ type ReolinkConfigEntry = config_entries.ConfigEntry[ReolinkData]
10
+ @dataclass
11
+ class ReolinkData:
12
+ host: ReolinkHost
13
+ device_coordinator: DataUpdateCoordinator[None]
14
+ firmware_coordinator: DataUpdateCoordinator[None]
15
+ def __init__(self, host, device_coordinator, firmware_coordinator) -> None: ...
16
+
17
+ def is_connected(hass: HomeAssistant, config_entry: config_entries.ConfigEntry) -> bool: ...
18
+ def get_device_uid_and_ch(device: dr.DeviceEntry, host: ReolinkHost) -> tuple[list[str], int | None, bool]: ...