//
// 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/binder_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/binder_metric.proto.
 */
export const file_protos_perfetto_metrics_android_binder_metric: GenFile = /*@__PURE__*/
  fileDesc("CjNwcm90b3MvcGVyZmV0dG8vbWV0cmljcy9hbmRyb2lkL2JpbmRlcl9tZXRyaWMucHJvdG8SD3BlcmZldHRvLnByb3RvcyKeDAoTQW5kcm9pZEJpbmRlck1ldHJpYxJTChFwcm9jZXNzX2JyZWFrZG93bhgBIAMoCzI4LnBlcmZldHRvLnByb3Rvcy5BbmRyb2lkQmluZGVyTWV0cmljLlBlclByb2Nlc3NCcmVha2Rvd24SYQoadW5hZ2dyZWdhdGVkX3R4bl9icmVha2Rvd24YAiADKAsyPS5wZXJmZXR0by5wcm90b3MuQW5kcm9pZEJpbmRlck1ldHJpYy5VbmFnZ3JlZ2F0ZWRUeG5CcmVha2Rvd24aWwoTUGVyUHJvY2Vzc0JyZWFrZG93bhIUCgxwcm9jZXNzX25hbWUYASABKAkSCwoDcGlkGAIgASgNEhIKCnNsaWNlX25hbWUYAyABKAkSDQoFY291bnQYBCABKA0aiQcKGFVuYWdncmVnYXRlZFR4bkJyZWFrZG93bhIRCglhaWRsX25hbWUYASABKAkSDwoHYWlkbF90cxgWIAEoAxIQCghhaWRsX2R1chgXIAEoAxIPCgdpc19zeW5jGBUgASgIEhYKDmNsaWVudF9wcm9jZXNzGAMgASgJEhUKDWNsaWVudF90aHJlYWQYBCABKAkSFgoOaXNfbWFpbl90aHJlYWQYBSABKAgSEQoJY2xpZW50X3RzGAYgASgDEhIKCmNsaWVudF9kdXIYByABKAMSHAoUY2xpZW50X21vbm90b25pY19kdXIYHCABKAMSGAoQY2xpZW50X29vbV9zY29yZRgTIAEoAxIjChtjbGllbnRfcGFja2FnZV92ZXJzaW9uX2NvZGUYGCABKAMSJAocaXNfY2xpZW50X3BhY2thZ2VfZGVidWdnYWJsZRgZIAEoCBIWCg5zZXJ2ZXJfcHJvY2VzcxgJIAEoCRIVCg1zZXJ2ZXJfdGhyZWFkGAogASgJEhEKCXNlcnZlcl90cxgLIAEoAxISCgpzZXJ2ZXJfZHVyGAwgASgDEhwKFHNlcnZlcl9tb25vdG9uaWNfZHVyGB0gASgDEhgKEHNlcnZlcl9vb21fc2NvcmUYFCABKAMSIwobc2VydmVyX3BhY2thZ2VfdmVyc2lvbl9jb2RlGBogASgDEiQKHGlzX3NlcnZlcl9wYWNrYWdlX2RlYnVnZ2FibGUYGyABKAgSUAoNdGhyZWFkX3N0YXRlcxgNIAMoCzI5LnBlcmZldHRvLnByb3Rvcy5BbmRyb2lkQmluZGVyTWV0cmljLlRocmVhZFN0YXRlQnJlYWtkb3duElgKEWJsb2NrZWRfZnVuY3Rpb25zGA4gAygLMj0ucGVyZmV0dG8ucHJvdG9zLkFuZHJvaWRCaW5kZXJNZXRyaWMuQmxvY2tlZEZ1bmN0aW9uQnJlYWtkb3duElQKD2xvZ2ljYWxfcmVhc29ucxgfIAMoCzI7LnBlcmZldHRvLnByb3Rvcy5BbmRyb2lkQmluZGVyTWV0cmljLkxvZ2ljYWxSZWFzb25CcmVha2Rvd24SEgoKY2xpZW50X3RpZBgPIAEoDRISCgpzZXJ2ZXJfdGlkGBAgASgNEhIKCmNsaWVudF9waWQYESABKA0SEgoKc2VydmVyX3BpZBgSIAEoDUoECAIQA0oECAgQCRp9ChRUaHJlYWRTdGF0ZUJyZWFrZG93bhIZChF0aHJlYWRfc3RhdGVfdHlwZRgBIAEoCRIUCgx0aHJlYWRfc3RhdGUYAiABKAkSGAoQdGhyZWFkX3N0YXRlX2R1chgDIAEoAxIaChJ0aHJlYWRfc3RhdGVfY291bnQYBCABKAMajQEKGEJsb2NrZWRGdW5jdGlvbkJyZWFrZG93bhIZChF0aHJlYWRfc3RhdGVfdHlwZRgBIAEoCRIYChBibG9ja2VkX2Z1bmN0aW9uGAIgASgJEhwKFGJsb2NrZWRfZnVuY3Rpb25fZHVyGAMgASgDEh4KFmJsb2NrZWRfZnVuY3Rpb25fY291bnQYBCABKAMaVwoWTG9naWNhbFJlYXNvbkJyZWFrZG93bhIZChF0aHJlYWRfc3RhdGVfdHlwZRgBIAEoCRIOCgZyZWFzb24YAiABKAkSEgoKcmVhc29uX2R1chgDIAEoAw");

/**
 * This metric provides the following:
 * 1. Per-process Binder statistics for traces with binder_driver enabled.
 *    Specifically, transactions are categorized and counted
 * 2. Unaggregated binder txn durations with per-txn aggregated thread state and
 * blocked function
 *    durations
 *
 * @generated from message perfetto.protos.AndroidBinderMetric
 */
export type AndroidBinderMetric = Message<"perfetto.protos.AndroidBinderMetric"> & {
  /**
   * @generated from field: repeated perfetto.protos.AndroidBinderMetric.PerProcessBreakdown process_breakdown = 1;
   */
  processBreakdown: AndroidBinderMetric_PerProcessBreakdown[];

  /**
   * @generated from field: repeated perfetto.protos.AndroidBinderMetric.UnaggregatedTxnBreakdown unaggregated_txn_breakdown = 2;
   */
  unaggregatedTxnBreakdown: AndroidBinderMetric_UnaggregatedTxnBreakdown[];
};

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

/**
 * @generated from message perfetto.protos.AndroidBinderMetric.PerProcessBreakdown
 */
export type AndroidBinderMetric_PerProcessBreakdown = Message<"perfetto.protos.AndroidBinderMetric.PerProcessBreakdown"> & {
  /**
   * @generated from field: optional string process_name = 1;
   */
  processName: string;

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

  /**
   * @generated from field: optional string slice_name = 3;
   */
  sliceName: string;

  /**
   * @generated from field: optional uint32 count = 4;
   */
  count: number;
};

/**
 * Describes the message perfetto.protos.AndroidBinderMetric.PerProcessBreakdown.
 * Use `create(AndroidBinderMetric_PerProcessBreakdownSchema)` to create a new message.
 */
export const AndroidBinderMetric_PerProcessBreakdownSchema: GenMessage<AndroidBinderMetric_PerProcessBreakdown> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_metrics_android_binder_metric, 0, 0);

/**
 * Next field id: 31
 *
 * @generated from message perfetto.protos.AndroidBinderMetric.UnaggregatedTxnBreakdown
 */
export type AndroidBinderMetric_UnaggregatedTxnBreakdown = Message<"perfetto.protos.AndroidBinderMetric.UnaggregatedTxnBreakdown"> & {
  /**
   * General
   *
   * @generated from field: optional string aidl_name = 1;
   */
  aidlName: string;

  /**
   * @generated from field: optional int64 aidl_ts = 22;
   */
  aidlTs: bigint;

  /**
   * @generated from field: optional int64 aidl_dur = 23;
   */
  aidlDur: bigint;

  /**
   * @generated from field: optional bool is_sync = 21;
   */
  isSync: boolean;

  /**
   * @generated from field: optional string client_process = 3;
   */
  clientProcess: string;

  /**
   * @generated from field: optional string client_thread = 4;
   */
  clientThread: string;

  /**
   * @generated from field: optional bool is_main_thread = 5;
   */
  isMainThread: boolean;

  /**
   * @generated from field: optional int64 client_ts = 6;
   */
  clientTs: bigint;

  /**
   * @generated from field: optional int64 client_dur = 7;
   */
  clientDur: bigint;

  /**
   * @generated from field: optional int64 client_monotonic_dur = 28;
   */
  clientMonotonicDur: bigint;

  /**
   * @generated from field: optional int64 client_oom_score = 19;
   */
  clientOomScore: bigint;

  /**
   * @generated from field: optional int64 client_package_version_code = 24;
   */
  clientPackageVersionCode: bigint;

  /**
   * @generated from field: optional bool is_client_package_debuggable = 25;
   */
  isClientPackageDebuggable: boolean;

  /**
   * @generated from field: optional string server_process = 9;
   */
  serverProcess: string;

  /**
   * @generated from field: optional string server_thread = 10;
   */
  serverThread: string;

  /**
   * @generated from field: optional int64 server_ts = 11;
   */
  serverTs: bigint;

  /**
   * @generated from field: optional int64 server_dur = 12;
   */
  serverDur: bigint;

  /**
   * @generated from field: optional int64 server_monotonic_dur = 29;
   */
  serverMonotonicDur: bigint;

  /**
   * @generated from field: optional int64 server_oom_score = 20;
   */
  serverOomScore: bigint;

  /**
   * @generated from field: optional int64 server_package_version_code = 26;
   */
  serverPackageVersionCode: bigint;

  /**
   * @generated from field: optional bool is_server_package_debuggable = 27;
   */
  isServerPackageDebuggable: boolean;

  /**
   * Aggregations
   *
   * @generated from field: repeated perfetto.protos.AndroidBinderMetric.ThreadStateBreakdown thread_states = 13;
   */
  threadStates: AndroidBinderMetric_ThreadStateBreakdown[];

  /**
   * @generated from field: repeated perfetto.protos.AndroidBinderMetric.BlockedFunctionBreakdown blocked_functions = 14;
   */
  blockedFunctions: AndroidBinderMetric_BlockedFunctionBreakdown[];

  /**
   * @generated from field: repeated perfetto.protos.AndroidBinderMetric.LogicalReasonBreakdown logical_reasons = 31;
   */
  logicalReasons: AndroidBinderMetric_LogicalReasonBreakdown[];

  /**
   * @generated from field: optional uint32 client_tid = 15;
   */
  clientTid: number;

  /**
   * @generated from field: optional uint32 server_tid = 16;
   */
  serverTid: number;

  /**
   * @generated from field: optional uint32 client_pid = 17;
   */
  clientPid: number;

  /**
   * @generated from field: optional uint32 server_pid = 18;
   */
  serverPid: number;
};

/**
 * Describes the message perfetto.protos.AndroidBinderMetric.UnaggregatedTxnBreakdown.
 * Use `create(AndroidBinderMetric_UnaggregatedTxnBreakdownSchema)` to create a new message.
 */
export const AndroidBinderMetric_UnaggregatedTxnBreakdownSchema: GenMessage<AndroidBinderMetric_UnaggregatedTxnBreakdown> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_metrics_android_binder_metric, 0, 1);

/**
 * @generated from message perfetto.protos.AndroidBinderMetric.ThreadStateBreakdown
 */
export type AndroidBinderMetric_ThreadStateBreakdown = Message<"perfetto.protos.AndroidBinderMetric.ThreadStateBreakdown"> & {
  /**
   * @generated from field: optional string thread_state_type = 1;
   */
  threadStateType: string;

  /**
   * @generated from field: optional string thread_state = 2;
   */
  threadState: string;

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

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

/**
 * Describes the message perfetto.protos.AndroidBinderMetric.ThreadStateBreakdown.
 * Use `create(AndroidBinderMetric_ThreadStateBreakdownSchema)` to create a new message.
 */
export const AndroidBinderMetric_ThreadStateBreakdownSchema: GenMessage<AndroidBinderMetric_ThreadStateBreakdown> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_metrics_android_binder_metric, 0, 2);

/**
 * @generated from message perfetto.protos.AndroidBinderMetric.BlockedFunctionBreakdown
 */
export type AndroidBinderMetric_BlockedFunctionBreakdown = Message<"perfetto.protos.AndroidBinderMetric.BlockedFunctionBreakdown"> & {
  /**
   * @generated from field: optional string thread_state_type = 1;
   */
  threadStateType: string;

  /**
   * @generated from field: optional string blocked_function = 2;
   */
  blockedFunction: string;

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

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

/**
 * Describes the message perfetto.protos.AndroidBinderMetric.BlockedFunctionBreakdown.
 * Use `create(AndroidBinderMetric_BlockedFunctionBreakdownSchema)` to create a new message.
 */
export const AndroidBinderMetric_BlockedFunctionBreakdownSchema: GenMessage<AndroidBinderMetric_BlockedFunctionBreakdown> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_metrics_android_binder_metric, 0, 3);

/**
 * @generated from message perfetto.protos.AndroidBinderMetric.LogicalReasonBreakdown
 */
export type AndroidBinderMetric_LogicalReasonBreakdown = Message<"perfetto.protos.AndroidBinderMetric.LogicalReasonBreakdown"> & {
  /**
   * @generated from field: optional string thread_state_type = 1;
   */
  threadStateType: string;

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

  /**
   * @generated from field: optional int64 reason_dur = 3;
   */
  reasonDur: bigint;
};

/**
 * Describes the message perfetto.protos.AndroidBinderMetric.LogicalReasonBreakdown.
 * Use `create(AndroidBinderMetric_LogicalReasonBreakdownSchema)` to create a new message.
 */
export const AndroidBinderMetric_LogicalReasonBreakdownSchema: GenMessage<AndroidBinderMetric_LogicalReasonBreakdown> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_metrics_android_binder_metric, 0, 4);

