from .accessories import HomeAccessory as HomeAccessory, TYPES as TYPES
from .const import ATTR_KEY_NAME as ATTR_KEY_NAME, CATEGORY_RECEIVER as CATEGORY_RECEIVER, CHAR_ACTIVE as CHAR_ACTIVE, CHAR_MUTE as CHAR_MUTE, CHAR_NAME as CHAR_NAME, CHAR_ON as CHAR_ON, CHAR_VOLUME as CHAR_VOLUME, CHAR_VOLUME_CONTROL_TYPE as CHAR_VOLUME_CONTROL_TYPE, CHAR_VOLUME_SELECTOR as CHAR_VOLUME_SELECTOR, CONF_FEATURE_LIST as CONF_FEATURE_LIST, EVENT_HOMEKIT_TV_REMOTE_KEY_PRESSED as EVENT_HOMEKIT_TV_REMOTE_KEY_PRESSED, FEATURE_ON_OFF as FEATURE_ON_OFF, FEATURE_PLAY_PAUSE as FEATURE_PLAY_PAUSE, FEATURE_PLAY_STOP as FEATURE_PLAY_STOP, FEATURE_TOGGLE_MUTE as FEATURE_TOGGLE_MUTE, KEY_PLAY_PAUSE as KEY_PLAY_PAUSE, SERV_SWITCH as SERV_SWITCH, SERV_TELEVISION_SPEAKER as SERV_TELEVISION_SPEAKER
from .type_remotes import REMOTE_KEYS as REMOTE_KEYS, RemoteInputSelectAccessory as RemoteInputSelectAccessory
from .util import cleanup_name_for_homekit as cleanup_name_for_homekit, get_media_player_features as get_media_player_features
from _typeshed import Incomplete
from homeassistant.components.media_player import ATTR_INPUT_SOURCE as ATTR_INPUT_SOURCE, ATTR_INPUT_SOURCE_LIST as ATTR_INPUT_SOURCE_LIST, ATTR_MEDIA_VOLUME_LEVEL as ATTR_MEDIA_VOLUME_LEVEL, ATTR_MEDIA_VOLUME_MUTED as ATTR_MEDIA_VOLUME_MUTED, DOMAIN as DOMAIN, MediaPlayerEntityFeature as MediaPlayerEntityFeature, SERVICE_SELECT_SOURCE as SERVICE_SELECT_SOURCE
from homeassistant.const import ATTR_ENTITY_ID as ATTR_ENTITY_ID, ATTR_SUPPORTED_FEATURES as ATTR_SUPPORTED_FEATURES, SERVICE_MEDIA_PAUSE as SERVICE_MEDIA_PAUSE, SERVICE_MEDIA_PLAY as SERVICE_MEDIA_PLAY, SERVICE_MEDIA_PLAY_PAUSE as SERVICE_MEDIA_PLAY_PAUSE, SERVICE_MEDIA_STOP as SERVICE_MEDIA_STOP, SERVICE_TURN_OFF as SERVICE_TURN_OFF, SERVICE_TURN_ON as SERVICE_TURN_ON, SERVICE_VOLUME_DOWN as SERVICE_VOLUME_DOWN, SERVICE_VOLUME_MUTE as SERVICE_VOLUME_MUTE, SERVICE_VOLUME_SET as SERVICE_VOLUME_SET, SERVICE_VOLUME_UP as SERVICE_VOLUME_UP, STATE_OFF as STATE_OFF, STATE_PAUSED as STATE_PAUSED, STATE_PLAYING as STATE_PLAYING, STATE_STANDBY as STATE_STANDBY, STATE_UNKNOWN as STATE_UNKNOWN
from homeassistant.core import State as State, callback as callback
from pyhap.characteristic import Characteristic as Characteristic
from typing import Any

_LOGGER: Incomplete
MODE_FRIENDLY_NAME: Incomplete
MEDIA_PLAYER_OFF_STATES: Incomplete

class MediaPlayer(HomeAccessory):
    chars: Incomplete
    def __init__(self, *args: Any) -> None: ...
    def generate_service_name(self, mode: str) -> str: ...
    def set_on_off(self, value: bool) -> None: ...
    def set_play_pause(self, value: bool) -> None: ...
    def set_play_stop(self, value: bool) -> None: ...
    def set_toggle_mute(self, value: bool) -> None: ...
    def async_update_state(self, new_state: State) -> None: ...

class TelevisionMediaPlayer(RemoteInputSelectAccessory):
    chars_speaker: Incomplete
    _supports_play_pause: Incomplete
    char_mute: Incomplete
    char_volume_selector: Incomplete
    char_volume: Incomplete
    def __init__(self, *args: Any, **kwargs: Any) -> None: ...
    def set_on_off(self, value: bool) -> None: ...
    def set_mute(self, value: bool) -> None: ...
    def set_volume(self, value: bool) -> None: ...
    def set_volume_step(self, value: bool) -> None: ...
    def set_input_source(self, value: int) -> None: ...
    def set_remote_key(self, value: int) -> None: ...
    def async_update_state(self, new_state: State) -> None: ...

class ReceiverMediaPlayer(TelevisionMediaPlayer):
    def __init__(self, *args: Any) -> None: ...
