homeassistant-stubs 2025.6.3__py3-none-any.whl → 2025.7.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.

Potentially problematic release.


This version of homeassistant-stubs might be problematic. Click here for more details.

Files changed (347) hide show
  1. homeassistant-stubs/bootstrap.pyi +1 -1
  2. homeassistant-stubs/components/abode/__init__.pyi +3 -12
  3. homeassistant-stubs/components/abode/services.pyi +20 -0
  4. homeassistant-stubs/components/adax/sensor.pyi +29 -0
  5. homeassistant-stubs/components/airly/config_flow.pyi +1 -1
  6. homeassistant-stubs/components/airq/coordinator.pyi +1 -1
  7. homeassistant-stubs/components/airthings/__init__.pyi +3 -5
  8. homeassistant-stubs/components/airthings/coordinator.pyi +13 -0
  9. homeassistant-stubs/components/airthings/sensor.pyi +5 -4
  10. homeassistant-stubs/components/alexa_devices/binary_sensor.pyi +2 -1
  11. homeassistant-stubs/components/alexa_devices/notify.pyi +2 -0
  12. homeassistant-stubs/components/alexa_devices/sensor.pyi +29 -0
  13. homeassistant-stubs/components/alexa_devices/switch.pyi +2 -0
  14. homeassistant-stubs/components/alexa_devices/utils.pyi +7 -0
  15. homeassistant-stubs/components/altruist/__init__.pyi +9 -0
  16. homeassistant-stubs/components/altruist/config_flow.pyi +15 -0
  17. homeassistant-stubs/components/altruist/const.pyi +2 -0
  18. homeassistant-stubs/components/altruist/coordinator.pyi +19 -0
  19. homeassistant-stubs/components/altruist/sensor.pyi +34 -0
  20. homeassistant-stubs/components/amcrest/__init__.pyi +4 -7
  21. homeassistant-stubs/components/amcrest/services.pyi +13 -0
  22. homeassistant-stubs/components/analytics/analytics.pyi +3 -1
  23. homeassistant-stubs/components/android_ip_webcam/camera.pyi +4 -0
  24. homeassistant-stubs/components/apcupsd/sensor.pyi +1 -1
  25. homeassistant-stubs/components/assist_satellite/__init__.pyi +2 -2
  26. homeassistant-stubs/components/assist_satellite/entity.pyi +13 -1
  27. homeassistant-stubs/components/axis/hub/hub.pyi +1 -1
  28. homeassistant-stubs/components/camera/__init__.pyi +0 -2
  29. homeassistant-stubs/components/camera/webrtc.pyi +1 -0
  30. homeassistant-stubs/components/climate/__init__.pyi +0 -2
  31. homeassistant-stubs/components/command_line/notify.pyi +1 -2
  32. homeassistant-stubs/components/command_line/sensor.pyi +1 -2
  33. homeassistant-stubs/components/command_line/utils.pyi +5 -2
  34. homeassistant-stubs/components/deconz/logbook.pyi +1 -1
  35. homeassistant-stubs/components/derivative/config_flow.pyi +1 -1
  36. homeassistant-stubs/components/derivative/const.pyi +1 -0
  37. homeassistant-stubs/components/derivative/sensor.pyi +9 -4
  38. homeassistant-stubs/components/device_automation/condition.pyi +17 -4
  39. homeassistant-stubs/components/devolo_home_control/__init__.pyi +3 -2
  40. homeassistant-stubs/components/devolo_home_control/climate.pyi +1 -1
  41. homeassistant-stubs/components/devolo_home_control/const.pyi +0 -1
  42. homeassistant-stubs/components/devolo_home_control/cover.pyi +1 -1
  43. homeassistant-stubs/components/devolo_home_control/entity.pyi +6 -0
  44. homeassistant-stubs/components/devolo_home_control/light.pyi +1 -1
  45. homeassistant-stubs/components/devolo_home_control/siren.pyi +1 -1
  46. homeassistant-stubs/components/devolo_home_network/device_tracker.pyi +2 -0
  47. homeassistant-stubs/components/dnsip/sensor.pyi +3 -2
  48. homeassistant-stubs/components/downloader/__init__.pyi +1 -1
  49. homeassistant-stubs/components/downloader/services.pyi +3 -2
  50. homeassistant-stubs/components/ecovacs/binary_sensor.pyi +4 -4
  51. homeassistant-stubs/components/ecovacs/entity.pyi +9 -12
  52. homeassistant-stubs/components/ecovacs/number.pyi +4 -4
  53. homeassistant-stubs/components/ecovacs/select.pyi +5 -4
  54. homeassistant-stubs/components/ecovacs/sensor.pyi +3 -3
  55. homeassistant-stubs/components/eheimdigital/number.pyi +8 -9
  56. homeassistant-stubs/components/eheimdigital/select.pyi +8 -9
  57. homeassistant-stubs/components/eheimdigital/sensor.pyi +7 -8
  58. homeassistant-stubs/components/eheimdigital/time.pyi +8 -9
  59. homeassistant-stubs/components/elkm1/__init__.pyi +4 -9
  60. homeassistant-stubs/components/elkm1/services.pyi +21 -0
  61. homeassistant-stubs/components/enphase_envoy/__init__.pyi +2 -2
  62. homeassistant-stubs/components/enphase_envoy/config_flow.pyi +1 -1
  63. homeassistant-stubs/components/enphase_envoy/diagnostics.pyi +1 -0
  64. homeassistant-stubs/components/enphase_envoy/sensor.pyi +1 -1
  65. homeassistant-stubs/components/eq3btsmart/climate.pyi +6 -8
  66. homeassistant-stubs/components/eq3btsmart/const.pyi +3 -2
  67. homeassistant-stubs/components/eq3btsmart/entity.pyi +5 -1
  68. homeassistant-stubs/components/eq3btsmart/number.pyi +3 -3
  69. homeassistant-stubs/components/eq3btsmart/switch.pyi +5 -3
  70. homeassistant-stubs/components/esphome/entity.pyi +2 -1
  71. homeassistant-stubs/components/esphome/entry_data.pyi +3 -0
  72. homeassistant-stubs/components/esphome/sensor.pyi +2 -1
  73. homeassistant-stubs/components/evohome/water_heater.pyi +1 -1
  74. homeassistant-stubs/components/fritz/binary_sensor.pyi +2 -1
  75. homeassistant-stubs/components/fritz/button.pyi +3 -1
  76. homeassistant-stubs/components/fritz/coordinator.pyi +8 -82
  77. homeassistant-stubs/components/fritz/device_tracker.pyi +3 -1
  78. homeassistant-stubs/components/fritz/entity.pyi +2 -1
  79. homeassistant-stubs/components/fritz/helpers.pyi +9 -0
  80. homeassistant-stubs/components/fritz/models.pyi +78 -0
  81. homeassistant-stubs/components/fritz/sensor.pyi +2 -1
  82. homeassistant-stubs/components/fritz/services.pyi +3 -2
  83. homeassistant-stubs/components/fritz/switch.pyi +3 -1
  84. homeassistant-stubs/components/fully_kiosk/services.pyi +7 -2
  85. homeassistant-stubs/components/go2rtc/__init__.pyi +10 -4
  86. homeassistant-stubs/components/google/__init__.pyi +3 -9
  87. homeassistant-stubs/components/google_assistant_sdk/__init__.pyi +3 -7
  88. homeassistant-stubs/components/google_assistant_sdk/services.pyi +13 -0
  89. homeassistant-stubs/components/google_photos/services.pyi +4 -2
  90. homeassistant-stubs/components/google_sheets/__init__.pyi +7 -10
  91. homeassistant-stubs/components/google_sheets/services.pyi +18 -0
  92. homeassistant-stubs/components/group/sensor.pyi +1 -1
  93. homeassistant-stubs/components/habitica/services.pyi +8 -1
  94. homeassistant-stubs/components/here_travel_time/model.pyi +2 -1
  95. homeassistant-stubs/components/home_connect/diagnostics.pyi +2 -0
  96. homeassistant-stubs/components/homeassistant/__init__.pyi +2 -3
  97. homeassistant-stubs/components/homeassistant_hardware/firmware_config_flow.pyi +13 -7
  98. homeassistant-stubs/components/homeassistant_hardware/update.pyi +2 -6
  99. homeassistant-stubs/components/homeassistant_hardware/util.pyi +3 -1
  100. homeassistant-stubs/components/homeassistant_sky_connect/config_flow.pyi +9 -5
  101. homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +12 -5
  102. homeassistant-stubs/components/homee/config_flow.pyi +1 -0
  103. homeassistant-stubs/components/homee/diagnostics.pyi +12 -0
  104. homeassistant-stubs/components/homee/entity.pyi +3 -2
  105. homeassistant-stubs/components/homee/event.pyi +8 -4
  106. homeassistant-stubs/components/homee/siren.pyi +19 -0
  107. homeassistant-stubs/components/homewizard/select.pyi +35 -0
  108. homeassistant-stubs/components/husqvarna_automower/const.pyi +3 -0
  109. homeassistant-stubs/components/husqvarna_automower/lawn_mower.pyi +3 -1
  110. homeassistant-stubs/components/husqvarna_automower/sensor.pyi +1 -1
  111. homeassistant-stubs/components/image/__init__.pyi +2 -0
  112. homeassistant-stubs/components/immich/coordinator.pyi +2 -1
  113. homeassistant-stubs/components/immich/update.pyi +21 -0
  114. homeassistant-stubs/components/isy994/__init__.pyi +3 -1
  115. homeassistant-stubs/components/isy994/services.pyi +0 -2
  116. homeassistant-stubs/components/jewish_calendar/__init__.pyi +1 -1
  117. homeassistant-stubs/components/jewish_calendar/{service.pyi → services.pyi} +2 -1
  118. homeassistant-stubs/components/kaleidescape/__init__.pyi +4 -4
  119. homeassistant-stubs/components/kaleidescape/media_player.pyi +2 -3
  120. homeassistant-stubs/components/kaleidescape/remote.pyi +2 -3
  121. homeassistant-stubs/components/kaleidescape/sensor.pyi +2 -3
  122. homeassistant-stubs/components/lacrosse_view/__init__.pyi +3 -5
  123. homeassistant-stubs/components/lacrosse_view/coordinator.pyi +3 -2
  124. homeassistant-stubs/components/lacrosse_view/diagnostics.pyi +2 -4
  125. homeassistant-stubs/components/lacrosse_view/sensor.pyi +2 -2
  126. homeassistant-stubs/components/lamarzocco/entity.pyi +3 -0
  127. homeassistant-stubs/components/lamarzocco/sensor.pyi +1 -0
  128. homeassistant-stubs/components/lametric/__init__.pyi +3 -4
  129. homeassistant-stubs/components/lametric/button.pyi +2 -4
  130. homeassistant-stubs/components/lametric/coordinator.pyi +3 -2
  131. homeassistant-stubs/components/lametric/diagnostics.pyi +2 -4
  132. homeassistant-stubs/components/lametric/entity.pyi +1 -1
  133. homeassistant-stubs/components/lametric/helpers.pyi +1 -1
  134. homeassistant-stubs/components/lametric/notify.pyi +2 -2
  135. homeassistant-stubs/components/lametric/number.pyi +2 -4
  136. homeassistant-stubs/components/lametric/select.pyi +2 -4
  137. homeassistant-stubs/components/lametric/sensor.pyi +2 -4
  138. homeassistant-stubs/components/lametric/switch.pyi +2 -4
  139. homeassistant-stubs/components/lametric/update.pyi +17 -0
  140. homeassistant-stubs/components/laundrify/__init__.pyi +4 -6
  141. homeassistant-stubs/components/laundrify/binary_sensor.pyi +2 -3
  142. homeassistant-stubs/components/laundrify/coordinator.pyi +1 -0
  143. homeassistant-stubs/components/laundrify/sensor.pyi +2 -3
  144. homeassistant-stubs/components/lcn/__init__.pyi +9 -10
  145. homeassistant-stubs/components/lcn/binary_sensor.pyi +9 -8
  146. homeassistant-stubs/components/lcn/climate.pyi +5 -6
  147. homeassistant-stubs/components/lcn/const.pyi +0 -4
  148. homeassistant-stubs/components/lcn/cover.pyi +6 -7
  149. homeassistant-stubs/components/lcn/entity.pyi +2 -3
  150. homeassistant-stubs/components/lcn/helpers.pyi +15 -5
  151. homeassistant-stubs/components/lcn/light.pyi +6 -7
  152. homeassistant-stubs/components/lcn/scene.pyi +5 -5
  153. homeassistant-stubs/components/lcn/sensor.pyi +7 -7
  154. homeassistant-stubs/components/lcn/services.pyi +5 -4
  155. homeassistant-stubs/components/lcn/switch.pyi +8 -9
  156. homeassistant-stubs/components/lcn/websocket.pyi +12 -13
  157. homeassistant-stubs/components/ld2410_ble/__init__.pyi +4 -6
  158. homeassistant-stubs/components/ld2410_ble/binary_sensor.pyi +2 -4
  159. homeassistant-stubs/components/ld2410_ble/coordinator.pyi +3 -3
  160. homeassistant-stubs/components/ld2410_ble/models.pyi +2 -0
  161. homeassistant-stubs/components/ld2410_ble/sensor.pyi +4 -5
  162. homeassistant-stubs/components/led_ble/__init__.pyi +5 -6
  163. homeassistant-stubs/components/led_ble/light.pyi +3 -4
  164. homeassistant-stubs/components/led_ble/models.pyi +2 -0
  165. homeassistant-stubs/components/lifx/__init__.pyi +4 -5
  166. homeassistant-stubs/components/lifx/binary_sensor.pyi +3 -4
  167. homeassistant-stubs/components/lifx/button.pyi +3 -4
  168. homeassistant-stubs/components/lifx/const.pyi +3 -1
  169. homeassistant-stubs/components/lifx/coordinator.pyi +3 -2
  170. homeassistant-stubs/components/lifx/diagnostics.pyi +3 -4
  171. homeassistant-stubs/components/lifx/light.pyi +3 -4
  172. homeassistant-stubs/components/lifx/manager.pyi +2 -2
  173. homeassistant-stubs/components/lifx/migration.pyi +3 -3
  174. homeassistant-stubs/components/lifx/select.pyi +3 -4
  175. homeassistant-stubs/components/lifx/sensor.pyi +3 -4
  176. homeassistant-stubs/components/lifx/util.pyi +3 -3
  177. homeassistant-stubs/components/linear_garage_door/__init__.pyi +4 -5
  178. homeassistant-stubs/components/linear_garage_door/coordinator.pyi +3 -2
  179. homeassistant-stubs/components/linear_garage_door/cover.pyi +2 -4
  180. homeassistant-stubs/components/linear_garage_door/diagnostics.pyi +2 -4
  181. homeassistant-stubs/components/linear_garage_door/light.pyi +2 -4
  182. homeassistant-stubs/components/lookin/__init__.pyi +4 -5
  183. homeassistant-stubs/components/lookin/climate.pyi +3 -4
  184. homeassistant-stubs/components/lookin/coordinator.pyi +3 -3
  185. homeassistant-stubs/components/lookin/light.pyi +3 -4
  186. homeassistant-stubs/components/lookin/media_player.pyi +3 -4
  187. homeassistant-stubs/components/lookin/models.pyi +2 -0
  188. homeassistant-stubs/components/lookin/sensor.pyi +2 -4
  189. homeassistant-stubs/components/luftdaten/__init__.pyi +4 -6
  190. homeassistant-stubs/components/luftdaten/coordinator.pyi +15 -0
  191. homeassistant-stubs/components/luftdaten/diagnostics.pyi +3 -4
  192. homeassistant-stubs/components/luftdaten/sensor.pyi +4 -4
  193. homeassistant-stubs/components/matrix/__init__.pyi +2 -7
  194. homeassistant-stubs/components/matrix/const.pyi +3 -0
  195. homeassistant-stubs/components/matrix/services.pyi +12 -0
  196. homeassistant-stubs/components/matter/sensor.pyi +7 -2
  197. homeassistant-stubs/components/matter/vacuum.pyi +5 -5
  198. homeassistant-stubs/components/mealie/__init__.pyi +1 -1
  199. homeassistant-stubs/components/mealie/services.pyi +9 -3
  200. homeassistant-stubs/components/media_player/__init__.pyi +0 -2
  201. homeassistant-stubs/components/media_player/intent.pyi +1 -1
  202. homeassistant-stubs/components/media_source/local_source.pyi +2 -0
  203. homeassistant-stubs/components/metoffice/sensor.pyi +1 -1
  204. homeassistant-stubs/components/miele/const.pyi +24 -0
  205. homeassistant-stubs/components/miele/sensor.pyi +1 -2
  206. homeassistant-stubs/components/mqtt/config_flow.pyi +6 -1
  207. homeassistant-stubs/components/mqtt/sensor.pyi +1 -4
  208. homeassistant-stubs/components/music_assistant/__init__.pyi +5 -1
  209. homeassistant-stubs/components/music_assistant/button.pyi +15 -0
  210. homeassistant-stubs/components/music_assistant/helpers.pyi +5 -0
  211. homeassistant-stubs/components/music_assistant/media_player.pyi +4 -4
  212. homeassistant-stubs/components/nam/config_flow.pyi +3 -9
  213. homeassistant-stubs/components/nextdns/binary_sensor.pyi +6 -12
  214. homeassistant-stubs/components/nextdns/button.pyi +2 -9
  215. homeassistant-stubs/components/nextdns/coordinator.pyi +2 -7
  216. homeassistant-stubs/components/nextdns/entity.pyi +14 -0
  217. homeassistant-stubs/components/nextdns/sensor.pyi +8 -15
  218. homeassistant-stubs/components/nextdns/switch.pyi +3 -6
  219. homeassistant-stubs/components/nfandroidtv/__init__.pyi +0 -1
  220. homeassistant-stubs/components/nfandroidtv/notify.pyi +5 -4
  221. homeassistant-stubs/components/nordpool/services.pyi +2 -1
  222. homeassistant-stubs/components/ntfy/__init__.pyi +1 -3
  223. homeassistant-stubs/components/ntfy/config_flow.pyi +3 -0
  224. homeassistant-stubs/components/ntfy/coordinator.pyi +16 -0
  225. homeassistant-stubs/components/ntfy/notify.pyi +1 -1
  226. homeassistant-stubs/components/ntfy/sensor.pyi +56 -0
  227. homeassistant-stubs/components/ohme/services.pyi +2 -1
  228. homeassistant-stubs/components/onedrive/__init__.pyi +1 -1
  229. homeassistant-stubs/components/onedrive/services.pyi +3 -2
  230. homeassistant-stubs/components/onewire/binary_sensor.pyi +3 -2
  231. homeassistant-stubs/components/onewire/const.pyi +0 -1
  232. homeassistant-stubs/components/onewire/entity.pyi +2 -3
  233. homeassistant-stubs/components/onewire/switch.pyi +3 -2
  234. homeassistant-stubs/components/onkyo/__init__.pyi +1 -1
  235. homeassistant-stubs/components/onkyo/services.pyi +3 -2
  236. homeassistant-stubs/components/openai_conversation/__init__.pyi +4 -2
  237. homeassistant-stubs/components/openai_conversation/config_flow.pyi +19 -14
  238. homeassistant-stubs/components/openai_conversation/const.pyi +2 -0
  239. homeassistant-stubs/components/openai_conversation/conversation.pyi +4 -4
  240. homeassistant-stubs/components/overseerr/__init__.pyi +1 -1
  241. homeassistant-stubs/components/overseerr/services.pyi +6 -4
  242. homeassistant-stubs/components/paperless_ngx/__init__.pyi +1 -1
  243. homeassistant-stubs/components/paperless_ngx/config_flow.pyi +2 -2
  244. homeassistant-stubs/components/paperless_ngx/coordinator.pyi +3 -5
  245. homeassistant-stubs/components/paperless_ngx/entity.pyi +2 -5
  246. homeassistant-stubs/components/paperless_ngx/sensor.pyi +8 -8
  247. homeassistant-stubs/components/paperless_ngx/update.pyi +25 -0
  248. homeassistant-stubs/components/person/__init__.pyi +1 -1
  249. homeassistant-stubs/components/plugwise/climate.pyi +0 -1
  250. homeassistant-stubs/components/pushbullet/sensor.pyi +1 -1
  251. homeassistant-stubs/components/qbus/climate.pyi +3 -2
  252. homeassistant-stubs/components/qbus/cover.pyi +39 -0
  253. homeassistant-stubs/components/qbus/entity.pyi +7 -3
  254. homeassistant-stubs/components/qbus/light.pyi +4 -3
  255. homeassistant-stubs/components/qbus/scene.pyi +2 -2
  256. homeassistant-stubs/components/qbus/switch.pyi +3 -2
  257. homeassistant-stubs/components/recorder/__init__.pyi +1 -1
  258. homeassistant-stubs/components/recorder/services.pyi +7 -12
  259. homeassistant-stubs/components/reolink/__init__.pyi +1 -1
  260. homeassistant-stubs/components/reolink/config_flow.pyi +1 -1
  261. homeassistant-stubs/components/reolink/const.pyi +1 -0
  262. homeassistant-stubs/components/reolink/entity.pyi +1 -1
  263. homeassistant-stubs/components/reolink/host.pyi +1 -1
  264. homeassistant-stubs/components/reolink/services.pyi +2 -0
  265. homeassistant-stubs/components/rest/data.pyi +8 -6
  266. homeassistant-stubs/components/russound_rio/__init__.pyi +1 -0
  267. homeassistant-stubs/components/russound_rio/entity.pyi +6 -2
  268. homeassistant-stubs/components/russound_rio/media_player.pyi +1 -5
  269. homeassistant-stubs/components/russound_rio/number.pyi +30 -0
  270. homeassistant-stubs/components/russound_rio/switch.pyi +33 -0
  271. homeassistant-stubs/components/shelly/__init__.pyi +1 -1
  272. homeassistant-stubs/components/shelly/const.pyi +1 -0
  273. homeassistant-stubs/components/shelly/repairs.pyi +14 -3
  274. homeassistant-stubs/components/shopping_list/__init__.pyi +1 -0
  275. homeassistant-stubs/components/shopping_list/intent.pyi +9 -1
  276. homeassistant-stubs/components/squeezebox/button.pyi +0 -2
  277. homeassistant-stubs/components/squeezebox/entity.pyi +2 -0
  278. homeassistant-stubs/components/squeezebox/media_player.pyi +0 -2
  279. homeassistant-stubs/components/stream/__init__.pyi +1 -1
  280. homeassistant-stubs/components/stream/const.pyi +1 -0
  281. homeassistant-stubs/components/stream/core.pyi +2 -1
  282. homeassistant-stubs/components/sun/__init__.pyi +1 -0
  283. homeassistant-stubs/components/sun/binary_sensor.pyi +36 -0
  284. homeassistant-stubs/components/sun/condition.pyi +13 -3
  285. homeassistant-stubs/components/sun/sensor.pyi +2 -0
  286. homeassistant-stubs/components/switch/light.pyi +1 -0
  287. homeassistant-stubs/components/switch_as_x/entity.pyi +1 -0
  288. homeassistant-stubs/components/synology_dsm/__init__.pyi +4 -1
  289. homeassistant-stubs/components/synology_dsm/{service.pyi → services.pyi} +4 -2
  290. homeassistant-stubs/components/tedee/binary_sensor.pyi +4 -0
  291. homeassistant-stubs/components/telegram_bot/__init__.pyi +34 -0
  292. homeassistant-stubs/components/telegram_bot/bot.pyi +63 -0
  293. homeassistant-stubs/components/telegram_bot/broadcast.pyi +5 -0
  294. homeassistant-stubs/components/telegram_bot/config_flow.pyi +53 -0
  295. homeassistant-stubs/components/telegram_bot/const.pyi +93 -0
  296. homeassistant-stubs/components/telegram_bot/polling.pyi +19 -0
  297. homeassistant-stubs/components/telegram_bot/webhooks.pyi +47 -0
  298. homeassistant-stubs/components/tplink/climate.pyi +1 -2
  299. homeassistant-stubs/components/trend/binary_sensor.pyi +1 -1
  300. homeassistant-stubs/components/tts/__init__.pyi +1 -0
  301. homeassistant-stubs/components/tts/entity.pyi +1 -2
  302. homeassistant-stubs/components/unifi/button.pyi +5 -5
  303. homeassistant-stubs/components/unifi/device_tracker.pyi +5 -5
  304. homeassistant-stubs/components/unifi/entity.pyi +5 -8
  305. homeassistant-stubs/components/unifi/hub/hub.pyi +1 -1
  306. homeassistant-stubs/components/unifi/image.pyi +5 -5
  307. homeassistant-stubs/components/unifi/sensor.pyi +5 -5
  308. homeassistant-stubs/components/unifi/switch.pyi +7 -7
  309. homeassistant-stubs/components/unifi/update.pyi +3 -5
  310. homeassistant-stubs/components/unifiprotect/services.pyi +1 -0
  311. homeassistant-stubs/components/vacuum/__init__.pyi +0 -2
  312. homeassistant-stubs/components/wallbox/const.pyi +4 -0
  313. homeassistant-stubs/components/wallbox/coordinator.pyi +6 -6
  314. homeassistant-stubs/components/wallbox/lock.pyi +1 -2
  315. homeassistant-stubs/components/wallbox/number.pyi +1 -2
  316. homeassistant-stubs/components/websocket_api/commands.pyi +6 -3
  317. homeassistant-stubs/components/websocket_api/messages.pyi +1 -0
  318. homeassistant-stubs/components/wiz/__init__.pyi +3 -3
  319. homeassistant-stubs/components/zwave_js/__init__.pyi +1 -1
  320. homeassistant-stubs/components/zwave_js/api.pyi +2 -2
  321. homeassistant-stubs/components/zwave_js/config_flow.pyi +4 -1
  322. homeassistant-stubs/components/zwave_js/device_trigger.pyi +0 -1
  323. homeassistant-stubs/components/zwave_js/services.pyi +2 -0
  324. homeassistant-stubs/components/zwave_js/trigger.pyi +3 -7
  325. homeassistant-stubs/components/zwave_js/triggers/event.pyi +9 -1
  326. homeassistant-stubs/components/zwave_js/triggers/value_updated.pyi +9 -1
  327. homeassistant-stubs/config_entries.pyi +2 -0
  328. homeassistant-stubs/const.pyi +1 -0
  329. homeassistant-stubs/helpers/condition.pyi +11 -3
  330. homeassistant-stubs/helpers/device_registry.pyi +5 -1
  331. homeassistant-stubs/helpers/entity.pyi +1 -4
  332. homeassistant-stubs/helpers/entity_registry.pyi +11 -1
  333. homeassistant-stubs/helpers/llm.pyi +0 -1
  334. homeassistant-stubs/helpers/selector.pyi +24 -4
  335. homeassistant-stubs/helpers/system_info.pyi +2 -0
  336. homeassistant-stubs/helpers/template.pyi +2 -1
  337. homeassistant-stubs/helpers/trigger.pyi +33 -2
  338. homeassistant-stubs/loader.pyi +3 -1
  339. homeassistant-stubs/util/timeout.pyi +6 -3
  340. homeassistant-stubs/util/yaml/loader.pyi +3 -1
  341. {homeassistant_stubs-2025.6.3.dist-info → homeassistant_stubs-2025.7.0.dist-info}/METADATA +2 -2
  342. {homeassistant_stubs-2025.6.3.dist-info → homeassistant_stubs-2025.7.0.dist-info}/RECORD +344 -307
  343. homeassistant-stubs/backports/enum.pyi +0 -7
  344. homeassistant-stubs/backports/functools.pyi +0 -7
  345. homeassistant-stubs/components/devolo_home_control/devolo_multi_level_switch.pyi +0 -10
  346. {homeassistant_stubs-2025.6.3.dist-info → homeassistant_stubs-2025.7.0.dist-info}/WHEEL +0 -0
  347. {homeassistant_stubs-2025.6.3.dist-info → homeassistant_stubs-2025.7.0.dist-info}/licenses/LICENSE +0 -0
@@ -1,12 +1,12 @@
1
1
  from .coordinator import QbusConfigEntry as QbusConfigEntry
2
2
  from .entity import QbusEntity as QbusEntity, add_new_outputs as add_new_outputs, create_main_device_identifier as create_main_device_identifier
3
3
  from _typeshed import Incomplete
4
- from homeassistant.components.mqtt import ReceiveMessage as ReceiveMessage
5
4
  from homeassistant.components.scene import Scene as Scene
6
5
  from homeassistant.core import HomeAssistant as HomeAssistant
7
6
  from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
8
7
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
9
8
  from qbusmqttapi.discovery import QbusMqttOutput as QbusMqttOutput
9
+ from qbusmqttapi.state import QbusMqttState
10
10
  from typing import Any
11
11
 
12
12
  PARALLEL_UPDATES: int
@@ -18,4 +18,4 @@ class QbusScene(QbusEntity, Scene):
18
18
  _attr_name: Incomplete
19
19
  def __init__(self, mqtt_output: QbusMqttOutput) -> None: ...
20
20
  async def async_activate(self, **kwargs: Any) -> None: ...
21
- async def _state_received(self, msg: ReceiveMessage) -> None: ...
21
+ async def _handle_state_received(self, state: QbusMqttState) -> None: ...
@@ -1,11 +1,11 @@
1
1
  from .coordinator import QbusConfigEntry as QbusConfigEntry
2
2
  from .entity import QbusEntity as QbusEntity, add_new_outputs as add_new_outputs
3
3
  from _typeshed import Incomplete
4
- from homeassistant.components.mqtt import ReceiveMessage as ReceiveMessage
5
4
  from homeassistant.components.switch import SwitchDeviceClass as SwitchDeviceClass, SwitchEntity as SwitchEntity
6
5
  from homeassistant.core import HomeAssistant as HomeAssistant
7
6
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
8
7
  from qbusmqttapi.discovery import QbusMqttOutput as QbusMqttOutput
8
+ from qbusmqttapi.state import QbusMqttOnOffState
9
9
  from typing import Any
10
10
 
11
11
  PARALLEL_UPDATES: int
@@ -13,10 +13,11 @@ PARALLEL_UPDATES: int
13
13
  async def async_setup_entry(hass: HomeAssistant, entry: QbusConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
14
14
 
15
15
  class QbusSwitch(QbusEntity, SwitchEntity):
16
+ _state_cls = QbusMqttOnOffState
16
17
  _attr_name: Incomplete
17
18
  _attr_device_class: Incomplete
18
19
  _attr_is_on: bool
19
20
  def __init__(self, mqtt_output: QbusMqttOutput) -> None: ...
20
21
  async def async_turn_on(self, **kwargs: Any) -> None: ...
21
22
  async def async_turn_off(self, **kwargs: Any) -> None: ...
22
- async def _state_received(self, msg: ReceiveMessage) -> None: ...
23
+ async def _handle_state_received(self, state: QbusMqttOnOffState) -> None: ...
@@ -1,7 +1,7 @@
1
1
  from . import backup as backup, entity_registry as entity_registry, websocket_api as websocket_api
2
2
  from .const import CONF_DB_INTEGRITY_CHECK as CONF_DB_INTEGRITY_CHECK, DOMAIN as DOMAIN, INTEGRATION_PLATFORM_COMPILE_STATISTICS as INTEGRATION_PLATFORM_COMPILE_STATISTICS, INTEGRATION_PLATFORM_METHODS as INTEGRATION_PLATFORM_METHODS, SQLITE_URL_PREFIX as SQLITE_URL_PREFIX, SupportedDialect as SupportedDialect
3
3
  from .core import Recorder as Recorder
4
- from .services import async_register_services as async_register_services
4
+ from .services import async_setup_services as async_setup_services
5
5
  from .tasks import AddRecorderPlatformTask as AddRecorderPlatformTask
6
6
  from .util import get_instance as get_instance
7
7
  from _typeshed import Incomplete
@@ -1,11 +1,11 @@
1
1
  from .const import ATTR_APPLY_FILTER as ATTR_APPLY_FILTER, ATTR_KEEP_DAYS as ATTR_KEEP_DAYS, ATTR_REPACK as ATTR_REPACK, DOMAIN as DOMAIN
2
- from .core import Recorder as Recorder
3
2
  from .statistics import statistics_during_period as statistics_during_period
4
3
  from .tasks import PurgeEntitiesTask as PurgeEntitiesTask, PurgeTask as PurgeTask
5
4
  from _typeshed import Incomplete
6
5
  from homeassistant.const import ATTR_ENTITY_ID as ATTR_ENTITY_ID
7
6
  from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse, callback as callback
8
7
  from homeassistant.helpers.entityfilter import generate_filter as generate_filter
8
+ from homeassistant.helpers.recorder import DATA_INSTANCE as DATA_INSTANCE
9
9
  from homeassistant.helpers.service import async_extract_entity_ids as async_extract_entity_ids, async_register_admin_service as async_register_admin_service
10
10
  from homeassistant.util.json import JsonArrayType as JsonArrayType, JsonObjectType as JsonObjectType
11
11
 
@@ -22,15 +22,10 @@ SERVICE_ENABLE_SCHEMA: Incomplete
22
22
  SERVICE_DISABLE_SCHEMA: Incomplete
23
23
  SERVICE_GET_STATISTICS_SCHEMA: Incomplete
24
24
 
25
+ async def _async_handle_purge_service(service: ServiceCall) -> None: ...
26
+ async def _async_handle_purge_entities_service(service: ServiceCall) -> None: ...
27
+ async def _async_handle_enable_service(service: ServiceCall) -> None: ...
28
+ async def _async_handle_disable_service(service: ServiceCall) -> None: ...
29
+ async def _async_handle_get_statistics_service(service: ServiceCall) -> ServiceResponse: ...
25
30
  @callback
26
- def _async_register_purge_service(hass: HomeAssistant, instance: Recorder) -> None: ...
27
- @callback
28
- def _async_register_purge_entities_service(hass: HomeAssistant, instance: Recorder) -> None: ...
29
- @callback
30
- def _async_register_enable_service(hass: HomeAssistant, instance: Recorder) -> None: ...
31
- @callback
32
- def _async_register_disable_service(hass: HomeAssistant, instance: Recorder) -> None: ...
33
- @callback
34
- def _async_register_get_statistics_service(hass: HomeAssistant, instance: Recorder) -> None: ...
35
- @callback
36
- def async_register_services(hass: HomeAssistant, instance: Recorder) -> None: ...
31
+ def async_setup_services(hass: HomeAssistant) -> None: ...
@@ -1,4 +1,4 @@
1
- from .const import BATTERY_PASSIVE_WAKE_UPDATE_INTERVAL as BATTERY_PASSIVE_WAKE_UPDATE_INTERVAL, CONF_BC_PORT as CONF_BC_PORT, CONF_SUPPORTS_PRIVACY_MODE as CONF_SUPPORTS_PRIVACY_MODE, CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
1
+ from .const import BATTERY_PASSIVE_WAKE_UPDATE_INTERVAL as BATTERY_PASSIVE_WAKE_UPDATE_INTERVAL, CONF_BC_ONLY as CONF_BC_ONLY, CONF_BC_PORT as CONF_BC_PORT, CONF_SUPPORTS_PRIVACY_MODE as CONF_SUPPORTS_PRIVACY_MODE, CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
2
2
  from .exceptions import PasswordIncompatible as PasswordIncompatible, ReolinkException as ReolinkException, UserNotAdmin as UserNotAdmin
3
3
  from .host import ReolinkHost as ReolinkHost
4
4
  from .services import async_setup_services as async_setup_services
@@ -1,4 +1,4 @@
1
- from .const import CONF_BC_PORT as CONF_BC_PORT, CONF_SUPPORTS_PRIVACY_MODE as CONF_SUPPORTS_PRIVACY_MODE, CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
1
+ from .const import CONF_BC_ONLY as CONF_BC_ONLY, CONF_BC_PORT as CONF_BC_PORT, CONF_SUPPORTS_PRIVACY_MODE as CONF_SUPPORTS_PRIVACY_MODE, CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
2
2
  from .exceptions import PasswordIncompatible as PasswordIncompatible, ReolinkException as ReolinkException, ReolinkWebhookException as ReolinkWebhookException, UserNotAdmin as UserNotAdmin
3
3
  from .host import ReolinkHost as ReolinkHost
4
4
  from .util import ReolinkConfigEntry as ReolinkConfigEntry, is_connected as is_connected
@@ -3,6 +3,7 @@ from _typeshed import Incomplete
3
3
  DOMAIN: str
4
4
  CONF_USE_HTTPS: str
5
5
  CONF_BC_PORT: str
6
+ CONF_BC_ONLY: str
6
7
  CONF_SUPPORTS_PRIVACY_MODE: str
7
8
  BATTERY_PASSIVE_WAKE_UPDATE_INTERVAL: int
8
9
  BATTERY_WAKE_UPDATE_INTERVAL: Incomplete
@@ -12,7 +12,7 @@ from reolink_aio.api import Chime as Chime, Host as Host
12
12
  @dataclass(frozen=True, kw_only=True)
13
13
  class ReolinkEntityDescription(EntityDescription):
14
14
  cmd_key: str | None = ...
15
- cmd_id: int | None = ...
15
+ cmd_id: int | list[int] | None = ...
16
16
  always_available: bool = ...
17
17
 
18
18
  @dataclass(frozen=True, kw_only=True)
@@ -1,5 +1,5 @@
1
1
  import asyncio
2
- from .const import BATTERY_ALL_WAKE_UPDATE_INTERVAL as BATTERY_ALL_WAKE_UPDATE_INTERVAL, BATTERY_PASSIVE_WAKE_UPDATE_INTERVAL as BATTERY_PASSIVE_WAKE_UPDATE_INTERVAL, BATTERY_WAKE_UPDATE_INTERVAL as BATTERY_WAKE_UPDATE_INTERVAL, CONF_BC_PORT as CONF_BC_PORT, CONF_SUPPORTS_PRIVACY_MODE as CONF_SUPPORTS_PRIVACY_MODE, CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
2
+ from .const import BATTERY_ALL_WAKE_UPDATE_INTERVAL as BATTERY_ALL_WAKE_UPDATE_INTERVAL, BATTERY_PASSIVE_WAKE_UPDATE_INTERVAL as BATTERY_PASSIVE_WAKE_UPDATE_INTERVAL, BATTERY_WAKE_UPDATE_INTERVAL as BATTERY_WAKE_UPDATE_INTERVAL, CONF_BC_ONLY as CONF_BC_ONLY, CONF_BC_PORT as CONF_BC_PORT, CONF_SUPPORTS_PRIVACY_MODE as CONF_SUPPORTS_PRIVACY_MODE, CONF_USE_HTTPS as CONF_USE_HTTPS, DOMAIN as DOMAIN
3
3
  from .exceptions import PasswordIncompatible as PasswordIncompatible, ReolinkSetupException as ReolinkSetupException, ReolinkWebhookException as ReolinkWebhookException, UserNotAdmin as UserNotAdmin
4
4
  from .util import ReolinkConfigEntry as ReolinkConfigEntry, get_store as get_store
5
5
  from _typeshed import Incomplete
@@ -9,5 +9,7 @@ from reolink_aio.api import Chime as Chime
9
9
 
10
10
  ATTR_RINGTONE: str
11
11
 
12
+ @raise_translated_error
13
+ async def _async_play_chime(service_call: ServiceCall) -> None: ...
12
14
  @callback
13
15
  def async_setup_services(hass: HomeAssistant) -> None: ...
@@ -1,11 +1,12 @@
1
- import httpx
1
+ import aiohttp
2
2
  from .const import XML_MIME_TYPES as XML_MIME_TYPES
3
3
  from _typeshed import Incomplete
4
4
  from homeassistant.core import HomeAssistant as HomeAssistant
5
5
  from homeassistant.helpers import template as template
6
- from homeassistant.helpers.httpx_client import create_async_httpx_client as create_async_httpx_client
6
+ from homeassistant.helpers.aiohttp_client import async_get_clientsession as async_get_clientsession
7
7
  from homeassistant.helpers.json import json_dumps as json_dumps
8
8
  from homeassistant.util.ssl import SSLCipherList as SSLCipherList
9
+ from multidict import CIMultiDictProxy
9
10
 
10
11
  DEFAULT_TIMEOUT: int
11
12
  _LOGGER: Incomplete
@@ -15,21 +16,22 @@ class RestData:
15
16
  _method: Incomplete
16
17
  _resource: Incomplete
17
18
  _encoding: Incomplete
18
- _auth: Incomplete
19
+ _auth: aiohttp.BasicAuth | aiohttp.DigestAuthMiddleware | None
19
20
  _headers: Incomplete
20
21
  _params: Incomplete
21
22
  _request_data: Incomplete
22
23
  _timeout: Incomplete
23
24
  _verify_ssl: Incomplete
24
25
  _ssl_cipher_list: Incomplete
25
- _async_client: httpx.AsyncClient | None
26
+ _session: aiohttp.ClientSession | None
26
27
  data: str | None
27
28
  last_exception: Exception | None
28
- headers: httpx.Headers | None
29
- def __init__(self, hass: HomeAssistant, method: str, resource: str, encoding: str, auth: httpx.DigestAuth | tuple[str, str] | None, headers: dict[str, str] | None, params: dict[str, str] | None, data: str | None, verify_ssl: bool, ssl_cipher_list: str, timeout: int = ...) -> None: ...
29
+ headers: CIMultiDictProxy[str] | None
30
+ def __init__(self, hass: HomeAssistant, method: str, resource: str, encoding: str, auth: aiohttp.DigestAuthMiddleware | aiohttp.BasicAuth | tuple[str, str] | None, headers: dict[str, str] | None, params: dict[str, str] | None, data: str | None, verify_ssl: bool, ssl_cipher_list: str, timeout: int = ...) -> None: ...
30
31
  def set_payload(self, payload: str) -> None: ...
31
32
  @property
32
33
  def url(self) -> str: ...
33
34
  def set_url(self, url: str) -> None: ...
35
+ def _is_expected_content_type(self, content_type: str) -> bool: ...
34
36
  def data_without_xml(self) -> str | None: ...
35
37
  async def async_update(self, log_errors: bool = True) -> None: ...
@@ -5,6 +5,7 @@ from homeassistant.config_entries import ConfigEntry as ConfigEntry
5
5
  from homeassistant.const import CONF_HOST as CONF_HOST, CONF_PORT as CONF_PORT, Platform as Platform
6
6
  from homeassistant.core import HomeAssistant as HomeAssistant
7
7
  from homeassistant.exceptions import ConfigEntryNotReady as ConfigEntryNotReady
8
+ from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC as CONNECTION_NETWORK_MAC
8
9
 
9
10
  PLATFORMS: Incomplete
10
11
  _LOGGER: Incomplete
@@ -2,9 +2,10 @@ from .const import DOMAIN as DOMAIN, RUSSOUND_RIO_EXCEPTIONS as RUSSOUND_RIO_EXC
2
2
  from _typeshed import Incomplete
3
3
  from aiorussound import Controller as Controller, RussoundClient as RussoundClient
4
4
  from aiorussound.models import CallbackType
5
+ from aiorussound.rio import ZoneControlSurface as ZoneControlSurface
5
6
  from collections.abc import Awaitable, Callable as Callable, Coroutine
6
7
  from homeassistant.exceptions import HomeAssistantError as HomeAssistantError
7
- from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC as CONNECTION_NETWORK_MAC, DeviceInfo as DeviceInfo
8
+ from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
8
9
  from homeassistant.helpers.entity import Entity as Entity
9
10
  from typing import Any, Concatenate
10
11
 
@@ -17,8 +18,11 @@ class RussoundBaseEntity(Entity):
17
18
  _controller: Incomplete
18
19
  _primary_mac_address: Incomplete
19
20
  _device_identifier: Incomplete
21
+ _zone_id: Incomplete
20
22
  _attr_device_info: Incomplete
21
- def __init__(self, controller: Controller) -> None: ...
23
+ def __init__(self, controller: Controller, zone_id: int | None = None) -> None: ...
24
+ @property
25
+ def _zone(self) -> ZoneControlSurface: ...
22
26
  _attr_available: Incomplete
23
27
  async def _state_update_callback(self, _client: RussoundClient, _callback_type: CallbackType) -> None: ...
24
28
  async def async_added_to_hass(self) -> None: ...
@@ -4,7 +4,6 @@ from .entity import RussoundBaseEntity as RussoundBaseEntity, command as command
4
4
  from _typeshed import Incomplete
5
5
  from aiorussound import Controller as Controller
6
6
  from aiorussound.models import Source as Source
7
- from aiorussound.rio import ZoneControlSurface as ZoneControlSurface
8
7
  from homeassistant.components.media_player import MediaPlayerDeviceClass as MediaPlayerDeviceClass, MediaPlayerEntity as MediaPlayerEntity, MediaPlayerEntityFeature as MediaPlayerEntityFeature, MediaPlayerState as MediaPlayerState, MediaType as MediaType
9
8
  from homeassistant.core import HomeAssistant as HomeAssistant
10
9
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
@@ -18,14 +17,11 @@ class RussoundZoneDevice(RussoundBaseEntity, MediaPlayerEntity):
18
17
  _attr_device_class: Incomplete
19
18
  _attr_media_content_type: Incomplete
20
19
  _attr_supported_features: Incomplete
21
- _zone_id: Incomplete
22
- _sources: Incomplete
23
20
  _attr_name: Incomplete
21
+ _sources: Incomplete
24
22
  _attr_unique_id: Incomplete
25
23
  def __init__(self, controller: Controller, zone_id: int, sources: dict[int, Source]) -> None: ...
26
24
  @property
27
- def _zone(self) -> ZoneControlSurface: ...
28
- @property
29
25
  def _source(self) -> Source: ...
30
26
  @property
31
27
  def state(self) -> MediaPlayerState | None: ...
@@ -0,0 +1,30 @@
1
+ from . import RussoundConfigEntry as RussoundConfigEntry
2
+ from .entity import RussoundBaseEntity as RussoundBaseEntity, command as command
3
+ from _typeshed import Incomplete
4
+ from aiorussound.rio import Controller as Controller, ZoneControlSurface as ZoneControlSurface
5
+ from collections.abc import Awaitable, Callable as Callable
6
+ from dataclasses import dataclass
7
+ from homeassistant.components.number import NumberEntity as NumberEntity, NumberEntityDescription as NumberEntityDescription
8
+ from homeassistant.const import EntityCategory as EntityCategory
9
+ from homeassistant.core import HomeAssistant as HomeAssistant
10
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
+
12
+ PARALLEL_UPDATES: int
13
+
14
+ @dataclass(frozen=True, kw_only=True)
15
+ class RussoundZoneNumberEntityDescription(NumberEntityDescription):
16
+ value_fn: Callable[[ZoneControlSurface], float]
17
+ set_value_fn: Callable[[ZoneControlSurface, float], Awaitable[None]]
18
+
19
+ CONTROL_ENTITIES: tuple[RussoundZoneNumberEntityDescription, ...]
20
+
21
+ async def async_setup_entry(hass: HomeAssistant, entry: RussoundConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
22
+
23
+ class RussoundNumberEntity(RussoundBaseEntity, NumberEntity):
24
+ entity_description: RussoundZoneNumberEntityDescription
25
+ _attr_unique_id: Incomplete
26
+ def __init__(self, controller: Controller, zone_id: int, description: RussoundZoneNumberEntityDescription) -> None: ...
27
+ @property
28
+ def native_value(self) -> float: ...
29
+ @command
30
+ async def async_set_native_value(self, value: float) -> None: ...
@@ -0,0 +1,33 @@
1
+ from . import RussoundConfigEntry as RussoundConfigEntry
2
+ from .entity import RussoundBaseEntity as RussoundBaseEntity, command as command
3
+ from _typeshed import Incomplete
4
+ from aiorussound.rio import Controller as Controller, ZoneControlSurface as ZoneControlSurface
5
+ from collections.abc import Awaitable, 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.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
11
+ from typing import Any
12
+
13
+ PARALLEL_UPDATES: int
14
+
15
+ @dataclass(frozen=True, kw_only=True)
16
+ class RussoundZoneSwitchEntityDescription(SwitchEntityDescription):
17
+ value_fn: Callable[[ZoneControlSurface], bool]
18
+ set_value_fn: Callable[[ZoneControlSurface, bool], Awaitable[None]]
19
+
20
+ CONTROL_ENTITIES: tuple[RussoundZoneSwitchEntityDescription, ...]
21
+
22
+ async def async_setup_entry(hass: HomeAssistant, entry: RussoundConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
23
+
24
+ class RussoundSwitchEntity(RussoundBaseEntity, SwitchEntity):
25
+ entity_description: RussoundZoneSwitchEntityDescription
26
+ _attr_unique_id: Incomplete
27
+ def __init__(self, controller: Controller, zone_id: int, description: RussoundZoneSwitchEntityDescription) -> None: ...
28
+ @property
29
+ def is_on(self) -> bool: ...
30
+ @command
31
+ async def async_turn_on(self, **kwargs: Any) -> None: ...
32
+ @command
33
+ async def async_turn_off(self, **kwargs: Any) -> None: ...
@@ -1,6 +1,6 @@
1
1
  from .const import BLOCK_EXPECTED_SLEEP_PERIOD as BLOCK_EXPECTED_SLEEP_PERIOD, BLOCK_WRONG_SLEEP_PERIOD as BLOCK_WRONG_SLEEP_PERIOD, CONF_COAP_PORT as CONF_COAP_PORT, CONF_SLEEP_PERIOD as CONF_SLEEP_PERIOD, DOMAIN as DOMAIN, FIRMWARE_UNSUPPORTED_ISSUE_ID as FIRMWARE_UNSUPPORTED_ISSUE_ID, LOGGER as LOGGER, MODELS_WITH_WRONG_SLEEP_PERIOD as MODELS_WITH_WRONG_SLEEP_PERIOD, PUSH_UPDATE_ISSUE_ID as PUSH_UPDATE_ISSUE_ID
2
2
  from .coordinator import ShellyBlockCoordinator as ShellyBlockCoordinator, ShellyConfigEntry as ShellyConfigEntry, ShellyEntryData as ShellyEntryData, ShellyRestCoordinator as ShellyRestCoordinator, ShellyRpcCoordinator as ShellyRpcCoordinator, ShellyRpcPollingCoordinator as ShellyRpcPollingCoordinator
3
- from .repairs import async_manage_ble_scanner_firmware_unsupported_issue as async_manage_ble_scanner_firmware_unsupported_issue
3
+ from .repairs import async_manage_ble_scanner_firmware_unsupported_issue as async_manage_ble_scanner_firmware_unsupported_issue, async_manage_outbound_websocket_incorrectly_enabled_issue as async_manage_outbound_websocket_incorrectly_enabled_issue
4
4
  from .utils import async_create_issue_unsupported_firmware as async_create_issue_unsupported_firmware, get_coap_context as get_coap_context, get_device_entry_gen as get_device_entry_gen, get_http_port as get_http_port, get_rpc_scripts_event_types as get_rpc_scripts_event_types, get_ws_context as get_ws_context, remove_stale_blu_trv_devices as remove_stale_blu_trv_devices
5
5
  from _typeshed import Incomplete
6
6
  from homeassistant.components.bluetooth import async_remove_scanner as async_remove_scanner
@@ -67,6 +67,7 @@ PUSH_UPDATE_ISSUE_ID: str
67
67
  NOT_CALIBRATED_ISSUE_ID: str
68
68
  FIRMWARE_UNSUPPORTED_ISSUE_ID: str
69
69
  BLE_SCANNER_FIRMWARE_UNSUPPORTED_ISSUE_ID: str
70
+ OUTBOUND_WEBSOCKET_INCORRECTLY_ENABLED_ISSUE_ID: str
70
71
  GAS_VALVE_OPEN_STATES: Incomplete
71
72
  OTA_BEGIN: str
72
73
  OTA_ERROR: str
@@ -1,19 +1,30 @@
1
- from .const import BLEScannerMode as BLEScannerMode, BLE_SCANNER_FIRMWARE_UNSUPPORTED_ISSUE_ID as BLE_SCANNER_FIRMWARE_UNSUPPORTED_ISSUE_ID, BLE_SCANNER_MIN_FIRMWARE as BLE_SCANNER_MIN_FIRMWARE, CONF_BLE_SCANNER_MODE as CONF_BLE_SCANNER_MODE, DOMAIN as DOMAIN
1
+ from .const import BLEScannerMode as BLEScannerMode, BLE_SCANNER_FIRMWARE_UNSUPPORTED_ISSUE_ID as BLE_SCANNER_FIRMWARE_UNSUPPORTED_ISSUE_ID, BLE_SCANNER_MIN_FIRMWARE as BLE_SCANNER_MIN_FIRMWARE, CONF_BLE_SCANNER_MODE as CONF_BLE_SCANNER_MODE, DOMAIN as DOMAIN, OUTBOUND_WEBSOCKET_INCORRECTLY_ENABLED_ISSUE_ID as OUTBOUND_WEBSOCKET_INCORRECTLY_ENABLED_ISSUE_ID
2
2
  from .coordinator import ShellyConfigEntry as ShellyConfigEntry
3
+ from .utils import get_rpc_ws_url as get_rpc_ws_url
3
4
  from _typeshed import Incomplete
4
5
  from aioshelly.rpc_device import RpcDevice as RpcDevice
5
6
  from homeassistant import data_entry_flow as data_entry_flow
6
- from homeassistant.components.repairs import RepairsFlow as RepairsFlow
7
+ from homeassistant.components.repairs import ConfirmRepairFlow as ConfirmRepairFlow, RepairsFlow as RepairsFlow
7
8
  from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
8
9
 
9
10
  @callback
10
11
  def async_manage_ble_scanner_firmware_unsupported_issue(hass: HomeAssistant, entry: ShellyConfigEntry) -> None: ...
12
+ @callback
13
+ def async_manage_outbound_websocket_incorrectly_enabled_issue(hass: HomeAssistant, entry: ShellyConfigEntry) -> None: ...
11
14
 
12
- class BleScannerFirmwareUpdateFlow(RepairsFlow):
15
+ class ShellyRpcRepairsFlow(RepairsFlow):
13
16
  _device: Incomplete
14
17
  def __init__(self, device: RpcDevice) -> None: ...
15
18
  async def async_step_init(self, user_input: dict[str, str] | None = None) -> data_entry_flow.FlowResult: ...
16
19
  async def async_step_confirm(self, user_input: dict[str, str] | None = None) -> data_entry_flow.FlowResult: ...
20
+ async def _async_step_confirm(self) -> data_entry_flow.FlowResult: ...
21
+
22
+ class BleScannerFirmwareUpdateFlow(ShellyRpcRepairsFlow):
23
+ async def _async_step_confirm(self) -> data_entry_flow.FlowResult: ...
17
24
  async def async_step_update_firmware(self, user_input: dict[str, str] | None = None) -> data_entry_flow.FlowResult: ...
18
25
 
26
+ class DisableOutboundWebSocketFlow(ShellyRpcRepairsFlow):
27
+ async def _async_step_confirm(self) -> data_entry_flow.FlowResult: ...
28
+ async def async_step_disable_outbound_websocket(self, user_input: dict[str, str] | None = None) -> data_entry_flow.FlowResult: ...
29
+
19
30
  async def async_create_fix_flow(hass: HomeAssistant, issue_id: str, data: dict[str, str] | None) -> RepairsFlow: ...
@@ -36,6 +36,7 @@ class ShoppingData:
36
36
  async def async_add(self, name: str | None, complete: bool = False, context: Context | None = None) -> dict[str, JsonValueType]: ...
37
37
  async def async_remove(self, item_id: str, context: Context | None = None) -> dict[str, JsonValueType] | None: ...
38
38
  async def async_remove_items(self, item_ids: set[str], context: Context | None = None) -> list[dict[str, JsonValueType]]: ...
39
+ async def async_complete(self, name: str, context: Context | None = None) -> list[dict[str, JsonValueType]]: ...
39
40
  async def async_update(self, item_id: str | None, info: dict[str, Any], context: Context | None = None) -> dict[str, JsonValueType]: ...
40
41
  async def async_clear_completed(self, context: Context | None = None) -> None: ...
41
42
  async def async_update_list(self, info: dict[str, JsonValueType], context: Context | None = None) -> list[dict[str, JsonValueType]]: ...
@@ -1,9 +1,10 @@
1
- from . import DOMAIN as DOMAIN, EVENT_SHOPPING_LIST_UPDATED as EVENT_SHOPPING_LIST_UPDATED
1
+ from . import DOMAIN as DOMAIN, EVENT_SHOPPING_LIST_UPDATED as EVENT_SHOPPING_LIST_UPDATED, NoMatchingShoppingListItem as NoMatchingShoppingListItem
2
2
  from _typeshed import Incomplete
3
3
  from homeassistant.core import HomeAssistant as HomeAssistant
4
4
  from homeassistant.helpers import intent as intent
5
5
 
6
6
  INTENT_ADD_ITEM: str
7
+ INTENT_COMPLETE_ITEM: str
7
8
  INTENT_LAST_ITEMS: str
8
9
 
9
10
  async def async_setup_intents(hass: HomeAssistant) -> None: ...
@@ -15,6 +16,13 @@ class AddItemIntent(intent.IntentHandler):
15
16
  platforms: Incomplete
16
17
  async def async_handle(self, intent_obj: intent.Intent) -> intent.IntentResponse: ...
17
18
 
19
+ class CompleteItemIntent(intent.IntentHandler):
20
+ intent_type = INTENT_COMPLETE_ITEM
21
+ description: str
22
+ slot_schema: Incomplete
23
+ platforms: Incomplete
24
+ async def async_handle(self, intent_obj: intent.Intent) -> intent.IntentResponse: ...
25
+
18
26
  class ListTopItemsIntent(intent.IntentHandler):
19
27
  intent_type = INTENT_LAST_ITEMS
20
28
  description: str
@@ -29,6 +29,4 @@ class SqueezeboxButtonEntity(SqueezeboxEntity, ButtonEntity):
29
29
  entity_description: SqueezeboxButtonEntityDescription
30
30
  _attr_unique_id: Incomplete
31
31
  def __init__(self, coordinator: SqueezeBoxPlayerUpdateCoordinator, entity_description: SqueezeboxButtonEntityDescription) -> None: ...
32
- @property
33
- def available(self) -> bool: ...
34
32
  async def async_press(self) -> None: ...
@@ -10,6 +10,8 @@ class SqueezeboxEntity(CoordinatorEntity[SqueezeBoxPlayerUpdateCoordinator]):
10
10
  _player: Incomplete
11
11
  _attr_device_info: Incomplete
12
12
  def __init__(self, coordinator: SqueezeBoxPlayerUpdateCoordinator) -> None: ...
13
+ @property
14
+ def available(self) -> bool: ...
13
15
 
14
16
  class LMSStatusEntity(CoordinatorEntity[LMSStatusDataUpdateCoordinator]):
15
17
  _attr_has_entity_name: bool
@@ -54,8 +54,6 @@ class SqueezeBoxMediaPlayerEntity(SqueezeboxEntity, MediaPlayerEntity):
54
54
  @property
55
55
  def browse_limit(self) -> int: ...
56
56
  @property
57
- def available(self) -> bool: ...
58
- @property
59
57
  def extra_state_attributes(self) -> dict[str, Any]: ...
60
58
  @property
61
59
  def state(self) -> MediaPlayerState | None: ...
@@ -33,7 +33,7 @@ class Stream:
33
33
  def __init__(self, hass: HomeAssistant, source: str, pyav_options: dict[str, str], stream_settings: StreamSettings, dynamic_stream_settings: DynamicStreamSettings, stream_label: str | None = None) -> None: ...
34
34
  def endpoint_url(self, fmt: str) -> str: ...
35
35
  def outputs(self) -> Mapping[str, StreamOutput]: ...
36
- def add_provider(self, fmt: str, timeout: int = ...) -> StreamOutput: ...
36
+ def add_provider(self, fmt: str, timeout: int | None = None) -> StreamOutput: ...
37
37
  async def remove_provider(self, provider: StreamOutput) -> None: ...
38
38
  def check_idle(self) -> None: ...
39
39
  @property
@@ -13,6 +13,7 @@ SEGMENT_CONTAINER_FORMAT: Final[str]
13
13
  RECORDER_CONTAINER_FORMAT: Final[str]
14
14
  AUDIO_CODECS: Incomplete
15
15
  FORMAT_CONTENT_TYPE: Incomplete
16
+ OUTPUT_STARTUP_TIMEOUT: int
16
17
  OUTPUT_IDLE_TIMEOUT: int
17
18
  NUM_PLAYLIST_SEGMENTS: int
18
19
  MAX_SEGMENTS: int
@@ -75,10 +75,11 @@ class Segment:
75
75
  class IdleTimer:
76
76
  _hass: Incomplete
77
77
  _timeout: Incomplete
78
+ _startup_timeout: Incomplete
78
79
  _callback: Incomplete
79
80
  _unsub: CALLBACK_TYPE | None
80
81
  idle: bool
81
- def __init__(self, hass: HomeAssistant, timeout: int, idle_callback: Callable[[], Coroutine[Any, Any, None]]) -> None: ...
82
+ def __init__(self, hass: HomeAssistant, timeout: int, idle_callback: Callable[[], Coroutine[Any, Any, None]], startup_timeout: int | None = None) -> None: ...
82
83
  def start(self) -> None: ...
83
84
  def awake(self) -> None: ...
84
85
  def clear(self) -> None: ...
@@ -7,6 +7,7 @@ from homeassistant.core import HomeAssistant as HomeAssistant
7
7
  from homeassistant.helpers.entity_component import EntityComponent as EntityComponent
8
8
  from homeassistant.helpers.typing import ConfigType as ConfigType
9
9
 
10
+ PLATFORMS: Incomplete
10
11
  CONFIG_SCHEMA: Incomplete
11
12
  _LOGGER: Incomplete
12
13
 
@@ -0,0 +1,36 @@
1
+ from .const import DOMAIN as DOMAIN, SIGNAL_EVENTS_CHANGED as SIGNAL_EVENTS_CHANGED
2
+ from .entity import Sun as Sun, SunConfigEntry as SunConfigEntry
3
+ from _typeshed import Incomplete
4
+ from collections.abc import Callable as Callable
5
+ from dataclasses import dataclass
6
+ from homeassistant.components.binary_sensor import BinarySensorEntity as BinarySensorEntity, BinarySensorEntityDescription as BinarySensorEntityDescription
7
+ from homeassistant.const import EntityCategory as EntityCategory
8
+ from homeassistant.core import HomeAssistant as HomeAssistant
9
+ from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
10
+ from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
11
+ from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
12
+
13
+ ENTITY_ID_BINARY_SENSOR_FORMAT: Incomplete
14
+
15
+ @dataclass(kw_only=True, frozen=True)
16
+ class SunBinarySensorEntityDescription(BinarySensorEntityDescription):
17
+ value_fn: Callable[[Sun], bool | None]
18
+ signal: str
19
+
20
+ BINARY_SENSOR_TYPES: tuple[SunBinarySensorEntityDescription, ...]
21
+
22
+ async def async_setup_entry(hass: HomeAssistant, entry: SunConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...
23
+
24
+ class SunBinarySensor(BinarySensorEntity):
25
+ _attr_has_entity_name: bool
26
+ _attr_should_poll: bool
27
+ _attr_entity_category: Incomplete
28
+ entity_description: SunBinarySensorEntityDescription
29
+ entity_id: Incomplete
30
+ _attr_unique_id: Incomplete
31
+ sun: Incomplete
32
+ _attr_device_info: Incomplete
33
+ def __init__(self, sun: Sun, entity_description: SunBinarySensorEntityDescription, entry_id: str) -> None: ...
34
+ @property
35
+ def is_on(self) -> bool | None: ...
36
+ async def async_added_to_hass(self) -> None: ...
@@ -2,12 +2,22 @@ from _typeshed import Incomplete
2
2
  from datetime import timedelta
3
3
  from homeassistant.const import CONF_CONDITION as CONF_CONDITION, SUN_EVENT_SUNRISE as SUN_EVENT_SUNRISE, SUN_EVENT_SUNSET as SUN_EVENT_SUNSET
4
4
  from homeassistant.core import HomeAssistant as HomeAssistant
5
- from homeassistant.helpers.condition import ConditionCheckerType as ConditionCheckerType, condition_trace_set_result as condition_trace_set_result, condition_trace_update_result as condition_trace_update_result, trace_condition_function as trace_condition_function
5
+ from homeassistant.helpers.condition import Condition as Condition, ConditionCheckerType as ConditionCheckerType, condition_trace_set_result as condition_trace_set_result, condition_trace_update_result as condition_trace_update_result, trace_condition_function as trace_condition_function
6
6
  from homeassistant.helpers.sun import get_astral_event_date as get_astral_event_date
7
7
  from homeassistant.helpers.typing import ConfigType as ConfigType, TemplateVarsType as TemplateVarsType
8
8
 
9
9
  _CONDITION_SCHEMA: Incomplete
10
10
 
11
- async def async_validate_condition_config(hass: HomeAssistant, config: ConfigType) -> ConfigType: ...
12
11
  def sun(hass: HomeAssistant, before: str | None = None, after: str | None = None, before_offset: timedelta | None = None, after_offset: timedelta | None = None) -> bool: ...
13
- def async_condition_from_config(config: ConfigType) -> ConditionCheckerType: ...
12
+
13
+ class SunCondition(Condition):
14
+ _config: Incomplete
15
+ _hass: Incomplete
16
+ def __init__(self, hass: HomeAssistant, config: ConfigType) -> None: ...
17
+ @classmethod
18
+ async def async_validate_condition_config(cls, hass: HomeAssistant, config: ConfigType) -> ConfigType: ...
19
+ async def async_condition_from_config(self) -> ConditionCheckerType: ...
20
+
21
+ CONDITIONS: dict[str, type[Condition]]
22
+
23
+ async def async_get_conditions(hass: HomeAssistant) -> dict[str, type[Condition]]: ...
@@ -10,6 +10,7 @@ from homeassistant.core import HomeAssistant as HomeAssistant
10
10
  from homeassistant.helpers.device_registry import DeviceEntryType as DeviceEntryType, DeviceInfo as DeviceInfo
11
11
  from homeassistant.helpers.dispatcher import async_dispatcher_connect as async_dispatcher_connect
12
12
  from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
13
+ from homeassistant.helpers.issue_registry import IssueSeverity as IssueSeverity, async_create_issue as async_create_issue, async_delete_issue as async_delete_issue
13
14
  from homeassistant.helpers.typing import StateType as StateType
14
15
 
15
16
  ENTITY_ID_SENSOR_FORMAT: Incomplete
@@ -36,3 +37,4 @@ class SunSensor(SensorEntity):
36
37
  @property
37
38
  def native_value(self) -> StateType | datetime: ...
38
39
  async def async_added_to_hass(self) -> None: ...
40
+ async def async_will_remove_from_hass(self) -> None: ...
@@ -1,3 +1,4 @@
1
+ from .const import DOMAIN as DOMAIN
1
2
  from _typeshed import Incomplete
2
3
  from homeassistant.components.light import ColorMode as ColorMode, LightEntity as LightEntity
3
4
  from homeassistant.const import ATTR_ENTITY_ID as ATTR_ENTITY_ID, CONF_ENTITY_ID as CONF_ENTITY_ID, CONF_NAME as CONF_NAME, SERVICE_TURN_OFF as SERVICE_TURN_OFF, SERVICE_TURN_ON as SERVICE_TURN_ON, STATE_ON as STATE_ON, STATE_UNAVAILABLE as STATE_UNAVAILABLE
@@ -1,3 +1,4 @@
1
+ from .const import DOMAIN as DOMAIN
1
2
  from _typeshed import Incomplete
2
3
  from homeassistant.components.homeassistant import exposed_entities as exposed_entities
3
4
  from homeassistant.const import ATTR_ENTITY_ID as ATTR_ENTITY_ID, SERVICE_TURN_OFF as SERVICE_TURN_OFF, SERVICE_TURN_ON as SERVICE_TURN_ON, STATE_ON as STATE_ON, STATE_UNAVAILABLE as STATE_UNAVAILABLE
@@ -1,16 +1,19 @@
1
1
  from .common import SynoApi as SynoApi, raise_config_entry_auth_error as raise_config_entry_auth_error
2
2
  from .const import CONF_BACKUP_PATH as CONF_BACKUP_PATH, CONF_BACKUP_SHARE as CONF_BACKUP_SHARE, DATA_BACKUP_AGENT_LISTENERS as DATA_BACKUP_AGENT_LISTENERS, DEFAULT_VERIFY_SSL as DEFAULT_VERIFY_SSL, DOMAIN as DOMAIN, EXCEPTION_DETAILS as EXCEPTION_DETAILS, EXCEPTION_UNKNOWN as EXCEPTION_UNKNOWN, PLATFORMS as PLATFORMS, SYNOLOGY_AUTH_FAILED_EXCEPTIONS as SYNOLOGY_AUTH_FAILED_EXCEPTIONS, SYNOLOGY_CONNECTION_EXCEPTIONS as SYNOLOGY_CONNECTION_EXCEPTIONS
3
3
  from .coordinator import SynologyDSMCameraUpdateCoordinator as SynologyDSMCameraUpdateCoordinator, SynologyDSMCentralUpdateCoordinator as SynologyDSMCentralUpdateCoordinator, SynologyDSMConfigEntry as SynologyDSMConfigEntry, SynologyDSMData as SynologyDSMData, SynologyDSMSwitchUpdateCoordinator as SynologyDSMSwitchUpdateCoordinator
4
- from .service import async_setup_services as async_setup_services
4
+ from .services import async_setup_services as async_setup_services
5
5
  from _typeshed import Incomplete
6
6
  from homeassistant.const import CONF_MAC as CONF_MAC, CONF_SCAN_INTERVAL as CONF_SCAN_INTERVAL, CONF_VERIFY_SSL as CONF_VERIFY_SSL
7
7
  from homeassistant.core import HomeAssistant as HomeAssistant
8
8
  from homeassistant.exceptions import ConfigEntryNotReady as ConfigEntryNotReady
9
9
  from homeassistant.helpers import device_registry as dr
10
+ from homeassistant.helpers.typing import ConfigType as ConfigType
10
11
  from synology_dsm.api.surveillance_station.camera import SynoCamera as SynoCamera
11
12
 
12
13
  _LOGGER: Incomplete
14
+ CONFIG_SCHEMA: Incomplete
13
15
 
16
+ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
14
17
  async def async_setup_entry(hass: HomeAssistant, entry: SynologyDSMConfigEntry) -> bool: ...
15
18
  async def async_unload_entry(hass: HomeAssistant, entry: SynologyDSMConfigEntry) -> bool: ...
16
19
  async def _async_update_listener(hass: HomeAssistant, entry: SynologyDSMConfigEntry) -> None: ...
@@ -1,8 +1,10 @@
1
1
  from .const import CONF_SERIAL as CONF_SERIAL, DOMAIN as DOMAIN, SERVICES as SERVICES, SERVICE_REBOOT as SERVICE_REBOOT, SERVICE_SHUTDOWN as SERVICE_SHUTDOWN
2
2
  from .coordinator import SynologyDSMConfigEntry as SynologyDSMConfigEntry
3
3
  from _typeshed import Incomplete
4
- from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall
4
+ from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, callback as callback
5
5
 
6
6
  LOGGER: Incomplete
7
7
 
8
- async def async_setup_services(hass: HomeAssistant) -> None: ...
8
+ async def _service_handler(call: ServiceCall) -> None: ...
9
+ @callback
10
+ def async_setup_services(hass: HomeAssistant) -> None: ...
@@ -13,6 +13,8 @@ PARALLEL_UPDATES: int
13
13
  @dataclass(frozen=True, kw_only=True)
14
14
  class TedeeBinarySensorEntityDescription(BinarySensorEntityDescription):
15
15
  is_on_fn: Callable[[TedeeLock], bool | None]
16
+ supported_fn: Callable[[TedeeLock], bool] = ...
17
+ available_fn: Callable[[TedeeLock], bool] = ...
16
18
 
17
19
  ENTITIES: tuple[TedeeBinarySensorEntityDescription, ...]
18
20
 
@@ -22,3 +24,5 @@ class TedeeBinarySensorEntity(TedeeDescriptionEntity, BinarySensorEntity):
22
24
  entity_description: TedeeBinarySensorEntityDescription
23
25
  @property
24
26
  def is_on(self) -> bool | None: ...
27
+ @property
28
+ def available(self) -> bool: ...