//
// Copyright (C) 2024 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/bigtrace/orchestrator.proto (package perfetto.protos, syntax proto3)
/* eslint-disable */

import type { GenFile, GenMessage, GenService } from "@bufbuild/protobuf/codegenv1";
import { fileDesc, messageDesc, serviceDesc } from "@bufbuild/protobuf/codegenv1";
import type { QueryResult } from "../trace_processor/trace_processor_pb";
import { file_protos_perfetto_trace_processor_trace_processor } from "../trace_processor/trace_processor_pb";
import type { Message } from "@bufbuild/protobuf";

/**
 * Describes the file protos/perfetto/bigtrace/orchestrator.proto.
 */
export const file_protos_perfetto_bigtrace_orchestrator: GenFile = /*@__PURE__*/
  fileDesc("Citwcm90b3MvcGVyZmV0dG8vYmlndHJhY2Uvb3JjaGVzdHJhdG9yLnByb3RvEg9wZXJmZXR0by5wcm90b3MiSQoRQmlndHJhY2VRdWVyeUFyZ3MSDgoGdHJhY2VzGAEgAygJEhYKCXNxbF9xdWVyeRgCIAEoCUgAiAEBQgwKCl9zcWxfcXVlcnkiYwoVQmlndHJhY2VRdWVyeVJlc3BvbnNlEhIKBXRyYWNlGAEgASgJSACIAQESLAoGcmVzdWx0GAIgAygLMhwucGVyZmV0dG8ucHJvdG9zLlF1ZXJ5UmVzdWx0QggKBl90cmFjZTJvChRCaWd0cmFjZU9yY2hlc3RyYXRvchJXCgVRdWVyeRIiLnBlcmZldHRvLnByb3Rvcy5CaWd0cmFjZVF1ZXJ5QXJncxomLnBlcmZldHRvLnByb3Rvcy5CaWd0cmFjZVF1ZXJ5UmVzcG9uc2UiADABYgZwcm90bzM", [file_protos_perfetto_trace_processor_trace_processor]);

/**
 * Request/Response for TraceListQuery
 *
 * @generated from message perfetto.protos.BigtraceQueryArgs
 */
export type BigtraceQueryArgs = Message<"perfetto.protos.BigtraceQueryArgs"> & {
  /**
   * @generated from field: repeated string traces = 1;
   */
  traces: string[];

  /**
   * @generated from field: optional string sql_query = 2;
   */
  sqlQuery?: string;
};

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

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

  /**
   * @generated from field: repeated perfetto.protos.QueryResult result = 2;
   */
  result: QueryResult[];
};

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

/**
 * Each Bigtrace instance has an orchestrator which is responsible for receiving
 * requests from the client and loading and querying traces by sharding them
 * across a set of "Workers"
 *
 * @generated from service perfetto.protos.BigtraceOrchestrator
 */
export const BigtraceOrchestrator: GenService<{
  /**
   * Executes a SQL query on the specified list of traces and returns a stream
   * of the result of the query for a given trace
   *
   * @generated from rpc perfetto.protos.BigtraceOrchestrator.Query
   */
  query: {
    methodKind: "server_streaming";
    input: typeof BigtraceQueryArgsSchema;
    output: typeof BigtraceQueryResponseSchema;
  },
}> = /*@__PURE__*/
  serviceDesc(file_protos_perfetto_bigtrace_orchestrator, 0);

