"""Base entity for the Elgato integration."""

from homeassistant.const import ATTR_CONNECTIONS, CONF_MAC
from homeassistant.helpers.device_registry import CONNECTION_NETWORK_MAC, DeviceInfo
from homeassistant.helpers.update_coordinator import CoordinatorEntity

from .const import DOMAIN
from .coordinator import ElgatoDataUpdateCoordinator


class ElgatoEntity(CoordinatorEntity[ElgatoDataUpdateCoordinator]):
    """Defines an Elgato entity."""

    _attr_has_entity_name = True

    def __init__(self, coordinator: ElgatoDataUpdateCoordinator) -> None:
        """Initialize an Elgato entity."""
        super().__init__(coordinator=coordinator)
        self._attr_device_info = DeviceInfo(
            identifiers={(DOMAIN, coordinator.data.info.serial_number)},
            serial_number=coordinator.data.info.serial_number,
            manufacturer="Elgato",
            model=coordinator.data.info.product_name,
            name=coordinator.data.info.display_name,
            sw_version=(
                f"{coordinator.data.info.firmware_version}"
                f" ({coordinator.data.info.firmware_build_number})"
            ),
            hw_version=str(coordinator.data.info.hardware_board_type),
        )
        if (mac := coordinator.config_entry.data.get(CONF_MAC)) is not None:
            self._attr_device_info[ATTR_CONNECTIONS] = {(CONNECTION_NETWORK_MAC, mac)}
