"""
@generated by mypy-protobuf.  Do not edit manually!
isort:skip_file
Copyright (C) 2018 Bloomberg LP

Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at

 <http://www.apache.org/licenses/LICENSE-2.0>

Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
"""
import builtins
import collections.abc
import google.protobuf.descriptor
import google.protobuf.duration_pb2
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

@typing_extensions.final
class BusMessage(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

    SEQUENCE_NUMBER_FIELD_NUMBER: builtins.int
    LOG_RECORD_FIELD_NUMBER: builtins.int
    METRIC_RECORD_FIELD_NUMBER: builtins.int
    sequence_number: builtins.int
    """The position of this message in the bus stream."""
    @property
    def log_record(self) -> global___LogRecord: ...
    @property
    def metric_record(self) -> global___MetricRecord: ...
    def __init__(
        self,
        *,
        sequence_number: builtins.int = ...,
        log_record: global___LogRecord | None = ...,
        metric_record: global___MetricRecord | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["log_record", b"log_record", "metric_record", b"metric_record", "record", b"record"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["log_record", b"log_record", "metric_record", b"metric_record", "record", b"record", "sequence_number", b"sequence_number"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["record", b"record"]) -> typing_extensions.Literal["log_record", "metric_record"] | None: ...

global___BusMessage = BusMessage

@typing_extensions.final
class LogRecord(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

    class _LevelEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[LogRecord._Level.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        NOTSET: LogRecord._Level.ValueType  # 0
        DEBUG: LogRecord._Level.ValueType  # 1
        """Debug message severity level."""
        INFO: LogRecord._Level.ValueType  # 2
        """Information message severity level."""
        WARNING: LogRecord._Level.ValueType  # 3
        """Warning message severity level."""
        ERROR: LogRecord._Level.ValueType  # 4
        """Error message severity level."""
        CRITICAL: LogRecord._Level.ValueType  # 5
        """Critical message severity level."""

    class Level(_Level, metaclass=_LevelEnumTypeWrapper): ...
    NOTSET: LogRecord.Level.ValueType  # 0
    DEBUG: LogRecord.Level.ValueType  # 1
    """Debug message severity level."""
    INFO: LogRecord.Level.ValueType  # 2
    """Information message severity level."""
    WARNING: LogRecord.Level.ValueType  # 3
    """Warning message severity level."""
    ERROR: LogRecord.Level.ValueType  # 4
    """Error message severity level."""
    CRITICAL: LogRecord.Level.ValueType  # 5
    """Critical message severity level."""

    @typing_extensions.final
    class MetadataEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    CREATION_TIMESTAMP_FIELD_NUMBER: builtins.int
    DOMAIN_FIELD_NUMBER: builtins.int
    LEVEL_FIELD_NUMBER: builtins.int
    MESSAGE_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    @property
    def creation_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """When the record has been created."""
    domain: builtins.str
    """The domain name for the record."""
    level: global___LogRecord.Level.ValueType
    """The severity level of the record."""
    message: builtins.str
    """The human-readable record's message."""
    @property
    def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """An optional list of additional metadata."""
    def __init__(
        self,
        *,
        creation_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        domain: builtins.str = ...,
        level: global___LogRecord.Level.ValueType = ...,
        message: builtins.str = ...,
        metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["creation_timestamp", b"creation_timestamp"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["creation_timestamp", b"creation_timestamp", "domain", b"domain", "level", b"level", "message", b"message", "metadata", b"metadata"]) -> None: ...

global___LogRecord = LogRecord

@typing_extensions.final
class MetricRecord(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor

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

    class _TypeEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[MetricRecord._Type.ValueType], builtins.type):  # noqa: F821
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor
        NONE: MetricRecord._Type.ValueType  # 0
        COUNTER: MetricRecord._Type.ValueType  # 1
        """A metric for counting."""
        TIMER: MetricRecord._Type.ValueType  # 2
        """A metric for measuring a duration."""
        GAUGE: MetricRecord._Type.ValueType  # 3
        """A metric in arbitrary value."""
        DISTRIBUTION: MetricRecord._Type.ValueType  # 4
        """A metric distribution semantics"""

    class Type(_Type, metaclass=_TypeEnumTypeWrapper): ...
    NONE: MetricRecord.Type.ValueType  # 0
    COUNTER: MetricRecord.Type.ValueType  # 1
    """A metric for counting."""
    TIMER: MetricRecord.Type.ValueType  # 2
    """A metric for measuring a duration."""
    GAUGE: MetricRecord.Type.ValueType  # 3
    """A metric in arbitrary value."""
    DISTRIBUTION: MetricRecord.Type.ValueType  # 4
    """A metric distribution semantics"""

    @typing_extensions.final
    class MetadataEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor

        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: builtins.str
        value: builtins.str
        def __init__(
            self,
            *,
            key: builtins.str = ...,
            value: builtins.str = ...,
        ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal["key", b"key", "value", b"value"]) -> None: ...

    CREATION_TIMESTAMP_FIELD_NUMBER: builtins.int
    TYPE_FIELD_NUMBER: builtins.int
    NAME_FIELD_NUMBER: builtins.int
    COUNT_FIELD_NUMBER: builtins.int
    DURATION_FIELD_NUMBER: builtins.int
    VALUE_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    @property
    def creation_timestamp(self) -> google.protobuf.timestamp_pb2.Timestamp:
        """When the metric has been created."""
    type: global___MetricRecord.Type.ValueType
    """The type of metric, see Type."""
    name: builtins.str
    """The name identifying the metric."""
    count: builtins.float
    """Set for Type.COUNTER and Type.DISTRIBUTION metrics."""
    @property
    def duration(self) -> google.protobuf.duration_pb2.Duration:
        """Set for Type.TIMER metrics."""
    value: builtins.float
    """Set for Type.GAUGE metrics."""
    @property
    def metadata(self) -> google.protobuf.internal.containers.ScalarMap[builtins.str, builtins.str]:
        """An optional list of additional metadata."""
    def __init__(
        self,
        *,
        creation_timestamp: google.protobuf.timestamp_pb2.Timestamp | None = ...,
        type: global___MetricRecord.Type.ValueType = ...,
        name: builtins.str = ...,
        count: builtins.float = ...,
        duration: google.protobuf.duration_pb2.Duration | None = ...,
        value: builtins.float = ...,
        metadata: collections.abc.Mapping[builtins.str, builtins.str] | None = ...,
    ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal["count", b"count", "creation_timestamp", b"creation_timestamp", "data", b"data", "duration", b"duration", "value", b"value"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal["count", b"count", "creation_timestamp", b"creation_timestamp", "data", b"data", "duration", b"duration", "metadata", b"metadata", "name", b"name", "type", b"type", "value", b"value"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal["data", b"data"]) -> typing_extensions.Literal["count", "duration", "value"] | None: ...

global___MetricRecord = MetricRecord
