"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import bf_proto.percept.output.output_pb2
import blickfeld.data.frame_pb2
import builtins
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import typing
import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor = ...

class LaserName(_LaserName, metaclass=_LaserNameEnumTypeWrapper):
    """Laser identifier"""
    pass
class _LaserName:
    V = typing.NewType('V', builtins.int)
class _LaserNameEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_LaserName.V], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
    LASER_NAME_UNKNOWN = LaserName.V(0)
    FRONT = LaserName.V(1)
    MIDDLE = LaserName.V(2)
    BACK = LaserName.V(3)

LASER_NAME_UNKNOWN = LaserName.V(0)
FRONT = LaserName.V(1)
MIDDLE = LaserName.V(2)
BACK = LaserName.V(3)
global___LaserName = LaserName


class Transform(google.protobuf.message.Message):
    """4×4 row-major transform matrix"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    MATRIX_FIELD_NUMBER: builtins.int
    @property
    def matrix(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.float]: ...
    def __init__(self,
        *,
        matrix : typing.Optional[typing.Iterable[builtins.float]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"matrix",b"matrix"]) -> None: ...
global___Transform = Transform

class LaserCalibration(google.protobuf.message.Message):
    """Container for laser calibration parameters"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    EXTRINSIC_FIELD_NUMBER: builtins.int
    VERTICAL_FOV_FIELD_NUMBER: builtins.int
    HORIZONTAL_FOV_FIELD_NUMBER: builtins.int
    HORIZONTAL_ANGLE_SPACING_FIELD_NUMBER: builtins.int
    FRAME_MODE_FIELD_NUMBER: builtins.int
    SCAN_PATTERN_FIELD_NUMBER: builtins.int
    @property
    def extrinsic(self) -> global___Transform: ...
    vertical_fov: builtins.float = ...
    horizontal_fov: builtins.float = ...
    horizontal_angle_spacing: builtins.float = ...
    frame_mode: typing.Text = ...
    scan_pattern: typing.Text = ...
    def __init__(self,
        *,
        extrinsic : typing.Optional[global___Transform] = ...,
        vertical_fov : typing.Optional[builtins.float] = ...,
        horizontal_fov : typing.Optional[builtins.float] = ...,
        horizontal_angle_spacing : typing.Optional[builtins.float] = ...,
        frame_mode : typing.Optional[typing.Text] = ...,
        scan_pattern : typing.Optional[typing.Text] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"extrinsic",b"extrinsic",u"frame_mode",b"frame_mode",u"horizontal_angle_spacing",b"horizontal_angle_spacing",u"horizontal_fov",b"horizontal_fov",u"scan_pattern",b"scan_pattern",u"vertical_fov",b"vertical_fov"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"extrinsic",b"extrinsic",u"frame_mode",b"frame_mode",u"horizontal_angle_spacing",b"horizontal_angle_spacing",u"horizontal_fov",b"horizontal_fov",u"scan_pattern",b"scan_pattern",u"vertical_fov",b"vertical_fov"]) -> None: ...
global___LaserCalibration = LaserCalibration

class Laser(google.protobuf.message.Message):
    """Single LiDAR sensor with its data"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    LASER_NAME_FIELD_NUMBER: builtins.int
    DATA_FIELD_NUMBER: builtins.int
    CALIBRATION_FIELD_NUMBER: builtins.int
    laser_name: global___LaserName.V = ...
    @property
    def data(self) -> blickfeld.data.frame_pb2.Frame: ...
    @property
    def calibration(self) -> global___LaserCalibration: ...
    def __init__(self,
        *,
        laser_name : typing.Optional[global___LaserName.V] = ...,
        data : typing.Optional[blickfeld.data.frame_pb2.Frame] = ...,
        calibration : typing.Optional[global___LaserCalibration] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"calibration",b"calibration",u"data",b"data",u"laser_name",b"laser_name"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"calibration",b"calibration",u"data",b"data",u"laser_name",b"laser_name"]) -> None: ...
global___Laser = Laser

class Frame(google.protobuf.message.Message):
    """Snapshot of all sensors at a given time, plus detected objects"""
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    TIMESTAMP_NS_FIELD_NUMBER: builtins.int
    LASERS_FIELD_NUMBER: builtins.int
    OBJECT_LIST_FIELD_NUMBER: builtins.int
    timestamp_ns: builtins.int = ...
    @property
    def lasers(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Laser]: ...
    @property
    def object_list(self) -> bf_proto.percept.output.output_pb2.ObjectList: ...
    def __init__(self,
        *,
        timestamp_ns : typing.Optional[builtins.int] = ...,
        lasers : typing.Optional[typing.Iterable[global___Laser]] = ...,
        object_list : typing.Optional[bf_proto.percept.output.output_pb2.ObjectList] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"object_list",b"object_list",u"timestamp_ns",b"timestamp_ns"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"lasers",b"lasers",u"object_list",b"object_list",u"timestamp_ns",b"timestamp_ns"]) -> None: ...
global___Frame = Frame
