"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
"""
import builtins
import google.protobuf.descriptor
import google.protobuf.internal.containers
import google.protobuf.internal.enum_type_wrapper
import google.protobuf.message
import google.protobuf.timestamp_pb2
import typing
import typing_extensions

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

class State(google.protobuf.message.Message):
    """*
    A state transmits high-level information about the scene.
    States will get calculated on every frame of measurement.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class Counter(google.protobuf.message.Message):
        """*
        A message containing a count for certain scenarios at a certain timestamp.
        """
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        class Type(_Type, metaclass=_TypeEnumTypeWrapper):
            pass
        class _Type:
            V = typing.NewType('V', builtins.int)
        class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Type.V], builtins.type):
            DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
            INBOUND = State.Counter.Type.V(0)
            """used for counting entries"""

            OUTBOUND = State.Counter.Type.V(1)
            """used for counting exists"""

            INSIDE = State.Counter.Type.V(2)
            """used for counting the current number of objects"""


        INBOUND = State.Counter.Type.V(0)
        """used for counting entries"""

        OUTBOUND = State.Counter.Type.V(1)
        """used for counting exists"""

        INSIDE = State.Counter.Type.V(2)
        """used for counting the current number of objects"""


        COUNT_FIELD_NUMBER: builtins.int
        TYPE_FIELD_NUMBER: builtins.int
        OBJECT_UUIDS_FIELD_NUMBER: builtins.int
        count: builtins.int = ...
        """The value of the counter."""

        type: global___State.Counter.Type.V = ...
        """Type of the counter."""

        @property
        def object_uuids(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[typing.Text]:
            """The uuids of the counted objects"""
            pass
        def __init__(self,
            *,
            count : builtins.int = ...,
            type : global___State.Counter.Type.V = ...,
            object_uuids : typing.Optional[typing.Iterable[typing.Text]] = ...,
            ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"count",b"count",u"object_uuids",b"object_uuids",u"type",b"type"]) -> None: ...

    class AccumulatedCounter(google.protobuf.message.Message):
        """*
        A message containing an accumulating count for certain scenario since a start timestamp.
        """
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        class Type(_Type, metaclass=_TypeEnumTypeWrapper):
            pass
        class _Type:
            V = typing.NewType('V', builtins.int)
        class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Type.V], builtins.type):
            DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
            INBOUND = State.AccumulatedCounter.Type.V(0)
            """used for counting entries"""

            OUTBOUND = State.AccumulatedCounter.Type.V(1)
            """used for counting exists"""


        INBOUND = State.AccumulatedCounter.Type.V(0)
        """used for counting entries"""

        OUTBOUND = State.AccumulatedCounter.Type.V(1)
        """used for counting exists"""


        COUNT_FIELD_NUMBER: builtins.int
        TYPE_FIELD_NUMBER: builtins.int
        START_OF_COUNT_FIELD_NUMBER: builtins.int
        count: builtins.int = ...
        """A counter which increases over time starting at '0' at 'start_of_count'. The 'count' and
        'start_of_count' is automatically in certain intervals to prevent integer overflows.
        """

        type: global___State.AccumulatedCounter.Type.V = ...
        """Type of the counter"""

        @property
        def start_of_count(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
        def __init__(self,
            *,
            count : builtins.int = ...,
            type : global___State.AccumulatedCounter.Type.V = ...,
            start_of_count : typing.Optional[google.protobuf.timestamp_pb2.Timestamp] = ...,
            ) -> None: ...
        def HasField(self, field_name: typing_extensions.Literal[u"start_of_count",b"start_of_count"]) -> builtins.bool: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"count",b"count",u"start_of_count",b"start_of_count",u"type",b"type"]) -> None: ...

    class Security(google.protobuf.message.Message):
        """*
        A message containing an alarm state of a zone.
        """
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        ALARM_FIELD_NUMBER: builtins.int
        NUM_DETECTED_POINTS_FIELD_NUMBER: builtins.int
        alarm: builtins.bool = ...
        num_detected_points: builtins.int = ...
        """The current number of lidar points detected the zone"""

        def __init__(self,
            *,
            alarm : builtins.bool = ...,
            num_detected_points : builtins.int = ...,
            ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"alarm",b"alarm",u"num_detected_points",b"num_detected_points"]) -> None: ...

    class Occupancy(google.protobuf.message.Message):
        """*
        A message containing the occupancy state of a zone.
        This is based on one occupancy zone or a row occupancy zones.
        """
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        OCCUPIED_FIELD_NUMBER: builtins.int
        NUM_DETECTED_POINTS_FIELD_NUMBER: builtins.int
        occupied: builtins.bool = ...
        num_detected_points: builtins.int = ...
        """The current number of lidar points detected the zone"""

        def __init__(self,
            *,
            occupied : builtins.bool = ...,
            num_detected_points : builtins.int = ...,
            ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"num_detected_points",b"num_detected_points",u"occupied",b"occupied"]) -> None: ...

    class Volume(google.protobuf.message.Message):
        """*
        A message containing the volume state of a zone.
        This is based on one volume zone.
        """
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        VOLUME_FIELD_NUMBER: builtins.int
        volume: builtins.float = ...
        """The current volume of the zone"""

        def __init__(self,
            *,
            volume : builtins.float = ...,
            ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"volume",b"volume"]) -> None: ...

    TIMESTAMP_FIELD_NUMBER: builtins.int
    ZONE_ALGORITHM_UUID_FIELD_NUMBER: builtins.int
    COUNTER_FIELD_NUMBER: builtins.int
    ACCUMULATED_COUNTER_FIELD_NUMBER: builtins.int
    SECURITY_FIELD_NUMBER: builtins.int
    OCCUPANCY_FIELD_NUMBER: builtins.int
    VOLUME_FIELD_NUMBER: builtins.int
    @property
    def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """Timestamp of the lidar frame in which the state was measured"""
        pass
    zone_algorithm_uuid: typing.Text = ...
    """The uuid of the zone algorithm generating this state"""

    @property
    def counter(self) -> global___State.Counter: ...
    @property
    def accumulated_counter(self) -> global___State.AccumulatedCounter: ...
    @property
    def security(self) -> global___State.Security: ...
    @property
    def occupancy(self) -> global___State.Occupancy: ...
    @property
    def volume(self) -> global___State.Volume: ...
    def __init__(self,
        *,
        timestamp : typing.Optional[google.protobuf.timestamp_pb2.Timestamp] = ...,
        zone_algorithm_uuid : typing.Text = ...,
        counter : typing.Optional[global___State.Counter] = ...,
        accumulated_counter : typing.Optional[global___State.AccumulatedCounter] = ...,
        security : typing.Optional[global___State.Security] = ...,
        occupancy : typing.Optional[global___State.Occupancy] = ...,
        volume : typing.Optional[global___State.Volume] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"accumulated_counter",b"accumulated_counter",u"counter",b"counter",u"occupancy",b"occupancy",u"security",b"security",u"state_type",b"state_type",u"timestamp",b"timestamp",u"volume",b"volume"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"accumulated_counter",b"accumulated_counter",u"counter",b"counter",u"occupancy",b"occupancy",u"security",b"security",u"state_type",b"state_type",u"timestamp",b"timestamp",u"volume",b"volume",u"zone_algorithm_uuid",b"zone_algorithm_uuid"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal[u"state_type",b"state_type"]) -> typing.Optional[typing_extensions.Literal["counter","accumulated_counter","security","occupancy","volume"]]: ...
global___State = State
