from . import EcovacsConfigEntry as EcovacsConfigEntry
from .const import DOMAIN as DOMAIN
from .entity import EcovacsEntity as EcovacsEntity, EcovacsLegacyEntity as EcovacsLegacyEntity
from .util import get_name_key as get_name_key
from _typeshed import Incomplete
from collections.abc import Mapping
from deebot_client.capabilities import Capabilities
from deebot_client.device import Device as Device
from deebot_client.events import CachedMapInfoEvent as CachedMapInfoEvent, FanSpeedEvent as FanSpeedEvent, RoomsEvent as RoomsEvent, StateEvent as StateEvent
from deebot_client.events.map import Map as Map
from deebot_client.models import CleanAction
from homeassistant.components.vacuum import Segment as Segment, StateVacuumEntity as StateVacuumEntity, StateVacuumEntityDescription as StateVacuumEntityDescription, VacuumActivity as VacuumActivity, VacuumEntityFeature as VacuumEntityFeature
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 import slugify as slugify
from typing import Any

_LOGGER: Incomplete
_SEGMENTS_SEPARATOR: str
ATTR_ERROR: str

async def async_setup_entry(hass: HomeAssistant, config_entry: EcovacsConfigEntry, async_add_entities: AddConfigEntryEntitiesCallback) -> None: ...

class EcovacsLegacyVacuum(EcovacsLegacyEntity, StateVacuumEntity):
    _attr_fan_speed_list: Incomplete
    _attr_supported_features: Incomplete
    async def async_added_to_hass(self) -> None: ...
    error: Incomplete
    def on_error(self, error: str) -> None: ...
    @property
    def activity(self) -> VacuumActivity | None: ...
    @property
    def fan_speed(self) -> str | None: ...
    @property
    def extra_state_attributes(self) -> dict[str, Any]: ...
    def return_to_base(self, **kwargs: Any) -> None: ...
    def start(self, **kwargs: Any) -> None: ...
    def stop(self, **kwargs: Any) -> None: ...
    def clean_spot(self, **kwargs: Any) -> None: ...
    def locate(self, **kwargs: Any) -> None: ...
    def set_fan_speed(self, fan_speed: str, **kwargs: Any) -> None: ...
    def send_command(self, command: str, params: dict[str, Any] | list[Any] | None = None, **kwargs: Any) -> None: ...
    async def async_raw_get_positions(self) -> None: ...

_STATE_TO_VACUUM_STATE: Incomplete
_ATTR_ROOMS: str

class EcovacsVacuum(EcovacsEntity[Capabilities], StateVacuumEntity):
    _unrecorded_attributes: Incomplete
    _attr_supported_features: Incomplete
    entity_description: Incomplete
    _room_event: RoomsEvent | None
    _maps: dict[str, Map]
    _attr_fan_speed_list: Incomplete
    def __init__(self, device: Device) -> None: ...
    _attr_activity: Incomplete
    _attr_fan_speed: Incomplete
    async def async_added_to_hass(self) -> None: ...
    @property
    def extra_state_attributes(self) -> Mapping[str, Any] | None: ...
    async def async_set_fan_speed(self, fan_speed: str, **kwargs: Any) -> None: ...
    async def async_return_to_base(self, **kwargs: Any) -> None: ...
    async def async_stop(self, **kwargs: Any) -> None: ...
    async def async_pause(self) -> None: ...
    async def async_start(self) -> None: ...
    async def _clean_command(self, action: CleanAction) -> None: ...
    async def async_locate(self, **kwargs: Any) -> None: ...
    async def async_send_command(self, command: str, params: dict[str, Any] | list[Any] | None = None, **kwargs: Any) -> None: ...
    async def async_raw_get_positions(self) -> dict[str, Any]: ...
    @callback
    def _check_segments_changed(self) -> None: ...
    def _get_segments(self) -> list[Segment]: ...
    async def async_get_segments(self) -> list[Segment]: ...
    async def async_clean_segments(self, segment_ids: list[str], **kwargs: Any) -> None: ...

@callback
def _split_composite_id(composite_id: str) -> tuple[str, str]: ...
