/*
 * Copyright 2019 The Grafeas Authors. All rights reserved.
 *
 * 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: grafeas/v1/intoto_provenance.proto

package io.grafeas.v1;

public interface RecipeOrBuilder
    extends
    // @@protoc_insertion_point(interface_extends:grafeas.v1.Recipe)
    com.google.protobuf.MessageOrBuilder {

  /**
   *
   *
   * <pre>
   * URI indicating what type of recipe was performed. It determines the meaning
   * of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
   * </pre>
   *
   * <code>string type = 1;</code>
   *
   * @return The type.
   */
  java.lang.String getType();
  /**
   *
   *
   * <pre>
   * URI indicating what type of recipe was performed. It determines the meaning
   * of recipe.entryPoint, recipe.arguments, recipe.environment, and materials.
   * </pre>
   *
   * <code>string type = 1;</code>
   *
   * @return The bytes for type.
   */
  com.google.protobuf.ByteString getTypeBytes();

  /**
   *
   *
   * <pre>
   * Index in materials containing the recipe steps that are not implied by
   * recipe.type. For example, if the recipe type were "make", then this would
   * point to the source containing the Makefile, not the make program itself.
   * Set to -1 if the recipe doesn't come from a material, as zero is default
   * unset value for int64.
   * </pre>
   *
   * <code>int64 defined_in_material = 2;</code>
   *
   * @return The definedInMaterial.
   */
  long getDefinedInMaterial();

  /**
   *
   *
   * <pre>
   * String identifying the entry point into the build.
   * This is often a path to a configuration file and/or a target label within
   * that file. The syntax and meaning are defined by recipe.type. For example,
   * if the recipe type were "make", then this would reference the directory in
   * which to run make as well as which target to use.
   * </pre>
   *
   * <code>string entry_point = 3;</code>
   *
   * @return The entryPoint.
   */
  java.lang.String getEntryPoint();
  /**
   *
   *
   * <pre>
   * String identifying the entry point into the build.
   * This is often a path to a configuration file and/or a target label within
   * that file. The syntax and meaning are defined by recipe.type. For example,
   * if the recipe type were "make", then this would reference the directory in
   * which to run make as well as which target to use.
   * </pre>
   *
   * <code>string entry_point = 3;</code>
   *
   * @return The bytes for entryPoint.
   */
  com.google.protobuf.ByteString getEntryPointBytes();

  /**
   *
   *
   * <pre>
   * Collection of all external inputs that influenced the build on top of
   * recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe
   * type were "make", then this might be the flags passed to make aside from
   * the target, which is captured in recipe.entryPoint. Since the arguments
   * field can greatly vary in structure, depending on the builder and recipe
   * type, this is of form "Any".
   * </pre>
   *
   * <code>repeated .google.protobuf.Any arguments = 4;</code>
   */
  java.util.List<com.google.protobuf.Any> getArgumentsList();
  /**
   *
   *
   * <pre>
   * Collection of all external inputs that influenced the build on top of
   * recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe
   * type were "make", then this might be the flags passed to make aside from
   * the target, which is captured in recipe.entryPoint. Since the arguments
   * field can greatly vary in structure, depending on the builder and recipe
   * type, this is of form "Any".
   * </pre>
   *
   * <code>repeated .google.protobuf.Any arguments = 4;</code>
   */
  com.google.protobuf.Any getArguments(int index);
  /**
   *
   *
   * <pre>
   * Collection of all external inputs that influenced the build on top of
   * recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe
   * type were "make", then this might be the flags passed to make aside from
   * the target, which is captured in recipe.entryPoint. Since the arguments
   * field can greatly vary in structure, depending on the builder and recipe
   * type, this is of form "Any".
   * </pre>
   *
   * <code>repeated .google.protobuf.Any arguments = 4;</code>
   */
  int getArgumentsCount();
  /**
   *
   *
   * <pre>
   * Collection of all external inputs that influenced the build on top of
   * recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe
   * type were "make", then this might be the flags passed to make aside from
   * the target, which is captured in recipe.entryPoint. Since the arguments
   * field can greatly vary in structure, depending on the builder and recipe
   * type, this is of form "Any".
   * </pre>
   *
   * <code>repeated .google.protobuf.Any arguments = 4;</code>
   */
  java.util.List<? extends com.google.protobuf.AnyOrBuilder> getArgumentsOrBuilderList();
  /**
   *
   *
   * <pre>
   * Collection of all external inputs that influenced the build on top of
   * recipe.definedInMaterial and recipe.entryPoint. For example, if the recipe
   * type were "make", then this might be the flags passed to make aside from
   * the target, which is captured in recipe.entryPoint. Since the arguments
   * field can greatly vary in structure, depending on the builder and recipe
   * type, this is of form "Any".
   * </pre>
   *
   * <code>repeated .google.protobuf.Any arguments = 4;</code>
   */
  com.google.protobuf.AnyOrBuilder getArgumentsOrBuilder(int index);

  /**
   *
   *
   * <pre>
   * Any other builder-controlled inputs necessary for correctly evaluating the
   * recipe. Usually only needed for reproducing the build but not evaluated as
   * part of policy. Since the environment field can greatly vary in structure,
   * depending on the builder and recipe type, this is of form "Any".
   * </pre>
   *
   * <code>repeated .google.protobuf.Any environment = 5;</code>
   */
  java.util.List<com.google.protobuf.Any> getEnvironmentList();
  /**
   *
   *
   * <pre>
   * Any other builder-controlled inputs necessary for correctly evaluating the
   * recipe. Usually only needed for reproducing the build but not evaluated as
   * part of policy. Since the environment field can greatly vary in structure,
   * depending on the builder and recipe type, this is of form "Any".
   * </pre>
   *
   * <code>repeated .google.protobuf.Any environment = 5;</code>
   */
  com.google.protobuf.Any getEnvironment(int index);
  /**
   *
   *
   * <pre>
   * Any other builder-controlled inputs necessary for correctly evaluating the
   * recipe. Usually only needed for reproducing the build but not evaluated as
   * part of policy. Since the environment field can greatly vary in structure,
   * depending on the builder and recipe type, this is of form "Any".
   * </pre>
   *
   * <code>repeated .google.protobuf.Any environment = 5;</code>
   */
  int getEnvironmentCount();
  /**
   *
   *
   * <pre>
   * Any other builder-controlled inputs necessary for correctly evaluating the
   * recipe. Usually only needed for reproducing the build but not evaluated as
   * part of policy. Since the environment field can greatly vary in structure,
   * depending on the builder and recipe type, this is of form "Any".
   * </pre>
   *
   * <code>repeated .google.protobuf.Any environment = 5;</code>
   */
  java.util.List<? extends com.google.protobuf.AnyOrBuilder> getEnvironmentOrBuilderList();
  /**
   *
   *
   * <pre>
   * Any other builder-controlled inputs necessary for correctly evaluating the
   * recipe. Usually only needed for reproducing the build but not evaluated as
   * part of policy. Since the environment field can greatly vary in structure,
   * depending on the builder and recipe type, this is of form "Any".
   * </pre>
   *
   * <code>repeated .google.protobuf.Any environment = 5;</code>
   */
  com.google.protobuf.AnyOrBuilder getEnvironmentOrBuilder(int index);
}
