//
// Copyright (C) 2021 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.

// message types used in perf.data.

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

// This is in perfetto.third_party to avoid clashing with potential other
// copies of this proto.

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/third_party/simpleperf/record_file.proto.
 */
export const file_protos_third_party_simpleperf_record_file: GenFile = /*@__PURE__*/
  fileDesc("Ci9wcm90b3MvdGhpcmRfcGFydHkvc2ltcGxlcGVyZi9yZWNvcmRfZmlsZS5wcm90bxIlcGVyZmV0dG8udGhpcmRfcGFydHkuc2ltcGxlcGVyZi5wcm90byKGAQoSRGVidWdVbndpbmRGZWF0dXJlEkwKBGZpbGUYASADKAsyPi5wZXJmZXR0by50aGlyZF9wYXJ0eS5zaW1wbGVwZXJmLnByb3RvLkRlYnVnVW53aW5kRmVhdHVyZS5GaWxlGiIKBEZpbGUSDAoEcGF0aBgBIAEoCRIMCgRzaXplGAIgASgEIpEGCgtGaWxlRmVhdHVyZRIMCgRwYXRoGAEgASgJEkgKBHR5cGUYAiABKA4yOi5wZXJmZXR0by50aGlyZF9wYXJ0eS5zaW1wbGVwZXJmLnByb3RvLkZpbGVGZWF0dXJlLkRzb1R5cGUSEQoJbWluX3ZhZGRyGAMgASgEEkkKBnN5bWJvbBgEIAMoCzI5LnBlcmZldHRvLnRoaXJkX3BhcnR5LnNpbXBsZXBlcmYucHJvdG8uRmlsZUZlYXR1cmUuU3ltYm9sEk4KCGRleF9maWxlGAUgASgLMjoucGVyZmV0dG8udGhpcmRfcGFydHkuc2ltcGxlcGVyZi5wcm90by5GaWxlRmVhdHVyZS5EZXhGaWxlSAASTgoIZWxmX2ZpbGUYBiABKAsyOi5wZXJmZXR0by50aGlyZF9wYXJ0eS5zaW1wbGVwZXJmLnByb3RvLkZpbGVGZWF0dXJlLkVsZkZpbGVIABJYCg1rZXJuZWxfbW9kdWxlGAcgASgLMj8ucGVyZmV0dG8udGhpcmRfcGFydHkuc2ltcGxlcGVyZi5wcm90by5GaWxlRmVhdHVyZS5LZXJuZWxNb2R1bGVIABoyCgZTeW1ib2wSDQoFdmFkZHIYASABKAQSCwoDbGVuGAIgASgNEgwKBG5hbWUYAyABKAkaIgoHRGV4RmlsZRIXCg9kZXhfZmlsZV9vZmZzZXQYASADKAQaKwoHRWxmRmlsZRIgChhmaWxlX29mZnNldF9vZl9taW5fdmFkZHIYASABKAQaMgoMS2VybmVsTW9kdWxlEiIKGm1lbW9yeV9vZmZzZXRfb2ZfbWluX3ZhZGRyGAEgASgEIoMBCgdEc29UeXBlEg4KCkRTT19LRVJORUwQABIVChFEU09fS0VSTkVMX01PRFVMRRABEhAKDERTT19FTEZfRklMRRACEhAKDERTT19ERVhfRklMRRADEhcKE0RTT19TWU1CT0xfTUFQX0ZJTEUQBBIUChBEU09fVU5LTk9XTl9GSUxFEAVCEwoRdHlwZV9zcGVjaWZpY19tc2diBnByb3RvMw");

/**
 * @generated from message perfetto.third_party.simpleperf.proto.DebugUnwindFeature
 */
export type DebugUnwindFeature = Message<"perfetto.third_party.simpleperf.proto.DebugUnwindFeature"> & {
  /**
   * @generated from field: repeated perfetto.third_party.simpleperf.proto.DebugUnwindFeature.File file = 1;
   */
  file: DebugUnwindFeature_File[];
};

/**
 * Describes the message perfetto.third_party.simpleperf.proto.DebugUnwindFeature.
 * Use `create(DebugUnwindFeatureSchema)` to create a new message.
 */
export const DebugUnwindFeatureSchema: GenMessage<DebugUnwindFeature> = /*@__PURE__*/
  messageDesc(file_protos_third_party_simpleperf_record_file, 0);

/**
 * @generated from message perfetto.third_party.simpleperf.proto.DebugUnwindFeature.File
 */
export type DebugUnwindFeature_File = Message<"perfetto.third_party.simpleperf.proto.DebugUnwindFeature.File"> & {
  /**
   * @generated from field: string path = 1;
   */
  path: string;

  /**
   * @generated from field: uint64 size = 2;
   */
  size: bigint;
};

/**
 * Describes the message perfetto.third_party.simpleperf.proto.DebugUnwindFeature.File.
 * Use `create(DebugUnwindFeature_FileSchema)` to create a new message.
 */
export const DebugUnwindFeature_FileSchema: GenMessage<DebugUnwindFeature_File> = /*@__PURE__*/
  messageDesc(file_protos_third_party_simpleperf_record_file, 0, 0);

/**
 * @generated from message perfetto.third_party.simpleperf.proto.FileFeature
 */
export type FileFeature = Message<"perfetto.third_party.simpleperf.proto.FileFeature"> & {
  /**
   * @generated from field: string path = 1;
   */
  path: string;

  /**
   * The original simpleperf proto defines this field as a uint32. We use an
   * enum here instead for convenience. enum fields are encoded as if they were
   * int32 values, and both uint32 and int32 values have the same proto wire
   * format, so using the enum here is fine.
   *
   * @generated from field: perfetto.third_party.simpleperf.proto.FileFeature.DsoType type = 2;
   */
  type: FileFeature_DsoType;

  /**
   * @generated from field: uint64 min_vaddr = 3;
   */
  minVaddr: bigint;

  /**
   * @generated from field: repeated perfetto.third_party.simpleperf.proto.FileFeature.Symbol symbol = 4;
   */
  symbol: FileFeature_Symbol[];

  /**
   * @generated from oneof perfetto.third_party.simpleperf.proto.FileFeature.type_specific_msg
   */
  typeSpecificMsg: {
    /**
     * Only when type = DSO_DEX_FILE
     *
     * @generated from field: perfetto.third_party.simpleperf.proto.FileFeature.DexFile dex_file = 5;
     */
    value: FileFeature_DexFile;
    case: "dexFile";
  } | {
    /**
     * Only when type = DSO_ELF_FILE
     *
     * @generated from field: perfetto.third_party.simpleperf.proto.FileFeature.ElfFile elf_file = 6;
     */
    value: FileFeature_ElfFile;
    case: "elfFile";
  } | {
    /**
     * Only when type = DSO_KERNEL_MODULE
     *
     * @generated from field: perfetto.third_party.simpleperf.proto.FileFeature.KernelModule kernel_module = 7;
     */
    value: FileFeature_KernelModule;
    case: "kernelModule";
  } | { case: undefined; value?: undefined };
};

/**
 * Describes the message perfetto.third_party.simpleperf.proto.FileFeature.
 * Use `create(FileFeatureSchema)` to create a new message.
 */
export const FileFeatureSchema: GenMessage<FileFeature> = /*@__PURE__*/
  messageDesc(file_protos_third_party_simpleperf_record_file, 1);

/**
 * @generated from message perfetto.third_party.simpleperf.proto.FileFeature.Symbol
 */
export type FileFeature_Symbol = Message<"perfetto.third_party.simpleperf.proto.FileFeature.Symbol"> & {
  /**
   * @generated from field: uint64 vaddr = 1;
   */
  vaddr: bigint;

  /**
   * @generated from field: uint32 len = 2;
   */
  len: number;

  /**
   * @generated from field: string name = 3;
   */
  name: string;
};

/**
 * Describes the message perfetto.third_party.simpleperf.proto.FileFeature.Symbol.
 * Use `create(FileFeature_SymbolSchema)` to create a new message.
 */
export const FileFeature_SymbolSchema: GenMessage<FileFeature_Symbol> = /*@__PURE__*/
  messageDesc(file_protos_third_party_simpleperf_record_file, 1, 0);

/**
 * @generated from message perfetto.third_party.simpleperf.proto.FileFeature.DexFile
 */
export type FileFeature_DexFile = Message<"perfetto.third_party.simpleperf.proto.FileFeature.DexFile"> & {
  /**
   * @generated from field: repeated uint64 dex_file_offset = 1;
   */
  dexFileOffset: bigint[];
};

/**
 * Describes the message perfetto.third_party.simpleperf.proto.FileFeature.DexFile.
 * Use `create(FileFeature_DexFileSchema)` to create a new message.
 */
export const FileFeature_DexFileSchema: GenMessage<FileFeature_DexFile> = /*@__PURE__*/
  messageDesc(file_protos_third_party_simpleperf_record_file, 1, 1);

/**
 * @generated from message perfetto.third_party.simpleperf.proto.FileFeature.ElfFile
 */
export type FileFeature_ElfFile = Message<"perfetto.third_party.simpleperf.proto.FileFeature.ElfFile"> & {
  /**
   * @generated from field: uint64 file_offset_of_min_vaddr = 1;
   */
  fileOffsetOfMinVaddr: bigint;
};

/**
 * Describes the message perfetto.third_party.simpleperf.proto.FileFeature.ElfFile.
 * Use `create(FileFeature_ElfFileSchema)` to create a new message.
 */
export const FileFeature_ElfFileSchema: GenMessage<FileFeature_ElfFile> = /*@__PURE__*/
  messageDesc(file_protos_third_party_simpleperf_record_file, 1, 2);

/**
 * @generated from message perfetto.third_party.simpleperf.proto.FileFeature.KernelModule
 */
export type FileFeature_KernelModule = Message<"perfetto.third_party.simpleperf.proto.FileFeature.KernelModule"> & {
  /**
   * @generated from field: uint64 memory_offset_of_min_vaddr = 1;
   */
  memoryOffsetOfMinVaddr: bigint;
};

/**
 * Describes the message perfetto.third_party.simpleperf.proto.FileFeature.KernelModule.
 * Use `create(FileFeature_KernelModuleSchema)` to create a new message.
 */
export const FileFeature_KernelModuleSchema: GenMessage<FileFeature_KernelModule> = /*@__PURE__*/
  messageDesc(file_protos_third_party_simpleperf_record_file, 1, 3);

/**
 * This enum is not defined in the original simpleperf proto file.
 * We added it here for convenience. Simpleperf uses a regular c++ enum
 * instead. See comment in type field.
 *
 * @generated from enum perfetto.third_party.simpleperf.proto.FileFeature.DsoType
 */
export enum FileFeature_DsoType {
  /**
   * @generated from enum value: DSO_KERNEL = 0;
   */
  DSO_KERNEL = 0,

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

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

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

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

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

/**
 * Describes the enum perfetto.third_party.simpleperf.proto.FileFeature.DsoType.
 */
export const FileFeature_DsoTypeSchema: GenEnum<FileFeature_DsoType> = /*@__PURE__*/
  enumDesc(file_protos_third_party_simpleperf_record_file, 1, 0);

