"""
@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.message
import pw_cpu_exception_cortex_m_protos.cpu_state_pb2
import pw_log.proto.log_pb2
import pw_snapshot_metadata_proto.snapshot_metadata_pb2
import pw_thread_protos.thread_pb2
import typing
import typing_extensions

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

# The Snapshot proto is a list that dictates field numbers that should
# be used when serializing proto messages into a "Snapshot" that can be
# ingested by Pigweed's upstream tooling.
#
# There are various field number ranges that are marked for "upstream" use,
# and others that are marked for "pigweed users". This allows a user to
# define a parallel proto that defines product-specific messages using mutually
# exclusive field numbers:
#
#   MySnapshot {
#     // Use a project-specific logging proto format.
#     repeated MyLogFormat = 8;
#
#     // Pigweed's snapshot doesn't support my custom RTOS, so write that to
#     // a field number reserved for downstream projects.
#     MyCustomRtosInfo = 22;
#   }
#
# Writing both proto messages to the same proto encoder is valid because the
# field nubmers are mutually exclusive. This prevents collisions that would
# break a proto decode. The final message will have to be decoded twice; once
# as a pw.snapshot.Snapshot and once as the project-specific message.
class Snapshot(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class TagsEntry(google.protobuf.message.Message):
        DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
        KEY_FIELD_NUMBER: builtins.int
        VALUE_FIELD_NUMBER: builtins.int
        key: typing.Text = ...
        value: typing.Text = ...
        def __init__(self,
            *,
            key : typing.Text = ...,
            value : typing.Text = ...,
            ) -> None: ...
        def ClearField(self, field_name: typing_extensions.Literal[u"key",b"key",u"value",b"value"]) -> None: ...

    LOGS_FIELD_NUMBER: builtins.int
    METADATA_FIELD_NUMBER: builtins.int
    TAGS_FIELD_NUMBER: builtins.int
    THREADS_FIELD_NUMBER: builtins.int
    RELATED_SNAPSHOTS_FIELD_NUMBER: builtins.int
    ARMV7M_CPU_STATE_FIELD_NUMBER: builtins.int
    TRACE_DATA_FIELD_NUMBER: builtins.int
    @property
    def logs(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[pw_log.proto.log_pb2.LogEntry]: ...
    # Note: Proto tags 16-2047 encode with two bytes of overhead.
    @property
    def metadata(self) -> pw_snapshot_metadata_proto.snapshot_metadata_pb2.Metadata: ...
    # Other data that should be highlighted in this crash. This field may have
    # entries added to it during a decode.
    @property
    def tags(self) -> google.protobuf.internal.containers.ScalarMap[typing.Text, typing.Text]: ...
    @property
    def threads(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[pw_thread_protos.thread_pb2.Thread]: ...
    # If a device has multiple cores, it may be useful to collect an associated
    # snapshot for attached cores when a snapshot collection is triggered on one
    # core. By embedding one or more snapshots into a snapshot, the snapshots are
    # considered associated.
    @property
    def related_snapshots(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___Snapshot]: ...
    @property
    def armv7m_cpu_state(self) -> pw_cpu_exception_cortex_m_protos.cpu_state_pb2.ArmV7mCpuState: ...
    # Platform-specific binary trace data region. Binary trace data is using
    # pw_trace_tokenized buffer format for stored data.
    trace_data: builtins.bytes = ...
    def __init__(self,
        *,
        logs : typing.Optional[typing.Iterable[pw_log.proto.log_pb2.LogEntry]] = ...,
        metadata : typing.Optional[pw_snapshot_metadata_proto.snapshot_metadata_pb2.Metadata] = ...,
        tags : typing.Optional[typing.Mapping[typing.Text, typing.Text]] = ...,
        threads : typing.Optional[typing.Iterable[pw_thread_protos.thread_pb2.Thread]] = ...,
        related_snapshots : typing.Optional[typing.Iterable[global___Snapshot]] = ...,
        armv7m_cpu_state : typing.Optional[pw_cpu_exception_cortex_m_protos.cpu_state_pb2.ArmV7mCpuState] = ...,
        trace_data : builtins.bytes = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"armv7m_cpu_state",b"armv7m_cpu_state",u"metadata",b"metadata"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"armv7m_cpu_state",b"armv7m_cpu_state",u"logs",b"logs",u"metadata",b"metadata",u"related_snapshots",b"related_snapshots",u"tags",b"tags",u"threads",b"threads",u"trace_data",b"trace_data"]) -> None: ...
global___Snapshot = Snapshot
