//
// 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/chrome/chrome_trace_event.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 { Message } from "@bufbuild/protobuf";

/**
 * Describes the file protos/perfetto/trace/chrome/chrome_trace_event.proto.
 */
export const file_protos_perfetto_trace_chrome_chrome_trace_event: GenFile = /*@__PURE__*/
  fileDesc("CjVwcm90b3MvcGVyZmV0dG8vdHJhY2UvY2hyb21lL2Nocm9tZV90cmFjZV9ldmVudC5wcm90bxIPcGVyZmV0dG8ucHJvdG9zItMCChFDaHJvbWVUcmFjZWRWYWx1ZRJCCgtuZXN0ZWRfdHlwZRgBIAEoDjItLnBlcmZldHRvLnByb3Rvcy5DaHJvbWVUcmFjZWRWYWx1ZS5OZXN0ZWRUeXBlEhEKCWRpY3Rfa2V5cxgCIAMoCRI3CgtkaWN0X3ZhbHVlcxgDIAMoCzIiLnBlcmZldHRvLnByb3Rvcy5DaHJvbWVUcmFjZWRWYWx1ZRI4CgxhcnJheV92YWx1ZXMYBCADKAsyIi5wZXJmZXR0by5wcm90b3MuQ2hyb21lVHJhY2VkVmFsdWUSEQoJaW50X3ZhbHVlGAUgASgFEhQKDGRvdWJsZV92YWx1ZRgGIAEoARISCgpib29sX3ZhbHVlGAcgASgIEhQKDHN0cmluZ192YWx1ZRgIIAEoCSIhCgpOZXN0ZWRUeXBlEggKBERJQ1QQABIJCgVBUlJBWRABIjYKFkNocm9tZVN0cmluZ1RhYmxlRW50cnkSDQoFdmFsdWUYASABKAkSDQoFaW5kZXgYAiABKAUigQUKEENocm9tZVRyYWNlRXZlbnQSDAoEbmFtZRgBIAEoCRIRCgl0aW1lc3RhbXAYAiABKAMSDQoFcGhhc2UYAyABKAUSEQoJdGhyZWFkX2lkGAQgASgFEhAKCGR1cmF0aW9uGAUgASgDEhcKD3RocmVhZF9kdXJhdGlvbhgGIAEoAxINCgVzY29wZRgHIAEoCRIKCgJpZBgIIAEoBBINCgVmbGFncxgJIAEoDRIbChNjYXRlZ29yeV9ncm91cF9uYW1lGAogASgJEhIKCnByb2Nlc3NfaWQYCyABKAUSGAoQdGhyZWFkX3RpbWVzdGFtcBgMIAEoAxIPCgdiaW5kX2lkGA0gASgEEjMKBGFyZ3MYDiADKAsyJS5wZXJmZXR0by5wcm90b3MuQ2hyb21lVHJhY2VFdmVudC5BcmcSEgoKbmFtZV9pbmRleBgPIAEoDRIhChljYXRlZ29yeV9ncm91cF9uYW1lX2luZGV4GBAgASgNGowCCgNBcmcSDAoEbmFtZRgBIAEoCRIUCgpib29sX3ZhbHVlGAIgASgISAASFAoKdWludF92YWx1ZRgDIAEoBEgAEhMKCWludF92YWx1ZRgEIAEoA0gAEhYKDGRvdWJsZV92YWx1ZRgFIAEoAUgAEhYKDHN0cmluZ192YWx1ZRgGIAEoCUgAEhcKDXBvaW50ZXJfdmFsdWUYByABKARIABIUCgpqc29uX3ZhbHVlGAggASgJSAASOgoMdHJhY2VkX3ZhbHVlGAogASgLMiIucGVyZmV0dG8ucHJvdG9zLkNocm9tZVRyYWNlZFZhbHVlSAASEgoKbmFtZV9pbmRleBgJIAEoDUIHCgV2YWx1ZSKAAQoOQ2hyb21lTWV0YWRhdGESDAoEbmFtZRgBIAEoCRIWCgxzdHJpbmdfdmFsdWUYAiABKAlIABIUCgpib29sX3ZhbHVlGAMgASgISAASEwoJaW50X3ZhbHVlGAQgASgDSAASFAoKanNvbl92YWx1ZRgFIAEoCUgAQgcKBXZhbHVlIpQBChVDaHJvbWVMZWdhY3lKc29uVHJhY2USPgoEdHlwZRgBIAEoDjIwLnBlcmZldHRvLnByb3Rvcy5DaHJvbWVMZWdhY3lKc29uVHJhY2UuVHJhY2VUeXBlEgwKBGRhdGEYAiABKAkiLQoJVHJhY2VUeXBlEg4KClVTRVJfVFJBQ0UQABIQCgxTWVNURU1fVFJBQ0UQASKnAgoRQ2hyb21lRXZlbnRCdW5kbGUSOwoMdHJhY2VfZXZlbnRzGAEgAygLMiEucGVyZmV0dG8ucHJvdG9zLkNocm9tZVRyYWNlRXZlbnRCAhgBEjEKCG1ldGFkYXRhGAIgAygLMh8ucGVyZmV0dG8ucHJvdG9zLkNocm9tZU1ldGFkYXRhEhwKFGxlZ2FjeV9mdHJhY2Vfb3V0cHV0GAQgAygJEkEKEWxlZ2FjeV9qc29uX3RyYWNlGAUgAygLMiYucGVyZmV0dG8ucHJvdG9zLkNocm9tZUxlZ2FjeUpzb25UcmFjZRJBCgxzdHJpbmdfdGFibGUYAyADKAsyJy5wZXJmZXR0by5wcm90b3MuQ2hyb21lU3RyaW5nVGFibGVFbnRyeUICGAE");

/**
 * @generated from message perfetto.protos.ChromeTracedValue
 */
export type ChromeTracedValue = Message<"perfetto.protos.ChromeTracedValue"> & {
  /**
   * @generated from field: optional perfetto.protos.ChromeTracedValue.NestedType nested_type = 1;
   */
  nestedType: ChromeTracedValue_NestedType;

  /**
   * @generated from field: repeated string dict_keys = 2;
   */
  dictKeys: string[];

  /**
   * @generated from field: repeated perfetto.protos.ChromeTracedValue dict_values = 3;
   */
  dictValues: ChromeTracedValue[];

  /**
   * @generated from field: repeated perfetto.protos.ChromeTracedValue array_values = 4;
   */
  arrayValues: ChromeTracedValue[];

  /**
   * @generated from field: optional int32 int_value = 5;
   */
  intValue: number;

  /**
   * @generated from field: optional double double_value = 6;
   */
  doubleValue: number;

  /**
   * @generated from field: optional bool bool_value = 7;
   */
  boolValue: boolean;

  /**
   * @generated from field: optional string string_value = 8;
   */
  stringValue: string;
};

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

/**
 * @generated from enum perfetto.protos.ChromeTracedValue.NestedType
 */
export enum ChromeTracedValue_NestedType {
  /**
   * @generated from enum value: DICT = 0;
   */
  DICT = 0,

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

/**
 * Describes the enum perfetto.protos.ChromeTracedValue.NestedType.
 */
export const ChromeTracedValue_NestedTypeSchema: GenEnum<ChromeTracedValue_NestedType> = /*@__PURE__*/
  enumDesc(file_protos_perfetto_trace_chrome_chrome_trace_event, 0, 0);

/**
 * @generated from message perfetto.protos.ChromeStringTableEntry
 */
export type ChromeStringTableEntry = Message<"perfetto.protos.ChromeStringTableEntry"> & {
  /**
   * @generated from field: optional string value = 1;
   */
  value: string;

  /**
   * @generated from field: optional int32 index = 2;
   */
  index: number;
};

/**
 * Describes the message perfetto.protos.ChromeStringTableEntry.
 * Use `create(ChromeStringTableEntrySchema)` to create a new message.
 */
export const ChromeStringTableEntrySchema: GenMessage<ChromeStringTableEntry> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_chrome_chrome_trace_event, 1);

/**
 * Deprecated, use TrackEvent protos instead.
 *
 * @generated from message perfetto.protos.ChromeTraceEvent
 */
export type ChromeTraceEvent = Message<"perfetto.protos.ChromeTraceEvent"> & {
  /**
   * @generated from field: optional string name = 1;
   */
  name: string;

  /**
   * @generated from field: optional int64 timestamp = 2;
   */
  timestamp: bigint;

  /**
   * @generated from field: optional int32 phase = 3;
   */
  phase: number;

  /**
   * @generated from field: optional int32 thread_id = 4;
   */
  threadId: number;

  /**
   * @generated from field: optional int64 duration = 5;
   */
  duration: bigint;

  /**
   * @generated from field: optional int64 thread_duration = 6;
   */
  threadDuration: bigint;

  /**
   * @generated from field: optional string scope = 7;
   */
  scope: string;

  /**
   * @generated from field: optional uint64 id = 8;
   */
  id: bigint;

  /**
   * @generated from field: optional uint32 flags = 9;
   */
  flags: number;

  /**
   * @generated from field: optional string category_group_name = 10;
   */
  categoryGroupName: string;

  /**
   * @generated from field: optional int32 process_id = 11;
   */
  processId: number;

  /**
   * @generated from field: optional int64 thread_timestamp = 12;
   */
  threadTimestamp: bigint;

  /**
   * @generated from field: optional uint64 bind_id = 13;
   */
  bindId: bigint;

  /**
   * @generated from field: repeated perfetto.protos.ChromeTraceEvent.Arg args = 14;
   */
  args: ChromeTraceEvent_Arg[];

  /**
   * Takes precedence over respectively |name| and
   * |category_group_name_index| if set,
   * and are indices into |string_table|.
   *
   * @generated from field: optional uint32 name_index = 15;
   */
  nameIndex: number;

  /**
   * @generated from field: optional uint32 category_group_name_index = 16;
   */
  categoryGroupNameIndex: number;
};

/**
 * Describes the message perfetto.protos.ChromeTraceEvent.
 * Use `create(ChromeTraceEventSchema)` to create a new message.
 */
export const ChromeTraceEventSchema: GenMessage<ChromeTraceEvent> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_chrome_chrome_trace_event, 2);

/**
 * @generated from message perfetto.protos.ChromeTraceEvent.Arg
 */
export type ChromeTraceEvent_Arg = Message<"perfetto.protos.ChromeTraceEvent.Arg"> & {
  /**
   * @generated from field: optional string name = 1;
   */
  name: string;

  /**
   * @generated from oneof perfetto.protos.ChromeTraceEvent.Arg.value
   */
  value: {
    /**
     * @generated from field: bool bool_value = 2;
     */
    value: boolean;
    case: "boolValue";
  } | {
    /**
     * @generated from field: uint64 uint_value = 3;
     */
    value: bigint;
    case: "uintValue";
  } | {
    /**
     * @generated from field: int64 int_value = 4;
     */
    value: bigint;
    case: "intValue";
  } | {
    /**
     * @generated from field: double double_value = 5;
     */
    value: number;
    case: "doubleValue";
  } | {
    /**
     * @generated from field: string string_value = 6;
     */
    value: string;
    case: "stringValue";
  } | {
    /**
     * Pointers are stored in a separate type as the JSON output treats them
     * differently from other uint64 values.
     *
     * @generated from field: uint64 pointer_value = 7;
     */
    value: bigint;
    case: "pointerValue";
  } | {
    /**
     * @generated from field: string json_value = 8;
     */
    value: string;
    case: "jsonValue";
  } | {
    /**
     * @generated from field: perfetto.protos.ChromeTracedValue traced_value = 10;
     */
    value: ChromeTracedValue;
    case: "tracedValue";
  } | { case: undefined; value?: undefined };

  /**
   * Takes precedence over |name| if set,
   * and is an index into |string_table|.
   *
   * @generated from field: optional uint32 name_index = 9;
   */
  nameIndex: number;
};

/**
 * Describes the message perfetto.protos.ChromeTraceEvent.Arg.
 * Use `create(ChromeTraceEvent_ArgSchema)` to create a new message.
 */
export const ChromeTraceEvent_ArgSchema: GenMessage<ChromeTraceEvent_Arg> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_chrome_chrome_trace_event, 2, 0);

/**
 * @generated from message perfetto.protos.ChromeMetadata
 */
export type ChromeMetadata = Message<"perfetto.protos.ChromeMetadata"> & {
  /**
   * @generated from field: optional string name = 1;
   */
  name: string;

  /**
   * @generated from oneof perfetto.protos.ChromeMetadata.value
   */
  value: {
    /**
     * @generated from field: string string_value = 2;
     */
    value: string;
    case: "stringValue";
  } | {
    /**
     * @generated from field: bool bool_value = 3;
     */
    value: boolean;
    case: "boolValue";
  } | {
    /**
     * @generated from field: int64 int_value = 4;
     */
    value: bigint;
    case: "intValue";
  } | {
    /**
     * @generated from field: string json_value = 5;
     */
    value: string;
    case: "jsonValue";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message perfetto.protos.ChromeMetadata.
 * Use `create(ChromeMetadataSchema)` to create a new message.
 */
export const ChromeMetadataSchema: GenMessage<ChromeMetadata> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_chrome_chrome_trace_event, 3);

/**
 * Subtraces produced in legacy json format by Chrome tracing agents not yet
 * updated to support the new binary format, e.g. ETW and CrOS ARC.
 * TODO(eseckler): Update these agents to become perfetto producers.
 *
 * @generated from message perfetto.protos.ChromeLegacyJsonTrace
 */
export type ChromeLegacyJsonTrace = Message<"perfetto.protos.ChromeLegacyJsonTrace"> & {
  /**
   * @generated from field: optional perfetto.protos.ChromeLegacyJsonTrace.TraceType type = 1;
   */
  type: ChromeLegacyJsonTrace_TraceType;

  /**
   * @generated from field: optional string data = 2;
   */
  data: string;
};

/**
 * Describes the message perfetto.protos.ChromeLegacyJsonTrace.
 * Use `create(ChromeLegacyJsonTraceSchema)` to create a new message.
 */
export const ChromeLegacyJsonTraceSchema: GenMessage<ChromeLegacyJsonTrace> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_chrome_chrome_trace_event, 4);

/**
 * @generated from enum perfetto.protos.ChromeLegacyJsonTrace.TraceType
 */
export enum ChromeLegacyJsonTrace_TraceType {
  /**
   * @generated from enum value: USER_TRACE = 0;
   */
  USER_TRACE = 0,

  /**
   * Deprecated.
   *
   * @generated from enum value: SYSTEM_TRACE = 1;
   */
  SYSTEM_TRACE = 1,
}

/**
 * Describes the enum perfetto.protos.ChromeLegacyJsonTrace.TraceType.
 */
export const ChromeLegacyJsonTrace_TraceTypeSchema: GenEnum<ChromeLegacyJsonTrace_TraceType> = /*@__PURE__*/
  enumDesc(file_protos_perfetto_trace_chrome_chrome_trace_event, 4, 0);

/**
 * @generated from message perfetto.protos.ChromeEventBundle
 */
export type ChromeEventBundle = Message<"perfetto.protos.ChromeEventBundle"> & {
  /**
   * Deprecated, use TrackEvent protos instead.
   *
   * @generated from field: repeated perfetto.protos.ChromeTraceEvent trace_events = 1 [deprecated = true];
   * @deprecated
   */
  traceEvents: ChromeTraceEvent[];

  /**
   * TODO(ssid): This should be deprecated in favor of ChromeMetadataPacket
   * which contains typed fields.
   *
   * @generated from field: repeated perfetto.protos.ChromeMetadata metadata = 2;
   */
  metadata: ChromeMetadata[];

  /**
   * ftrace output from CrOS and Cast system tracing agents.
   * TODO(eseckler): Replace system traces with native perfetto service.
   *
   * @generated from field: repeated string legacy_ftrace_output = 4;
   */
  legacyFtraceOutput: string[];

  /**
   * @generated from field: repeated perfetto.protos.ChromeLegacyJsonTrace legacy_json_trace = 5;
   */
  legacyJsonTrace: ChromeLegacyJsonTrace[];

  /**
   * Contents of a string table that's valid for
   * the whole ChromeEventBundle entry.
   *
   * @generated from field: repeated perfetto.protos.ChromeStringTableEntry string_table = 3 [deprecated = true];
   * @deprecated
   */
  stringTable: ChromeStringTableEntry[];
};

/**
 * Describes the message perfetto.protos.ChromeEventBundle.
 * Use `create(ChromeEventBundleSchema)` to create a new message.
 */
export const ChromeEventBundleSchema: GenMessage<ChromeEventBundle> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_trace_chrome_chrome_trace_event, 5);

