import datetime

from google.protobuf import timestamp_pb2 as _timestamp_pb2
from google.protobuf.internal import enum_type_wrapper as _enum_type_wrapper
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 DeviceLifecycle(_message.Message):
    __slots__ = ("state",)
    class Lifecycle(int, metaclass=_enum_type_wrapper.EnumTypeWrapper):
        __slots__ = ()
        STATE_INIT: _ClassVar[DeviceLifecycle.Lifecycle]
        STATE_READY: _ClassVar[DeviceLifecycle.Lifecycle]
        STATE_RUNNING: _ClassVar[DeviceLifecycle.Lifecycle]
        STATE_ERROR: _ClassVar[DeviceLifecycle.Lifecycle]
        STATE_ESTOP: _ClassVar[DeviceLifecycle.Lifecycle]
        STATE_STOP: _ClassVar[DeviceLifecycle.Lifecycle]
    STATE_INIT: DeviceLifecycle.Lifecycle
    STATE_READY: DeviceLifecycle.Lifecycle
    STATE_RUNNING: DeviceLifecycle.Lifecycle
    STATE_ERROR: DeviceLifecycle.Lifecycle
    STATE_ESTOP: DeviceLifecycle.Lifecycle
    STATE_STOP: DeviceLifecycle.Lifecycle
    STATE_FIELD_NUMBER: _ClassVar[int]
    state: DeviceLifecycle.Lifecycle
    def __init__(self, state: _Optional[_Union[DeviceLifecycle.Lifecycle, str]] = ...) -> None: ...

class CommandHeader(_message.Message):
    __slots__ = ()
    class Request(_message.Message):
        __slots__ = ("device_id", "timestamp")
        DEVICE_ID_FIELD_NUMBER: _ClassVar[int]
        TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
        device_id: str
        timestamp: _timestamp_pb2.Timestamp
        def __init__(self, device_id: _Optional[str] = ..., timestamp: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...
    class Feedback(_message.Message):
        __slots__ = ("success", "error_message", "timestamp")
        SUCCESS_FIELD_NUMBER: _ClassVar[int]
        ERROR_MESSAGE_FIELD_NUMBER: _ClassVar[int]
        TIMESTAMP_FIELD_NUMBER: _ClassVar[int]
        success: bool
        error_message: str
        timestamp: _timestamp_pb2.Timestamp
        def __init__(self, success: _Optional[bool] = ..., error_message: _Optional[str] = ..., timestamp: _Optional[_Union[datetime.datetime, _timestamp_pb2.Timestamp, _Mapping]] = ...) -> None: ...
    def __init__(self) -> None: ...

class ConfigParam(_message.Message):
    __slots__ = ("param_name", "int_value", "double_value", "string_value", "bool_value", "bytes_value")
    PARAM_NAME_FIELD_NUMBER: _ClassVar[int]
    INT_VALUE_FIELD_NUMBER: _ClassVar[int]
    DOUBLE_VALUE_FIELD_NUMBER: _ClassVar[int]
    STRING_VALUE_FIELD_NUMBER: _ClassVar[int]
    BOOL_VALUE_FIELD_NUMBER: _ClassVar[int]
    BYTES_VALUE_FIELD_NUMBER: _ClassVar[int]
    param_name: str
    int_value: int
    double_value: float
    string_value: str
    bool_value: bool
    bytes_value: bytes
    def __init__(self, param_name: _Optional[str] = ..., int_value: _Optional[int] = ..., double_value: _Optional[float] = ..., string_value: _Optional[str] = ..., bool_value: _Optional[bool] = ..., bytes_value: _Optional[bytes] = ...) -> None: ...
