"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import blickfeld.config.scan_pattern_pb2
import blickfeld.data.frame_pb2
import blickfeld.data.point_cloud_pb2
import blickfeld.file.general_pb2
import builtins
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.message
import typing
import typing_extensions

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

class PointCloud(google.protobuf.message.Message):
    """*
    This section describes the contents of a point cloud. The first message in a Blickfeld protobuf pointcloud should always be the
    [PointCloud.Header](#blickfeld.protocol.data.PointCloud.Header) message followed by [PointCloud.Data](#blickfeld.protocol.data.PointCloud.Data) messages.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class Header(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        DEVICE_FIELD_NUMBER: builtins.int
        CLIENT_FIELD_NUMBER: builtins.int
        @property
        def device(self) -> blickfeld.data.point_cloud_pb2.PointCloud.Header:
            """Refer to [PointCloud.Header](#blickfeld.protocol.data.PointCloud.Header)"""
            pass
        @property
        def client(self) -> blickfeld.file.general_pb2.Client: ...
        def __init__(self,
            *,
            device : typing.Optional[blickfeld.data.point_cloud_pb2.PointCloud.Header] = ...,
            client : typing.Optional[blickfeld.file.general_pb2.Client] = ...,
            ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal[u"client",b"client",u"device",b"device"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"client",b"client",u"device",b"device"]) -> None: ...

    class Footer(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        class Stats(google.protobuf.message.Message):
            DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
            class Counter(google.protobuf.message.Message):
                DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
                FRAMES_FIELD_NUMBER: builtins.int
                POINTS_FIELD_NUMBER: builtins.int
                RETURNS_FIELD_NUMBER: builtins.int
                frames: builtins.int = ...
                points: builtins.int = ...
                returns: builtins.int = ...
                def __init__(self,
                    *,
                    frames : typing.Optional[builtins.int] = ...,
                    points : typing.Optional[builtins.int] = ...,
                    returns : typing.Optional[builtins.int] = ...,
                    ) -> None: ...
                def HasField(self, field_name: typing_extensions.Literal[u"frames",b"frames",u"points",b"points",u"returns",b"returns"]) -> builtins.bool: ...
                def ClearField(self, field_name: typing_extensions.Literal[u"frames",b"frames",u"points",b"points",u"returns",b"returns"]) -> None: ...

            COUNTER_FIELD_NUMBER: builtins.int
            @property
            def counter(self) -> global___PointCloud.Footer.Stats.Counter: ...
            def __init__(self,
                *,
                counter : typing.Optional[global___PointCloud.Footer.Stats.Counter] = ...,
                ) -> None: ...
            def HasField(self, field_name: typing_extensions.Literal[u"counter",b"counter"]) -> builtins.bool: ...
            def ClearField(self, field_name: typing_extensions.Literal[u"counter",b"counter"]) -> None: ...

        class Event(google.protobuf.message.Message):
            DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
            FROM_FRAME_ID_FIELD_NUMBER: builtins.int
            SCAN_PATTERN_FIELD_NUMBER: builtins.int
            from_frame_id: builtins.int = ...
            @property
            def scan_pattern(self) -> blickfeld.config.scan_pattern_pb2.ScanPattern: ...
            def __init__(self,
                *,
                from_frame_id : typing.Optional[builtins.int] = ...,
                scan_pattern : typing.Optional[blickfeld.config.scan_pattern_pb2.ScanPattern] = ...,
                ) -> None: ...
            def HasField(self, field_name: typing_extensions.Literal[u"from_frame_id",b"from_frame_id",u"scan_pattern",b"scan_pattern"]) -> builtins.bool: ...
            def ClearField(self, field_name: typing_extensions.Literal[u"from_frame_id",b"from_frame_id",u"scan_pattern",b"scan_pattern"]) -> None: ...

        STATS_FIELD_NUMBER: builtins.int
        EVENTS_FIELD_NUMBER: builtins.int
        STOP_TIME_NS_FIELD_NUMBER: builtins.int
        @property
        def stats(self) -> global___PointCloud.Footer.Stats: ...
        @property
        def events(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___PointCloud.Footer.Event]: ...
        stop_time_ns: builtins.int = ...
        """Unit: [ns] - Stop timestamp of the requested pointcloud stream"""

        def __init__(self,
            *,
            stats : typing.Optional[global___PointCloud.Footer.Stats] = ...,
            events : typing.Optional[typing.Iterable[global___PointCloud.Footer.Event]] = ...,
            stop_time_ns : typing.Optional[builtins.int] = ...,
            ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal[u"stats",b"stats",u"stop_time_ns",b"stop_time_ns"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"events",b"events",u"stats",b"stats",u"stop_time_ns",b"stop_time_ns"]) -> None: ...

    class Metadata(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        HEADER_FIELD_NUMBER: builtins.int
        FOOTER_FIELD_NUMBER: builtins.int
        @property
        def header(self) -> global___PointCloud.Header: ...
        @property
        def footer(self) -> global___PointCloud.Footer: ...
        def __init__(self,
            *,
            header : typing.Optional[global___PointCloud.Header] = ...,
            footer : typing.Optional[global___PointCloud.Footer] = ...,
            ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal[u"footer",b"footer",u"header",b"header"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"footer",b"footer",u"header",b"header"]) -> None: ...

    class Data(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        FRAME_FIELD_NUMBER: builtins.int
        FOOTER_FIELD_NUMBER: builtins.int
        @property
        def frame(self) -> blickfeld.data.frame_pb2.Frame:
            """Refer to [PointCloud](#blickfeld.protocol.data.Frame)"""
            pass
        @property
        def footer(self) -> global___PointCloud.Footer: ...
        def __init__(self,
            *,
            frame : typing.Optional[blickfeld.data.frame_pb2.Frame] = ...,
            footer : typing.Optional[global___PointCloud.Footer] = ...,
            ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal[u"footer",b"footer",u"frame",b"frame"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"footer",b"footer",u"frame",b"frame"]) -> None: ...

    def __init__(self,
        ) -> None: ...
global___PointCloud = PointCloud
