import asyncio
from . import OnkyoConfigEntry as OnkyoConfigEntry
from .const import DOMAIN as DOMAIN, InputSource as InputSource, LEGACY_HDMI_OUTPUT_MAPPING as LEGACY_HDMI_OUTPUT_MAPPING, LEGACY_REV_HDMI_OUTPUT_MAPPING as LEGACY_REV_HDMI_OUTPUT_MAPPING, ListeningMode as ListeningMode, OPTION_MAX_VOLUME as OPTION_MAX_VOLUME, OPTION_VOLUME_RESOLUTION as OPTION_VOLUME_RESOLUTION, VolumeResolution as VolumeResolution, ZONES as ZONES
from .receiver import ReceiverManager as ReceiverManager
from .util import get_meaning as get_meaning
from _typeshed import Incomplete
from aioonkyo import Status as Status, Zone, status
from homeassistant.components.media_player import MediaPlayerEntity as MediaPlayerEntity, MediaPlayerEntityFeature as MediaPlayerEntityFeature, MediaPlayerState as MediaPlayerState, MediaType as MediaType
from homeassistant.core import HomeAssistant as HomeAssistant, callback as callback
from homeassistant.exceptions import ServiceValidationError as ServiceValidationError
from homeassistant.helpers.entity_platform import AddConfigEntryEntitiesCallback as AddConfigEntryEntitiesCallback
from homeassistant.util.hass_dict import HassKey as HassKey
from typing import Any

_LOGGER: Incomplete
DATA_MP_ENTITIES: HassKey[dict[str, dict[Zone, OnkyoMediaPlayer]]]
SUPPORTED_FEATURES_BASE: Incomplete
SUPPORTED_FEATURES_VOLUME: Incomplete
PLAYABLE_SOURCES: Incomplete
ATTR_PRESET: str
ATTR_AUDIO_INFORMATION: str
ATTR_VIDEO_INFORMATION: str
ATTR_VIDEO_OUT: str
QUERY_STATE_DELAY: int
QUERY_AV_INFO_DELAY: int
AUDIO_INFORMATION_MAPPING: Incomplete
VIDEO_INFORMATION_MAPPING: Incomplete

async def async_setup_entry(hass: HomeAssistant, entry: OnkyoConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...

class OnkyoMediaPlayer(MediaPlayerEntity):
    _attr_should_poll: bool
    _attr_has_entity_name: bool
    _supports_volume: bool
    _supports_sound_mode: bool | None
    _supports_audio_info: bool
    _supports_video_info: bool
    _query_state_task: asyncio.Task | None
    _query_av_info_task: asyncio.Task | None
    _manager: Incomplete
    _zone: Incomplete
    _attr_name: Incomplete
    _attr_unique_id: Incomplete
    _volume_resolution: Incomplete
    _max_volume: Incomplete
    _source_mapping: Incomplete
    _rev_source_mapping: Incomplete
    _sound_mode_mapping: Incomplete
    _rev_sound_mode_mapping: Incomplete
    _hdmi_output_mapping: Incomplete
    _rev_hdmi_output_mapping: Incomplete
    _attr_source_list: Incomplete
    _attr_sound_mode_list: Incomplete
    _attr_supported_features: Incomplete
    _attr_extra_state_attributes: Incomplete
    def __init__(self, manager: ReceiverManager, zone: Zone, *, volume_resolution: VolumeResolution, max_volume: float, sources: dict[InputSource, str], sound_modes: dict[ListeningMode, str]) -> None: ...
    async def async_added_to_hass(self) -> None: ...
    async def async_will_remove_from_hass(self) -> None: ...
    @property
    def available(self) -> bool: ...
    async def query_state(self) -> None: ...
    def cancel_tasks(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_mute_volume(self, mute: bool) -> None: ...
    async def async_select_source(self, source: str) -> None: ...
    async def async_select_sound_mode(self, sound_mode: str) -> None: ...
    async def async_select_output(self, hdmi_output: str) -> None: ...
    async def async_play_media(self, media_type: MediaType | str, media_id: str, **kwargs: Any) -> None: ...
    _attr_state: Incomplete
    _attr_volume_level: Incomplete
    _attr_is_volume_muted: Incomplete
    _attr_source: Incomplete
    _attr_sound_mode: Incomplete
    def process_update(self, message: status.Known) -> None: ...
    def _query_state_delayed(self) -> None: ...
    def _query_av_info_delayed(self) -> None: ...
