"""Base entity for the Snoo integration."""

from typing import override

from homeassistant.helpers.device_registry import DeviceInfo
from homeassistant.helpers.entity import EntityDescription
from homeassistant.helpers.update_coordinator import CoordinatorEntity

from .const import DOMAIN
from .coordinator import SnooCoordinator


class SnooDescriptionEntity(CoordinatorEntity[SnooCoordinator]):
    """Defines an Snoo entity that uses a description."""

    _attr_has_entity_name = True

    def __init__(
        self, coordinator: SnooCoordinator, description: EntityDescription
    ) -> None:
        """Initialize the Snoo entity."""
        super().__init__(coordinator)
        self.device = coordinator.device
        self.entity_description = description
        self._attr_unique_id = f"{coordinator.device_unique_id}_{description.key}"
        self._attr_device_info = DeviceInfo(
            identifiers={(DOMAIN, coordinator.device_unique_id)},
            name=self.device.name,
            manufacturer="Happiest Baby",
            model="Snoo",
            serial_number=self.device.serialNumber,
        )

    @property
    @override
    def available(self) -> bool:
        """Return if entity is available."""
        return self.coordinator.data is not None and super().available
