homeassistant-stubs 2025.6.3__py3-none-any.whl → 2025.7.0b0__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 (318) 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/airthings/__init__.pyi +3 -5
  7. homeassistant-stubs/components/airthings/coordinator.pyi +13 -0
  8. homeassistant-stubs/components/airthings/sensor.pyi +5 -4
  9. homeassistant-stubs/components/alexa_devices/binary_sensor.pyi +2 -1
  10. homeassistant-stubs/components/alexa_devices/sensor.pyi +29 -0
  11. homeassistant-stubs/components/altruist/__init__.pyi +9 -0
  12. homeassistant-stubs/components/altruist/config_flow.pyi +15 -0
  13. homeassistant-stubs/components/altruist/const.pyi +2 -0
  14. homeassistant-stubs/components/altruist/coordinator.pyi +19 -0
  15. homeassistant-stubs/components/altruist/sensor.pyi +34 -0
  16. homeassistant-stubs/components/amcrest/__init__.pyi +4 -7
  17. homeassistant-stubs/components/amcrest/services.pyi +13 -0
  18. homeassistant-stubs/components/analytics/analytics.pyi +3 -1
  19. homeassistant-stubs/components/android_ip_webcam/camera.pyi +4 -0
  20. homeassistant-stubs/components/apcupsd/sensor.pyi +1 -1
  21. homeassistant-stubs/components/assist_satellite/__init__.pyi +2 -2
  22. homeassistant-stubs/components/assist_satellite/entity.pyi +13 -1
  23. homeassistant-stubs/components/axis/hub/hub.pyi +1 -1
  24. homeassistant-stubs/components/camera/__init__.pyi +0 -2
  25. homeassistant-stubs/components/camera/webrtc.pyi +1 -0
  26. homeassistant-stubs/components/climate/__init__.pyi +0 -2
  27. homeassistant-stubs/components/command_line/notify.pyi +1 -2
  28. homeassistant-stubs/components/command_line/sensor.pyi +1 -2
  29. homeassistant-stubs/components/command_line/utils.pyi +5 -2
  30. homeassistant-stubs/components/deconz/logbook.pyi +1 -1
  31. homeassistant-stubs/components/derivative/config_flow.pyi +1 -1
  32. homeassistant-stubs/components/derivative/const.pyi +1 -0
  33. homeassistant-stubs/components/derivative/sensor.pyi +9 -4
  34. homeassistant-stubs/components/device_automation/condition.pyi +17 -4
  35. homeassistant-stubs/components/devolo_home_control/__init__.pyi +3 -2
  36. homeassistant-stubs/components/devolo_home_control/climate.pyi +1 -1
  37. homeassistant-stubs/components/devolo_home_control/const.pyi +0 -1
  38. homeassistant-stubs/components/devolo_home_control/cover.pyi +1 -1
  39. homeassistant-stubs/components/devolo_home_control/entity.pyi +6 -0
  40. homeassistant-stubs/components/devolo_home_control/light.pyi +1 -1
  41. homeassistant-stubs/components/devolo_home_control/siren.pyi +1 -1
  42. homeassistant-stubs/components/devolo_home_network/device_tracker.pyi +2 -0
  43. homeassistant-stubs/components/dnsip/sensor.pyi +3 -2
  44. homeassistant-stubs/components/downloader/__init__.pyi +1 -1
  45. homeassistant-stubs/components/downloader/services.pyi +3 -2
  46. homeassistant-stubs/components/ecovacs/binary_sensor.pyi +4 -4
  47. homeassistant-stubs/components/ecovacs/entity.pyi +9 -12
  48. homeassistant-stubs/components/ecovacs/number.pyi +4 -4
  49. homeassistant-stubs/components/ecovacs/select.pyi +5 -4
  50. homeassistant-stubs/components/ecovacs/sensor.pyi +3 -3
  51. homeassistant-stubs/components/eheimdigital/number.pyi +8 -9
  52. homeassistant-stubs/components/eheimdigital/select.pyi +8 -9
  53. homeassistant-stubs/components/eheimdigital/sensor.pyi +7 -8
  54. homeassistant-stubs/components/eheimdigital/time.pyi +8 -9
  55. homeassistant-stubs/components/elkm1/__init__.pyi +4 -9
  56. homeassistant-stubs/components/elkm1/services.pyi +21 -0
  57. homeassistant-stubs/components/enphase_envoy/__init__.pyi +2 -2
  58. homeassistant-stubs/components/enphase_envoy/config_flow.pyi +1 -1
  59. homeassistant-stubs/components/enphase_envoy/diagnostics.pyi +1 -0
  60. homeassistant-stubs/components/enphase_envoy/sensor.pyi +1 -1
  61. homeassistant-stubs/components/eq3btsmart/climate.pyi +6 -8
  62. homeassistant-stubs/components/eq3btsmart/const.pyi +3 -2
  63. homeassistant-stubs/components/eq3btsmart/entity.pyi +5 -1
  64. homeassistant-stubs/components/eq3btsmart/number.pyi +3 -3
  65. homeassistant-stubs/components/eq3btsmart/switch.pyi +5 -3
  66. homeassistant-stubs/components/esphome/entity.pyi +2 -1
  67. homeassistant-stubs/components/esphome/entry_data.pyi +3 -0
  68. homeassistant-stubs/components/evohome/water_heater.pyi +1 -1
  69. homeassistant-stubs/components/fritz/binary_sensor.pyi +2 -1
  70. homeassistant-stubs/components/fritz/button.pyi +3 -1
  71. homeassistant-stubs/components/fritz/coordinator.pyi +8 -82
  72. homeassistant-stubs/components/fritz/device_tracker.pyi +3 -1
  73. homeassistant-stubs/components/fritz/entity.pyi +2 -1
  74. homeassistant-stubs/components/fritz/helpers.pyi +9 -0
  75. homeassistant-stubs/components/fritz/models.pyi +78 -0
  76. homeassistant-stubs/components/fritz/sensor.pyi +2 -1
  77. homeassistant-stubs/components/fritz/services.pyi +3 -2
  78. homeassistant-stubs/components/fritz/switch.pyi +3 -1
  79. homeassistant-stubs/components/fully_kiosk/services.pyi +7 -2
  80. homeassistant-stubs/components/go2rtc/__init__.pyi +10 -4
  81. homeassistant-stubs/components/google/__init__.pyi +3 -9
  82. homeassistant-stubs/components/google_assistant_sdk/__init__.pyi +3 -7
  83. homeassistant-stubs/components/google_assistant_sdk/services.pyi +13 -0
  84. homeassistant-stubs/components/google_photos/services.pyi +4 -2
  85. homeassistant-stubs/components/google_sheets/__init__.pyi +7 -10
  86. homeassistant-stubs/components/google_sheets/services.pyi +18 -0
  87. homeassistant-stubs/components/group/sensor.pyi +1 -1
  88. homeassistant-stubs/components/habitica/services.pyi +8 -1
  89. homeassistant-stubs/components/here_travel_time/model.pyi +2 -1
  90. homeassistant-stubs/components/home_connect/diagnostics.pyi +2 -0
  91. homeassistant-stubs/components/homeassistant/__init__.pyi +2 -3
  92. homeassistant-stubs/components/homeassistant_hardware/firmware_config_flow.pyi +7 -7
  93. homeassistant-stubs/components/homeassistant_hardware/update.pyi +2 -6
  94. homeassistant-stubs/components/homeassistant_hardware/util.pyi +3 -1
  95. homeassistant-stubs/components/homeassistant_sky_connect/config_flow.pyi +9 -5
  96. homeassistant-stubs/components/homeassistant_yellow/config_flow.pyi +12 -5
  97. homeassistant-stubs/components/homee/config_flow.pyi +1 -0
  98. homeassistant-stubs/components/homee/diagnostics.pyi +12 -0
  99. homeassistant-stubs/components/homee/entity.pyi +3 -2
  100. homeassistant-stubs/components/homee/event.pyi +8 -4
  101. homeassistant-stubs/components/homee/siren.pyi +19 -0
  102. homeassistant-stubs/components/homewizard/select.pyi +35 -0
  103. homeassistant-stubs/components/immich/coordinator.pyi +2 -1
  104. homeassistant-stubs/components/immich/update.pyi +21 -0
  105. homeassistant-stubs/components/isy994/__init__.pyi +3 -1
  106. homeassistant-stubs/components/isy994/services.pyi +0 -2
  107. homeassistant-stubs/components/jewish_calendar/__init__.pyi +1 -1
  108. homeassistant-stubs/components/jewish_calendar/{service.pyi → services.pyi} +2 -1
  109. homeassistant-stubs/components/kaleidescape/__init__.pyi +4 -4
  110. homeassistant-stubs/components/kaleidescape/media_player.pyi +2 -3
  111. homeassistant-stubs/components/kaleidescape/remote.pyi +2 -3
  112. homeassistant-stubs/components/kaleidescape/sensor.pyi +2 -3
  113. homeassistant-stubs/components/lacrosse_view/__init__.pyi +3 -5
  114. homeassistant-stubs/components/lacrosse_view/coordinator.pyi +3 -2
  115. homeassistant-stubs/components/lacrosse_view/diagnostics.pyi +2 -4
  116. homeassistant-stubs/components/lacrosse_view/sensor.pyi +2 -2
  117. homeassistant-stubs/components/lametric/__init__.pyi +3 -4
  118. homeassistant-stubs/components/lametric/button.pyi +2 -4
  119. homeassistant-stubs/components/lametric/coordinator.pyi +3 -2
  120. homeassistant-stubs/components/lametric/diagnostics.pyi +2 -4
  121. homeassistant-stubs/components/lametric/entity.pyi +1 -1
  122. homeassistant-stubs/components/lametric/helpers.pyi +1 -1
  123. homeassistant-stubs/components/lametric/notify.pyi +2 -2
  124. homeassistant-stubs/components/lametric/number.pyi +2 -4
  125. homeassistant-stubs/components/lametric/select.pyi +2 -4
  126. homeassistant-stubs/components/lametric/sensor.pyi +2 -4
  127. homeassistant-stubs/components/lametric/switch.pyi +2 -4
  128. homeassistant-stubs/components/lametric/update.pyi +17 -0
  129. homeassistant-stubs/components/laundrify/__init__.pyi +4 -6
  130. homeassistant-stubs/components/laundrify/binary_sensor.pyi +2 -3
  131. homeassistant-stubs/components/laundrify/coordinator.pyi +1 -0
  132. homeassistant-stubs/components/laundrify/sensor.pyi +2 -3
  133. homeassistant-stubs/components/lcn/__init__.pyi +9 -10
  134. homeassistant-stubs/components/lcn/binary_sensor.pyi +9 -8
  135. homeassistant-stubs/components/lcn/climate.pyi +5 -6
  136. homeassistant-stubs/components/lcn/const.pyi +0 -4
  137. homeassistant-stubs/components/lcn/cover.pyi +6 -7
  138. homeassistant-stubs/components/lcn/entity.pyi +2 -3
  139. homeassistant-stubs/components/lcn/helpers.pyi +15 -5
  140. homeassistant-stubs/components/lcn/light.pyi +6 -7
  141. homeassistant-stubs/components/lcn/scene.pyi +5 -5
  142. homeassistant-stubs/components/lcn/sensor.pyi +7 -7
  143. homeassistant-stubs/components/lcn/services.pyi +5 -4
  144. homeassistant-stubs/components/lcn/switch.pyi +8 -9
  145. homeassistant-stubs/components/lcn/websocket.pyi +12 -13
  146. homeassistant-stubs/components/ld2410_ble/__init__.pyi +4 -6
  147. homeassistant-stubs/components/ld2410_ble/binary_sensor.pyi +2 -4
  148. homeassistant-stubs/components/ld2410_ble/coordinator.pyi +3 -3
  149. homeassistant-stubs/components/ld2410_ble/models.pyi +2 -0
  150. homeassistant-stubs/components/ld2410_ble/sensor.pyi +4 -5
  151. homeassistant-stubs/components/led_ble/__init__.pyi +5 -6
  152. homeassistant-stubs/components/led_ble/light.pyi +3 -4
  153. homeassistant-stubs/components/led_ble/models.pyi +2 -0
  154. homeassistant-stubs/components/lifx/__init__.pyi +4 -5
  155. homeassistant-stubs/components/lifx/binary_sensor.pyi +3 -4
  156. homeassistant-stubs/components/lifx/button.pyi +3 -4
  157. homeassistant-stubs/components/lifx/const.pyi +3 -1
  158. homeassistant-stubs/components/lifx/coordinator.pyi +3 -2
  159. homeassistant-stubs/components/lifx/diagnostics.pyi +3 -4
  160. homeassistant-stubs/components/lifx/light.pyi +3 -4
  161. homeassistant-stubs/components/lifx/manager.pyi +2 -2
  162. homeassistant-stubs/components/lifx/migration.pyi +3 -3
  163. homeassistant-stubs/components/lifx/select.pyi +3 -4
  164. homeassistant-stubs/components/lifx/sensor.pyi +3 -4
  165. homeassistant-stubs/components/lifx/util.pyi +3 -3
  166. homeassistant-stubs/components/linear_garage_door/__init__.pyi +4 -5
  167. homeassistant-stubs/components/linear_garage_door/coordinator.pyi +3 -2
  168. homeassistant-stubs/components/linear_garage_door/cover.pyi +2 -4
  169. homeassistant-stubs/components/linear_garage_door/diagnostics.pyi +2 -4
  170. homeassistant-stubs/components/linear_garage_door/light.pyi +2 -4
  171. homeassistant-stubs/components/lookin/__init__.pyi +4 -5
  172. homeassistant-stubs/components/lookin/climate.pyi +3 -4
  173. homeassistant-stubs/components/lookin/coordinator.pyi +3 -3
  174. homeassistant-stubs/components/lookin/light.pyi +3 -4
  175. homeassistant-stubs/components/lookin/media_player.pyi +3 -4
  176. homeassistant-stubs/components/lookin/models.pyi +2 -0
  177. homeassistant-stubs/components/lookin/sensor.pyi +2 -4
  178. homeassistant-stubs/components/luftdaten/__init__.pyi +4 -6
  179. homeassistant-stubs/components/luftdaten/coordinator.pyi +15 -0
  180. homeassistant-stubs/components/luftdaten/diagnostics.pyi +3 -4
  181. homeassistant-stubs/components/luftdaten/sensor.pyi +4 -4
  182. homeassistant-stubs/components/matrix/__init__.pyi +2 -7
  183. homeassistant-stubs/components/matrix/const.pyi +3 -0
  184. homeassistant-stubs/components/matrix/services.pyi +12 -0
  185. homeassistant-stubs/components/matter/sensor.pyi +7 -2
  186. homeassistant-stubs/components/matter/vacuum.pyi +4 -4
  187. homeassistant-stubs/components/mealie/__init__.pyi +1 -1
  188. homeassistant-stubs/components/mealie/services.pyi +9 -3
  189. homeassistant-stubs/components/media_player/__init__.pyi +0 -2
  190. homeassistant-stubs/components/media_player/intent.pyi +1 -1
  191. homeassistant-stubs/components/miele/const.pyi +24 -0
  192. homeassistant-stubs/components/miele/sensor.pyi +1 -2
  193. homeassistant-stubs/components/mqtt/config_flow.pyi +4 -1
  194. homeassistant-stubs/components/mqtt/sensor.pyi +1 -4
  195. homeassistant-stubs/components/music_assistant/__init__.pyi +5 -1
  196. homeassistant-stubs/components/music_assistant/button.pyi +17 -0
  197. homeassistant-stubs/components/music_assistant/helpers.pyi +5 -0
  198. homeassistant-stubs/components/music_assistant/media_player.pyi +4 -4
  199. homeassistant-stubs/components/nextdns/binary_sensor.pyi +6 -12
  200. homeassistant-stubs/components/nextdns/button.pyi +2 -9
  201. homeassistant-stubs/components/nextdns/coordinator.pyi +2 -7
  202. homeassistant-stubs/components/nextdns/entity.pyi +14 -0
  203. homeassistant-stubs/components/nextdns/sensor.pyi +8 -15
  204. homeassistant-stubs/components/nextdns/switch.pyi +3 -6
  205. homeassistant-stubs/components/nfandroidtv/__init__.pyi +0 -1
  206. homeassistant-stubs/components/nfandroidtv/notify.pyi +5 -4
  207. homeassistant-stubs/components/nordpool/services.pyi +2 -1
  208. homeassistant-stubs/components/ntfy/__init__.pyi +1 -3
  209. homeassistant-stubs/components/ntfy/config_flow.pyi +3 -0
  210. homeassistant-stubs/components/ntfy/coordinator.pyi +16 -0
  211. homeassistant-stubs/components/ntfy/notify.pyi +1 -1
  212. homeassistant-stubs/components/ntfy/sensor.pyi +56 -0
  213. homeassistant-stubs/components/ohme/services.pyi +2 -1
  214. homeassistant-stubs/components/onedrive/__init__.pyi +1 -1
  215. homeassistant-stubs/components/onedrive/services.pyi +3 -2
  216. homeassistant-stubs/components/onewire/binary_sensor.pyi +3 -2
  217. homeassistant-stubs/components/onewire/const.pyi +0 -1
  218. homeassistant-stubs/components/onewire/entity.pyi +2 -3
  219. homeassistant-stubs/components/onewire/switch.pyi +3 -2
  220. homeassistant-stubs/components/onkyo/__init__.pyi +1 -1
  221. homeassistant-stubs/components/onkyo/services.pyi +3 -2
  222. homeassistant-stubs/components/openai_conversation/__init__.pyi +2 -1
  223. homeassistant-stubs/components/openai_conversation/config_flow.pyi +18 -14
  224. homeassistant-stubs/components/openai_conversation/const.pyi +1 -0
  225. homeassistant-stubs/components/openai_conversation/conversation.pyi +4 -4
  226. homeassistant-stubs/components/overseerr/__init__.pyi +1 -1
  227. homeassistant-stubs/components/overseerr/services.pyi +6 -4
  228. homeassistant-stubs/components/paperless_ngx/__init__.pyi +1 -1
  229. homeassistant-stubs/components/paperless_ngx/config_flow.pyi +2 -2
  230. homeassistant-stubs/components/paperless_ngx/coordinator.pyi +3 -5
  231. homeassistant-stubs/components/paperless_ngx/entity.pyi +2 -5
  232. homeassistant-stubs/components/paperless_ngx/sensor.pyi +8 -8
  233. homeassistant-stubs/components/paperless_ngx/update.pyi +25 -0
  234. homeassistant-stubs/components/plugwise/climate.pyi +0 -1
  235. homeassistant-stubs/components/qbus/climate.pyi +3 -2
  236. homeassistant-stubs/components/qbus/cover.pyi +39 -0
  237. homeassistant-stubs/components/qbus/entity.pyi +7 -3
  238. homeassistant-stubs/components/qbus/light.pyi +4 -3
  239. homeassistant-stubs/components/qbus/scene.pyi +2 -2
  240. homeassistant-stubs/components/qbus/switch.pyi +3 -2
  241. homeassistant-stubs/components/recorder/__init__.pyi +1 -1
  242. homeassistant-stubs/components/recorder/services.pyi +7 -12
  243. homeassistant-stubs/components/reolink/__init__.pyi +1 -1
  244. homeassistant-stubs/components/reolink/config_flow.pyi +1 -1
  245. homeassistant-stubs/components/reolink/const.pyi +1 -0
  246. homeassistant-stubs/components/reolink/entity.pyi +1 -1
  247. homeassistant-stubs/components/reolink/host.pyi +1 -1
  248. homeassistant-stubs/components/reolink/services.pyi +2 -0
  249. homeassistant-stubs/components/rest/data.pyi +7 -6
  250. homeassistant-stubs/components/russound_rio/__init__.pyi +1 -0
  251. homeassistant-stubs/components/russound_rio/entity.pyi +6 -2
  252. homeassistant-stubs/components/russound_rio/media_player.pyi +1 -5
  253. homeassistant-stubs/components/russound_rio/number.pyi +30 -0
  254. homeassistant-stubs/components/russound_rio/switch.pyi +33 -0
  255. homeassistant-stubs/components/shopping_list/__init__.pyi +1 -0
  256. homeassistant-stubs/components/shopping_list/intent.pyi +9 -1
  257. homeassistant-stubs/components/squeezebox/button.pyi +0 -2
  258. homeassistant-stubs/components/squeezebox/entity.pyi +2 -0
  259. homeassistant-stubs/components/squeezebox/media_player.pyi +0 -2
  260. homeassistant-stubs/components/sun/__init__.pyi +1 -0
  261. homeassistant-stubs/components/sun/binary_sensor.pyi +36 -0
  262. homeassistant-stubs/components/sun/condition.pyi +13 -3
  263. homeassistant-stubs/components/sun/sensor.pyi +2 -0
  264. homeassistant-stubs/components/switch/light.pyi +1 -0
  265. homeassistant-stubs/components/switch_as_x/entity.pyi +1 -0
  266. homeassistant-stubs/components/synology_dsm/__init__.pyi +4 -1
  267. homeassistant-stubs/components/synology_dsm/{service.pyi → services.pyi} +4 -2
  268. homeassistant-stubs/components/tedee/binary_sensor.pyi +4 -0
  269. homeassistant-stubs/components/telegram_bot/__init__.pyi +34 -0
  270. homeassistant-stubs/components/telegram_bot/bot.pyi +63 -0
  271. homeassistant-stubs/components/telegram_bot/broadcast.pyi +5 -0
  272. homeassistant-stubs/components/telegram_bot/config_flow.pyi +53 -0
  273. homeassistant-stubs/components/telegram_bot/const.pyi +92 -0
  274. homeassistant-stubs/components/telegram_bot/polling.pyi +19 -0
  275. homeassistant-stubs/components/telegram_bot/webhooks.pyi +47 -0
  276. homeassistant-stubs/components/tplink/climate.pyi +1 -2
  277. homeassistant-stubs/components/trend/binary_sensor.pyi +1 -1
  278. homeassistant-stubs/components/tts/entity.pyi +1 -2
  279. homeassistant-stubs/components/unifi/button.pyi +5 -5
  280. homeassistant-stubs/components/unifi/device_tracker.pyi +5 -5
  281. homeassistant-stubs/components/unifi/entity.pyi +5 -8
  282. homeassistant-stubs/components/unifi/hub/hub.pyi +1 -1
  283. homeassistant-stubs/components/unifi/image.pyi +5 -5
  284. homeassistant-stubs/components/unifi/sensor.pyi +5 -5
  285. homeassistant-stubs/components/unifi/switch.pyi +7 -7
  286. homeassistant-stubs/components/unifi/update.pyi +3 -5
  287. homeassistant-stubs/components/unifiprotect/services.pyi +1 -0
  288. homeassistant-stubs/components/vacuum/__init__.pyi +0 -2
  289. homeassistant-stubs/components/websocket_api/commands.pyi +6 -3
  290. homeassistant-stubs/components/websocket_api/messages.pyi +1 -0
  291. homeassistant-stubs/components/wiz/__init__.pyi +3 -3
  292. homeassistant-stubs/components/zwave_js/__init__.pyi +1 -1
  293. homeassistant-stubs/components/zwave_js/api.pyi +2 -2
  294. homeassistant-stubs/components/zwave_js/device_trigger.pyi +0 -1
  295. homeassistant-stubs/components/zwave_js/services.pyi +2 -0
  296. homeassistant-stubs/components/zwave_js/trigger.pyi +3 -7
  297. homeassistant-stubs/components/zwave_js/triggers/event.pyi +9 -1
  298. homeassistant-stubs/components/zwave_js/triggers/value_updated.pyi +9 -1
  299. homeassistant-stubs/const.pyi +1 -0
  300. homeassistant-stubs/helpers/condition.pyi +11 -3
  301. homeassistant-stubs/helpers/device_registry.pyi +5 -1
  302. homeassistant-stubs/helpers/entity.pyi +1 -4
  303. homeassistant-stubs/helpers/entity_registry.pyi +11 -1
  304. homeassistant-stubs/helpers/llm.pyi +0 -1
  305. homeassistant-stubs/helpers/selector.pyi +24 -4
  306. homeassistant-stubs/helpers/system_info.pyi +2 -0
  307. homeassistant-stubs/helpers/template.pyi +2 -1
  308. homeassistant-stubs/helpers/trigger.pyi +33 -2
  309. homeassistant-stubs/loader.pyi +3 -1
  310. homeassistant-stubs/util/timeout.pyi +6 -3
  311. homeassistant-stubs/util/yaml/loader.pyi +3 -1
  312. {homeassistant_stubs-2025.6.3.dist-info → homeassistant_stubs-2025.7.0b0.dist-info}/METADATA +2 -2
  313. {homeassistant_stubs-2025.6.3.dist-info → homeassistant_stubs-2025.7.0b0.dist-info}/RECORD +315 -279
  314. homeassistant-stubs/backports/enum.pyi +0 -7
  315. homeassistant-stubs/backports/functools.pyi +0 -7
  316. homeassistant-stubs/components/devolo_home_control/devolo_multi_level_switch.pyi +0 -10
  317. {homeassistant_stubs-2025.6.3.dist-info → homeassistant_stubs-2025.7.0b0.dist-info}/WHEEL +0 -0
  318. {homeassistant_stubs-2025.6.3.dist-info → homeassistant_stubs-2025.7.0b0.dist-info}/licenses/LICENSE +0 -0
@@ -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: ...
@@ -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: ...
@@ -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: ...
@@ -0,0 +1,34 @@
1
+ from . import broadcast as broadcast, polling as polling, webhooks as webhooks
2
+ from .bot import TelegramBotConfigEntry as TelegramBotConfigEntry, TelegramNotificationService as TelegramNotificationService, initialize_bot as initialize_bot
3
+ from .const import ATTR_ALLOWS_MULTIPLE_ANSWERS as ATTR_ALLOWS_MULTIPLE_ANSWERS, ATTR_AUTHENTICATION as ATTR_AUTHENTICATION, ATTR_CALLBACK_QUERY_ID as ATTR_CALLBACK_QUERY_ID, ATTR_CAPTION as ATTR_CAPTION, ATTR_CHAT_ID as ATTR_CHAT_ID, ATTR_DISABLE_NOTIF as ATTR_DISABLE_NOTIF, ATTR_DISABLE_WEB_PREV as ATTR_DISABLE_WEB_PREV, ATTR_FILE as ATTR_FILE, ATTR_IS_ANONYMOUS as ATTR_IS_ANONYMOUS, ATTR_IS_BIG as ATTR_IS_BIG, ATTR_KEYBOARD as ATTR_KEYBOARD, ATTR_KEYBOARD_INLINE as ATTR_KEYBOARD_INLINE, ATTR_MESSAGE as ATTR_MESSAGE, ATTR_MESSAGEID as ATTR_MESSAGEID, ATTR_MESSAGE_TAG as ATTR_MESSAGE_TAG, ATTR_MESSAGE_THREAD_ID as ATTR_MESSAGE_THREAD_ID, ATTR_ONE_TIME_KEYBOARD as ATTR_ONE_TIME_KEYBOARD, ATTR_OPEN_PERIOD as ATTR_OPEN_PERIOD, ATTR_OPTIONS as ATTR_OPTIONS, ATTR_PARSER as ATTR_PARSER, ATTR_PASSWORD as ATTR_PASSWORD, ATTR_QUESTION as ATTR_QUESTION, ATTR_REACTION as ATTR_REACTION, ATTR_RESIZE_KEYBOARD as ATTR_RESIZE_KEYBOARD, ATTR_SHOW_ALERT as ATTR_SHOW_ALERT, ATTR_STICKER_ID as ATTR_STICKER_ID, ATTR_TARGET as ATTR_TARGET, ATTR_TIMEOUT as ATTR_TIMEOUT, ATTR_TITLE as ATTR_TITLE, ATTR_URL as ATTR_URL, ATTR_USERNAME as ATTR_USERNAME, ATTR_VERIFY_SSL as ATTR_VERIFY_SSL, CONF_ALLOWED_CHAT_IDS as CONF_ALLOWED_CHAT_IDS, CONF_BOT_COUNT as CONF_BOT_COUNT, CONF_CONFIG_ENTRY_ID as CONF_CONFIG_ENTRY_ID, CONF_PROXY_URL as CONF_PROXY_URL, CONF_TRUSTED_NETWORKS as CONF_TRUSTED_NETWORKS, DEFAULT_TRUSTED_NETWORKS as DEFAULT_TRUSTED_NETWORKS, DOMAIN as DOMAIN, PARSER_MD as PARSER_MD, PLATFORM_BROADCAST as PLATFORM_BROADCAST, PLATFORM_POLLING as PLATFORM_POLLING, PLATFORM_WEBHOOKS as PLATFORM_WEBHOOKS, SERVICE_ANSWER_CALLBACK_QUERY as SERVICE_ANSWER_CALLBACK_QUERY, SERVICE_DELETE_MESSAGE as SERVICE_DELETE_MESSAGE, SERVICE_EDIT_CAPTION as SERVICE_EDIT_CAPTION, SERVICE_EDIT_MESSAGE as SERVICE_EDIT_MESSAGE, SERVICE_EDIT_REPLYMARKUP as SERVICE_EDIT_REPLYMARKUP, SERVICE_LEAVE_CHAT as SERVICE_LEAVE_CHAT, SERVICE_SEND_ANIMATION as SERVICE_SEND_ANIMATION, SERVICE_SEND_DOCUMENT as SERVICE_SEND_DOCUMENT, SERVICE_SEND_LOCATION as SERVICE_SEND_LOCATION, SERVICE_SEND_MESSAGE as SERVICE_SEND_MESSAGE, SERVICE_SEND_PHOTO as SERVICE_SEND_PHOTO, SERVICE_SEND_POLL as SERVICE_SEND_POLL, SERVICE_SEND_STICKER as SERVICE_SEND_STICKER, SERVICE_SEND_VIDEO as SERVICE_SEND_VIDEO, SERVICE_SEND_VOICE as SERVICE_SEND_VOICE, SERVICE_SET_MESSAGE_REACTION as SERVICE_SET_MESSAGE_REACTION
4
+ from _typeshed import Incomplete
5
+ from homeassistant.config_entries import SOURCE_IMPORT as SOURCE_IMPORT
6
+ from homeassistant.const import ATTR_LATITUDE as ATTR_LATITUDE, ATTR_LONGITUDE as ATTR_LONGITUDE, CONF_API_KEY as CONF_API_KEY, CONF_PLATFORM as CONF_PLATFORM, CONF_SOURCE as CONF_SOURCE, CONF_URL as CONF_URL
7
+ from homeassistant.core import HomeAssistant as HomeAssistant, ServiceCall as ServiceCall, ServiceResponse as ServiceResponse, SupportsResponse as SupportsResponse
8
+ from homeassistant.exceptions import ConfigEntryAuthFailed as ConfigEntryAuthFailed, ConfigEntryNotReady as ConfigEntryNotReady, ServiceValidationError as ServiceValidationError
9
+ from homeassistant.helpers.typing import ConfigType as ConfigType
10
+ from telegram import Bot as Bot
11
+ from types import ModuleType
12
+
13
+ _LOGGER: Incomplete
14
+ CONFIG_SCHEMA: Incomplete
15
+ BASE_SERVICE_SCHEMA: Incomplete
16
+ SERVICE_SCHEMA_SEND_MESSAGE: Incomplete
17
+ SERVICE_SCHEMA_SEND_FILE: Incomplete
18
+ SERVICE_SCHEMA_SEND_STICKER: Incomplete
19
+ SERVICE_SCHEMA_SEND_LOCATION: Incomplete
20
+ SERVICE_SCHEMA_SEND_POLL: Incomplete
21
+ SERVICE_SCHEMA_EDIT_MESSAGE: Incomplete
22
+ SERVICE_SCHEMA_EDIT_CAPTION: Incomplete
23
+ SERVICE_SCHEMA_EDIT_REPLYMARKUP: Incomplete
24
+ SERVICE_SCHEMA_ANSWER_CALLBACK_QUERY: Incomplete
25
+ SERVICE_SCHEMA_DELETE_MESSAGE: Incomplete
26
+ SERVICE_SCHEMA_LEAVE_CHAT: Incomplete
27
+ SERVICE_SCHEMA_SET_MESSAGE_REACTION: Incomplete
28
+ SERVICE_MAP: Incomplete
29
+ MODULES: dict[str, ModuleType]
30
+
31
+ async def async_setup(hass: HomeAssistant, config: ConfigType) -> bool: ...
32
+ async def async_setup_entry(hass: HomeAssistant, entry: TelegramBotConfigEntry) -> bool: ...
33
+ async def update_listener(hass: HomeAssistant, entry: TelegramBotConfigEntry) -> None: ...
34
+ async def async_unload_entry(hass: HomeAssistant, entry: TelegramBotConfigEntry) -> bool: ...
@@ -0,0 +1,63 @@
1
+ import abc
2
+ import io
3
+ from .const import ATTR_ARGS as ATTR_ARGS, ATTR_AUTHENTICATION as ATTR_AUTHENTICATION, ATTR_CAPTION as ATTR_CAPTION, ATTR_CHAT_ID as ATTR_CHAT_ID, ATTR_CHAT_INSTANCE as ATTR_CHAT_INSTANCE, ATTR_DATA as ATTR_DATA, ATTR_DATE as ATTR_DATE, ATTR_DISABLE_NOTIF as ATTR_DISABLE_NOTIF, ATTR_DISABLE_WEB_PREV as ATTR_DISABLE_WEB_PREV, ATTR_FILE as ATTR_FILE, ATTR_FROM_FIRST as ATTR_FROM_FIRST, ATTR_FROM_LAST as ATTR_FROM_LAST, ATTR_KEYBOARD as ATTR_KEYBOARD, ATTR_KEYBOARD_INLINE as ATTR_KEYBOARD_INLINE, ATTR_MESSAGE as ATTR_MESSAGE, ATTR_MESSAGEID as ATTR_MESSAGEID, ATTR_MESSAGE_TAG as ATTR_MESSAGE_TAG, ATTR_MESSAGE_THREAD_ID as ATTR_MESSAGE_THREAD_ID, ATTR_MSG as ATTR_MSG, ATTR_MSGID as ATTR_MSGID, ATTR_ONE_TIME_KEYBOARD as ATTR_ONE_TIME_KEYBOARD, ATTR_OPEN_PERIOD as ATTR_OPEN_PERIOD, ATTR_PARSER as ATTR_PARSER, ATTR_PASSWORD as ATTR_PASSWORD, ATTR_REPLYMARKUP as ATTR_REPLYMARKUP, ATTR_REPLY_TO_MSGID as ATTR_REPLY_TO_MSGID, ATTR_RESIZE_KEYBOARD as ATTR_RESIZE_KEYBOARD, ATTR_STICKER_ID as ATTR_STICKER_ID, ATTR_TEXT as ATTR_TEXT, ATTR_TIMEOUT as ATTR_TIMEOUT, ATTR_TITLE as ATTR_TITLE, ATTR_URL as ATTR_URL, ATTR_USERNAME as ATTR_USERNAME, ATTR_USER_ID as ATTR_USER_ID, ATTR_VERIFY_SSL as ATTR_VERIFY_SSL, CONF_CHAT_ID as CONF_CHAT_ID, CONF_PROXY_URL as CONF_PROXY_URL, DOMAIN as DOMAIN, EVENT_TELEGRAM_CALLBACK as EVENT_TELEGRAM_CALLBACK, EVENT_TELEGRAM_COMMAND as EVENT_TELEGRAM_COMMAND, EVENT_TELEGRAM_SENT as EVENT_TELEGRAM_SENT, EVENT_TELEGRAM_TEXT as EVENT_TELEGRAM_TEXT, PARSER_HTML as PARSER_HTML, PARSER_MD as PARSER_MD, PARSER_MD2 as PARSER_MD2, PARSER_PLAIN_TEXT as PARSER_PLAIN_TEXT, SERVICE_EDIT_CAPTION as SERVICE_EDIT_CAPTION, SERVICE_EDIT_MESSAGE as SERVICE_EDIT_MESSAGE, SERVICE_SEND_ANIMATION as SERVICE_SEND_ANIMATION, SERVICE_SEND_DOCUMENT as SERVICE_SEND_DOCUMENT, SERVICE_SEND_PHOTO as SERVICE_SEND_PHOTO, SERVICE_SEND_STICKER as SERVICE_SEND_STICKER, SERVICE_SEND_VIDEO as SERVICE_SEND_VIDEO, SERVICE_SEND_VOICE as SERVICE_SEND_VOICE
4
+ from _typeshed import Incomplete
5
+ from abc import abstractmethod
6
+ from collections.abc import Callable as Callable, Sequence
7
+ from homeassistant.config_entries import ConfigEntry as ConfigEntry
8
+ from homeassistant.const import ATTR_COMMAND as ATTR_COMMAND, CONF_API_KEY as CONF_API_KEY, HTTP_BASIC_AUTHENTICATION as HTTP_BASIC_AUTHENTICATION, HTTP_BEARER_AUTHENTICATION as HTTP_BEARER_AUTHENTICATION, HTTP_DIGEST_AUTHENTICATION as HTTP_DIGEST_AUTHENTICATION
9
+ from homeassistant.core import Context as Context, HomeAssistant as HomeAssistant
10
+ from homeassistant.exceptions import HomeAssistantError as HomeAssistantError, ServiceValidationError as ServiceValidationError
11
+ from homeassistant.util.ssl import get_default_context as get_default_context, get_default_no_verify_context as get_default_no_verify_context
12
+ from ssl import SSLContext
13
+ from telegram import Bot, CallbackQuery as CallbackQuery, InputPollOption as InputPollOption, Message as Message, Update as Update, User as User
14
+ from telegram.ext import CallbackContext as CallbackContext
15
+ from types import MappingProxyType
16
+ from typing import Any
17
+
18
+ _LOGGER: Incomplete
19
+ type TelegramBotConfigEntry = ConfigEntry[TelegramNotificationService]
20
+
21
+ class BaseTelegramBot(metaclass=abc.ABCMeta):
22
+ hass: Incomplete
23
+ config: Incomplete
24
+ def __init__(self, hass: HomeAssistant, config: TelegramBotConfigEntry) -> None: ...
25
+ @abstractmethod
26
+ async def shutdown(self) -> None: ...
27
+ async def handle_update(self, update: Update, context: CallbackContext) -> bool: ...
28
+ @staticmethod
29
+ def _get_command_event_data(command_text: str | None) -> dict[str, str | list]: ...
30
+ def _get_message_event_data(self, message: Message) -> tuple[str, dict[str, Any]]: ...
31
+ def _get_user_event_data(self, user: User) -> dict[str, Any]: ...
32
+ def _get_callback_query_event_data(self, callback_query: CallbackQuery) -> tuple[str, dict[str, Any]]: ...
33
+ def authorize_update(self, update: Update) -> bool: ...
34
+
35
+ class TelegramNotificationService:
36
+ app: Incomplete
37
+ config: Incomplete
38
+ _parsers: dict[str, str | None]
39
+ parse_mode: Incomplete
40
+ bot: Incomplete
41
+ hass: Incomplete
42
+ _last_message_id: dict[int, int]
43
+ def __init__(self, hass: HomeAssistant, app: BaseTelegramBot, bot: Bot, config: TelegramBotConfigEntry, parser: str) -> None: ...
44
+ def _get_allowed_chat_ids(self) -> list[int]: ...
45
+ def _get_msg_ids(self, msg_data: dict[str, Any], chat_id: int) -> tuple[Any | None, int | None]: ...
46
+ def _get_target_chat_ids(self, target: Any) -> list[int]: ...
47
+ def _get_msg_kwargs(self, data: dict[str, Any]) -> dict[str, Any]: ...
48
+ async def _send_msg(self, func_send: Callable, msg_error: str, message_tag: str | None, *args_msg: Any, context: Context | None = None, **kwargs_msg: Any) -> Any: ...
49
+ async def send_message(self, message: str = '', target: Any = None, context: Context | None = None, **kwargs: dict[str, Any]) -> dict[int, int]: ...
50
+ async def delete_message(self, chat_id: int | None = None, context: Context | None = None, **kwargs: dict[str, Any]) -> bool: ...
51
+ async def edit_message(self, type_edit: str, chat_id: int | None = None, context: Context | None = None, **kwargs: dict[str, Any]) -> Any: ...
52
+ async def answer_callback_query(self, message: str | None, callback_query_id: str, show_alert: bool = False, context: Context | None = None, **kwargs: dict[str, Any]) -> None: ...
53
+ async def send_file(self, file_type: str, target: Any = None, context: Context | None = None, **kwargs: Any) -> dict[int, int]: ...
54
+ async def send_sticker(self, target: Any = None, context: Context | None = None, **kwargs: Any) -> dict[int, int]: ...
55
+ async def send_location(self, latitude: Any, longitude: Any, target: Any = None, context: Context | None = None, **kwargs: dict[str, Any]) -> dict[int, int]: ...
56
+ async def send_poll(self, question: str, options: Sequence[str | InputPollOption], is_anonymous: bool | None, allows_multiple_answers: bool | None, target: Any = None, context: Context | None = None, **kwargs: dict[str, Any]) -> dict[int, int]: ...
57
+ async def leave_chat(self, chat_id: Any = None, context: Context | None = None, **kwargs: dict[str, Any]) -> Any: ...
58
+ async def set_message_reaction(self, chat_id: int, reaction: str, is_big: bool = False, context: Context | None = None, **kwargs: dict[str, Any]) -> None: ...
59
+
60
+ def initialize_bot(hass: HomeAssistant, p_config: MappingProxyType[str, Any]) -> Bot: ...
61
+ async def load_data(hass: HomeAssistant, url: str | None, filepath: str | None, username: str, password: str, authentication: str | None, verify_ssl: SSLContext, num_retries: int = 5) -> io.BytesIO: ...
62
+ def _validate_credentials_input(authentication: str | None, username: str | None, password: str | None) -> None: ...
63
+ def _read_file_as_bytesio(file_path: str) -> io.BytesIO: ...
@@ -0,0 +1,5 @@
1
+ from .bot import BaseTelegramBot as BaseTelegramBot, TelegramBotConfigEntry as TelegramBotConfigEntry
2
+ from homeassistant.core import HomeAssistant as HomeAssistant
3
+ from telegram import Bot as Bot
4
+
5
+ async def async_setup_platform(hass: HomeAssistant, bot: Bot, config: TelegramBotConfigEntry) -> type[BaseTelegramBot] | None: ...
@@ -0,0 +1,53 @@
1
+ import voluptuous as vol
2
+ from . import initialize_bot as initialize_bot
3
+ from .bot import TelegramBotConfigEntry as TelegramBotConfigEntry
4
+ from .const import ATTR_PARSER as ATTR_PARSER, BOT_NAME as BOT_NAME, CONF_ALLOWED_CHAT_IDS as CONF_ALLOWED_CHAT_IDS, CONF_BOT_COUNT as CONF_BOT_COUNT, CONF_CHAT_ID as CONF_CHAT_ID, CONF_PROXY_URL as CONF_PROXY_URL, CONF_TRUSTED_NETWORKS as CONF_TRUSTED_NETWORKS, DEFAULT_TRUSTED_NETWORKS as DEFAULT_TRUSTED_NETWORKS, DOMAIN as DOMAIN, ERROR_FIELD as ERROR_FIELD, ERROR_MESSAGE as ERROR_MESSAGE, ISSUE_DEPRECATED_YAML as ISSUE_DEPRECATED_YAML, ISSUE_DEPRECATED_YAML_HAS_MORE_PLATFORMS as ISSUE_DEPRECATED_YAML_HAS_MORE_PLATFORMS, ISSUE_DEPRECATED_YAML_IMPORT_ISSUE_ERROR as ISSUE_DEPRECATED_YAML_IMPORT_ISSUE_ERROR, PARSER_HTML as PARSER_HTML, PARSER_MD as PARSER_MD, PARSER_MD2 as PARSER_MD2, PARSER_PLAIN_TEXT as PARSER_PLAIN_TEXT, PLATFORM_BROADCAST as PLATFORM_BROADCAST, PLATFORM_POLLING as PLATFORM_POLLING, PLATFORM_WEBHOOKS as PLATFORM_WEBHOOKS, SUBENTRY_TYPE_ALLOWED_CHAT_IDS as SUBENTRY_TYPE_ALLOWED_CHAT_IDS
5
+ from _typeshed import Incomplete
6
+ from collections.abc import Mapping
7
+ from homeassistant.config_entries import ConfigFlow as ConfigFlow, ConfigFlowResult as ConfigFlowResult, ConfigSubentryData as ConfigSubentryData, ConfigSubentryFlow as ConfigSubentryFlow, OptionsFlow as OptionsFlow, SOURCE_IMPORT as SOURCE_IMPORT, SOURCE_RECONFIGURE as SOURCE_RECONFIGURE, SubentryFlowResult as SubentryFlowResult
8
+ from homeassistant.const import CONF_API_KEY as CONF_API_KEY, CONF_PLATFORM as CONF_PLATFORM, CONF_URL as CONF_URL
9
+ from homeassistant.core import callback as callback
10
+ from homeassistant.data_entry_flow import AbortFlow as AbortFlow
11
+ from homeassistant.helpers.issue_registry import IssueSeverity as IssueSeverity, async_create_issue as async_create_issue
12
+ from homeassistant.helpers.network import NoURLAvailableError as NoURLAvailableError, get_url as get_url
13
+ from homeassistant.helpers.selector import SelectSelector as SelectSelector, SelectSelectorConfig as SelectSelectorConfig, TextSelector as TextSelector, TextSelectorConfig as TextSelectorConfig, TextSelectorType as TextSelectorType
14
+ from telegram import Bot as Bot, ChatFullInfo as ChatFullInfo
15
+ from typing import Any
16
+
17
+ _LOGGER: Incomplete
18
+ STEP_USER_DATA_SCHEMA: vol.Schema
19
+ STEP_RECONFIGURE_USER_DATA_SCHEMA: vol.Schema
20
+ STEP_REAUTH_DATA_SCHEMA: vol.Schema
21
+ STEP_WEBHOOKS_DATA_SCHEMA: vol.Schema
22
+ OPTIONS_SCHEMA: vol.Schema
23
+
24
+ class OptionsFlowHandler(OptionsFlow):
25
+ async def async_step_init(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
26
+
27
+ class TelgramBotConfigFlow(ConfigFlow, domain=DOMAIN):
28
+ VERSION: int
29
+ @staticmethod
30
+ @callback
31
+ def async_get_options_flow(config_entry: TelegramBotConfigEntry) -> OptionsFlowHandler: ...
32
+ @classmethod
33
+ @callback
34
+ def async_get_supported_subentry_types(cls, config_entry: TelegramBotConfigEntry) -> dict[str, type[ConfigSubentryFlow]]: ...
35
+ _bot: Bot | None
36
+ _bot_name: str
37
+ _step_user_data: dict[str, Any]
38
+ def __init__(self) -> None: ...
39
+ async def async_step_import(self, import_data: dict[str, Any]) -> ConfigFlowResult: ...
40
+ def _create_issue(self, issue: str, telegram_bot_type: str, bot_count: int, description_placeholders: Mapping[str, str] | None = None) -> None: ...
41
+ async def async_step_user(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
42
+ async def _shutdown_bot(self) -> None: ...
43
+ async def _validate_bot(self, user_input: dict[str, Any], errors: dict[str, str], placeholders: dict[str, str]) -> str: ...
44
+ async def async_step_webhooks(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
45
+ def _validate_webhooks(self, user_input: dict[str, Any], errors: dict[str, str], description_placeholders: dict[str, str]) -> None: ...
46
+ async def async_step_reconfigure(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
47
+ async def async_step_reauth(self, entry_data: Mapping[str, Any]) -> ConfigFlowResult: ...
48
+ async def async_step_reauth_confirm(self, user_input: dict[str, Any] | None = None) -> ConfigFlowResult: ...
49
+
50
+ class AllowedChatIdsSubEntryFlowHandler(ConfigSubentryFlow):
51
+ async def async_step_user(self, user_input: dict[str, Any] | None = None) -> SubentryFlowResult: ...
52
+
53
+ async def _async_get_chat_name(bot: Bot | None, chat_id: int) -> str: ...
@@ -0,0 +1,92 @@
1
+ from _typeshed import Incomplete
2
+
3
+ DOMAIN: str
4
+ PLATFORM_BROADCAST: str
5
+ PLATFORM_POLLING: str
6
+ PLATFORM_WEBHOOKS: str
7
+ SUBENTRY_TYPE_ALLOWED_CHAT_IDS: str
8
+ CONF_BOT_COUNT: str
9
+ CONF_ALLOWED_CHAT_IDS: str
10
+ CONF_CONFIG_ENTRY_ID: str
11
+ CONF_PROXY_URL: str
12
+ CONF_TRUSTED_NETWORKS: str
13
+ CONF_CHAT_ID: str
14
+ BOT_NAME: str
15
+ ERROR_FIELD: str
16
+ ERROR_MESSAGE: str
17
+ ISSUE_DEPRECATED_YAML: str
18
+ ISSUE_DEPRECATED_YAML_HAS_MORE_PLATFORMS: str
19
+ ISSUE_DEPRECATED_YAML_IMPORT_ISSUE_ERROR: str
20
+ DEFAULT_TRUSTED_NETWORKS: Incomplete
21
+ SERVICE_SEND_MESSAGE: str
22
+ SERVICE_SEND_PHOTO: str
23
+ SERVICE_SEND_STICKER: str
24
+ SERVICE_SEND_ANIMATION: str
25
+ SERVICE_SEND_VIDEO: str
26
+ SERVICE_SEND_VOICE: str
27
+ SERVICE_SEND_DOCUMENT: str
28
+ SERVICE_SEND_LOCATION: str
29
+ SERVICE_SEND_POLL: str
30
+ SERVICE_SET_MESSAGE_REACTION: str
31
+ SERVICE_EDIT_MESSAGE: str
32
+ SERVICE_EDIT_CAPTION: str
33
+ SERVICE_EDIT_REPLYMARKUP: str
34
+ SERVICE_ANSWER_CALLBACK_QUERY: str
35
+ SERVICE_DELETE_MESSAGE: str
36
+ SERVICE_LEAVE_CHAT: str
37
+ EVENT_TELEGRAM_CALLBACK: str
38
+ EVENT_TELEGRAM_COMMAND: str
39
+ EVENT_TELEGRAM_TEXT: str
40
+ EVENT_TELEGRAM_SENT: str
41
+ PARSER_HTML: str
42
+ PARSER_MD: str
43
+ PARSER_MD2: str
44
+ PARSER_PLAIN_TEXT: str
45
+ ATTR_DATA: str
46
+ ATTR_MESSAGE: str
47
+ ATTR_TITLE: str
48
+ ATTR_ARGS: str
49
+ ATTR_AUTHENTICATION: str
50
+ ATTR_CALLBACK_QUERY: str
51
+ ATTR_CALLBACK_QUERY_ID: str
52
+ ATTR_CAPTION: str
53
+ ATTR_CHAT_ID: str
54
+ ATTR_CHAT_INSTANCE: str
55
+ ATTR_DATE: str
56
+ ATTR_DISABLE_NOTIF: str
57
+ ATTR_DISABLE_WEB_PREV: str
58
+ ATTR_EDITED_MSG: str
59
+ ATTR_FILE: str
60
+ ATTR_FROM_FIRST: str
61
+ ATTR_FROM_LAST: str
62
+ ATTR_KEYBOARD: str
63
+ ATTR_RESIZE_KEYBOARD: str
64
+ ATTR_ONE_TIME_KEYBOARD: str
65
+ ATTR_KEYBOARD_INLINE: str
66
+ ATTR_MESSAGEID: str
67
+ ATTR_MSG: str
68
+ ATTR_MSGID: str
69
+ ATTR_PARSER: str
70
+ ATTR_PASSWORD: str
71
+ ATTR_REACTION: str
72
+ ATTR_IS_BIG: str
73
+ ATTR_REPLY_TO_MSGID: str
74
+ ATTR_REPLYMARKUP: str
75
+ ATTR_SHOW_ALERT: str
76
+ ATTR_STICKER_ID: str
77
+ ATTR_TARGET: str
78
+ ATTR_TEXT: str
79
+ ATTR_URL: str
80
+ ATTR_USER_ID: str
81
+ ATTR_USERNAME: str
82
+ ATTR_VERIFY_SSL: str
83
+ ATTR_TIMEOUT: str
84
+ ATTR_MESSAGE_TAG: str
85
+ ATTR_CHANNEL_POST: str
86
+ ATTR_QUESTION: str
87
+ ATTR_OPTIONS: str
88
+ ATTR_ANSWERS: str
89
+ ATTR_OPEN_PERIOD: str
90
+ ATTR_IS_ANONYMOUS: str
91
+ ATTR_ALLOWS_MULTIPLE_ANSWERS: str
92
+ ATTR_MESSAGE_THREAD_ID: str
@@ -0,0 +1,19 @@
1
+ from .bot import BaseTelegramBot as BaseTelegramBot, TelegramBotConfigEntry as TelegramBotConfigEntry
2
+ from _typeshed import Incomplete
3
+ from homeassistant.core import HomeAssistant as HomeAssistant
4
+ from telegram import Bot as Bot
5
+ from telegram.ext import CallbackContext as CallbackContext
6
+
7
+ _LOGGER: Incomplete
8
+
9
+ async def async_setup_platform(hass: HomeAssistant, bot: Bot, config: TelegramBotConfigEntry) -> BaseTelegramBot | None: ...
10
+ async def process_error(update: object, context: CallbackContext) -> None: ...
11
+ def error_callback(error: Exception, update: object | None = None) -> None: ...
12
+
13
+ class PollBot(BaseTelegramBot):
14
+ bot: Incomplete
15
+ application: Incomplete
16
+ def __init__(self, hass: HomeAssistant, bot: Bot, config: TelegramBotConfigEntry) -> None: ...
17
+ async def shutdown(self) -> None: ...
18
+ async def start_polling(self) -> None: ...
19
+ async def stop_polling(self) -> None: ...
@@ -0,0 +1,47 @@
1
+ from .bot import BaseTelegramBot as BaseTelegramBot, TelegramBotConfigEntry as TelegramBotConfigEntry
2
+ from .const import CONF_TRUSTED_NETWORKS as CONF_TRUSTED_NETWORKS
3
+ from _typeshed import Incomplete
4
+ from aiohttp.web_response import Response as Response
5
+ from homeassistant.components.http import HomeAssistantRequest as HomeAssistantRequest, HomeAssistantView as HomeAssistantView
6
+ from homeassistant.const import CONF_URL as CONF_URL
7
+ from homeassistant.core import HomeAssistant as HomeAssistant
8
+ from homeassistant.exceptions import ConfigEntryNotReady as ConfigEntryNotReady
9
+ from homeassistant.helpers.network import get_url as get_url
10
+ from ipaddress import IPv4Network
11
+ from telegram import Bot as Bot
12
+ from telegram.ext import Application as Application
13
+
14
+ _LOGGER: Incomplete
15
+ TELEGRAM_WEBHOOK_URL: str
16
+ REMOVE_WEBHOOK_URL: str
17
+ SECRET_TOKEN_LENGTH: int
18
+
19
+ async def async_setup_platform(hass: HomeAssistant, bot: Bot, config: TelegramBotConfigEntry) -> BaseTelegramBot | None: ...
20
+ def _get_trusted_networks(config: TelegramBotConfigEntry) -> list[IPv4Network]: ...
21
+
22
+ class PushBot(BaseTelegramBot):
23
+ bot: Incomplete
24
+ trusted_networks: Incomplete
25
+ secret_token: Incomplete
26
+ application: Incomplete
27
+ base_url: Incomplete
28
+ webhook_url: Incomplete
29
+ def __init__(self, hass: HomeAssistant, bot: Bot, config: TelegramBotConfigEntry, secret_token: str) -> None: ...
30
+ async def shutdown(self) -> None: ...
31
+ async def _try_to_set_webhook(self) -> bool: ...
32
+ async def start_application(self) -> None: ...
33
+ async def register_webhook(self) -> bool: ...
34
+ async def stop_application(self) -> None: ...
35
+ async def deregister_webhook(self) -> None: ...
36
+
37
+ class PushBotView(HomeAssistantView):
38
+ requires_auth: bool
39
+ url = TELEGRAM_WEBHOOK_URL
40
+ name: str
41
+ hass: Incomplete
42
+ bot: Incomplete
43
+ application: Incomplete
44
+ trusted_networks: Incomplete
45
+ secret_token: Incomplete
46
+ def __init__(self, hass: HomeAssistant, bot: Bot, application: Application, trusted_networks: list[IPv4Network], secret_token: str) -> None: ...
47
+ async def post(self, request: HomeAssistantRequest) -> Response | None: ...