import amberelectric
from .const import LOGGER as LOGGER, REQUEST_TIMEOUT as REQUEST_TIMEOUT
from .helpers import normalize_descriptor as normalize_descriptor
from _typeshed import Incomplete
from amberelectric.models.actual_interval import ActualInterval as ActualInterval
from amberelectric.models.current_interval import CurrentInterval
from amberelectric.models.forecast_interval import ForecastInterval
from homeassistant.config_entries import ConfigEntry as ConfigEntry
from homeassistant.core import HomeAssistant as HomeAssistant
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator, UpdateFailed as UpdateFailed
from typing import Any

type AmberConfigEntry = ConfigEntry[AmberUpdateCoordinator]
def is_current(interval: ActualInterval | CurrentInterval | ForecastInterval) -> bool: ...
def is_forecast(interval: ActualInterval | CurrentInterval | ForecastInterval) -> bool: ...
def is_general(interval: ActualInterval | CurrentInterval | ForecastInterval) -> bool: ...
def is_controlled_load(interval: ActualInterval | CurrentInterval | ForecastInterval) -> bool: ...
def is_feed_in(interval: ActualInterval | CurrentInterval | ForecastInterval) -> bool: ...

class AmberUpdateCoordinator(DataUpdateCoordinator):
    config_entry: AmberConfigEntry
    _api: Incomplete
    site_id: Incomplete
    def __init__(self, hass: HomeAssistant, config_entry: AmberConfigEntry, api: amberelectric.AmberApi, site_id: str) -> None: ...
    def update_price_data(self) -> dict[str, dict[str, Any]]: ...
    async def _async_update_data(self) -> dict[str, Any]: ...
