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

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

class Algorithm(google.protobuf.message.Message):
    """*
    > Introduced in BSL v2.17 and firmware v1.18

    This section describes the additional data output of on-device algorithms.
    The data is attached to the frame.
    """
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class BackgroundSubtraction(google.protobuf.message.Message):
        """*
        The description of the algorithm can be found at [config.Algorithm.BackgroundSubtraction](#blickfeld.protocol.config.Algorithm.BackgroundSubtraction).

        The algorithm does not output any additional information.
        It subtracts returns from the main frame.
        """
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        def __init__(self,
            ) -> None: ...

    class NeighborFilter(google.protobuf.message.Message):
        """*
        The description of the algorithm can be found at [config.Algorithm.NeighborFilter](#blickfeld.protocol.config.Algorithm.NeighborFilter).

        The algorithm does not output any additional information.
        It subtracts returns from the main frame.
        """
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        def __init__(self,
            ) -> None: ...

    class StaticTransformation(google.protobuf.message.Message):
        """*
        The description of the algorithm can be found at [config.Algorithm.StaticTransformation](#blickfeld.protocol.config.Algorithm.StaticTransformation).

        The algorithm does not output any additional information.
        It transforms the cartesian coordinates in the frame.
        """
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        def __init__(self,
            ) -> None: ...

    BACKGROUND_SUBTRACTION_FIELD_NUMBER: builtins.int
    NEIGHBOR_FILTER_FIELD_NUMBER: builtins.int
    STATIC_TRANSFORMATION_FIELD_NUMBER: builtins.int
    EXECUTION_TIME_FIELD_NUMBER: builtins.int
    @property
    def background_subtraction(self) -> global___Algorithm.BackgroundSubtraction:
        """Refer to [BackgroundSubtraction](#blickfeld.protocol.data.Algorithm.BackgroundSubtraction)."""
        pass
    @property
    def neighbor_filter(self) -> global___Algorithm.NeighborFilter:
        """Refer to [NeighborFilter](#blickfeld.protocol.data.Algorithm.NeighborFilter)."""
        pass
    @property
    def static_transformation(self) -> global___Algorithm.StaticTransformation:
        """Refer to [StaticTransformation](#blickfeld.protocol.data.Algorithm.StaticTransformation)."""
        pass
    execution_time: builtins.float = ...
    """Execution time of the algorithm in [s]"""

    def __init__(self,
        *,
        background_subtraction : typing.Optional[global___Algorithm.BackgroundSubtraction] = ...,
        neighbor_filter : typing.Optional[global___Algorithm.NeighborFilter] = ...,
        static_transformation : typing.Optional[global___Algorithm.StaticTransformation] = ...,
        execution_time : typing.Optional[builtins.float] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"algo",b"algo",u"background_subtraction",b"background_subtraction",u"execution_time",b"execution_time",u"neighbor_filter",b"neighbor_filter",u"static_transformation",b"static_transformation"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"algo",b"algo",u"background_subtraction",b"background_subtraction",u"execution_time",b"execution_time",u"neighbor_filter",b"neighbor_filter",u"static_transformation",b"static_transformation"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal[u"algo",b"algo"]) -> typing.Optional[typing_extensions.Literal["background_subtraction","neighbor_filter","static_transformation"]]: ...
global___Algorithm = Algorithm
