//
// Copyright (C) 2017 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/ipc/consumer_port.proto (package perfetto.protos, syntax proto2)
/* eslint-disable */

import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv1";
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1";
import type { ObservableEvents, ObservableEvents_Type } from "../common/observable_events_pb";
import { file_protos_perfetto_common_observable_events } from "../common/observable_events_pb";
import type { TracingServiceState } from "../common/tracing_service_state_pb";
import { file_protos_perfetto_common_tracing_service_state } from "../common/tracing_service_state_pb";
import type { TracingServiceCapabilities } from "../common/tracing_service_capabilities_pb";
import { file_protos_perfetto_common_tracing_service_capabilities } from "../common/tracing_service_capabilities_pb";
import type { TraceStats } from "../common/trace_stats_pb";
import { file_protos_perfetto_common_trace_stats } from "../common/trace_stats_pb";
import type { TraceConfig } from "../config/trace_config_pb";
import { file_protos_perfetto_config_trace_config } from "../config/trace_config_pb";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file protos/perfetto/ipc/consumer_port.proto.
 */
export const file_protos_perfetto_ipc_consumer_port: GenFile = /*@__PURE__*/
  fileDesc("Cidwcm90b3MvcGVyZmV0dG8vaXBjL2NvbnN1bWVyX3BvcnQucHJvdG8SD3BlcmZldHRvLnByb3RvcyJsChRFbmFibGVUcmFjaW5nUmVxdWVzdBIyCgx0cmFjZV9jb25maWcYASABKAsyHC5wZXJmZXR0by5wcm90b3MuVHJhY2VDb25maWcSIAoYYXR0YWNoX25vdGlmaWNhdGlvbl9vbmx5GAIgASgIIkMKFUVuYWJsZVRyYWNpbmdSZXNwb25zZRISCghkaXNhYmxlZBgBIAEoCEgAEg0KBWVycm9yGAMgASgJQgcKBXN0YXRlIhUKE1N0YXJ0VHJhY2luZ1JlcXVlc3QiFgoUU3RhcnRUcmFjaW5nUmVzcG9uc2UiTgoYQ2hhbmdlVHJhY2VDb25maWdSZXF1ZXN0EjIKDHRyYWNlX2NvbmZpZxgBIAEoCzIcLnBlcmZldHRvLnByb3Rvcy5UcmFjZUNvbmZpZyIbChlDaGFuZ2VUcmFjZUNvbmZpZ1Jlc3BvbnNlIhcKFURpc2FibGVUcmFjaW5nUmVxdWVzdCIYChZEaXNhYmxlVHJhY2luZ1Jlc3BvbnNlIhQKElJlYWRCdWZmZXJzUmVxdWVzdCKHAQoTUmVhZEJ1ZmZlcnNSZXNwb25zZRI6CgZzbGljZXMYAiADKAsyKi5wZXJmZXR0by5wcm90b3MuUmVhZEJ1ZmZlcnNSZXNwb25zZS5TbGljZRo0CgVTbGljZRIMCgRkYXRhGAEgASgMEh0KFWxhc3Rfc2xpY2VfZm9yX3BhY2tldBgCIAEoCCIoChJGcmVlQnVmZmVyc1JlcXVlc3QSEgoKYnVmZmVyX2lkcxgBIAMoDSIVChNGcmVlQnVmZmVyc1Jlc3BvbnNlIjEKDEZsdXNoUmVxdWVzdBISCgp0aW1lb3V0X21zGAEgASgNEg0KBWZsYWdzGAIgASgEIg8KDUZsdXNoUmVzcG9uc2UiHAoNRGV0YWNoUmVxdWVzdBILCgNrZXkYASABKAkiEAoORGV0YWNoUmVzcG9uc2UiHAoNQXR0YWNoUmVxdWVzdBILCgNrZXkYASABKAkiRAoOQXR0YWNoUmVzcG9uc2USMgoMdHJhY2VfY29uZmlnGAEgASgLMhwucGVyZmV0dG8ucHJvdG9zLlRyYWNlQ29uZmlnIhYKFEdldFRyYWNlU3RhdHNSZXF1ZXN0IkkKFUdldFRyYWNlU3RhdHNSZXNwb25zZRIwCgt0cmFjZV9zdGF0cxgBIAEoCzIbLnBlcmZldHRvLnByb3Rvcy5UcmFjZVN0YXRzIlkKFE9ic2VydmVFdmVudHNSZXF1ZXN0EkEKEWV2ZW50c190b19vYnNlcnZlGAEgAygOMiYucGVyZmV0dG8ucHJvdG9zLk9ic2VydmFibGVFdmVudHMuVHlwZSJKChVPYnNlcnZlRXZlbnRzUmVzcG9uc2USMQoGZXZlbnRzGAEgASgLMiEucGVyZmV0dG8ucHJvdG9zLk9ic2VydmFibGVFdmVudHMiMQoYUXVlcnlTZXJ2aWNlU3RhdGVSZXF1ZXN0EhUKDXNlc3Npb25zX29ubHkYASABKAgiWAoZUXVlcnlTZXJ2aWNlU3RhdGVSZXNwb25zZRI7Cg1zZXJ2aWNlX3N0YXRlGAEgASgLMiQucGVyZmV0dG8ucHJvdG9zLlRyYWNpbmdTZXJ2aWNlU3RhdGUiGgoYUXVlcnlDYXBhYmlsaXRpZXNSZXF1ZXN0Il4KGVF1ZXJ5Q2FwYWJpbGl0aWVzUmVzcG9uc2USQQoMY2FwYWJpbGl0aWVzGAEgASgLMisucGVyZmV0dG8ucHJvdG9zLlRyYWNpbmdTZXJ2aWNlQ2FwYWJpbGl0aWVzIh4KHFNhdmVUcmFjZUZvckJ1Z3JlcG9ydFJlcXVlc3QiPQodU2F2ZVRyYWNlRm9yQnVncmVwb3J0UmVzcG9uc2USDwoHc3VjY2VzcxgBIAEoCBILCgNtc2cYAiABKAkimQIKE0Nsb25lU2Vzc2lvblJlcXVlc3QSFAoKc2Vzc2lvbl9pZBgBIAEoBEgAEh0KE3VuaXF1ZV9zZXNzaW9uX25hbWUYBCABKAlIABIZChFza2lwX3RyYWNlX2ZpbHRlchgCIAEoCBIVCg1mb3JfYnVncmVwb3J0GAMgASgIEhoKEmNsb25lX3RyaWdnZXJfbmFtZRgFIAEoCRIjChtjbG9uZV90cmlnZ2VyX3Byb2R1Y2VyX25hbWUYBiABKAkSKgoiY2xvbmVfdHJpZ2dlcl90cnVzdGVkX3Byb2R1Y2VyX3VpZBgHIAEoBRIiChpjbG9uZV90cmlnZ2VyX2Jvb3RfdGltZV9ucxgIIAEoBEIKCghzZWxlY3RvciJaChRDbG9uZVNlc3Npb25SZXNwb25zZRIPCgdzdWNjZXNzGAEgASgIEg0KBWVycm9yGAIgASgJEhAKCHV1aWRfbXNiGAMgASgDEhAKCHV1aWRfbHNiGAQgASgDMr0LCgxDb25zdW1lclBvcnQSYAoNRW5hYmxlVHJhY2luZxIlLnBlcmZldHRvLnByb3Rvcy5FbmFibGVUcmFjaW5nUmVxdWVzdBomLnBlcmZldHRvLnByb3Rvcy5FbmFibGVUcmFjaW5nUmVzcG9uc2UiABJjCg5EaXNhYmxlVHJhY2luZxImLnBlcmZldHRvLnByb3Rvcy5EaXNhYmxlVHJhY2luZ1JlcXVlc3QaJy5wZXJmZXR0by5wcm90b3MuRGlzYWJsZVRyYWNpbmdSZXNwb25zZSIAElwKC1JlYWRCdWZmZXJzEiMucGVyZmV0dG8ucHJvdG9zLlJlYWRCdWZmZXJzUmVxdWVzdBokLnBlcmZldHRvLnByb3Rvcy5SZWFkQnVmZmVyc1Jlc3BvbnNlIgAwARJaCgtGcmVlQnVmZmVycxIjLnBlcmZldHRvLnByb3Rvcy5GcmVlQnVmZmVyc1JlcXVlc3QaJC5wZXJmZXR0by5wcm90b3MuRnJlZUJ1ZmZlcnNSZXNwb25zZSIAEkgKBUZsdXNoEh0ucGVyZmV0dG8ucHJvdG9zLkZsdXNoUmVxdWVzdBoeLnBlcmZldHRvLnByb3Rvcy5GbHVzaFJlc3BvbnNlIgASXQoMU3RhcnRUcmFjaW5nEiQucGVyZmV0dG8ucHJvdG9zLlN0YXJ0VHJhY2luZ1JlcXVlc3QaJS5wZXJmZXR0by5wcm90b3MuU3RhcnRUcmFjaW5nUmVzcG9uc2UiABJsChFDaGFuZ2VUcmFjZUNvbmZpZxIpLnBlcmZldHRvLnByb3Rvcy5DaGFuZ2VUcmFjZUNvbmZpZ1JlcXVlc3QaKi5wZXJmZXR0by5wcm90b3MuQ2hhbmdlVHJhY2VDb25maWdSZXNwb25zZSIAEksKBkRldGFjaBIeLnBlcmZldHRvLnByb3Rvcy5EZXRhY2hSZXF1ZXN0Gh8ucGVyZmV0dG8ucHJvdG9zLkRldGFjaFJlc3BvbnNlIgASSwoGQXR0YWNoEh4ucGVyZmV0dG8ucHJvdG9zLkF0dGFjaFJlcXVlc3QaHy5wZXJmZXR0by5wcm90b3MuQXR0YWNoUmVzcG9uc2UiABJgCg1HZXRUcmFjZVN0YXRzEiUucGVyZmV0dG8ucHJvdG9zLkdldFRyYWNlU3RhdHNSZXF1ZXN0GiYucGVyZmV0dG8ucHJvdG9zLkdldFRyYWNlU3RhdHNSZXNwb25zZSIAEmIKDU9ic2VydmVFdmVudHMSJS5wZXJmZXR0by5wcm90b3MuT2JzZXJ2ZUV2ZW50c1JlcXVlc3QaJi5wZXJmZXR0by5wcm90b3MuT2JzZXJ2ZUV2ZW50c1Jlc3BvbnNlIgAwARJuChFRdWVyeVNlcnZpY2VTdGF0ZRIpLnBlcmZldHRvLnByb3Rvcy5RdWVyeVNlcnZpY2VTdGF0ZVJlcXVlc3QaKi5wZXJmZXR0by5wcm90b3MuUXVlcnlTZXJ2aWNlU3RhdGVSZXNwb25zZSIAMAESbAoRUXVlcnlDYXBhYmlsaXRpZXMSKS5wZXJmZXR0by5wcm90b3MuUXVlcnlDYXBhYmlsaXRpZXNSZXF1ZXN0GioucGVyZmV0dG8ucHJvdG9zLlF1ZXJ5Q2FwYWJpbGl0aWVzUmVzcG9uc2UiABJ4ChVTYXZlVHJhY2VGb3JCdWdyZXBvcnQSLS5wZXJmZXR0by5wcm90b3MuU2F2ZVRyYWNlRm9yQnVncmVwb3J0UmVxdWVzdBouLnBlcmZldHRvLnByb3Rvcy5TYXZlVHJhY2VGb3JCdWdyZXBvcnRSZXNwb25zZSIAEl0KDENsb25lU2Vzc2lvbhIkLnBlcmZldHRvLnByb3Rvcy5DbG9uZVNlc3Npb25SZXF1ZXN0GiUucGVyZmV0dG8ucHJvdG9zLkNsb25lU2Vzc2lvblJlc3BvbnNlIgA", [file_protos_perfetto_common_observable_events, file_protos_perfetto_common_tracing_service_state, file_protos_perfetto_common_tracing_service_capabilities, file_protos_perfetto_common_trace_stats, file_protos_perfetto_config_trace_config]);

/**
 * Arguments for rpc EnableTracing().
 *
 * @generated from message perfetto.protos.EnableTracingRequest
 */
export type EnableTracingRequest = Message<"perfetto.protos.EnableTracingRequest"> & {
  /**
   * @generated from field: optional perfetto.protos.TraceConfig trace_config = 1;
   */
  traceConfig?: TraceConfig;

  /**
   * Introduced in Android Q. This is used for re-attaching to the end-of-trace
   * EnableTracingResponse notification after a Detach+Attach request.
   * When this flag is set the |trace_config| is ignored and no method is called
   * on the tracing service.
   *
   * @generated from field: optional bool attach_notification_only = 2;
   */
  attachNotificationOnly: boolean;
};

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

/**
 * @generated from message perfetto.protos.EnableTracingResponse
 */
export type EnableTracingResponse = Message<"perfetto.protos.EnableTracingResponse"> & {
  /**
   * @generated from oneof perfetto.protos.EnableTracingResponse.state
   */
  state: {
    /**
     * @generated from field: bool disabled = 1;
     */
    value: boolean;
    case: "disabled";
  } | { case: undefined; value?: undefined };

  /**
   * If present and non-empty tracing was disabled because of an error.
   * Introduced in Android S.
   *
   * @generated from field: optional string error = 3;
   */
  error: string;
};

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

/**
 * Arguments for rpc StartTracing().
 *
 * @generated from message perfetto.protos.StartTracingRequest
 */
export type StartTracingRequest = Message<"perfetto.protos.StartTracingRequest"> & {
};

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

/**
 * @generated from message perfetto.protos.StartTracingResponse
 */
export type StartTracingResponse = Message<"perfetto.protos.StartTracingResponse"> & {
};

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

/**
 * Arguments for rpc ChangeTraceConfig().
 *
 * @generated from message perfetto.protos.ChangeTraceConfigRequest
 */
export type ChangeTraceConfigRequest = Message<"perfetto.protos.ChangeTraceConfigRequest"> & {
  /**
   * @generated from field: optional perfetto.protos.TraceConfig trace_config = 1;
   */
  traceConfig?: TraceConfig;
};

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

/**
 * @generated from message perfetto.protos.ChangeTraceConfigResponse
 */
export type ChangeTraceConfigResponse = Message<"perfetto.protos.ChangeTraceConfigResponse"> & {
};

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

/**
 * Arguments for rpc DisableTracing().
 *
 * TODO: not supported yet, selectively disable only some data sources.
 * repeated string data_source_name;
 *
 * @generated from message perfetto.protos.DisableTracingRequest
 */
export type DisableTracingRequest = Message<"perfetto.protos.DisableTracingRequest"> & {
};

/**
 * Describes the message perfetto.protos.DisableTracingRequest.
 * Use `create(DisableTracingRequestSchema)` to create a new message.
 */
export const DisableTracingRequestSchema: GenMessage<DisableTracingRequest> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 6);

/**
 * @generated from message perfetto.protos.DisableTracingResponse
 */
export type DisableTracingResponse = Message<"perfetto.protos.DisableTracingResponse"> & {
};

/**
 * Describes the message perfetto.protos.DisableTracingResponse.
 * Use `create(DisableTracingResponseSchema)` to create a new message.
 */
export const DisableTracingResponseSchema: GenMessage<DisableTracingResponse> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 7);

/**
 * Arguments for rpc ReadBuffers().
 *
 * The |id|s of the buffer, as passed to CreateBuffers().
 * TODO: repeated uint32 buffer_ids = 1;
 *
 * @generated from message perfetto.protos.ReadBuffersRequest
 */
export type ReadBuffersRequest = Message<"perfetto.protos.ReadBuffersRequest"> & {
};

/**
 * Describes the message perfetto.protos.ReadBuffersRequest.
 * Use `create(ReadBuffersRequestSchema)` to create a new message.
 */
export const ReadBuffersRequestSchema: GenMessage<ReadBuffersRequest> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 8);

/**
 * TODO: uint32 buffer_id = 1;
 *
 * @generated from message perfetto.protos.ReadBuffersResponse
 */
export type ReadBuffersResponse = Message<"perfetto.protos.ReadBuffersResponse"> & {
  /**
   * @generated from field: repeated perfetto.protos.ReadBuffersResponse.Slice slices = 2;
   */
  slices: ReadBuffersResponse_Slice[];
};

/**
 * Describes the message perfetto.protos.ReadBuffersResponse.
 * Use `create(ReadBuffersResponseSchema)` to create a new message.
 */
export const ReadBuffersResponseSchema: GenMessage<ReadBuffersResponse> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 9);

/**
 * Each streaming reply returns one or more slices for one or more trace
 * packets, or even just a portion of it (if it's too big to fit within one
 * IPC). The returned slices are ordered and contiguous: packets' slices are
 * not interleaved and slices are sent only once all slices for a packet are
 * available (i.e. the consumer will never see any gap).
 *
 * @generated from message perfetto.protos.ReadBuffersResponse.Slice
 */
export type ReadBuffersResponse_Slice = Message<"perfetto.protos.ReadBuffersResponse.Slice"> & {
  /**
   * @generated from field: optional bytes data = 1;
   */
  data: Uint8Array;

  /**
   * When true, this is the last slice for the packet. A ReadBufferResponse
   * might have no slices marked as |last_slice_for_packet|==true, in the case
   * of a very large packet that gets chunked into several IPCs (in which case
   * only the last IPC for the packet will have this flag set).
   *
   * @generated from field: optional bool last_slice_for_packet = 2;
   */
  lastSliceForPacket: boolean;
};

/**
 * Describes the message perfetto.protos.ReadBuffersResponse.Slice.
 * Use `create(ReadBuffersResponse_SliceSchema)` to create a new message.
 */
export const ReadBuffersResponse_SliceSchema: GenMessage<ReadBuffersResponse_Slice> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 9, 0);

/**
 * Arguments for rpc FreeBuffers().
 *
 * @generated from message perfetto.protos.FreeBuffersRequest
 */
export type FreeBuffersRequest = Message<"perfetto.protos.FreeBuffersRequest"> & {
  /**
   * The |id|s of the buffer, as passed to CreateBuffers().
   *
   * @generated from field: repeated uint32 buffer_ids = 1;
   */
  bufferIds: number[];
};

/**
 * Describes the message perfetto.protos.FreeBuffersRequest.
 * Use `create(FreeBuffersRequestSchema)` to create a new message.
 */
export const FreeBuffersRequestSchema: GenMessage<FreeBuffersRequest> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 10);

/**
 * @generated from message perfetto.protos.FreeBuffersResponse
 */
export type FreeBuffersResponse = Message<"perfetto.protos.FreeBuffersResponse"> & {
};

/**
 * Describes the message perfetto.protos.FreeBuffersResponse.
 * Use `create(FreeBuffersResponseSchema)` to create a new message.
 */
export const FreeBuffersResponseSchema: GenMessage<FreeBuffersResponse> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 11);

/**
 * Arguments for rpc Flush().
 *
 * @generated from message perfetto.protos.FlushRequest
 */
export type FlushRequest = Message<"perfetto.protos.FlushRequest"> & {
  /**
   * @generated from field: optional uint32 timeout_ms = 1;
   */
  timeoutMs: number;

  /**
   * More details such as flush reason and originator. Introduced in v38 / V.
   * See FlushFlags in include/perfetto/ext/tracing/core/flush_flags.h.
   *
   * @generated from field: optional uint64 flags = 2;
   */
  flags: bigint;
};

/**
 * Describes the message perfetto.protos.FlushRequest.
 * Use `create(FlushRequestSchema)` to create a new message.
 */
export const FlushRequestSchema: GenMessage<FlushRequest> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 12);

/**
 * @generated from message perfetto.protos.FlushResponse
 */
export type FlushResponse = Message<"perfetto.protos.FlushResponse"> & {
};

/**
 * Describes the message perfetto.protos.FlushResponse.
 * Use `create(FlushResponseSchema)` to create a new message.
 */
export const FlushResponseSchema: GenMessage<FlushResponse> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 13);

/**
 * Arguments for rpc Detach
 *
 * @generated from message perfetto.protos.DetachRequest
 */
export type DetachRequest = Message<"perfetto.protos.DetachRequest"> & {
  /**
   * @generated from field: optional string key = 1;
   */
  key: string;
};

/**
 * Describes the message perfetto.protos.DetachRequest.
 * Use `create(DetachRequestSchema)` to create a new message.
 */
export const DetachRequestSchema: GenMessage<DetachRequest> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 14);

/**
 * @generated from message perfetto.protos.DetachResponse
 */
export type DetachResponse = Message<"perfetto.protos.DetachResponse"> & {
};

/**
 * Describes the message perfetto.protos.DetachResponse.
 * Use `create(DetachResponseSchema)` to create a new message.
 */
export const DetachResponseSchema: GenMessage<DetachResponse> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 15);

/**
 * Arguments for rpc Attach.
 *
 * @generated from message perfetto.protos.AttachRequest
 */
export type AttachRequest = Message<"perfetto.protos.AttachRequest"> & {
  /**
   * @generated from field: optional string key = 1;
   */
  key: string;
};

/**
 * Describes the message perfetto.protos.AttachRequest.
 * Use `create(AttachRequestSchema)` to create a new message.
 */
export const AttachRequestSchema: GenMessage<AttachRequest> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 16);

/**
 * @generated from message perfetto.protos.AttachResponse
 */
export type AttachResponse = Message<"perfetto.protos.AttachResponse"> & {
  /**
   * @generated from field: optional perfetto.protos.TraceConfig trace_config = 1;
   */
  traceConfig?: TraceConfig;
};

/**
 * Describes the message perfetto.protos.AttachResponse.
 * Use `create(AttachResponseSchema)` to create a new message.
 */
export const AttachResponseSchema: GenMessage<AttachResponse> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 17);

/**
 * @generated from message perfetto.protos.GetTraceStatsRequest
 */
export type GetTraceStatsRequest = Message<"perfetto.protos.GetTraceStatsRequest"> & {
};

/**
 * Describes the message perfetto.protos.GetTraceStatsRequest.
 * Use `create(GetTraceStatsRequestSchema)` to create a new message.
 */
export const GetTraceStatsRequestSchema: GenMessage<GetTraceStatsRequest> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 18);

/**
 * @generated from message perfetto.protos.GetTraceStatsResponse
 */
export type GetTraceStatsResponse = Message<"perfetto.protos.GetTraceStatsResponse"> & {
  /**
   * @generated from field: optional perfetto.protos.TraceStats trace_stats = 1;
   */
  traceStats?: TraceStats;
};

/**
 * Describes the message perfetto.protos.GetTraceStatsResponse.
 * Use `create(GetTraceStatsResponseSchema)` to create a new message.
 */
export const GetTraceStatsResponseSchema: GenMessage<GetTraceStatsResponse> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 19);

/**
 * To stop observing events of a certain type, send a request with the remaining
 * types. To stop observing completely, send an empty request.
 *
 * @generated from message perfetto.protos.ObserveEventsRequest
 */
export type ObserveEventsRequest = Message<"perfetto.protos.ObserveEventsRequest"> & {
  /**
   * @generated from field: repeated perfetto.protos.ObservableEvents.Type events_to_observe = 1;
   */
  eventsToObserve: ObservableEvents_Type[];
};

/**
 * Describes the message perfetto.protos.ObserveEventsRequest.
 * Use `create(ObserveEventsRequestSchema)` to create a new message.
 */
export const ObserveEventsRequestSchema: GenMessage<ObserveEventsRequest> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 20);

/**
 * @generated from message perfetto.protos.ObserveEventsResponse
 */
export type ObserveEventsResponse = Message<"perfetto.protos.ObserveEventsResponse"> & {
  /**
   * @generated from field: optional perfetto.protos.ObservableEvents events = 1;
   */
  events?: ObservableEvents;
};

/**
 * Describes the message perfetto.protos.ObserveEventsResponse.
 * Use `create(ObserveEventsResponseSchema)` to create a new message.
 */
export const ObserveEventsResponseSchema: GenMessage<ObserveEventsResponse> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 21);

/**
 * Arguments for rpc QueryServiceState.
 *
 * @generated from message perfetto.protos.QueryServiceStateRequest
 */
export type QueryServiceStateRequest = Message<"perfetto.protos.QueryServiceStateRequest"> & {
  /**
   * If set, only the TracingServiceState.tracing_sessions is filled. Producers
   * and data sources are omitted.
   *
   * @generated from field: optional bool sessions_only = 1;
   */
  sessionsOnly: boolean;
};

/**
 * Describes the message perfetto.protos.QueryServiceStateRequest.
 * Use `create(QueryServiceStateRequestSchema)` to create a new message.
 */
export const QueryServiceStateRequestSchema: GenMessage<QueryServiceStateRequest> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 22);

/**
 * @generated from message perfetto.protos.QueryServiceStateResponse
 */
export type QueryServiceStateResponse = Message<"perfetto.protos.QueryServiceStateResponse"> & {
  /**
   * In order to avoid hitting IPC message size limitations, the service will
   * return >1 replies for each query, chunking the TracingServiceState. The
   * receiver is expected to merge replies together and parse that when the
   * last reply is received (i.e. when IPC's |has_more| == false).
   *
   * @generated from field: optional perfetto.protos.TracingServiceState service_state = 1;
   */
  serviceState?: TracingServiceState;
};

/**
 * Describes the message perfetto.protos.QueryServiceStateResponse.
 * Use `create(QueryServiceStateResponseSchema)` to create a new message.
 */
export const QueryServiceStateResponseSchema: GenMessage<QueryServiceStateResponse> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 23);

/**
 * Arguments for rpc QueryCapabilities.
 *
 * @generated from message perfetto.protos.QueryCapabilitiesRequest
 */
export type QueryCapabilitiesRequest = Message<"perfetto.protos.QueryCapabilitiesRequest"> & {
};

/**
 * Describes the message perfetto.protos.QueryCapabilitiesRequest.
 * Use `create(QueryCapabilitiesRequestSchema)` to create a new message.
 */
export const QueryCapabilitiesRequestSchema: GenMessage<QueryCapabilitiesRequest> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 24);

/**
 * @generated from message perfetto.protos.QueryCapabilitiesResponse
 */
export type QueryCapabilitiesResponse = Message<"perfetto.protos.QueryCapabilitiesResponse"> & {
  /**
   * @generated from field: optional perfetto.protos.TracingServiceCapabilities capabilities = 1;
   */
  capabilities?: TracingServiceCapabilities;
};

/**
 * Describes the message perfetto.protos.QueryCapabilitiesResponse.
 * Use `create(QueryCapabilitiesResponseSchema)` to create a new message.
 */
export const QueryCapabilitiesResponseSchema: GenMessage<QueryCapabilitiesResponse> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 25);

/**
 * Arguments for rpc SaveTraceForBugreport.
 *
 * @generated from message perfetto.protos.SaveTraceForBugreportRequest
 */
export type SaveTraceForBugreportRequest = Message<"perfetto.protos.SaveTraceForBugreportRequest"> & {
};

/**
 * Describes the message perfetto.protos.SaveTraceForBugreportRequest.
 * Use `create(SaveTraceForBugreportRequestSchema)` to create a new message.
 */
export const SaveTraceForBugreportRequestSchema: GenMessage<SaveTraceForBugreportRequest> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 26);

/**
 * This response is sent only after the trace was saved into file (if succeeded)
 * or something failed.
 *
 * @generated from message perfetto.protos.SaveTraceForBugreportResponse
 */
export type SaveTraceForBugreportResponse = Message<"perfetto.protos.SaveTraceForBugreportResponse"> & {
  /**
   * If true, an eligible the trace was saved into a known location (on Android
   * /data/misc/perfetto-traces, see GetBugreportTracePath()).
   * If false no trace with bugreport_score > 0 was found or an error occurred.
   * see |msg| in that case for details about the failure.
   *
   * @generated from field: optional bool success = 1;
   */
  success: boolean;

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

/**
 * Describes the message perfetto.protos.SaveTraceForBugreportResponse.
 * Use `create(SaveTraceForBugreportResponseSchema)` to create a new message.
 */
export const SaveTraceForBugreportResponseSchema: GenMessage<SaveTraceForBugreportResponse> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 27);

/**
 * Arguments for rpc CloneSession.
 *
 * @generated from message perfetto.protos.CloneSessionRequest
 */
export type CloneSessionRequest = Message<"perfetto.protos.CloneSessionRequest"> & {
  /**
   * @generated from oneof perfetto.protos.CloneSessionRequest.selector
   */
  selector: {
    /**
     * The session ID to clone. If session_id == kBugreportSessionId (0xff...ff)
     * the session with the highest bugreport score is cloned (if any exists).
     *
     * @generated from field: uint64 session_id = 1;
     */
    value: bigint;
    case: "sessionId";
  } | {
    /**
     * The unique_session_name of the tracing session to clone. Tracing sessions
     * that are clones of other tracing sessions are ignored.
     *
     * @generated from field: string unique_session_name = 4;
     */
    value: string;
    case: "uniqueSessionName";
  } | { case: undefined; value?: undefined };

  /**
   * If set, the trace filter will not have effect on the cloned session.
   * Used for bugreports.
   *
   * @generated from field: optional bool skip_trace_filter = 2;
   */
  skipTraceFilter: boolean;

  /**
   * If set, affects the generation of the FlushFlags::CloneTarget to be set
   * to kBugreport when requesting the flush to the producers.
   *
   * @generated from field: optional bool for_bugreport = 3;
   */
  forBugreport: boolean;

  /**
   * If set, this is stored in the trace as name of the trigger that caused the
   * clone.
   *
   * @generated from field: optional string clone_trigger_name = 5;
   */
  cloneTriggerName: string;

  /**
   * If set, this is stored in the trace as name of the producer that triggered
   * the clone.
   *
   * @generated from field: optional string clone_trigger_producer_name = 6;
   */
  cloneTriggerProducerName: string;

  /**
   * If set, this is stored in the trace as uid of the producer that triggered
   * the clone.
   *
   * @generated from field: optional int32 clone_trigger_trusted_producer_uid = 7;
   */
  cloneTriggerTrustedProducerUid: number;

  /**
   * If set, this is stored in the trace as timestamp of the trigger that caused
   * the clone.
   *
   * @generated from field: optional uint64 clone_trigger_boot_time_ns = 8;
   */
  cloneTriggerBootTimeNs: bigint;
};

/**
 * Describes the message perfetto.protos.CloneSessionRequest.
 * Use `create(CloneSessionRequestSchema)` to create a new message.
 */
export const CloneSessionRequestSchema: GenMessage<CloneSessionRequest> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 28);

/**
 * @generated from message perfetto.protos.CloneSessionResponse
 */
export type CloneSessionResponse = Message<"perfetto.protos.CloneSessionResponse"> & {
  /**
   * If true, the clone was successful. If false it failed and |error| contains
   * the details about the failure.
   *
   * @generated from field: optional bool success = 1;
   */
  success: boolean;

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

  /**
   * The UUID of the cloned session.
   *
   * @generated from field: optional int64 uuid_msb = 3;
   */
  uuidMsb: bigint;

  /**
   * @generated from field: optional int64 uuid_lsb = 4;
   */
  uuidLsb: bigint;
};

/**
 * Describes the message perfetto.protos.CloneSessionResponse.
 * Use `create(CloneSessionResponseSchema)` to create a new message.
 */
export const CloneSessionResponseSchema: GenMessage<CloneSessionResponse> = /*@__PURE__*/
  messageDesc(file_protos_perfetto_ipc_consumer_port, 29);

/**
 * IPC interface definition for the consumer port of the tracing service.
 *
 * @generated from service perfetto.protos.ConsumerPort
 */
export const ConsumerPort: GenService<{
  /**
   * Enables tracing for one or more data sources. At least one buffer must have
   * been previously created. The EnableTracingResponse is sent when tracing is
   * disabled (either explicitly or because of the |duration_ms| expired).
   * If |deferred_start| == true in the passed TraceConfig, all the tracing
   * harness is brought up (creating buffers and data sources) without actually
   * starting the data sources. Data sources will be started upon an explicit
   * StartTracing() call.
   * Note that |deferred_start| and StartTracing() have been introduced only
   * in Android Q and are not supported in Android P.
   *
   * @generated from rpc perfetto.protos.ConsumerPort.EnableTracing
   */
  enableTracing: {
    methodKind: "unary";
    input: typeof EnableTracingRequestSchema;
    output: typeof EnableTracingResponseSchema;
  },
  /**
   * Disables tracing for one or more data sources.
   *
   * @generated from rpc perfetto.protos.ConsumerPort.DisableTracing
   */
  disableTracing: {
    methodKind: "unary";
    input: typeof DisableTracingRequestSchema;
    output: typeof DisableTracingResponseSchema;
  },
  /**
   * Streams back the contents of one or more buffers. One call is enough to
   * drain all the buffers. The response consists in a sequence of
   * ReadBufferResponse messages (hence the "stream" in the return type), each
   * carrying one or more TracePacket(s). An EOF flag is attached to the last
   * ReadBufferResponse through the |has_more| == false field.
   *
   * @generated from rpc perfetto.protos.ConsumerPort.ReadBuffers
   */
  readBuffers: {
    methodKind: "server_streaming";
    input: typeof ReadBuffersRequestSchema;
    output: typeof ReadBuffersResponseSchema;
  },
  /**
   * Destroys the buffers previously created. Note: all buffers are destroyed
   * implicitly if the Consumer disconnects.
   *
   * @generated from rpc perfetto.protos.ConsumerPort.FreeBuffers
   */
  freeBuffers: {
    methodKind: "unary";
    input: typeof FreeBuffersRequestSchema;
    output: typeof FreeBuffersResponseSchema;
  },
  /**
   * Asks the service to request to all data sources involved in the tracing
   * session to commit their data into the trace buffer. The FlushResponse is
   * sent only:
   * - After the data has been committed (in which case FlushResponse succeeds)
   * or
   * - After FlushRequest.timeout_ms milliseconds (in which case the
   *   FlushResponse is rejected and fails).
   *
   * @generated from rpc perfetto.protos.ConsumerPort.Flush
   */
  flush: {
    methodKind: "unary";
    input: typeof FlushRequestSchema;
    output: typeof FlushResponseSchema;
  },
  /**
   * Starts tracing. Only valid if EnableTracing() was called setting
   * deferred_start = true in the TraceConfig passed to EnableTracing().
   *
   * @generated from rpc perfetto.protos.ConsumerPort.StartTracing
   */
  startTracing: {
    methodKind: "unary";
    input: typeof StartTracingRequestSchema;
    output: typeof StartTracingResponseSchema;
  },
  /**
   * Changes the configuration for a running tracing session; only possible
   * for a subset of configuration options.
   *
   * @generated from rpc perfetto.protos.ConsumerPort.ChangeTraceConfig
   */
  changeTraceConfig: {
    methodKind: "unary";
    input: typeof ChangeTraceConfigRequestSchema;
    output: typeof ChangeTraceConfigResponseSchema;
  },
  /**
   * Allows the consumer to detach from the session. The session will keep
   * running even if the consumer disconnects and the consumer will not receive
   * any further IPC until reattached.
   *
   * @generated from rpc perfetto.protos.ConsumerPort.Detach
   */
  detach: {
    methodKind: "unary";
    input: typeof DetachRequestSchema;
    output: typeof DetachResponseSchema;
  },
  /**
   * Allows the consumer to re-attach to a previously detached session. The
   * consumer will start receiving IPC notification for that session.
   * The session will be terminated if the consumer closes the IPC channel, as
   * in the standard non-detached case.
   *
   * @generated from rpc perfetto.protos.ConsumerPort.Attach
   */
  attach: {
    methodKind: "unary";
    input: typeof AttachRequestSchema;
    output: typeof AttachResponseSchema;
  },
  /**
   * Allows the consumer to obtain statistics about the current tracing session,
   * such as buffer usage stats. Intended for debugging or UI use.
   *
   * @generated from rpc perfetto.protos.ConsumerPort.GetTraceStats
   */
  getTraceStats: {
    methodKind: "unary";
    input: typeof GetTraceStatsRequestSchema;
    output: typeof GetTraceStatsResponseSchema;
  },
  /**
   * Allows the consumer to observe certain state changes, such as data source
   * instances starting to record.
   *
   * @generated from rpc perfetto.protos.ConsumerPort.ObserveEvents
   */
  observeEvents: {
    methodKind: "server_streaming";
    input: typeof ObserveEventsRequestSchema;
    output: typeof ObserveEventsResponseSchema;
  },
  /**
   * Allows to obtain the list of data sources connected and their descriptors.
   *
   * @generated from rpc perfetto.protos.ConsumerPort.QueryServiceState
   */
  queryServiceState: {
    methodKind: "server_streaming";
    input: typeof QueryServiceStateRequestSchema;
    output: typeof QueryServiceStateResponseSchema;
  },
  /**
   * Obtains a list of features supported by the service. This is to deal with
   * backward/forward compatibility and feature detection.
   *
   * @generated from rpc perfetto.protos.ConsumerPort.QueryCapabilities
   */
  queryCapabilities: {
    methodKind: "unary";
    input: typeof QueryCapabilitiesRequestSchema;
    output: typeof QueryCapabilitiesResponseSchema;
  },
  /**
   * This method has been deprecated and removed in Android U in favour of
   * CloneSession.
   *
   * @generated from rpc perfetto.protos.ConsumerPort.SaveTraceForBugreport
   */
  saveTraceForBugreport: {
    methodKind: "unary";
    input: typeof SaveTraceForBugreportRequestSchema;
    output: typeof SaveTraceForBugreportResponseSchema;
  },
  /**
   * Clones an existing tracing session and binds the consumer to it (as if
   * the session was created via EnableTracing), copying over all the tracing
   * data (including metadata and stats).
   * The cloned session is stopped and read-only (as if DisableTracing was
   * invoked).
   * A consumer can clone a session only if the uid of the consumer matches the
   * uid of the source session or if the consumer uid is 0 (root).
   *
   * @generated from rpc perfetto.protos.ConsumerPort.CloneSession
   */
  cloneSession: {
    methodKind: "unary";
    input: typeof CloneSessionRequestSchema;
    output: typeof CloneSessionResponseSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_protos_perfetto_ipc_consumer_port, 0);

