from .const import ATTR_BACKUP as ATTR_BACKUP, ATTR_VERSION as ATTR_VERSION, DOMAIN as DOMAIN, SERVICE_INSTALL as SERVICE_INSTALL, SERVICE_SKIP as SERVICE_SKIP, UpdateEntityFeature as UpdateEntityFeature
from _typeshed import Incomplete
from homeassistant.backports.enum import StrEnum
from homeassistant.helpers.config_validation import PLATFORM_SCHEMA as PLATFORM_SCHEMA, PLATFORM_SCHEMA_BASE as PLATFORM_SCHEMA_BASE
from homeassistant.helpers.entity import EntityCategory, EntityDescription
from homeassistant.helpers.restore_state import RestoreEntity
from typing import Any

class UpdateDeviceClass(StrEnum):
    FIRMWARE: str

DEVICE_CLASSES_SCHEMA: Incomplete

class UpdateEntityDescription(EntityDescription):
    device_class: Union[UpdateDeviceClass, None]
    entity_category: Union[EntityCategory, None]
    def __init__(self, key, device_class, entity_category, entity_registry_enabled_default, entity_registry_visible_default, force_update, icon, has_entity_name, name, translation_key, unit_of_measurement) -> None: ...

class UpdateEntity(RestoreEntity):
    entity_description: UpdateEntityDescription
    _attr_auto_update: bool
    _attr_installed_version: Union[str, None]
    _attr_device_class: Union[UpdateDeviceClass, None]
    _attr_in_progress: Union[bool, int]
    _attr_latest_version: Union[str, None]
    _attr_release_summary: Union[str, None]
    _attr_release_url: Union[str, None]
    _attr_state: None
    _attr_supported_features: UpdateEntityFeature
    _attr_title: Union[str, None]
    __skipped_version: Union[str, None]
    __in_progress: bool
    @property
    def auto_update(self) -> bool: ...
    @property
    def installed_version(self) -> Union[str, None]: ...
    @property
    def device_class(self) -> Union[UpdateDeviceClass, None]: ...
    @property
    def entity_category(self) -> Union[EntityCategory, None]: ...
    @property
    def entity_picture(self) -> Union[str, None]: ...
    @property
    def in_progress(self) -> Union[bool, int, None]: ...
    @property
    def latest_version(self) -> Union[str, None]: ...
    @property
    def release_summary(self) -> Union[str, None]: ...
    @property
    def release_url(self) -> Union[str, None]: ...
    @property
    def supported_features(self) -> UpdateEntityFeature: ...
    @property
    def title(self) -> Union[str, None]: ...
    async def async_skip(self) -> None: ...
    async def async_clear_skipped(self) -> None: ...
    async def async_install(self, version: Union[str, None], backup: bool, **kwargs: Any) -> None: ...
    def install(self, version: Union[str, None], backup: bool, **kwargs: Any) -> None: ...
    async def async_release_notes(self) -> Union[str, None]: ...
    def release_notes(self) -> Union[str, None]: ...
    @property
    def state(self) -> Union[str, None]: ...
    @property
    def state_attributes(self) -> Union[dict[str, Any], None]: ...
    async def async_install_with_progress(self, version: Union[str, None], backup: bool) -> None: ...
    async def async_internal_added_to_hass(self) -> None: ...
