"""Deebot U2 Pro Capabilities.""" from __future__ import annotations from deebot_client.capabilities import ( Capabilities, CapabilityClean, CapabilityCleanAction, CapabilityCustomCommand, CapabilityEvent, CapabilityExecute, CapabilityLifeSpan, CapabilitySet, CapabilitySettings, CapabilitySetTypes, CapabilityStats, CapabilityWater, DeviceType, ) from deebot_client.commands.json.battery import GetBattery from deebot_client.commands.json.charge import Charge from deebot_client.commands.json.charge_state import GetChargeState from deebot_client.commands.json.clean import Clean, CleanArea, GetCleanInfo from deebot_client.commands.json.clean_logs import GetCleanLogs 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.network import GetNetInfo from deebot_client.commands.json.play_sound import PlaySound 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, CleanLogEvent, CustomCommandEvent, ErrorEvent, FanSpeedEvent, FanSpeedLevel, LifeSpan, LifeSpanEvent, NetworkInfoEvent, ReportStatsEvent, 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=Clean, area=CleanArea), 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, ), ), life_span=CapabilityLifeSpan( types=( LifeSpan.BRUSH, LifeSpan.SIDE_BRUSH, ), event=LifeSpanEvent, get=[ GetLifeSpan( [ LifeSpan.BRUSH, LifeSpan.FILTER, LifeSpan.SIDE_BRUSH, ] ) ], reset=ResetLifeSpan, ), network=CapabilityEvent(NetworkInfoEvent, [GetNetInfo()]), play_sound=CapabilityExecute(PlaySound), settings=CapabilitySettings( volume=CapabilitySet(VolumeEvent, [GetVolume()], SetVolume), ), state=CapabilityEvent(StateEvent, [GetChargeState(), GetCleanInfo()]), 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()] ), ), ), )