from . import AbodeSystem as AbodeSystem
from .const import ATTRIBUTION as ATTRIBUTION, DOMAIN as DOMAIN
from _typeshed import Incomplete
from homeassistant.helpers.device_registry import DeviceInfo as DeviceInfo
from homeassistant.helpers.entity import Entity as Entity
from jaraco.abode.automation import Automation as AbodeAuto
from jaraco.abode.devices.base import Device as AbodeDev

class AbodeEntity(Entity):
    _attr_attribution = ATTRIBUTION
    _attr_has_entity_name: bool
    _data: Incomplete
    _attr_should_poll: Incomplete
    def __init__(self, data: AbodeSystem) -> None: ...
    async def async_added_to_hass(self) -> None: ...
    async def async_will_remove_from_hass(self) -> None: ...
    _attr_available: Incomplete
    def _update_connection_status(self) -> None: ...

class AbodeDevice(AbodeEntity):
    _device: Incomplete
    _attr_unique_id: Incomplete
    def __init__(self, data: AbodeSystem, device: AbodeDev) -> None: ...
    async def async_added_to_hass(self) -> None: ...
    async def async_will_remove_from_hass(self) -> None: ...
    def update(self) -> None: ...
    @property
    def extra_state_attributes(self) -> dict[str, str]: ...
    @property
    def device_info(self) -> DeviceInfo: ...
    def _update_callback(self, device: AbodeDev) -> None: ...

class AbodeAutomation(AbodeEntity):
    _automation: Incomplete
    _attr_name: Incomplete
    _attr_unique_id: Incomplete
    _attr_extra_state_attributes: Incomplete
    def __init__(self, data: AbodeSystem, automation: AbodeAuto) -> None: ...
    def update(self) -> None: ...
