//
// Copyright (C) 2022 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/metrics/android/monitor_contention_metric.proto (package perfetto.protos, syntax proto2)
/* eslint-disable */

import type { GenFile, GenMessage } from "@bufbuild/protobuf/codegenv1";
import { fileDesc, messageDesc } from "@bufbuild/protobuf/codegenv1";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file protos/perfetto/metrics/android/monitor_contention_metric.proto.
 */
export const file_protos_perfetto_metrics_android_monitor_contention_metric: GenFile = /*@__PURE__*/
  fileDesc("Cj9wcm90b3MvcGVyZmV0dG8vbWV0cmljcy9hbmRyb2lkL21vbml0b3JfY29udGVudGlvbl9tZXRyaWMucHJvdG8SD3BlcmZldHRvLnByb3RvcyKxCAoeQW5kcm9pZE1vbml0b3JDb250ZW50aW9uTWV0cmljEkIKBG5vZGUYASADKAsyNC5wZXJmZXR0by5wcm90b3MuQW5kcm9pZE1vbml0b3JDb250ZW50aW9uTWV0cmljLk5vZGUa8gUKBE5vZGUSFgoObm9kZV9wYXJlbnRfaWQYASABKAMSFQoNbm9kZV9jaGlsZF9pZBgYIAEoAxIPCgdub2RlX2lkGAIgASgDEgoKAnRzGAMgASgDEgsKA2R1chgEIAEoAxIVCg1tb25vdG9uaWNfZHVyGBkgASgDEhQKDHByb2Nlc3NfbmFtZRgOIAEoCRILCgNwaWQYFyABKA0SFAoMd2FpdGVyX2NvdW50GAsgASgNElsKDXRocmVhZF9zdGF0ZXMYEyADKAsyRC5wZXJmZXR0by5wcm90b3MuQW5kcm9pZE1vbml0b3JDb250ZW50aW9uTWV0cmljLlRocmVhZFN0YXRlQnJlYWtkb3duEmMKEWJsb2NrZWRfZnVuY3Rpb25zGBQgAygLMkgucGVyZmV0dG8ucHJvdG9zLkFuZHJvaWRNb25pdG9yQ29udGVudGlvbk1ldHJpYy5CbG9ja2VkRnVuY3Rpb25CcmVha2Rvd24SFwoPYmxvY2tpbmdfbWV0aG9kGAUgASgJEh0KFXNob3J0X2Jsb2NraW5nX21ldGhvZBgHIAEoCRIUCgxibG9ja2luZ19zcmMYCSABKAkSHAoUYmxvY2tpbmdfdGhyZWFkX25hbWUYDSABKAkSHwoXaXNfYmxvY2tpbmdfdGhyZWFkX21haW4YECABKAgSGwoTYmxvY2tpbmdfdGhyZWFkX3RpZBgWIAEoDRIWCg5ibG9ja2VkX21ldGhvZBgGIAEoCRIcChRzaG9ydF9ibG9ja2VkX21ldGhvZBgIIAEoCRITCgtibG9ja2VkX3NyYxgKIAEoCRIbChNibG9ja2VkX3RocmVhZF9uYW1lGAwgASgJEh4KFmlzX2Jsb2NrZWRfdGhyZWFkX21haW4YDyABKAgSGgoSYmxvY2tlZF90aHJlYWRfdGlkGBUgASgNEhcKD2JpbmRlcl9yZXBseV90cxgRIAEoAxIYChBiaW5kZXJfcmVwbHlfdGlkGBIgASgNGmIKFFRocmVhZFN0YXRlQnJlYWtkb3duEhQKDHRocmVhZF9zdGF0ZRgBIAEoCRIYChB0aHJlYWRfc3RhdGVfZHVyGAIgASgDEhoKEnRocmVhZF9zdGF0ZV9jb3VudBgDIAEoAxpyChhCbG9ja2VkRnVuY3Rpb25CcmVha2Rvd24SGAoQYmxvY2tlZF9mdW5jdGlvbhgBIAEoCRIcChRibG9ja2VkX2Z1bmN0aW9uX2R1chgCIAEoAxIeChZibG9ja2VkX2Z1bmN0aW9uX2NvdW50GAMgASgD");

/**
 * This metric provides information about the monitor contention graph in a
 * trace
 *
 * @generated from message perfetto.protos.AndroidMonitorContentionMetric
 */
export type AndroidMonitorContentionMetric = Message<"perfetto.protos.AndroidMonitorContentionMetric"> & {
  /**
   * @generated from field: repeated perfetto.protos.AndroidMonitorContentionMetric.Node node = 1;
   */
  node: AndroidMonitorContentionMetric_Node[];
};

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

/**
 * Next field id: 26
 *
 * @generated from message perfetto.protos.AndroidMonitorContentionMetric.Node
 */
export type AndroidMonitorContentionMetric_Node = Message<"perfetto.protos.AndroidMonitorContentionMetric.Node"> & {
  /**
   * Global context
   *
   * @generated from field: optional int64 node_parent_id = 1;
   */
  nodeParentId: bigint;

  /**
   * @generated from field: optional int64 node_child_id = 24;
   */
  nodeChildId: bigint;

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

  /**
   * @generated from field: optional int64 ts = 3;
   */
  ts: bigint;

  /**
   * @generated from field: optional int64 dur = 4;
   */
  dur: bigint;

  /**
   * @generated from field: optional int64 monotonic_dur = 25;
   */
  monotonicDur: bigint;

  /**
   * @generated from field: optional string process_name = 14;
   */
  processName: string;

  /**
   * @generated from field: optional uint32 pid = 23;
   */
  pid: number;

  /**
   * @generated from field: optional uint32 waiter_count = 11;
   */
  waiterCount: number;

  /**
   * @generated from field: repeated perfetto.protos.AndroidMonitorContentionMetric.ThreadStateBreakdown thread_states = 19;
   */
  threadStates: AndroidMonitorContentionMetric_ThreadStateBreakdown[];

  /**
   * @generated from field: repeated perfetto.protos.AndroidMonitorContentionMetric.BlockedFunctionBreakdown blocked_functions = 20;
   */
  blockedFunctions: AndroidMonitorContentionMetric_BlockedFunctionBreakdown[];

  /**
   * Blocking context
   *
   * @generated from field: optional string blocking_method = 5;
   */
  blockingMethod: string;

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

  /**
   * @generated from field: optional string blocking_src = 9;
   */
  blockingSrc: string;

  /**
   * @generated from field: optional string blocking_thread_name = 13;
   */
  blockingThreadName: string;

  /**
   * @generated from field: optional bool is_blocking_thread_main = 16;
   */
  isBlockingThreadMain: boolean;

  /**
   * @generated from field: optional uint32 blocking_thread_tid = 22;
   */
  blockingThreadTid: number;

  /**
   * Blocked context
   *
   * @generated from field: optional string blocked_method = 6;
   */
  blockedMethod: string;

  /**
   * @generated from field: optional string short_blocked_method = 8;
   */
  shortBlockedMethod: string;

  /**
   * @generated from field: optional string blocked_src = 10;
   */
  blockedSrc: string;

  /**
   * @generated from field: optional string blocked_thread_name = 12;
   */
  blockedThreadName: string;

  /**
   * @generated from field: optional bool is_blocked_thread_main = 15;
   */
  isBlockedThreadMain: boolean;

  /**
   * @generated from field: optional uint32 blocked_thread_tid = 21;
   */
  blockedThreadTid: number;

  /**
   * Binder context
   *
   * @generated from field: optional int64 binder_reply_ts = 17;
   */
  binderReplyTs: bigint;

  /**
   * @generated from field: optional uint32 binder_reply_tid = 18;
   */
  binderReplyTid: number;
};

/**
 * Describes the message perfetto.protos.AndroidMonitorContentionMetric.Node.
 * Use `create(AndroidMonitorContentionMetric_NodeSchema)` to create a new message.
 */
export const AndroidMonitorContentionMetric_NodeSchema: GenMessage<AndroidMonitorContentionMetric_Node> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_metrics_android_monitor_contention_metric, 0, 0);

/**
 * @generated from message perfetto.protos.AndroidMonitorContentionMetric.ThreadStateBreakdown
 */
export type AndroidMonitorContentionMetric_ThreadStateBreakdown = Message<"perfetto.protos.AndroidMonitorContentionMetric.ThreadStateBreakdown"> & {
  /**
   * @generated from field: optional string thread_state = 1;
   */
  threadState: string;

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

  /**
   * @generated from field: optional int64 thread_state_count = 3;
   */
  threadStateCount: bigint;
};

/**
 * Describes the message perfetto.protos.AndroidMonitorContentionMetric.ThreadStateBreakdown.
 * Use `create(AndroidMonitorContentionMetric_ThreadStateBreakdownSchema)` to create a new message.
 */
export const AndroidMonitorContentionMetric_ThreadStateBreakdownSchema: GenMessage<AndroidMonitorContentionMetric_ThreadStateBreakdown> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_metrics_android_monitor_contention_metric, 0, 1);

/**
 * @generated from message perfetto.protos.AndroidMonitorContentionMetric.BlockedFunctionBreakdown
 */
export type AndroidMonitorContentionMetric_BlockedFunctionBreakdown = Message<"perfetto.protos.AndroidMonitorContentionMetric.BlockedFunctionBreakdown"> & {
  /**
   * @generated from field: optional string blocked_function = 1;
   */
  blockedFunction: string;

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

  /**
   * @generated from field: optional int64 blocked_function_count = 3;
   */
  blockedFunctionCount: bigint;
};

/**
 * Describes the message perfetto.protos.AndroidMonitorContentionMetric.BlockedFunctionBreakdown.
 * Use `create(AndroidMonitorContentionMetric_BlockedFunctionBreakdownSchema)` to create a new message.
 */
export const AndroidMonitorContentionMetric_BlockedFunctionBreakdownSchema: GenMessage<AndroidMonitorContentionMetric_BlockedFunctionBreakdown> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_metrics_android_monitor_contention_metric, 0, 2);

