"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
Water Linked Sonar 3D-15 protocol"""

import builtins
import collections.abc
import google.protobuf.any_pb2
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 sys
import typing

if sys.version_info >= (3, 10):
    import typing as typing_extensions
else:
    import typing_extensions

DESCRIPTOR: google.protobuf.descriptor.FileDescriptor

class _BitmapImageType:
    ValueType = typing.NewType("ValueType", builtins.int)
    V: typing_extensions.TypeAlias = ValueType

class _BitmapImageTypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_BitmapImageType.ValueType], builtins.type):
    DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
    SIGNAL_STRENGTH_IMAGE: _BitmapImageType.ValueType  # 0
    """Bitmap image showing for each x,y pixel the strength of the
    strongest reflection
    """
    SHADED_IMAGE: _BitmapImageType.ValueType  # 1
    """Bitmap image showing a shaded representation of the depth in the
    range image. The light source is behind and above the observer.
    (This is experimental and may be removed in the future)
    """

class BitmapImageType(_BitmapImageType, metaclass=_BitmapImageTypeEnumTypeWrapper): ...

SIGNAL_STRENGTH_IMAGE: BitmapImageType.ValueType  # 0
"""Bitmap image showing for each x,y pixel the strength of the
strongest reflection
"""
SHADED_IMAGE: BitmapImageType.ValueType  # 1
"""Bitmap image showing a shaded representation of the depth in the
range image. The light source is behind and above the observer.
(This is experimental and may be removed in the future)
"""
Global___BitmapImageType: typing_extensions.TypeAlias = BitmapImageType

@typing.final
class Packet(google.protobuf.message.Message):
    """Packet is the top-level message that is sent over the wire."""

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    MSG_FIELD_NUMBER: builtins.int
    @property
    def msg(self) -> google.protobuf.any_pb2.Any:
        """Use .type_url to deserialize .value into one of the messages defined in this proto file"""

    def __init__(
        self,
        *,
        msg: google.protobuf.any_pb2.Any | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["msg", b"msg"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["msg", b"msg"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___Packet: typing_extensions.TypeAlias = Packet

@typing.final
class Header(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    TIMESTAMP_FIELD_NUMBER: builtins.int
    SEQUENCE_ID_FIELD_NUMBER: builtins.int
    sequence_id: builtins.int
    """Sequence id is a monotonically increasing number that identifies
    each shot of the sonar. It can be used to detect missing shots or
    to relate messages of different types to each other. The value
    wraps around to 0 after reaching the maximum value.
    """
    @property
    def timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp: ...
    def __init__(
        self,
        *,
        timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        sequence_id: builtins.int = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["timestamp", b"timestamp"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["sequence_id", b"sequence_id", "timestamp", b"timestamp"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___Header: typing_extensions.TypeAlias = Header

@typing.final
class BitmapImageGreyscale8(google.protobuf.message.Message):
    """BitmapImageGreyscale8 can be shown to user without further processing.
    Uncompressed, 8-bit color depth, greyscale.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    HEADER_FIELD_NUMBER: builtins.int
    SPEED_OF_SOUND_FIELD_NUMBER: builtins.int
    RANGE_FIELD_NUMBER: builtins.int
    FREQUENCY_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    WIDTH_FIELD_NUMBER: builtins.int
    HEIGHT_FIELD_NUMBER: builtins.int
    FOV_HORIZONTAL_FIELD_NUMBER: builtins.int
    FOV_VERTICAL_FIELD_NUMBER: builtins.int
    IMAGE_PIXEL_DATA_FIELD_NUMBER: builtins.int
    speed_of_sound: builtins.float
    """Configured speed of sound in water in m/s"""
    range: builtins.float
    """Configured range in meters"""
    frequency: builtins.int
    """Configured imaging frequency in Hz"""
    type: Global___BitmapImageType.ValueType
    """identifier for what is shown in the image"""
    width: builtins.int
    height: builtins.int
    fov_horizontal: builtins.float
    fov_vertical: builtins.float
    image_pixel_data: builtins.bytes
    """image pixel data is organized in rows of pixels. Each row is
    'width' wide, and there are 'height' rows. Each pixel is an 8-bit
    value that represents the intensity of the pixel, from 0 to 255
    """
    @property
    def header(self) -> Global___Header: ...
    def __init__(
        self,
        *,
        header: Global___Header | None = ...,
        speed_of_sound: builtins.float = ...,
        range: builtins.float = ...,
        frequency: builtins.int = ...,
        type: Global___BitmapImageType.ValueType = ...,
        width: builtins.int = ...,
        height: builtins.int = ...,
        fov_horizontal: builtins.float = ...,
        fov_vertical: builtins.float = ...,
        image_pixel_data: builtins.bytes = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["header", b"header"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["fov_horizontal", b"fov_horizontal", "fov_vertical", b"fov_vertical", "frequency", b"frequency", "header", b"header", "height", b"height", "image_pixel_data", b"image_pixel_data", "range", b"range", "speed_of_sound", b"speed_of_sound", "type", b"type", "width", b"width"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___BitmapImageGreyscale8: typing_extensions.TypeAlias = BitmapImageGreyscale8

@typing.final
class RangeImage(google.protobuf.message.Message):
    """RangeImage measures the distance to the strongest reflection
    for each pixel.
    """

    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    HEADER_FIELD_NUMBER: builtins.int
    SPEED_OF_SOUND_FIELD_NUMBER: builtins.int
    RANGE_FIELD_NUMBER: builtins.int
    FREQUENCY_FIELD_NUMBER: builtins.int
    WIDTH_FIELD_NUMBER: builtins.int
    HEIGHT_FIELD_NUMBER: builtins.int
    FOV_HORIZONTAL_FIELD_NUMBER: builtins.int
    FOV_VERTICAL_FIELD_NUMBER: builtins.int
    IMAGE_PIXEL_SCALE_FIELD_NUMBER: builtins.int
    IMAGE_PIXEL_DATA_FIELD_NUMBER: builtins.int
    speed_of_sound: builtins.float
    """Configured speed of sound in water in m/s"""
    range: builtins.float
    """Configured range in meters"""
    frequency: builtins.int
    """Configured imaging frequency in Hz"""
    width: builtins.int
    height: builtins.int
    fov_horizontal: builtins.float
    """in degrees"""
    fov_vertical: builtins.float
    """in degrees"""
    image_pixel_scale: builtins.float
    @property
    def header(self) -> Global___Header: ...
    @property
    def image_pixel_data(self) -> google.protobuf.internal.containers.RepeatedScalarFieldContainer[builtins.int]:
        """image_pixel_data is organized in rows of pixels. Each row is
        'width' wide, and there are 'height' rows.
        Each pixel is a 16-bit value that must be multiplied by
        image_pixel_scale to obtain the distance in meters from the sonar
        to the strongest reflection in that direction.
        """

    def __init__(
        self,
        *,
        header: Global___Header | None = ...,
        speed_of_sound: builtins.float = ...,
        range: builtins.float = ...,
        frequency: builtins.int = ...,
        width: builtins.int = ...,
        height: builtins.int = ...,
        fov_horizontal: builtins.float = ...,
        fov_vertical: builtins.float = ...,
        image_pixel_scale: builtins.float = ...,
        image_pixel_data: collections.abc.Iterable[builtins.int] | None = ...,
    ) -> None: ...
    _HasFieldArgType: typing_extensions.TypeAlias = typing.Literal["header", b"header"]
    def HasField(self, field_name: _HasFieldArgType) -> builtins.bool: ...
    _ClearFieldArgType: typing_extensions.TypeAlias = typing.Literal["fov_horizontal", b"fov_horizontal", "fov_vertical", b"fov_vertical", "frequency", b"frequency", "header", b"header", "height", b"height", "image_pixel_data", b"image_pixel_data", "image_pixel_scale", b"image_pixel_scale", "range", b"range", "speed_of_sound", b"speed_of_sound", "width", b"width"]
    def ClearField(self, field_name: _ClearFieldArgType) -> None: ...

Global___RangeImage: typing_extensions.TypeAlias = RangeImage
