//
// Copyright (C) 2018 The Android Open Source Project
//
// 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.

// @generated by protoc-gen-es v2.2.2 with parameter "target=ts"
// @generated from file protos/perfetto/trace/clock_snapshot.proto (package perfetto.protos, syntax proto2)
/* eslint-disable */

import type { GenEnum, GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import { enumDesc, fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
import type { BuiltinClock } from "../common/builtin_clock_pb";
import { file_protos_perfetto_common_builtin_clock } from "../common/builtin_clock_pb";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file protos/perfetto/trace/clock_snapshot.proto.
 */
export const file_protos_perfetto_trace_clock_snapshot: GenFile = /*@__PURE__*/
  fileDesc("Cipwcm90b3MvcGVyZmV0dG8vdHJhY2UvY2xvY2tfc25hcHNob3QucHJvdG8SD3BlcmZldHRvLnByb3RvcyKSAwoNQ2xvY2tTbmFwc2hvdBI0CgZjbG9ja3MYASADKAsyJC5wZXJmZXR0by5wcm90b3MuQ2xvY2tTbmFwc2hvdC5DbG9jaxI6ChNwcmltYXJ5X3RyYWNlX2Nsb2NrGAIgASgOMh0ucGVyZmV0dG8ucHJvdG9zLkJ1aWx0aW5DbG9jaxqOAgoFQ2xvY2sSEAoIY2xvY2tfaWQYASABKA0SEQoJdGltZXN0YW1wGAIgASgEEhYKDmlzX2luY3JlbWVudGFsGAMgASgIEhoKEnVuaXRfbXVsdGlwbGllcl9ucxgEIAEoBCKrAQoNQnVpbHRpbkNsb2NrcxILCgdVTktOT1dOEAASDAoIUkVBTFRJTUUQARITCg9SRUFMVElNRV9DT0FSU0UQAhINCglNT05PVE9OSUMQAxIUChBNT05PVE9OSUNfQ09BUlNFEAQSEQoNTU9OT1RPTklDX1JBVxAFEgwKCEJPT1RUSU1FEAYSGAoUQlVJTFRJTl9DTE9DS19NQVhfSUQQPyIECAcQByIECAgQCA", [file_protos_perfetto_common_builtin_clock]);

/**
 * A snapshot of clock readings to allow for trace alignment.
 *
 * @generated from message perfetto.protos.ClockSnapshot
 */
export type ClockSnapshot = Message<"perfetto.protos.ClockSnapshot"> & {
  /**
   * @generated from field: repeated perfetto.protos.ClockSnapshot.Clock clocks = 1;
   */
  clocks: ClockSnapshot_Clock[];

  /**
   * The authoritative clock domain for the trace. Defaults to BOOTTIME, but can
   * be overridden in TraceConfig's builtin_data_sources. Trace processor will
   * attempt to translate packet/event timestamps from various data sources (and
   * their chosen clock domains) to this domain during import.
   *
   * @generated from field: optional perfetto.protos.BuiltinClock primary_trace_clock = 2;
   */
  primaryTraceClock: BuiltinClock;
};

/**
 * Describes the message perfetto.protos.ClockSnapshot.
 * Use `create(ClockSnapshotSchema)` to create a new message.
 */
export const ClockSnapshotSchema: GenMessage<ClockSnapshot> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_clock_snapshot, 0);

/**
 * @generated from message perfetto.protos.ClockSnapshot.Clock
 */
export type ClockSnapshot_Clock = Message<"perfetto.protos.ClockSnapshot.Clock"> & {
  /**
   * Clock IDs have the following semantic:
   * [1, 63]:    Builtin types, see BuiltinClock from
   *             ../common/builtin_clock.proto.
   * [64, 127]:  User-defined clocks. These clocks are sequence-scoped. They
   *             are only valid within the same |trusted_packet_sequence_id|
   *             (i.e. only for TracePacket(s) emitted by the same TraceWriter
   *             that emitted the clock snapshot).
   * [128, MAX]: Reserved for future use. The idea is to allow global clock
   *             IDs and setting this ID to hash(full_clock_name) & ~127.
   *
   * @generated from field: optional uint32 clock_id = 1;
   */
  clockId: number;

  /**
   * Absolute timestamp. Unit is ns unless specified otherwise by the
   * unit_multiplier_ns field below.
   *
   * @generated from field: optional uint64 timestamp = 2;
   */
  timestamp: bigint;

  /**
   * When true each TracePacket's timestamp should be interpreted as a delta
   * from the last TracePacket's timestamp (referencing this clock) emitted by
   * the same packet_sequence_id. Should only be used for user-defined
   * sequence-local clocks. The first packet timestamp after each
   * ClockSnapshot that contains this clock is relative to the |timestamp| in
   * the ClockSnapshot.
   *
   * @generated from field: optional bool is_incremental = 3;
   */
  isIncremental: boolean;

  /**
   * Allows to specify a custom unit different than the default (ns) for this
   * clock domain. A multiplier of 1000 means that a timestamp = 3 should be
   * interpreted as 3000 ns = 3 us. All snapshots for the same clock within a
   * trace need to use the same unit.
   *
   * @generated from field: optional uint64 unit_multiplier_ns = 4;
   */
  unitMultiplierNs: bigint;
};

/**
 * Describes the message perfetto.protos.ClockSnapshot.Clock.
 * Use `create(ClockSnapshot_ClockSchema)` to create a new message.
 */
export const ClockSnapshot_ClockSchema: GenMessage<ClockSnapshot_Clock> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_clock_snapshot, 0, 0);

/**
 * DEPRECATED. This enum has moved to ../common/builtin_clock.proto.
 *
 * @generated from enum perfetto.protos.ClockSnapshot.Clock.BuiltinClocks
 */
export enum ClockSnapshot_Clock_BuiltinClocks {
  /**
   * @generated from enum value: UNKNOWN = 0;
   */
  UNKNOWN = 0,

  /**
   * @generated from enum value: REALTIME = 1;
   */
  REALTIME = 1,

  /**
   * @generated from enum value: REALTIME_COARSE = 2;
   */
  REALTIME_COARSE = 2,

  /**
   * @generated from enum value: MONOTONIC = 3;
   */
  MONOTONIC = 3,

  /**
   * @generated from enum value: MONOTONIC_COARSE = 4;
   */
  MONOTONIC_COARSE = 4,

  /**
   * @generated from enum value: MONOTONIC_RAW = 5;
   */
  MONOTONIC_RAW = 5,

  /**
   * @generated from enum value: BOOTTIME = 6;
   */
  BOOTTIME = 6,

  /**
   * @generated from enum value: BUILTIN_CLOCK_MAX_ID = 63;
   */
  BUILTIN_CLOCK_MAX_ID = 63,
}

/**
 * Describes the enum perfetto.protos.ClockSnapshot.Clock.BuiltinClocks.
 */
export const ClockSnapshot_Clock_BuiltinClocksSchema: GenEnum<ClockSnapshot_Clock_BuiltinClocks> = /*@__PURE__*/
  enumDesc(file_protos_perfetto_trace_clock_snapshot, 0, 0, 0);

