from .const import CLIENTID_PREFIX as CLIENTID_PREFIX, CONF_IGNORED_SOURCES as CONF_IGNORED_SOURCES, DOMAIN as DOMAIN, NICKNAME as NICKNAME
from collections.abc import Iterable
from homeassistant.config_entries import ConfigEntry as ConfigEntry
from homeassistant.const import CONF_HOST as CONF_HOST, CONF_MAC as CONF_MAC, CONF_PIN as CONF_PIN
from homeassistant.core import HomeAssistant as HomeAssistant
from homeassistant.helpers.debounce import Debouncer as Debouncer
from homeassistant.helpers.update_coordinator import DataUpdateCoordinator as DataUpdateCoordinator
from typing import Any, Final

_LOGGER: Any
PLATFORMS: Final[list[str]]
SCAN_INTERVAL: Final[Any]

async def async_setup_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: ...
async def async_unload_entry(hass: HomeAssistant, config_entry: ConfigEntry) -> bool: ...
async def update_listener(hass: HomeAssistant, config_entry: ConfigEntry) -> None: ...

class BraviaTVCoordinator(DataUpdateCoordinator[None]):
    braviarc: Any
    pin: Any
    ignored_sources: Any
    muted: bool
    channel_name: Any
    media_title: Any
    source: Any
    source_list: Any
    original_content_list: Any
    content_mapping: Any
    duration: Any
    content_uri: Any
    program_media_type: Any
    audio_output: Any
    min_volume: Any
    max_volume: Any
    volume_level: Any
    is_on: bool
    playing: bool
    state_lock: Any
    def __init__(self, hass: HomeAssistant, host: str, mac: str, pin: str, ignored_sources: list[str]) -> None: ...
    def _send_command(self, command: str, repeats: int = ...) -> None: ...
    def _get_source(self) -> Union[str, None]: ...
    def _refresh_volume(self) -> bool: ...
    def _refresh_channels(self) -> bool: ...
    def _refresh_playing_info(self) -> None: ...
    def _update_tv_data(self) -> None: ...
    async def _async_update_data(self) -> None: ...
    async def async_turn_on(self) -> None: ...
    async def async_turn_off(self) -> None: ...
    async def async_set_volume_level(self, volume: float) -> None: ...
    async def async_volume_up(self) -> None: ...
    async def async_volume_down(self) -> None: ...
    async def async_volume_mute(self, mute: bool) -> None: ...
    async def async_media_play(self) -> None: ...
    async def async_media_pause(self) -> None: ...
    async def async_media_stop(self) -> None: ...
    async def async_media_next_track(self) -> None: ...
    async def async_media_previous_track(self) -> None: ...
    async def async_select_source(self, source: str) -> None: ...
    async def async_send_command(self, command: Iterable[str], repeats: int) -> None: ...
