/*
 * Copyright 2026 Google LLC
 *
 * 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
 *
 *     https://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 the protocol buffer compiler.  DO NOT EDIT!
// NO CHECKED-IN PROTOBUF GENCODE
// source: google/firestore/v1/firestore.proto
// Protobuf Java Version: 4.33.2

package com.google.firestore.v1;

@com.google.protobuf.Generated
public interface ExecutePipelineResponseOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.firestore.v1.ExecutePipelineResponse)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * Newly created transaction identifier.
   *
   * This field is only specified as part of the first response from the server,
   * alongside the `results` field when the original request specified
   * [ExecuteRequest.new_transaction][].
   * </pre>
   *
   * <code>bytes transaction = 1;</code>
   *
   * @return The transaction.
   */
  com.google.protobuf.ByteString getTransaction();

  /**
   *
   *
   * <pre>
   * An ordered batch of results returned executing a pipeline.
   *
   * The batch size is variable, and can even be zero for when only a partial
   * progress message is returned.
   *
   * The fields present in the returned documents are only those that were
   * explicitly requested in the pipeline, this includes those like
   * [`__name__`][google.firestore.v1.Document.name] and
   * [`__update_time__`][google.firestore.v1.Document.update_time]. This is
   * explicitly a divergence from `Firestore.RunQuery` / `Firestore.GetDocument`
   * RPCs which always return such fields even when they are not specified in
   * the [`mask`][google.firestore.v1.DocumentMask].
   * </pre>
   *
   * <code>repeated .google.firestore.v1.Document results = 2;</code>
   */
  java.util.List<com.google.firestore.v1.Document> getResultsList();

  /**
   *
   *
   * <pre>
   * An ordered batch of results returned executing a pipeline.
   *
   * The batch size is variable, and can even be zero for when only a partial
   * progress message is returned.
   *
   * The fields present in the returned documents are only those that were
   * explicitly requested in the pipeline, this includes those like
   * [`__name__`][google.firestore.v1.Document.name] and
   * [`__update_time__`][google.firestore.v1.Document.update_time]. This is
   * explicitly a divergence from `Firestore.RunQuery` / `Firestore.GetDocument`
   * RPCs which always return such fields even when they are not specified in
   * the [`mask`][google.firestore.v1.DocumentMask].
   * </pre>
   *
   * <code>repeated .google.firestore.v1.Document results = 2;</code>
   */
  com.google.firestore.v1.Document getResults(int index);

  /**
   *
   *
   * <pre>
   * An ordered batch of results returned executing a pipeline.
   *
   * The batch size is variable, and can even be zero for when only a partial
   * progress message is returned.
   *
   * The fields present in the returned documents are only those that were
   * explicitly requested in the pipeline, this includes those like
   * [`__name__`][google.firestore.v1.Document.name] and
   * [`__update_time__`][google.firestore.v1.Document.update_time]. This is
   * explicitly a divergence from `Firestore.RunQuery` / `Firestore.GetDocument`
   * RPCs which always return such fields even when they are not specified in
   * the [`mask`][google.firestore.v1.DocumentMask].
   * </pre>
   *
   * <code>repeated .google.firestore.v1.Document results = 2;</code>
   */
  int getResultsCount();

  /**
   *
   *
   * <pre>
   * An ordered batch of results returned executing a pipeline.
   *
   * The batch size is variable, and can even be zero for when only a partial
   * progress message is returned.
   *
   * The fields present in the returned documents are only those that were
   * explicitly requested in the pipeline, this includes those like
   * [`__name__`][google.firestore.v1.Document.name] and
   * [`__update_time__`][google.firestore.v1.Document.update_time]. This is
   * explicitly a divergence from `Firestore.RunQuery` / `Firestore.GetDocument`
   * RPCs which always return such fields even when they are not specified in
   * the [`mask`][google.firestore.v1.DocumentMask].
   * </pre>
   *
   * <code>repeated .google.firestore.v1.Document results = 2;</code>
   */
  java.util.List<? extends com.google.firestore.v1.DocumentOrBuilder> getResultsOrBuilderList();

  /**
   *
   *
   * <pre>
   * An ordered batch of results returned executing a pipeline.
   *
   * The batch size is variable, and can even be zero for when only a partial
   * progress message is returned.
   *
   * The fields present in the returned documents are only those that were
   * explicitly requested in the pipeline, this includes those like
   * [`__name__`][google.firestore.v1.Document.name] and
   * [`__update_time__`][google.firestore.v1.Document.update_time]. This is
   * explicitly a divergence from `Firestore.RunQuery` / `Firestore.GetDocument`
   * RPCs which always return such fields even when they are not specified in
   * the [`mask`][google.firestore.v1.DocumentMask].
   * </pre>
   *
   * <code>repeated .google.firestore.v1.Document results = 2;</code>
   */
  com.google.firestore.v1.DocumentOrBuilder getResultsOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * The time at which the results are valid.
   *
   * This is a (not strictly) monotonically increasing value across multiple
   * responses in the same stream. The API guarantees that all previously
   * returned results are still valid at the latest `execution_time`. This
   * allows the API consumer to treat the query if it ran at the latest
   * `execution_time` returned.
   *
   * If the query returns no results, a response with `execution_time` and no
   * `results` will be sent, and this represents the time at which the operation
   * was run.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp execution_time = 3;</code>
   *
   * @return Whether the executionTime field is set.
   */
  boolean hasExecutionTime();

  /**
   *
   *
   * <pre>
   * The time at which the results are valid.
   *
   * This is a (not strictly) monotonically increasing value across multiple
   * responses in the same stream. The API guarantees that all previously
   * returned results are still valid at the latest `execution_time`. This
   * allows the API consumer to treat the query if it ran at the latest
   * `execution_time` returned.
   *
   * If the query returns no results, a response with `execution_time` and no
   * `results` will be sent, and this represents the time at which the operation
   * was run.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp execution_time = 3;</code>
   *
   * @return The executionTime.
   */
  com.google.protobuf.Timestamp getExecutionTime();

  /**
   *
   *
   * <pre>
   * The time at which the results are valid.
   *
   * This is a (not strictly) monotonically increasing value across multiple
   * responses in the same stream. The API guarantees that all previously
   * returned results are still valid at the latest `execution_time`. This
   * allows the API consumer to treat the query if it ran at the latest
   * `execution_time` returned.
   *
   * If the query returns no results, a response with `execution_time` and no
   * `results` will be sent, and this represents the time at which the operation
   * was run.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp execution_time = 3;</code>
   */
  com.google.protobuf.TimestampOrBuilder getExecutionTimeOrBuilder();

  /**
   *
   *
   * <pre>
   * Query explain stats.
   *
   * This is present on the **last** response if the request configured explain
   * to run in 'analyze' or 'explain' mode in the pipeline options. If the query
   * does not return any results, a response with `explain_stats` and no
   * `results` will still be sent.
   * </pre>
   *
   * <code>.google.firestore.v1.ExplainStats explain_stats = 4;</code>
   *
   * @return Whether the explainStats field is set.
   */
  boolean hasExplainStats();

  /**
   *
   *
   * <pre>
   * Query explain stats.
   *
   * This is present on the **last** response if the request configured explain
   * to run in 'analyze' or 'explain' mode in the pipeline options. If the query
   * does not return any results, a response with `explain_stats` and no
   * `results` will still be sent.
   * </pre>
   *
   * <code>.google.firestore.v1.ExplainStats explain_stats = 4;</code>
   *
   * @return The explainStats.
   */
  com.google.firestore.v1.ExplainStats getExplainStats();

  /**
   *
   *
   * <pre>
   * Query explain stats.
   *
   * This is present on the **last** response if the request configured explain
   * to run in 'analyze' or 'explain' mode in the pipeline options. If the query
   * does not return any results, a response with `explain_stats` and no
   * `results` will still be sent.
   * </pre>
   *
   * <code>.google.firestore.v1.ExplainStats explain_stats = 4;</code>
   */
  com.google.firestore.v1.ExplainStatsOrBuilder getExplainStatsOrBuilder();
}
