"""Define Hunter Douglas data models."""

from __future__ import annotations

from dataclasses import dataclass

from aiopvapi.helpers.aiorequest import AioRequest
from aiopvapi.resources.room import Room
from aiopvapi.resources.scene import Scene
from aiopvapi.resources.shade import BaseShade

from homeassistant.config_entries import ConfigEntry

from .coordinator import PowerviewShadeUpdateCoordinator

type PowerviewConfigEntry = ConfigEntry[PowerviewEntryData]


@dataclass
class PowerviewEntryData:
    """Define class for main domain information."""

    api: AioRequest
    room_data: dict[str, Room]
    scene_data: dict[str, Scene]
    shade_data: dict[str, BaseShade]
    coordinator: PowerviewShadeUpdateCoordinator
    device_info: PowerviewDeviceInfo


@dataclass
class PowerviewDeviceInfo:
    """Define class for device information."""

    name: str
    mac_address: str
    serial_number: str
    firmware: str | None
    model: str
    hub_address: str
