"""Deebot N20 Capabilities.""" from __future__ import annotations from deebot_client.capabilities import ( Capabilities, CapabilityClean, CapabilityCleanAction, CapabilityCustomCommand, CapabilityEvent, CapabilityExecute, CapabilityLifeSpan, CapabilityMap, CapabilitySet, CapabilitySetEnable, CapabilitySettings, CapabilitySetTypes, CapabilityStats, CapabilityWater, DeviceType, ) from deebot_client.commands.json.battery import GetBattery from deebot_client.commands.json.carpet import ( GetCarpetAutoFanBoost, SetCarpetAutoFanBoost, ) from deebot_client.commands.json.charge import Charge from deebot_client.commands.json.charge_state import GetChargeState from deebot_client.commands.json.child_lock import GetChildLock, SetChildLock from deebot_client.commands.json.clean import CleanAreaV2, CleanV2, GetCleanInfoV2 from deebot_client.commands.json.clean_count import GetCleanCount, SetCleanCount from deebot_client.commands.json.clean_logs import GetCleanLogs from deebot_client.commands.json.continuous_cleaning import ( GetContinuousCleaning, SetContinuousCleaning, ) from deebot_client.commands.json.custom import CustomCommand from deebot_client.commands.json.error import GetError from deebot_client.commands.json.fan_speed import GetFanSpeed, SetFanSpeed from deebot_client.commands.json.life_span import GetLifeSpan, ResetLifeSpan from deebot_client.commands.json.map import ( GetCachedMapInfo, GetMajorMap, GetMapInfoV2, GetMapSetV2, GetMapTrace, GetMinorMap, SetMajorMap, ) from deebot_client.commands.json.multimap_state import ( GetMultimapState, SetMultimapState, ) from deebot_client.commands.json.network import GetNetInfo from deebot_client.commands.json.play_sound import PlaySound from deebot_client.commands.json.pos import GetPos from deebot_client.commands.json.relocation import SetRelocationState from deebot_client.commands.json.stats import GetStats, GetTotalStats from deebot_client.commands.json.volume import GetVolume, SetVolume from deebot_client.commands.json.water_info import GetWaterInfo, SetWaterInfo from deebot_client.const import DataType from deebot_client.events import ( AvailabilityEvent, BatteryEvent, CachedMapInfoEvent, CarpetAutoFanBoostEvent, ChildLockEvent, CleanCountEvent, CleanLogEvent, ContinuousCleaningEvent, CustomCommandEvent, ErrorEvent, FanSpeedEvent, FanSpeedLevel, LifeSpan, LifeSpanEvent, MajorMapEvent, MapChangedEvent, MapTraceEvent, MultimapStateEvent, NetworkInfoEvent, PositionsEvent, ReportStatsEvent, RoomsEvent, StateEvent, StatsEvent, TotalStatsEvent, VolumeEvent, water_info, ) from deebot_client.models import StaticDeviceInfo def get_device_info() -> StaticDeviceInfo: """Get device info for this model.""" return StaticDeviceInfo( DataType.JSON, Capabilities( device_type=DeviceType.VACUUM, availability=CapabilityEvent( AvailabilityEvent, [GetBattery(is_available_check=True)] ), battery=CapabilityEvent(BatteryEvent, [GetBattery()]), charge=CapabilityExecute(Charge), clean=CapabilityClean( action=CapabilityCleanAction(command=CleanV2, area=CleanAreaV2), continuous=CapabilitySetEnable( ContinuousCleaningEvent, [GetContinuousCleaning()], SetContinuousCleaning, ), count=CapabilitySet(CleanCountEvent, [GetCleanCount()], SetCleanCount), log=CapabilityEvent(CleanLogEvent, [GetCleanLogs()]), ), custom=CapabilityCustomCommand( event=CustomCommandEvent, get=[], set=CustomCommand ), error=CapabilityEvent(ErrorEvent, [GetError()]), fan_speed=CapabilitySetTypes( event=FanSpeedEvent, get=[GetFanSpeed()], set=SetFanSpeed, types=( FanSpeedLevel.QUIET, FanSpeedLevel.NORMAL, FanSpeedLevel.MAX, FanSpeedLevel.MAX_PLUS, ), ), life_span=CapabilityLifeSpan( types=( LifeSpan.BRUSH, LifeSpan.FILTER, LifeSpan.SIDE_BRUSH, LifeSpan.UNIT_CARE, LifeSpan.ROUND_MOP, ), event=LifeSpanEvent, get=[ GetLifeSpan( [ LifeSpan.BRUSH, LifeSpan.FILTER, LifeSpan.SIDE_BRUSH, LifeSpan.UNIT_CARE, LifeSpan.ROUND_MOP, ] ) ], reset=ResetLifeSpan, ), map=CapabilityMap( cached_info=CapabilityEvent(CachedMapInfoEvent, [GetCachedMapInfo()]), changed=CapabilityEvent(MapChangedEvent, []), info=CapabilityExecute(GetMapInfoV2), major=CapabilitySet(MajorMapEvent, [GetMajorMap()], SetMajorMap), minor=CapabilityExecute(GetMinorMap), multi_state=CapabilitySetEnable( MultimapStateEvent, [GetMultimapState()], SetMultimapState ), position=CapabilityEvent(PositionsEvent, [GetPos()]), relocation=CapabilityExecute(SetRelocationState), rooms=CapabilityEvent(RoomsEvent, [GetCachedMapInfo()]), set=CapabilityExecute(GetMapSetV2), trace=CapabilityEvent(MapTraceEvent, [GetMapTrace()]), ), network=CapabilityEvent(NetworkInfoEvent, [GetNetInfo()]), play_sound=CapabilityExecute(PlaySound), settings=CapabilitySettings( carpet_auto_fan_boost=CapabilitySetEnable( CarpetAutoFanBoostEvent, [GetCarpetAutoFanBoost()], SetCarpetAutoFanBoost, ), child_lock=CapabilitySetEnable( ChildLockEvent, [GetChildLock()], SetChildLock ), volume=CapabilitySet(VolumeEvent, [GetVolume()], SetVolume), ), state=CapabilityEvent(StateEvent, [GetChargeState(), GetCleanInfoV2()]), stats=CapabilityStats( clean=CapabilityEvent(StatsEvent, [GetStats()]), report=CapabilityEvent(ReportStatsEvent, []), total=CapabilityEvent(TotalStatsEvent, [GetTotalStats()]), ), water=CapabilityWater( amount=CapabilitySetTypes( event=water_info.WaterAmountEvent, get=[GetWaterInfo()], set=SetWaterInfo, types=( water_info.WaterAmount.LOW, water_info.WaterAmount.MEDIUM, water_info.WaterAmount.HIGH, ), ), mop_attached=CapabilityEvent( water_info.MopAttachedEvent, [GetWaterInfo()] ), ), ), )