//
//  Generated code. Do not modify.
//  source: google/api/field_behavior.proto
//
// @dart = 3.3

// ignore_for_file: annotate_overrides, camel_case_types, comment_references
// ignore_for_file: constant_identifier_names, library_prefixes
// ignore_for_file: non_constant_identifier_names, prefer_final_fields
// ignore_for_file: unnecessary_import, unnecessary_this, unused_import

import 'dart:core' as $core;

import 'package:protobuf/protobuf.dart' as $pb;

///  An indicator of the behavior of a given field (for example, that a field
///  is required in requests, or given as output but ignored as input).
///  This **does not** change the behavior in protocol buffers itself; it only
///  denotes the behavior and may affect how API tooling handles the field.
///
///  Note: This enum **may** receive new values in the future.
class FieldBehavior extends $pb.ProtobufEnum {
  /// Conventional default for enums. Do not use this.
  static const FieldBehavior FIELD_BEHAVIOR_UNSPECIFIED = FieldBehavior._(0, _omitEnumNames ? '' : 'FIELD_BEHAVIOR_UNSPECIFIED');
  /// Specifically denotes a field as optional.
  /// While all fields in protocol buffers are optional, this may be specified
  /// for emphasis if appropriate.
  static const FieldBehavior OPTIONAL = FieldBehavior._(1, _omitEnumNames ? '' : 'OPTIONAL');
  /// Denotes a field as required.
  /// This indicates that the field **must** be provided as part of the request,
  /// and failure to do so will cause an error (usually `INVALID_ARGUMENT`).
  static const FieldBehavior REQUIRED = FieldBehavior._(2, _omitEnumNames ? '' : 'REQUIRED');
  /// Denotes a field as output only.
  /// This indicates that the field is provided in responses, but including the
  /// field in a request does nothing (the server *must* ignore it and
  /// *must not* throw an error as a result of the field's presence).
  static const FieldBehavior OUTPUT_ONLY = FieldBehavior._(3, _omitEnumNames ? '' : 'OUTPUT_ONLY');
  /// Denotes a field as input only.
  /// This indicates that the field is provided in requests, and the
  /// corresponding field is not included in output.
  static const FieldBehavior INPUT_ONLY = FieldBehavior._(4, _omitEnumNames ? '' : 'INPUT_ONLY');
  /// Denotes a field as immutable.
  /// This indicates that the field may be set once in a request to create a
  /// resource, but may not be changed thereafter.
  static const FieldBehavior IMMUTABLE = FieldBehavior._(5, _omitEnumNames ? '' : 'IMMUTABLE');

  static const $core.List<FieldBehavior> values = <FieldBehavior> [
    FIELD_BEHAVIOR_UNSPECIFIED,
    OPTIONAL,
    REQUIRED,
    OUTPUT_ONLY,
    INPUT_ONLY,
    IMMUTABLE,
  ];

  static final $core.Map<$core.int, FieldBehavior> _byValue = $pb.ProtobufEnum.initByValue(values);
  static FieldBehavior? valueOf($core.int value) => _byValue[value];

  const FieldBehavior._(super.v, super.n);
}


const _omitEnumNames = $core.bool.fromEnvironment('protobuf.omit_enum_names');
