from cmvr.common import geometry_pb2 as _geometry_pb2
from cmvr.config import touch_screen_common_config_pb2 as _touch_screen_common_config_pb2
from cmvr.config import touch_screen_algorithm_config_pb2 as _touch_screen_algorithm_config_pb2
from google.protobuf.internal import containers as _containers
from google.protobuf import descriptor as _descriptor
from google.protobuf import message as _message
from collections.abc import Iterable as _Iterable, Mapping as _Mapping
from typing import ClassVar as _ClassVar, Optional as _Optional, Union as _Union

DESCRIPTOR: _descriptor.FileDescriptor

class TouchScreenInitJointPoint(_message.Message):
    __slots__ = ("joint_name", "rad")
    JOINT_NAME_FIELD_NUMBER: _ClassVar[int]
    RAD_FIELD_NUMBER: _ClassVar[int]
    joint_name: str
    rad: float
    def __init__(self, joint_name: _Optional[str] = ..., rad: _Optional[float] = ...) -> None: ...

class TouchScreenTaskDevicesConfig(_message.Message):
    __slots__ = ("arm_id", "dexhand_id", "camera_id")
    ARM_ID_FIELD_NUMBER: _ClassVar[int]
    DEXHAND_ID_FIELD_NUMBER: _ClassVar[int]
    CAMERA_ID_FIELD_NUMBER: _ClassVar[int]
    arm_id: str
    dexhand_id: str
    camera_id: str
    def __init__(self, arm_id: _Optional[str] = ..., dexhand_id: _Optional[str] = ..., camera_id: _Optional[str] = ...) -> None: ...

class TouchScreenTaskInitializationConfig(_message.Message):
    __slots__ = ("before_start", "after_finish", "joint_positions", "velocity", "acceleration")
    BEFORE_START_FIELD_NUMBER: _ClassVar[int]
    AFTER_FINISH_FIELD_NUMBER: _ClassVar[int]
    JOINT_POSITIONS_FIELD_NUMBER: _ClassVar[int]
    VELOCITY_FIELD_NUMBER: _ClassVar[int]
    ACCELERATION_FIELD_NUMBER: _ClassVar[int]
    before_start: bool
    after_finish: bool
    joint_positions: _containers.RepeatedCompositeFieldContainer[TouchScreenInitJointPoint]
    velocity: float
    acceleration: float
    def __init__(self, before_start: _Optional[bool] = ..., after_finish: _Optional[bool] = ..., joint_positions: _Optional[_Iterable[_Union[TouchScreenInitJointPoint, _Mapping]]] = ..., velocity: _Optional[float] = ..., acceleration: _Optional[float] = ...) -> None: ...

class TouchScreenTaskPerceptionConfig(_message.Message):
    __slots__ = ("apriltag",)
    APRILTAG_FIELD_NUMBER: _ClassVar[int]
    apriltag: _touch_screen_algorithm_config_pb2.TouchScreenApriltagConfig
    def __init__(self, apriltag: _Optional[_Union[_touch_screen_algorithm_config_pb2.TouchScreenApriltagConfig, _Mapping]] = ...) -> None: ...

class TouchScreenAlignmentTargetConfig(_message.Message):
    __slots__ = ("position_in_camera", "rotation_vector", "mode")
    POSITION_IN_CAMERA_FIELD_NUMBER: _ClassVar[int]
    ROTATION_VECTOR_FIELD_NUMBER: _ClassVar[int]
    MODE_FIELD_NUMBER: _ClassVar[int]
    position_in_camera: _geometry_pb2.Vec3
    rotation_vector: _geometry_pb2.Vec3
    mode: _touch_screen_common_config_pb2.TouchScreenAlignMode
    def __init__(self, position_in_camera: _Optional[_Union[_geometry_pb2.Vec3, _Mapping]] = ..., rotation_vector: _Optional[_Union[_geometry_pb2.Vec3, _Mapping]] = ..., mode: _Optional[_Union[_touch_screen_common_config_pb2.TouchScreenAlignMode, str]] = ...) -> None: ...

class TouchScreenTaskAlignmentConfig(_message.Message):
    __slots__ = ("ibvs", "target", "error_threshold", "stable_frames", "timeout_s", "pause_when_reached")
    IBVS_FIELD_NUMBER: _ClassVar[int]
    TARGET_FIELD_NUMBER: _ClassVar[int]
    ERROR_THRESHOLD_FIELD_NUMBER: _ClassVar[int]
    STABLE_FRAMES_FIELD_NUMBER: _ClassVar[int]
    TIMEOUT_S_FIELD_NUMBER: _ClassVar[int]
    PAUSE_WHEN_REACHED_FIELD_NUMBER: _ClassVar[int]
    ibvs: _touch_screen_algorithm_config_pb2.TouchScreenIbvsConfig
    target: TouchScreenAlignmentTargetConfig
    error_threshold: _geometry_pb2.Vec6
    stable_frames: int
    timeout_s: float
    pause_when_reached: bool
    def __init__(self, ibvs: _Optional[_Union[_touch_screen_algorithm_config_pb2.TouchScreenIbvsConfig, _Mapping]] = ..., target: _Optional[_Union[TouchScreenAlignmentTargetConfig, _Mapping]] = ..., error_threshold: _Optional[_Union[_geometry_pb2.Vec6, _Mapping]] = ..., stable_frames: _Optional[int] = ..., timeout_s: _Optional[float] = ..., pause_when_reached: _Optional[bool] = ...) -> None: ...

class TouchScreenTouchSpeedLConfig(_message.Message):
    __slots__ = ("twist_tool", "acceleration", "max_distance_m")
    TWIST_TOOL_FIELD_NUMBER: _ClassVar[int]
    ACCELERATION_FIELD_NUMBER: _ClassVar[int]
    MAX_DISTANCE_M_FIELD_NUMBER: _ClassVar[int]
    twist_tool: _geometry_pb2.Vec6
    acceleration: float
    max_distance_m: float
    def __init__(self, twist_tool: _Optional[_Union[_geometry_pb2.Vec6, _Mapping]] = ..., acceleration: _Optional[float] = ..., max_distance_m: _Optional[float] = ...) -> None: ...

class TouchScreenTouchMoveLConfig(_message.Message):
    __slots__ = ("direction_tool", "distance_m", "velocity", "acceleration", "jerk", "joint_velocity_limits")
    DIRECTION_TOOL_FIELD_NUMBER: _ClassVar[int]
    DISTANCE_M_FIELD_NUMBER: _ClassVar[int]
    VELOCITY_FIELD_NUMBER: _ClassVar[int]
    ACCELERATION_FIELD_NUMBER: _ClassVar[int]
    JERK_FIELD_NUMBER: _ClassVar[int]
    JOINT_VELOCITY_LIMITS_FIELD_NUMBER: _ClassVar[int]
    direction_tool: _geometry_pb2.Vec6
    distance_m: float
    velocity: float
    acceleration: float
    jerk: float
    joint_velocity_limits: _containers.RepeatedScalarFieldContainer[float]
    def __init__(self, direction_tool: _Optional[_Union[_geometry_pb2.Vec6, _Mapping]] = ..., distance_m: _Optional[float] = ..., velocity: _Optional[float] = ..., acceleration: _Optional[float] = ..., jerk: _Optional[float] = ..., joint_velocity_limits: _Optional[_Iterable[float]] = ...) -> None: ...

class TouchScreenTactileTriggerConfig(_message.Message):
    __slots__ = ("finger", "region", "criterion", "force_threshold")
    FINGER_FIELD_NUMBER: _ClassVar[int]
    REGION_FIELD_NUMBER: _ClassVar[int]
    CRITERION_FIELD_NUMBER: _ClassVar[int]
    FORCE_THRESHOLD_FIELD_NUMBER: _ClassVar[int]
    finger: _touch_screen_common_config_pb2.TouchScreenFingerType
    region: _touch_screen_common_config_pb2.TouchScreenTactileRegion
    criterion: _touch_screen_common_config_pb2.TouchScreenTactileCriterion
    force_threshold: float
    def __init__(self, finger: _Optional[_Union[_touch_screen_common_config_pb2.TouchScreenFingerType, str]] = ..., region: _Optional[_Union[_touch_screen_common_config_pb2.TouchScreenTactileRegion, str]] = ..., criterion: _Optional[_Union[_touch_screen_common_config_pb2.TouchScreenTactileCriterion, str]] = ..., force_threshold: _Optional[float] = ...) -> None: ...

class TouchScreenTaskTouchConfig(_message.Message):
    __slots__ = ("speed_l", "move_l", "tactile", "dwell_time_s")
    SPEED_L_FIELD_NUMBER: _ClassVar[int]
    MOVE_L_FIELD_NUMBER: _ClassVar[int]
    TACTILE_FIELD_NUMBER: _ClassVar[int]
    DWELL_TIME_S_FIELD_NUMBER: _ClassVar[int]
    speed_l: TouchScreenTouchSpeedLConfig
    move_l: TouchScreenTouchMoveLConfig
    tactile: TouchScreenTactileTriggerConfig
    dwell_time_s: float
    def __init__(self, speed_l: _Optional[_Union[TouchScreenTouchSpeedLConfig, _Mapping]] = ..., move_l: _Optional[_Union[TouchScreenTouchMoveLConfig, _Mapping]] = ..., tactile: _Optional[_Union[TouchScreenTactileTriggerConfig, _Mapping]] = ..., dwell_time_s: _Optional[float] = ...) -> None: ...

class TouchScreenTaskRetractConfig(_message.Message):
    __slots__ = ("twist_tool", "acceleration", "duration_s")
    TWIST_TOOL_FIELD_NUMBER: _ClassVar[int]
    ACCELERATION_FIELD_NUMBER: _ClassVar[int]
    DURATION_S_FIELD_NUMBER: _ClassVar[int]
    twist_tool: _geometry_pb2.Vec6
    acceleration: float
    duration_s: float
    def __init__(self, twist_tool: _Optional[_Union[_geometry_pb2.Vec6, _Mapping]] = ..., acceleration: _Optional[float] = ..., duration_s: _Optional[float] = ...) -> None: ...

class TouchScreenTaskConfig(_message.Message):
    __slots__ = ("devices", "initialization", "perception", "alignment", "touch", "retract", "id")
    DEVICES_FIELD_NUMBER: _ClassVar[int]
    INITIALIZATION_FIELD_NUMBER: _ClassVar[int]
    PERCEPTION_FIELD_NUMBER: _ClassVar[int]
    ALIGNMENT_FIELD_NUMBER: _ClassVar[int]
    TOUCH_FIELD_NUMBER: _ClassVar[int]
    RETRACT_FIELD_NUMBER: _ClassVar[int]
    ID_FIELD_NUMBER: _ClassVar[int]
    devices: TouchScreenTaskDevicesConfig
    initialization: TouchScreenTaskInitializationConfig
    perception: TouchScreenTaskPerceptionConfig
    alignment: TouchScreenTaskAlignmentConfig
    touch: TouchScreenTaskTouchConfig
    retract: TouchScreenTaskRetractConfig
    id: str
    def __init__(self, devices: _Optional[_Union[TouchScreenTaskDevicesConfig, _Mapping]] = ..., initialization: _Optional[_Union[TouchScreenTaskInitializationConfig, _Mapping]] = ..., perception: _Optional[_Union[TouchScreenTaskPerceptionConfig, _Mapping]] = ..., alignment: _Optional[_Union[TouchScreenTaskAlignmentConfig, _Mapping]] = ..., touch: _Optional[_Union[TouchScreenTaskTouchConfig, _Mapping]] = ..., retract: _Optional[_Union[TouchScreenTaskRetractConfig, _Mapping]] = ..., id: _Optional[str] = ...) -> None: ...

class TouchScreenTaskRootConfig(_message.Message):
    __slots__ = ("touch_screen_task",)
    TOUCH_SCREEN_TASK_FIELD_NUMBER: _ClassVar[int]
    touch_screen_task: TouchScreenTaskConfig
    def __init__(self, touch_screen_task: _Optional[_Union[TouchScreenTaskConfig, _Mapping]] = ...) -> None: ...
