from . import ATTR_CURRENT_POSITION as ATTR_CURRENT_POSITION, ATTR_CURRENT_TILT_POSITION as ATTR_CURRENT_TILT_POSITION, ATTR_POSITION as ATTR_POSITION, ATTR_TILT_POSITION as ATTR_TILT_POSITION, CoverEntityFeature as CoverEntityFeature, CoverState as CoverState, DOMAIN as DOMAIN
from _typeshed import Incomplete
from collections.abc import Coroutine, Iterable
from functools import partial
from homeassistant.const import ATTR_ENTITY_ID as ATTR_ENTITY_ID, ATTR_SUPPORTED_FEATURES as ATTR_SUPPORTED_FEATURES, SERVICE_CLOSE_COVER as SERVICE_CLOSE_COVER, SERVICE_CLOSE_COVER_TILT as SERVICE_CLOSE_COVER_TILT, SERVICE_OPEN_COVER as SERVICE_OPEN_COVER, SERVICE_OPEN_COVER_TILT as SERVICE_OPEN_COVER_TILT, SERVICE_SET_COVER_POSITION as SERVICE_SET_COVER_POSITION, SERVICE_SET_COVER_TILT_POSITION as SERVICE_SET_COVER_TILT_POSITION
from homeassistant.core import Context as Context, HomeAssistant as HomeAssistant, ServiceResponse as ServiceResponse, State as State
from homeassistant.util.enum import try_parse_enum as try_parse_enum
from typing import Any, Final

_LOGGER: Incomplete
OPENING_STATES: Incomplete
CLOSING_STATES: Incomplete
VALID_STATES: set[CoverState]
FULL_OPEN: Final[int]
FULL_CLOSE: Final[int]

def _determine_features(current_attrs: dict[str, Any]) -> CoverEntityFeature: ...
async def _async_set_position(service_call: partial[Coroutine[Any, Any, ServiceResponse]], service_data: dict[str, Any], features: CoverEntityFeature, target_position: int) -> bool: ...
async def _async_set_tilt_position(service_call: partial[Coroutine[Any, Any, ServiceResponse]], service_data: dict[str, Any], features: CoverEntityFeature, target_tilt_position: int) -> bool: ...
async def _async_close_cover(service_call: partial[Coroutine[Any, Any, ServiceResponse]], service_data: dict[str, Any], features: CoverEntityFeature, set_position: bool, set_tilt: bool) -> None: ...
async def _async_open_cover(service_call: partial[Coroutine[Any, Any, ServiceResponse]], service_data: dict[str, Any], features: CoverEntityFeature, set_position: bool, set_tilt: bool) -> None: ...
async def _async_reproduce_state(hass: HomeAssistant, state: State, *, context: Context | None = None, reproduce_options: dict[str, Any] | None = None) -> None: ...
async def async_reproduce_states(hass: HomeAssistant, states: Iterable[State], *, context: Context | None = None, reproduce_options: dict[str, Any] | None = None) -> None: ...
