/*
 * Copyright 2020 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!
// source: google/dataflow/v1beta3/metrics.proto

package com.google.dataflow.v1beta3;

public interface MetricUpdateOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.dataflow.v1beta3.MetricUpdate)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * Name of the metric.
   * </pre>
   *
   * <code>.google.dataflow.v1beta3.MetricStructuredName name = 1;</code>
   *
   * @return Whether the name field is set.
   */
  boolean hasName();
  /**
   *
   *
   * <pre>
   * Name of the metric.
   * </pre>
   *
   * <code>.google.dataflow.v1beta3.MetricStructuredName name = 1;</code>
   *
   * @return The name.
   */
  com.google.dataflow.v1beta3.MetricStructuredName getName();
  /**
   *
   *
   * <pre>
   * Name of the metric.
   * </pre>
   *
   * <code>.google.dataflow.v1beta3.MetricStructuredName name = 1;</code>
   */
  com.google.dataflow.v1beta3.MetricStructuredNameOrBuilder getNameOrBuilder();

  /**
   *
   *
   * <pre>
   * Metric aggregation kind.  The possible metric aggregation kinds are
   * "Sum", "Max", "Min", "Mean", "Set", "And", "Or", and "Distribution".
   * The specified aggregation kind is case-insensitive.
   * If omitted, this is not an aggregated value but instead
   * a single metric sample value.
   * </pre>
   *
   * <code>string kind = 2;</code>
   *
   * @return The kind.
   */
  java.lang.String getKind();
  /**
   *
   *
   * <pre>
   * Metric aggregation kind.  The possible metric aggregation kinds are
   * "Sum", "Max", "Min", "Mean", "Set", "And", "Or", and "Distribution".
   * The specified aggregation kind is case-insensitive.
   * If omitted, this is not an aggregated value but instead
   * a single metric sample value.
   * </pre>
   *
   * <code>string kind = 2;</code>
   *
   * @return The bytes for kind.
   */
  com.google.protobuf.ByteString getKindBytes();

  /**
   *
   *
   * <pre>
   * True if this metric is reported as the total cumulative aggregate
   * value accumulated since the worker started working on this WorkItem.
   * By default this is false, indicating that this metric is reported
   * as a delta that is not associated with any WorkItem.
   * </pre>
   *
   * <code>bool cumulative = 3;</code>
   *
   * @return The cumulative.
   */
  boolean getCumulative();

  /**
   *
   *
   * <pre>
   * Worker-computed aggregate value for aggregation kinds "Sum", "Max", "Min",
   * "And", and "Or".  The possible value types are Long, Double, and Boolean.
   * </pre>
   *
   * <code>.google.protobuf.Value scalar = 4;</code>
   *
   * @return Whether the scalar field is set.
   */
  boolean hasScalar();
  /**
   *
   *
   * <pre>
   * Worker-computed aggregate value for aggregation kinds "Sum", "Max", "Min",
   * "And", and "Or".  The possible value types are Long, Double, and Boolean.
   * </pre>
   *
   * <code>.google.protobuf.Value scalar = 4;</code>
   *
   * @return The scalar.
   */
  com.google.protobuf.Value getScalar();
  /**
   *
   *
   * <pre>
   * Worker-computed aggregate value for aggregation kinds "Sum", "Max", "Min",
   * "And", and "Or".  The possible value types are Long, Double, and Boolean.
   * </pre>
   *
   * <code>.google.protobuf.Value scalar = 4;</code>
   */
  com.google.protobuf.ValueOrBuilder getScalarOrBuilder();

  /**
   *
   *
   * <pre>
   * Worker-computed aggregate value for the "Mean" aggregation kind.
   * This holds the sum of the aggregated values and is used in combination
   * with mean_count below to obtain the actual mean aggregate value.
   * The only possible value types are Long and Double.
   * </pre>
   *
   * <code>.google.protobuf.Value mean_sum = 5;</code>
   *
   * @return Whether the meanSum field is set.
   */
  boolean hasMeanSum();
  /**
   *
   *
   * <pre>
   * Worker-computed aggregate value for the "Mean" aggregation kind.
   * This holds the sum of the aggregated values and is used in combination
   * with mean_count below to obtain the actual mean aggregate value.
   * The only possible value types are Long and Double.
   * </pre>
   *
   * <code>.google.protobuf.Value mean_sum = 5;</code>
   *
   * @return The meanSum.
   */
  com.google.protobuf.Value getMeanSum();
  /**
   *
   *
   * <pre>
   * Worker-computed aggregate value for the "Mean" aggregation kind.
   * This holds the sum of the aggregated values and is used in combination
   * with mean_count below to obtain the actual mean aggregate value.
   * The only possible value types are Long and Double.
   * </pre>
   *
   * <code>.google.protobuf.Value mean_sum = 5;</code>
   */
  com.google.protobuf.ValueOrBuilder getMeanSumOrBuilder();

  /**
   *
   *
   * <pre>
   * Worker-computed aggregate value for the "Mean" aggregation kind.
   * This holds the count of the aggregated values and is used in combination
   * with mean_sum above to obtain the actual mean aggregate value.
   * The only possible value type is Long.
   * </pre>
   *
   * <code>.google.protobuf.Value mean_count = 6;</code>
   *
   * @return Whether the meanCount field is set.
   */
  boolean hasMeanCount();
  /**
   *
   *
   * <pre>
   * Worker-computed aggregate value for the "Mean" aggregation kind.
   * This holds the count of the aggregated values and is used in combination
   * with mean_sum above to obtain the actual mean aggregate value.
   * The only possible value type is Long.
   * </pre>
   *
   * <code>.google.protobuf.Value mean_count = 6;</code>
   *
   * @return The meanCount.
   */
  com.google.protobuf.Value getMeanCount();
  /**
   *
   *
   * <pre>
   * Worker-computed aggregate value for the "Mean" aggregation kind.
   * This holds the count of the aggregated values and is used in combination
   * with mean_sum above to obtain the actual mean aggregate value.
   * The only possible value type is Long.
   * </pre>
   *
   * <code>.google.protobuf.Value mean_count = 6;</code>
   */
  com.google.protobuf.ValueOrBuilder getMeanCountOrBuilder();

  /**
   *
   *
   * <pre>
   * Worker-computed aggregate value for the "Set" aggregation kind.  The only
   * possible value type is a list of Values whose type can be Long, Double,
   * or String, according to the metric's type.  All Values in the list must
   * be of the same type.
   * </pre>
   *
   * <code>.google.protobuf.Value set = 7;</code>
   *
   * @return Whether the set field is set.
   */
  boolean hasSet();
  /**
   *
   *
   * <pre>
   * Worker-computed aggregate value for the "Set" aggregation kind.  The only
   * possible value type is a list of Values whose type can be Long, Double,
   * or String, according to the metric's type.  All Values in the list must
   * be of the same type.
   * </pre>
   *
   * <code>.google.protobuf.Value set = 7;</code>
   *
   * @return The set.
   */
  com.google.protobuf.Value getSet();
  /**
   *
   *
   * <pre>
   * Worker-computed aggregate value for the "Set" aggregation kind.  The only
   * possible value type is a list of Values whose type can be Long, Double,
   * or String, according to the metric's type.  All Values in the list must
   * be of the same type.
   * </pre>
   *
   * <code>.google.protobuf.Value set = 7;</code>
   */
  com.google.protobuf.ValueOrBuilder getSetOrBuilder();

  /**
   *
   *
   * <pre>
   * A struct value describing properties of a distribution of numeric values.
   * </pre>
   *
   * <code>.google.protobuf.Value distribution = 11;</code>
   *
   * @return Whether the distribution field is set.
   */
  boolean hasDistribution();
  /**
   *
   *
   * <pre>
   * A struct value describing properties of a distribution of numeric values.
   * </pre>
   *
   * <code>.google.protobuf.Value distribution = 11;</code>
   *
   * @return The distribution.
   */
  com.google.protobuf.Value getDistribution();
  /**
   *
   *
   * <pre>
   * A struct value describing properties of a distribution of numeric values.
   * </pre>
   *
   * <code>.google.protobuf.Value distribution = 11;</code>
   */
  com.google.protobuf.ValueOrBuilder getDistributionOrBuilder();

  /**
   *
   *
   * <pre>
   * A struct value describing properties of a Gauge.
   * Metrics of gauge type show the value of a metric across time, and is
   * aggregated based on the newest value.
   * </pre>
   *
   * <code>.google.protobuf.Value gauge = 12;</code>
   *
   * @return Whether the gauge field is set.
   */
  boolean hasGauge();
  /**
   *
   *
   * <pre>
   * A struct value describing properties of a Gauge.
   * Metrics of gauge type show the value of a metric across time, and is
   * aggregated based on the newest value.
   * </pre>
   *
   * <code>.google.protobuf.Value gauge = 12;</code>
   *
   * @return The gauge.
   */
  com.google.protobuf.Value getGauge();
  /**
   *
   *
   * <pre>
   * A struct value describing properties of a Gauge.
   * Metrics of gauge type show the value of a metric across time, and is
   * aggregated based on the newest value.
   * </pre>
   *
   * <code>.google.protobuf.Value gauge = 12;</code>
   */
  com.google.protobuf.ValueOrBuilder getGaugeOrBuilder();

  /**
   *
   *
   * <pre>
   * Worker-computed aggregate value for internal use by the Dataflow
   * service.
   * </pre>
   *
   * <code>.google.protobuf.Value internal = 8;</code>
   *
   * @return Whether the internal field is set.
   */
  boolean hasInternal();
  /**
   *
   *
   * <pre>
   * Worker-computed aggregate value for internal use by the Dataflow
   * service.
   * </pre>
   *
   * <code>.google.protobuf.Value internal = 8;</code>
   *
   * @return The internal.
   */
  com.google.protobuf.Value getInternal();
  /**
   *
   *
   * <pre>
   * Worker-computed aggregate value for internal use by the Dataflow
   * service.
   * </pre>
   *
   * <code>.google.protobuf.Value internal = 8;</code>
   */
  com.google.protobuf.ValueOrBuilder getInternalOrBuilder();

  /**
   *
   *
   * <pre>
   * Timestamp associated with the metric value. Optional when workers are
   * reporting work progress; it will be filled in responses from the
   * metrics API.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 9;</code>
   *
   * @return Whether the updateTime field is set.
   */
  boolean hasUpdateTime();
  /**
   *
   *
   * <pre>
   * Timestamp associated with the metric value. Optional when workers are
   * reporting work progress; it will be filled in responses from the
   * metrics API.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 9;</code>
   *
   * @return The updateTime.
   */
  com.google.protobuf.Timestamp getUpdateTime();
  /**
   *
   *
   * <pre>
   * Timestamp associated with the metric value. Optional when workers are
   * reporting work progress; it will be filled in responses from the
   * metrics API.
   * </pre>
   *
   * <code>.google.protobuf.Timestamp update_time = 9;</code>
   */
  com.google.protobuf.TimestampOrBuilder getUpdateTimeOrBuilder();
}
