"""
@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 typing
import typing_extensions

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

class EpochType(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    class Enum(_Enum, metaclass=_EnumEnumTypeWrapper):
        pass
    class _Enum:
        V = typing.NewType('V', builtins.int)
    class _EnumEnumTypeWrapper(google.protobuf.internal.enum_type_wrapper._EnumTypeWrapper[_Enum.V], builtins.type):
        DESCRIPTOR: google.protobuf.descriptor.EnumDescriptor = ...
        UNKNOWN = EpochType.Enum.V(0)
        TIME_SINCE_BOOT = EpochType.Enum.V(1)
        # Time since 00:00:00 UTC, Thursday, 1 January 1970, including leap
        # seconds.
        UTC_WALL_CLOCK = EpochType.Enum.V(2)
        # Time since 00:00:00, 6 January 1980 UTC. Leap seconds are not inserted
        # into GPS. Thus, every time a leap second is inserted into UTC, UTC
        # falls another second behind GPS.
        GPS_WALL_CLOCK = EpochType.Enum.V(3)
        # Time since 00:00:00, 1 January 1958, and is offset 10 seconds ahead of
        # UTC at that date (i.e., its epoch, 1958-01-01 00:00:00 TAI, is
        # 1957-12-31 23:59:50 UTC). Leap seconds are not inserted into TAI. Thus,
        # every time a leap second is inserted into UTC, UTC falls another second
        # behind TAI.
        TAI_WALL_CLOCK = EpochType.Enum.V(4)

    UNKNOWN = EpochType.Enum.V(0)
    TIME_SINCE_BOOT = EpochType.Enum.V(1)
    # Time since 00:00:00 UTC, Thursday, 1 January 1970, including leap
    # seconds.
    UTC_WALL_CLOCK = EpochType.Enum.V(2)
    # Time since 00:00:00, 6 January 1980 UTC. Leap seconds are not inserted
    # into GPS. Thus, every time a leap second is inserted into UTC, UTC
    # falls another second behind GPS.
    GPS_WALL_CLOCK = EpochType.Enum.V(3)
    # Time since 00:00:00, 1 January 1958, and is offset 10 seconds ahead of
    # UTC at that date (i.e., its epoch, 1958-01-01 00:00:00 TAI, is
    # 1957-12-31 23:59:50 UTC). Leap seconds are not inserted into TAI. Thus,
    # every time a leap second is inserted into UTC, UTC falls another second
    # behind TAI.
    TAI_WALL_CLOCK = EpochType.Enum.V(4)

    def __init__(self,
        ) -> None: ...
global___EpochType = EpochType

# A representation of a clock's parameters.
#
# There are two major components to representing a steady, monotonic clock:
#
#   1. A representation of the clock's period.
#   2. A representation of the clock's epoch.
#
# To support a wide range of clock configurations, ClockParameters represents
# a clock's period as fractions of a second. Concretely:
#
#   Clock period (seconds) =
#       tick_period_seconds_numerator / tick_period_seconds_denominator
#
# So a simple 1KHz clock can be represented as:
#
#   tick_period_seconds_numerator = 1
#   tick_period_seconds_denominator = 1000
#   Clock period = 1 / 1000 = 0.001 seconds
#   Clock frequency = 1 / 0.001 = 1,000 Hz
#
# Failing to specify one or both of the period members of a ClockParameters
# message leaves the configuration specification incomplete and invalid.
#
# While clock period alone is enough to represent a duration if given a number
# of ticks, an epoch is required to make a clock represent a time point.
# EpochType optionally provides this information. Specifying an EpochType
# defines what a tick count of `0` represents. Some epoch types (e.g. UTC, GPS,
# TAI) allow the clock to resolve to real-world time points. If the EpochType
# is relative to boot or unknown, however, the clock is only sufficiently
# specified for relative time measurement without additional external
# information.
class ClockParameters(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    TICK_PERIOD_SECONDS_NUMERATOR_FIELD_NUMBER: builtins.int
    TICK_PERIOD_SECONDS_DENOMINATOR_FIELD_NUMBER: builtins.int
    EPOCH_TYPE_FIELD_NUMBER: builtins.int
    # Required
    tick_period_seconds_numerator: builtins.int = ...
    # Required
    tick_period_seconds_denominator: builtins.int = ...
    epoch_type: global___EpochType.Enum.V = ...
    def __init__(self,
        *,
        tick_period_seconds_numerator : builtins.int = ...,
        tick_period_seconds_denominator : builtins.int = ...,
        epoch_type : global___EpochType.Enum.V = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"_epoch_type",b"_epoch_type",u"epoch_type",b"epoch_type"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"_epoch_type",b"_epoch_type",u"epoch_type",b"epoch_type",u"tick_period_seconds_denominator",b"tick_period_seconds_denominator",u"tick_period_seconds_numerator",b"tick_period_seconds_numerator"]) -> None: ...
    def WhichOneof(self, oneof_group: typing_extensions.Literal[u"_epoch_type",b"_epoch_type"]) -> typing.Optional[typing_extensions.Literal["epoch_type"]]: ...
global___ClockParameters = ClockParameters

# A point in time relative to a clock's epoch.
class TimePoint(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    TIMESTAMP_FIELD_NUMBER: builtins.int
    CLOCK_PARAMETERS_FIELD_NUMBER: builtins.int
    # The duration that has elapsed (number of clock ticks) since the epoch,
    # where the tick period and epoch are specified by the clock parameters.
    #
    # The meaning of `timestamp` is unspecified without an associated
    # ClockParameters.
    # Required
    timestamp: builtins.int = ...
    # Required
    @property
    def clock_parameters(self) -> global___ClockParameters: ...
    def __init__(self,
        *,
        timestamp : builtins.int = ...,
        clock_parameters : typing.Optional[global___ClockParameters] = ...,
        ) -> None: ...
    def HasField(self, field_name: typing_extensions.Literal[u"clock_parameters",b"clock_parameters"]) -> builtins.bool: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"clock_parameters",b"clock_parameters",u"timestamp",b"timestamp"]) -> None: ...
global___TimePoint = TimePoint

# The time of a snapshot capture. Supports multiple timestamps to
# cover multiple time bases or clocks (e.g. time since boot, time
# from epoch, etc).
#
# This is an overlay proto for Snapshot, see more details here:
# https://pigweed.dev/pw_snapshot/proto_format.html#module-specific-data
class SnapshotTimestamps(google.protobuf.message.Message):
    DESCRIPTOR: google.protobuf.descriptor.Descriptor = ...
    TIMESTAMPS_FIELD_NUMBER: builtins.int
    @property
    def timestamps(self) -> google.protobuf.internal.containers.RepeatedCompositeFieldContainer[global___TimePoint]: ...
    def __init__(self,
        *,
        timestamps : typing.Optional[typing.Iterable[global___TimePoint]] = ...,
        ) -> None: ...
    def ClearField(self, field_name: typing_extensions.Literal[u"timestamps",b"timestamps"]) -> None: ...
global___SnapshotTimestamps = SnapshotTimestamps
