/*
 * 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/cloud/datalabeling/v1beta1/evaluation_job.proto

package com.google.cloud.datalabeling.v1beta1;

public interface EvaluationJobConfigOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:google.cloud.datalabeling.v1beta1.EvaluationJobConfig)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * Specify this field if your model version performs image classification or
   * general classification.
   * `annotationSpecSet` in this configuration must match
   * [EvaluationJob.annotationSpecSet][google.cloud.datalabeling.v1beta1.EvaluationJob.annotation_spec_set].
   * `allowMultiLabel` in this configuration must match
   * `classificationMetadata.isMultiLabel` in [input_config][google.cloud.datalabeling.v1beta1.EvaluationJobConfig.input_config].
   * </pre>
   *
   * <code>
   * .google.cloud.datalabeling.v1beta1.ImageClassificationConfig image_classification_config = 4;
   * </code>
   *
   * @return Whether the imageClassificationConfig field is set.
   */
  boolean hasImageClassificationConfig();
  /**
   *
   *
   * <pre>
   * Specify this field if your model version performs image classification or
   * general classification.
   * `annotationSpecSet` in this configuration must match
   * [EvaluationJob.annotationSpecSet][google.cloud.datalabeling.v1beta1.EvaluationJob.annotation_spec_set].
   * `allowMultiLabel` in this configuration must match
   * `classificationMetadata.isMultiLabel` in [input_config][google.cloud.datalabeling.v1beta1.EvaluationJobConfig.input_config].
   * </pre>
   *
   * <code>
   * .google.cloud.datalabeling.v1beta1.ImageClassificationConfig image_classification_config = 4;
   * </code>
   *
   * @return The imageClassificationConfig.
   */
  com.google.cloud.datalabeling.v1beta1.ImageClassificationConfig getImageClassificationConfig();
  /**
   *
   *
   * <pre>
   * Specify this field if your model version performs image classification or
   * general classification.
   * `annotationSpecSet` in this configuration must match
   * [EvaluationJob.annotationSpecSet][google.cloud.datalabeling.v1beta1.EvaluationJob.annotation_spec_set].
   * `allowMultiLabel` in this configuration must match
   * `classificationMetadata.isMultiLabel` in [input_config][google.cloud.datalabeling.v1beta1.EvaluationJobConfig.input_config].
   * </pre>
   *
   * <code>
   * .google.cloud.datalabeling.v1beta1.ImageClassificationConfig image_classification_config = 4;
   * </code>
   */
  com.google.cloud.datalabeling.v1beta1.ImageClassificationConfigOrBuilder
      getImageClassificationConfigOrBuilder();

  /**
   *
   *
   * <pre>
   * Specify this field if your model version performs image object detection
   * (bounding box detection).
   * `annotationSpecSet` in this configuration must match
   * [EvaluationJob.annotationSpecSet][google.cloud.datalabeling.v1beta1.EvaluationJob.annotation_spec_set].
   * </pre>
   *
   * <code>.google.cloud.datalabeling.v1beta1.BoundingPolyConfig bounding_poly_config = 5;</code>
   *
   * @return Whether the boundingPolyConfig field is set.
   */
  boolean hasBoundingPolyConfig();
  /**
   *
   *
   * <pre>
   * Specify this field if your model version performs image object detection
   * (bounding box detection).
   * `annotationSpecSet` in this configuration must match
   * [EvaluationJob.annotationSpecSet][google.cloud.datalabeling.v1beta1.EvaluationJob.annotation_spec_set].
   * </pre>
   *
   * <code>.google.cloud.datalabeling.v1beta1.BoundingPolyConfig bounding_poly_config = 5;</code>
   *
   * @return The boundingPolyConfig.
   */
  com.google.cloud.datalabeling.v1beta1.BoundingPolyConfig getBoundingPolyConfig();
  /**
   *
   *
   * <pre>
   * Specify this field if your model version performs image object detection
   * (bounding box detection).
   * `annotationSpecSet` in this configuration must match
   * [EvaluationJob.annotationSpecSet][google.cloud.datalabeling.v1beta1.EvaluationJob.annotation_spec_set].
   * </pre>
   *
   * <code>.google.cloud.datalabeling.v1beta1.BoundingPolyConfig bounding_poly_config = 5;</code>
   */
  com.google.cloud.datalabeling.v1beta1.BoundingPolyConfigOrBuilder
      getBoundingPolyConfigOrBuilder();

  /**
   *
   *
   * <pre>
   * Specify this field if your model version performs text classification.
   * `annotationSpecSet` in this configuration must match
   * [EvaluationJob.annotationSpecSet][google.cloud.datalabeling.v1beta1.EvaluationJob.annotation_spec_set].
   * `allowMultiLabel` in this configuration must match
   * `classificationMetadata.isMultiLabel` in [input_config][google.cloud.datalabeling.v1beta1.EvaluationJobConfig.input_config].
   * </pre>
   *
   * <code>
   * .google.cloud.datalabeling.v1beta1.TextClassificationConfig text_classification_config = 8;
   * </code>
   *
   * @return Whether the textClassificationConfig field is set.
   */
  boolean hasTextClassificationConfig();
  /**
   *
   *
   * <pre>
   * Specify this field if your model version performs text classification.
   * `annotationSpecSet` in this configuration must match
   * [EvaluationJob.annotationSpecSet][google.cloud.datalabeling.v1beta1.EvaluationJob.annotation_spec_set].
   * `allowMultiLabel` in this configuration must match
   * `classificationMetadata.isMultiLabel` in [input_config][google.cloud.datalabeling.v1beta1.EvaluationJobConfig.input_config].
   * </pre>
   *
   * <code>
   * .google.cloud.datalabeling.v1beta1.TextClassificationConfig text_classification_config = 8;
   * </code>
   *
   * @return The textClassificationConfig.
   */
  com.google.cloud.datalabeling.v1beta1.TextClassificationConfig getTextClassificationConfig();
  /**
   *
   *
   * <pre>
   * Specify this field if your model version performs text classification.
   * `annotationSpecSet` in this configuration must match
   * [EvaluationJob.annotationSpecSet][google.cloud.datalabeling.v1beta1.EvaluationJob.annotation_spec_set].
   * `allowMultiLabel` in this configuration must match
   * `classificationMetadata.isMultiLabel` in [input_config][google.cloud.datalabeling.v1beta1.EvaluationJobConfig.input_config].
   * </pre>
   *
   * <code>
   * .google.cloud.datalabeling.v1beta1.TextClassificationConfig text_classification_config = 8;
   * </code>
   */
  com.google.cloud.datalabeling.v1beta1.TextClassificationConfigOrBuilder
      getTextClassificationConfigOrBuilder();

  /**
   *
   *
   * <pre>
   * Rquired. Details for the sampled prediction input. Within this
   * configuration, there are requirements for several fields:
   * * `dataType` must be one of `IMAGE`, `TEXT`, or `GENERAL_DATA`.
   * * `annotationType` must be one of `IMAGE_CLASSIFICATION_ANNOTATION`,
   *   `TEXT_CLASSIFICATION_ANNOTATION`, `GENERAL_CLASSIFICATION_ANNOTATION`,
   *   or `IMAGE_BOUNDING_BOX_ANNOTATION` (image object detection).
   * * If your machine learning model performs classification, you must specify
   *   `classificationMetadata.isMultiLabel`.
   * * You must specify `bigquerySource` (not `gcsSource`).
   * </pre>
   *
   * <code>.google.cloud.datalabeling.v1beta1.InputConfig input_config = 1;</code>
   *
   * @return Whether the inputConfig field is set.
   */
  boolean hasInputConfig();
  /**
   *
   *
   * <pre>
   * Rquired. Details for the sampled prediction input. Within this
   * configuration, there are requirements for several fields:
   * * `dataType` must be one of `IMAGE`, `TEXT`, or `GENERAL_DATA`.
   * * `annotationType` must be one of `IMAGE_CLASSIFICATION_ANNOTATION`,
   *   `TEXT_CLASSIFICATION_ANNOTATION`, `GENERAL_CLASSIFICATION_ANNOTATION`,
   *   or `IMAGE_BOUNDING_BOX_ANNOTATION` (image object detection).
   * * If your machine learning model performs classification, you must specify
   *   `classificationMetadata.isMultiLabel`.
   * * You must specify `bigquerySource` (not `gcsSource`).
   * </pre>
   *
   * <code>.google.cloud.datalabeling.v1beta1.InputConfig input_config = 1;</code>
   *
   * @return The inputConfig.
   */
  com.google.cloud.datalabeling.v1beta1.InputConfig getInputConfig();
  /**
   *
   *
   * <pre>
   * Rquired. Details for the sampled prediction input. Within this
   * configuration, there are requirements for several fields:
   * * `dataType` must be one of `IMAGE`, `TEXT`, or `GENERAL_DATA`.
   * * `annotationType` must be one of `IMAGE_CLASSIFICATION_ANNOTATION`,
   *   `TEXT_CLASSIFICATION_ANNOTATION`, `GENERAL_CLASSIFICATION_ANNOTATION`,
   *   or `IMAGE_BOUNDING_BOX_ANNOTATION` (image object detection).
   * * If your machine learning model performs classification, you must specify
   *   `classificationMetadata.isMultiLabel`.
   * * You must specify `bigquerySource` (not `gcsSource`).
   * </pre>
   *
   * <code>.google.cloud.datalabeling.v1beta1.InputConfig input_config = 1;</code>
   */
  com.google.cloud.datalabeling.v1beta1.InputConfigOrBuilder getInputConfigOrBuilder();

  /**
   *
   *
   * <pre>
   * Required. Details for calculating evaluation metrics and creating
   * [Evaulations][google.cloud.datalabeling.v1beta1.Evaluation]. If your model version performs image object
   * detection, you must specify the `boundingBoxEvaluationOptions` field within
   * this configuration. Otherwise, provide an empty object for this
   * configuration.
   * </pre>
   *
   * <code>.google.cloud.datalabeling.v1beta1.EvaluationConfig evaluation_config = 2;</code>
   *
   * @return Whether the evaluationConfig field is set.
   */
  boolean hasEvaluationConfig();
  /**
   *
   *
   * <pre>
   * Required. Details for calculating evaluation metrics and creating
   * [Evaulations][google.cloud.datalabeling.v1beta1.Evaluation]. If your model version performs image object
   * detection, you must specify the `boundingBoxEvaluationOptions` field within
   * this configuration. Otherwise, provide an empty object for this
   * configuration.
   * </pre>
   *
   * <code>.google.cloud.datalabeling.v1beta1.EvaluationConfig evaluation_config = 2;</code>
   *
   * @return The evaluationConfig.
   */
  com.google.cloud.datalabeling.v1beta1.EvaluationConfig getEvaluationConfig();
  /**
   *
   *
   * <pre>
   * Required. Details for calculating evaluation metrics and creating
   * [Evaulations][google.cloud.datalabeling.v1beta1.Evaluation]. If your model version performs image object
   * detection, you must specify the `boundingBoxEvaluationOptions` field within
   * this configuration. Otherwise, provide an empty object for this
   * configuration.
   * </pre>
   *
   * <code>.google.cloud.datalabeling.v1beta1.EvaluationConfig evaluation_config = 2;</code>
   */
  com.google.cloud.datalabeling.v1beta1.EvaluationConfigOrBuilder getEvaluationConfigOrBuilder();

  /**
   *
   *
   * <pre>
   * Optional. Details for human annotation of your data. If you set
   * [labelMissingGroundTruth][google.cloud.datalabeling.v1beta1.EvaluationJob.label_missing_ground_truth] to
   * `true` for this evaluation job, then you must specify this field. If you
   * plan to provide your own ground truth labels, then omit this field.
   * Note that you must create an [Instruction][google.cloud.datalabeling.v1beta1.Instruction] resource before you can
   * specify this field. Provide the name of the instruction resource in the
   * `instruction` field within this configuration.
   * </pre>
   *
   * <code>.google.cloud.datalabeling.v1beta1.HumanAnnotationConfig human_annotation_config = 3;
   * </code>
   *
   * @return Whether the humanAnnotationConfig field is set.
   */
  boolean hasHumanAnnotationConfig();
  /**
   *
   *
   * <pre>
   * Optional. Details for human annotation of your data. If you set
   * [labelMissingGroundTruth][google.cloud.datalabeling.v1beta1.EvaluationJob.label_missing_ground_truth] to
   * `true` for this evaluation job, then you must specify this field. If you
   * plan to provide your own ground truth labels, then omit this field.
   * Note that you must create an [Instruction][google.cloud.datalabeling.v1beta1.Instruction] resource before you can
   * specify this field. Provide the name of the instruction resource in the
   * `instruction` field within this configuration.
   * </pre>
   *
   * <code>.google.cloud.datalabeling.v1beta1.HumanAnnotationConfig human_annotation_config = 3;
   * </code>
   *
   * @return The humanAnnotationConfig.
   */
  com.google.cloud.datalabeling.v1beta1.HumanAnnotationConfig getHumanAnnotationConfig();
  /**
   *
   *
   * <pre>
   * Optional. Details for human annotation of your data. If you set
   * [labelMissingGroundTruth][google.cloud.datalabeling.v1beta1.EvaluationJob.label_missing_ground_truth] to
   * `true` for this evaluation job, then you must specify this field. If you
   * plan to provide your own ground truth labels, then omit this field.
   * Note that you must create an [Instruction][google.cloud.datalabeling.v1beta1.Instruction] resource before you can
   * specify this field. Provide the name of the instruction resource in the
   * `instruction` field within this configuration.
   * </pre>
   *
   * <code>.google.cloud.datalabeling.v1beta1.HumanAnnotationConfig human_annotation_config = 3;
   * </code>
   */
  com.google.cloud.datalabeling.v1beta1.HumanAnnotationConfigOrBuilder
      getHumanAnnotationConfigOrBuilder();

  /**
   *
   *
   * <pre>
   * Required. Prediction keys that tell Data Labeling Service where to find the
   * data for evaluation in your BigQuery table. When the service samples
   * prediction input and output from your model version and saves it to
   * BigQuery, the data gets stored as JSON strings in the BigQuery table. These
   * keys tell Data Labeling Service how to parse the JSON.
   * You can provide the following entries in this field:
   * * `data_json_key`: the data key for prediction input. You must provide
   *   either this key or `reference_json_key`.
   * * `reference_json_key`: the data reference key for prediction input. You
   *   must provide either this key or `data_json_key`.
   * * `label_json_key`: the label key for prediction output. Required.
   * * `label_score_json_key`: the score key for prediction output. Required.
   * * `bounding_box_json_key`: the bounding box key for prediction output.
   *   Required if your model version perform image object detection.
   * Learn [how to configure prediction
   * keys](/ml-engine/docs/continuous-evaluation/create-job#prediction-keys).
   * </pre>
   *
   * <code>map&lt;string, string&gt; bigquery_import_keys = 9;</code>
   */
  int getBigqueryImportKeysCount();
  /**
   *
   *
   * <pre>
   * Required. Prediction keys that tell Data Labeling Service where to find the
   * data for evaluation in your BigQuery table. When the service samples
   * prediction input and output from your model version and saves it to
   * BigQuery, the data gets stored as JSON strings in the BigQuery table. These
   * keys tell Data Labeling Service how to parse the JSON.
   * You can provide the following entries in this field:
   * * `data_json_key`: the data key for prediction input. You must provide
   *   either this key or `reference_json_key`.
   * * `reference_json_key`: the data reference key for prediction input. You
   *   must provide either this key or `data_json_key`.
   * * `label_json_key`: the label key for prediction output. Required.
   * * `label_score_json_key`: the score key for prediction output. Required.
   * * `bounding_box_json_key`: the bounding box key for prediction output.
   *   Required if your model version perform image object detection.
   * Learn [how to configure prediction
   * keys](/ml-engine/docs/continuous-evaluation/create-job#prediction-keys).
   * </pre>
   *
   * <code>map&lt;string, string&gt; bigquery_import_keys = 9;</code>
   */
  boolean containsBigqueryImportKeys(java.lang.String key);
  /** Use {@link #getBigqueryImportKeysMap()} instead. */
  @java.lang.Deprecated
  java.util.Map<java.lang.String, java.lang.String> getBigqueryImportKeys();
  /**
   *
   *
   * <pre>
   * Required. Prediction keys that tell Data Labeling Service where to find the
   * data for evaluation in your BigQuery table. When the service samples
   * prediction input and output from your model version and saves it to
   * BigQuery, the data gets stored as JSON strings in the BigQuery table. These
   * keys tell Data Labeling Service how to parse the JSON.
   * You can provide the following entries in this field:
   * * `data_json_key`: the data key for prediction input. You must provide
   *   either this key or `reference_json_key`.
   * * `reference_json_key`: the data reference key for prediction input. You
   *   must provide either this key or `data_json_key`.
   * * `label_json_key`: the label key for prediction output. Required.
   * * `label_score_json_key`: the score key for prediction output. Required.
   * * `bounding_box_json_key`: the bounding box key for prediction output.
   *   Required if your model version perform image object detection.
   * Learn [how to configure prediction
   * keys](/ml-engine/docs/continuous-evaluation/create-job#prediction-keys).
   * </pre>
   *
   * <code>map&lt;string, string&gt; bigquery_import_keys = 9;</code>
   */
  java.util.Map<java.lang.String, java.lang.String> getBigqueryImportKeysMap();
  /**
   *
   *
   * <pre>
   * Required. Prediction keys that tell Data Labeling Service where to find the
   * data for evaluation in your BigQuery table. When the service samples
   * prediction input and output from your model version and saves it to
   * BigQuery, the data gets stored as JSON strings in the BigQuery table. These
   * keys tell Data Labeling Service how to parse the JSON.
   * You can provide the following entries in this field:
   * * `data_json_key`: the data key for prediction input. You must provide
   *   either this key or `reference_json_key`.
   * * `reference_json_key`: the data reference key for prediction input. You
   *   must provide either this key or `data_json_key`.
   * * `label_json_key`: the label key for prediction output. Required.
   * * `label_score_json_key`: the score key for prediction output. Required.
   * * `bounding_box_json_key`: the bounding box key for prediction output.
   *   Required if your model version perform image object detection.
   * Learn [how to configure prediction
   * keys](/ml-engine/docs/continuous-evaluation/create-job#prediction-keys).
   * </pre>
   *
   * <code>map&lt;string, string&gt; bigquery_import_keys = 9;</code>
   */
  /* nullable */
  java.lang.String getBigqueryImportKeysOrDefault(
      java.lang.String key,
      /* nullable */
      java.lang.String defaultValue);
  /**
   *
   *
   * <pre>
   * Required. Prediction keys that tell Data Labeling Service where to find the
   * data for evaluation in your BigQuery table. When the service samples
   * prediction input and output from your model version and saves it to
   * BigQuery, the data gets stored as JSON strings in the BigQuery table. These
   * keys tell Data Labeling Service how to parse the JSON.
   * You can provide the following entries in this field:
   * * `data_json_key`: the data key for prediction input. You must provide
   *   either this key or `reference_json_key`.
   * * `reference_json_key`: the data reference key for prediction input. You
   *   must provide either this key or `data_json_key`.
   * * `label_json_key`: the label key for prediction output. Required.
   * * `label_score_json_key`: the score key for prediction output. Required.
   * * `bounding_box_json_key`: the bounding box key for prediction output.
   *   Required if your model version perform image object detection.
   * Learn [how to configure prediction
   * keys](/ml-engine/docs/continuous-evaluation/create-job#prediction-keys).
   * </pre>
   *
   * <code>map&lt;string, string&gt; bigquery_import_keys = 9;</code>
   */
  java.lang.String getBigqueryImportKeysOrThrow(java.lang.String key);

  /**
   *
   *
   * <pre>
   * Required. The maximum number of predictions to sample and save to BigQuery
   * during each [evaluation interval][google.cloud.datalabeling.v1beta1.EvaluationJob.schedule]. This limit
   * overrides `example_sample_percentage`: even if the service has not sampled
   * enough predictions to fulfill `example_sample_perecentage` during an
   * interval, it stops sampling predictions when it meets this limit.
   * </pre>
   *
   * <code>int32 example_count = 10;</code>
   *
   * @return The exampleCount.
   */
  int getExampleCount();

  /**
   *
   *
   * <pre>
   * Required. Fraction of predictions to sample and save to BigQuery during
   * each [evaluation interval][google.cloud.datalabeling.v1beta1.EvaluationJob.schedule]. For example, 0.1 means
   * 10% of predictions served by your model version get saved to BigQuery.
   * </pre>
   *
   * <code>double example_sample_percentage = 11;</code>
   *
   * @return The exampleSamplePercentage.
   */
  double getExampleSamplePercentage();

  /**
   *
   *
   * <pre>
   * Optional. Configuration details for evaluation job alerts. Specify this
   * field if you want to receive email alerts if the evaluation job finds that
   * your predictions have low mean average precision during a run.
   * </pre>
   *
   * <code>
   * .google.cloud.datalabeling.v1beta1.EvaluationJobAlertConfig evaluation_job_alert_config = 13;
   * </code>
   *
   * @return Whether the evaluationJobAlertConfig field is set.
   */
  boolean hasEvaluationJobAlertConfig();
  /**
   *
   *
   * <pre>
   * Optional. Configuration details for evaluation job alerts. Specify this
   * field if you want to receive email alerts if the evaluation job finds that
   * your predictions have low mean average precision during a run.
   * </pre>
   *
   * <code>
   * .google.cloud.datalabeling.v1beta1.EvaluationJobAlertConfig evaluation_job_alert_config = 13;
   * </code>
   *
   * @return The evaluationJobAlertConfig.
   */
  com.google.cloud.datalabeling.v1beta1.EvaluationJobAlertConfig getEvaluationJobAlertConfig();
  /**
   *
   *
   * <pre>
   * Optional. Configuration details for evaluation job alerts. Specify this
   * field if you want to receive email alerts if the evaluation job finds that
   * your predictions have low mean average precision during a run.
   * </pre>
   *
   * <code>
   * .google.cloud.datalabeling.v1beta1.EvaluationJobAlertConfig evaluation_job_alert_config = 13;
   * </code>
   */
  com.google.cloud.datalabeling.v1beta1.EvaluationJobAlertConfigOrBuilder
      getEvaluationJobAlertConfigOrBuilder();

  public com.google.cloud.datalabeling.v1beta1.EvaluationJobConfig.HumanAnnotationRequestConfigCase
      getHumanAnnotationRequestConfigCase();
}
