from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from collections.abc import Mapping as _Mapping
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union

DESCRIPTOR: _descriptor.FileDescriptor

class Empty(_message.Message):
    __slots__ = ()
    def __init__(self) -> None: ...

class HealthResponse(_message.Message):
    __slots__ = ("status", "version", "grpc_available", "webrtc_available", "webrtc_connected", "hardware", "battery")
    STATUS_FIELD_NUMBER: _ClassVar[int]
    VERSION_FIELD_NUMBER: _ClassVar[int]
    GRPC_AVAILABLE_FIELD_NUMBER: _ClassVar[int]
    WEBRTC_AVAILABLE_FIELD_NUMBER: _ClassVar[int]
    WEBRTC_CONNECTED_FIELD_NUMBER: _ClassVar[int]
    HARDWARE_FIELD_NUMBER: _ClassVar[int]
    BATTERY_FIELD_NUMBER: _ClassVar[int]
    status: str
    version: str
    grpc_available: bool
    webrtc_available: bool
    webrtc_connected: bool
    hardware: HardwareStatus
    battery: BatteryStatus
    def __init__(self, status: _Optional[str] = ..., version: _Optional[str] = ..., grpc_available: bool = ..., webrtc_available: bool = ..., webrtc_connected: bool = ..., hardware: _Optional[_Union[HardwareStatus, _Mapping]] = ..., battery: _Optional[_Union[BatteryStatus, _Mapping]] = ...) -> None: ...

class HardwareStatus(_message.Message):
    __slots__ = ("servos", "camera", "audio", "display", "battery", "moving")
    SERVOS_FIELD_NUMBER: _ClassVar[int]
    CAMERA_FIELD_NUMBER: _ClassVar[int]
    AUDIO_FIELD_NUMBER: _ClassVar[int]
    DISPLAY_FIELD_NUMBER: _ClassVar[int]
    BATTERY_FIELD_NUMBER: _ClassVar[int]
    MOVING_FIELD_NUMBER: _ClassVar[int]
    servos: bool
    camera: bool
    audio: bool
    display: bool
    battery: bool
    moving: bool
    def __init__(self, servos: bool = ..., camera: bool = ..., audio: bool = ..., display: bool = ..., battery: bool = ..., moving: bool = ...) -> None: ...

class VersionResponse(_message.Message):
    __slots__ = ("version", "git_commit", "build_date", "python_version", "platform", "minimum_client")
    VERSION_FIELD_NUMBER: _ClassVar[int]
    GIT_COMMIT_FIELD_NUMBER: _ClassVar[int]
    BUILD_DATE_FIELD_NUMBER: _ClassVar[int]
    PYTHON_VERSION_FIELD_NUMBER: _ClassVar[int]
    PLATFORM_FIELD_NUMBER: _ClassVar[int]
    MINIMUM_CLIENT_FIELD_NUMBER: _ClassVar[int]
    version: str
    git_commit: str
    build_date: str
    python_version: str
    platform: str
    minimum_client: str
    def __init__(self, version: _Optional[str] = ..., git_commit: _Optional[str] = ..., build_date: _Optional[str] = ..., python_version: _Optional[str] = ..., platform: _Optional[str] = ..., minimum_client: _Optional[str] = ...) -> None: ...

class UpdateCheckResponse(_message.Message):
    __slots__ = ("update_available", "current_version", "latest_version", "severity", "release_notes", "pypi_url", "github_url")
    UPDATE_AVAILABLE_FIELD_NUMBER: _ClassVar[int]
    CURRENT_VERSION_FIELD_NUMBER: _ClassVar[int]
    LATEST_VERSION_FIELD_NUMBER: _ClassVar[int]
    SEVERITY_FIELD_NUMBER: _ClassVar[int]
    RELEASE_NOTES_FIELD_NUMBER: _ClassVar[int]
    PYPI_URL_FIELD_NUMBER: _ClassVar[int]
    GITHUB_URL_FIELD_NUMBER: _ClassVar[int]
    update_available: bool
    current_version: str
    latest_version: str
    severity: str
    release_notes: str
    pypi_url: str
    github_url: str
    def __init__(self, update_available: bool = ..., current_version: _Optional[str] = ..., latest_version: _Optional[str] = ..., severity: _Optional[str] = ..., release_notes: _Optional[str] = ..., pypi_url: _Optional[str] = ..., github_url: _Optional[str] = ...) -> None: ...

class MoveRequest(_message.Message):
    __slots__ = ("movement", "speed")
    MOVEMENT_FIELD_NUMBER: _ClassVar[int]
    SPEED_FIELD_NUMBER: _ClassVar[int]
    movement: str
    speed: float
    def __init__(self, movement: _Optional[str] = ..., speed: _Optional[float] = ...) -> None: ...

class MoveResponse(_message.Message):
    __slots__ = ("success", "duration", "error")
    SUCCESS_FIELD_NUMBER: _ClassVar[int]
    DURATION_FIELD_NUMBER: _ClassVar[int]
    ERROR_FIELD_NUMBER: _ClassVar[int]
    success: bool
    duration: float
    error: str
    def __init__(self, success: bool = ..., duration: _Optional[float] = ..., error: _Optional[str] = ...) -> None: ...

class EmotionRequest(_message.Message):
    __slots__ = ("emotion",)
    EMOTION_FIELD_NUMBER: _ClassVar[int]
    emotion: str
    def __init__(self, emotion: _Optional[str] = ...) -> None: ...

class EyeStateRequest(_message.Message):
    __slots__ = ("state",)
    STATE_FIELD_NUMBER: _ClassVar[int]
    state: str
    def __init__(self, state: _Optional[str] = ...) -> None: ...

class CaptureRequest(_message.Message):
    __slots__ = ("width", "height", "quality")
    WIDTH_FIELD_NUMBER: _ClassVar[int]
    HEIGHT_FIELD_NUMBER: _ClassVar[int]
    QUALITY_FIELD_NUMBER: _ClassVar[int]
    width: int
    height: int
    quality: int
    def __init__(self, width: _Optional[int] = ..., height: _Optional[int] = ..., quality: _Optional[int] = ...) -> None: ...

class CaptureResponse(_message.Message):
    __slots__ = ("image", "width", "height", "format")
    IMAGE_FIELD_NUMBER: _ClassVar[int]
    WIDTH_FIELD_NUMBER: _ClassVar[int]
    HEIGHT_FIELD_NUMBER: _ClassVar[int]
    FORMAT_FIELD_NUMBER: _ClassVar[int]
    image: bytes
    width: int
    height: int
    format: str
    def __init__(self, image: _Optional[bytes] = ..., width: _Optional[int] = ..., height: _Optional[int] = ..., format: _Optional[str] = ...) -> None: ...

class StatusResponse(_message.Message):
    __slots__ = ("connected", "battery", "current_emotion", "current_eye_state", "is_moving", "current_movement")
    CONNECTED_FIELD_NUMBER: _ClassVar[int]
    BATTERY_FIELD_NUMBER: _ClassVar[int]
    CURRENT_EMOTION_FIELD_NUMBER: _ClassVar[int]
    CURRENT_EYE_STATE_FIELD_NUMBER: _ClassVar[int]
    IS_MOVING_FIELD_NUMBER: _ClassVar[int]
    CURRENT_MOVEMENT_FIELD_NUMBER: _ClassVar[int]
    connected: bool
    battery: BatteryStatus
    current_emotion: str
    current_eye_state: str
    is_moving: bool
    current_movement: str
    def __init__(self, connected: bool = ..., battery: _Optional[_Union[BatteryStatus, _Mapping]] = ..., current_emotion: _Optional[str] = ..., current_eye_state: _Optional[str] = ..., is_moving: bool = ..., current_movement: _Optional[str] = ...) -> None: ...

class BatteryStatus(_message.Message):
    __slots__ = ("level", "charging", "voltage", "current")
    LEVEL_FIELD_NUMBER: _ClassVar[int]
    CHARGING_FIELD_NUMBER: _ClassVar[int]
    VOLTAGE_FIELD_NUMBER: _ClassVar[int]
    CURRENT_FIELD_NUMBER: _ClassVar[int]
    level: int
    charging: bool
    voltage: float
    current: float
    def __init__(self, level: _Optional[int] = ..., charging: bool = ..., voltage: _Optional[float] = ..., current: _Optional[float] = ...) -> None: ...

class MovementStatus(_message.Message):
    __slots__ = ("moving", "movement", "progress")
    MOVING_FIELD_NUMBER: _ClassVar[int]
    MOVEMENT_FIELD_NUMBER: _ClassVar[int]
    PROGRESS_FIELD_NUMBER: _ClassVar[int]
    moving: bool
    movement: str
    progress: float
    def __init__(self, moving: bool = ..., movement: _Optional[str] = ..., progress: _Optional[float] = ...) -> None: ...

class AudioLevelRequest(_message.Message):
    __slots__ = ("level",)
    LEVEL_FIELD_NUMBER: _ClassVar[int]
    level: float
    def __init__(self, level: _Optional[float] = ...) -> None: ...

class AudioLevelResponse(_message.Message):
    __slots__ = ("received",)
    RECEIVED_FIELD_NUMBER: _ClassVar[int]
    received: bool
    def __init__(self, received: bool = ...) -> None: ...
