// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: google/protobuf/type.proto

#import "GPBProtocolBuffers.h"

#if GOOGLE_PROTOBUF_OBJC_GEN_VERSION != 30000
#error This file was generated by a different version of protoc-gen-objc which is incompatible with your Protocol Buffer sources.
#endif

// @@protoc_insertion_point(imports)

CF_EXTERN_C_BEGIN

@class GPBAny;
@class GPBSourceContext;

NS_ASSUME_NONNULL_BEGIN

#pragma mark - Enum GPBField_Kind

// Kind represents a basic field type.
typedef GPB_ENUM(GPBField_Kind) {
  GPBField_Kind_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  // Field type unknown.
  GPBField_Kind_TypeUnknown = 0,

  // Field type double.
  GPBField_Kind_TypeDouble = 1,

  // Field type float.
  GPBField_Kind_TypeFloat = 2,

  // Field type int64.
  GPBField_Kind_TypeInt64 = 3,

  // Field type uint64.
  GPBField_Kind_TypeUint64 = 4,

  // Field type int32.
  GPBField_Kind_TypeInt32 = 5,

  // Field type fixed64.
  GPBField_Kind_TypeFixed64 = 6,

  // Field type fixed32.
  GPBField_Kind_TypeFixed32 = 7,

  // Field type bool.
  GPBField_Kind_TypeBool = 8,

  // Field type string.
  GPBField_Kind_TypeString = 9,

  // Field type message.
  GPBField_Kind_TypeMessage = 11,

  // Field type bytes.
  GPBField_Kind_TypeBytes = 12,

  // Field type uint32.
  GPBField_Kind_TypeUint32 = 13,

  // Field type enum.
  GPBField_Kind_TypeEnum = 14,

  // Field type sfixed32.
  GPBField_Kind_TypeSfixed32 = 15,

  // Field type sfixed64.
  GPBField_Kind_TypeSfixed64 = 16,

  // Field type sint32.
  GPBField_Kind_TypeSint32 = 17,

  // Field type sint64.
  GPBField_Kind_TypeSint64 = 18,
};

GPBEnumDescriptor *GPBField_Kind_EnumDescriptor(void);

BOOL GPBField_Kind_IsValidValue(int32_t value);

#pragma mark - Enum GPBField_Cardinality

// Cardinality represents whether a field is optional, required, or
// repeated.
typedef GPB_ENUM(GPBField_Cardinality) {
  GPBField_Cardinality_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  // The field cardinality is unknown. Typically an error condition.
  GPBField_Cardinality_CardinalityUnknown = 0,

  // For optional fields.
  GPBField_Cardinality_CardinalityOptional = 1,

  // For required fields. Not used for proto3.
  GPBField_Cardinality_CardinalityRequired = 2,

  // For repeated fields.
  GPBField_Cardinality_CardinalityRepeated = 3,
};

GPBEnumDescriptor *GPBField_Cardinality_EnumDescriptor(void);

BOOL GPBField_Cardinality_IsValidValue(int32_t value);

#pragma mark - GPBTypeRoot

@interface GPBTypeRoot : GPBRootObject

// The base class provides:
//   + (GPBExtensionRegistry *)extensionRegistry;
// which is an GPBExtensionRegistry that includes all the extensions defined by
// this file and all files that it depends on.

@end

#pragma mark - GPBType

typedef GPB_ENUM(GPBType_FieldNumber) {
  GPBType_FieldNumber_Name = 1,
  GPBType_FieldNumber_FieldsArray = 2,
  GPBType_FieldNumber_OneofsArray = 3,
  GPBType_FieldNumber_OptionsArray = 4,
  GPBType_FieldNumber_SourceContext = 5,
};

// A light-weight descriptor for a proto message type.
@interface GPBType : GPBMessage

// The fully qualified message name.
@property(nonatomic, readwrite, copy, null_resettable) NSString *name;

// The list of fields.
// |fieldsArray| contains |GPBField|
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *fieldsArray;
@property(nonatomic, readonly) NSUInteger fieldsArray_Count;

// The list of oneof definitions.
// The list of oneofs declared in this Type
// |oneofsArray| contains |NSString|
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *oneofsArray;
@property(nonatomic, readonly) NSUInteger oneofsArray_Count;

// The proto options.
// |optionsArray| contains |GPBOption|
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *optionsArray;
@property(nonatomic, readonly) NSUInteger optionsArray_Count;

// The source context.
@property(nonatomic, readwrite) BOOL hasSourceContext;
@property(nonatomic, readwrite, strong, null_resettable) GPBSourceContext *sourceContext;

@end

#pragma mark - GPBField

typedef GPB_ENUM(GPBField_FieldNumber) {
  GPBField_FieldNumber_Kind = 1,
  GPBField_FieldNumber_Cardinality = 2,
  GPBField_FieldNumber_Number = 3,
  GPBField_FieldNumber_Name = 4,
  GPBField_FieldNumber_TypeURL = 6,
  GPBField_FieldNumber_OneofIndex = 7,
  GPBField_FieldNumber_Packed = 8,
  GPBField_FieldNumber_OptionsArray = 9,
};

// Field represents a single field of a message type.
@interface GPBField : GPBMessage

// The field kind.
@property(nonatomic, readwrite) GPBField_Kind kind;

// The field cardinality, i.e. optional/required/repeated.
@property(nonatomic, readwrite) GPBField_Cardinality cardinality;

// The proto field number.
@property(nonatomic, readwrite) int32_t number;

// The field name.
@property(nonatomic, readwrite, copy, null_resettable) NSString *name;

// The type URL (without the scheme) when the type is MESSAGE or ENUM,
// such as `type.googleapis.com/google.protobuf.Empty`.
@property(nonatomic, readwrite, copy, null_resettable) NSString *typeURL;

// Index in Type.oneofs. Starts at 1. Zero means no oneof mapping.
@property(nonatomic, readwrite) int32_t oneofIndex;

// Whether to use alternative packed wire representation.
@property(nonatomic, readwrite) BOOL packed;

// The proto options.
// |optionsArray| contains |GPBOption|
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *optionsArray;
@property(nonatomic, readonly) NSUInteger optionsArray_Count;

@end

int32_t GPBField_Kind_RawValue(GPBField *message);
void SetGPBField_Kind_RawValue(GPBField *message, int32_t value);

int32_t GPBField_Cardinality_RawValue(GPBField *message);
void SetGPBField_Cardinality_RawValue(GPBField *message, int32_t value);

#pragma mark - GPBEnum

typedef GPB_ENUM(GPBEnum_FieldNumber) {
  GPBEnum_FieldNumber_Name = 1,
  GPBEnum_FieldNumber_EnumvalueArray = 2,
  GPBEnum_FieldNumber_OptionsArray = 3,
  GPBEnum_FieldNumber_SourceContext = 4,
};

// Enum type definition.
@interface GPBEnum : GPBMessage

// Enum type name.
@property(nonatomic, readwrite, copy, null_resettable) NSString *name;

// Enum value definitions.
// |enumvalueArray| contains |GPBEnumValue|
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *enumvalueArray;
@property(nonatomic, readonly) NSUInteger enumvalueArray_Count;

// Proto options for the enum type.
// |optionsArray| contains |GPBOption|
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *optionsArray;
@property(nonatomic, readonly) NSUInteger optionsArray_Count;

// The source context.
@property(nonatomic, readwrite) BOOL hasSourceContext;
@property(nonatomic, readwrite, strong, null_resettable) GPBSourceContext *sourceContext;

@end

#pragma mark - GPBEnumValue

typedef GPB_ENUM(GPBEnumValue_FieldNumber) {
  GPBEnumValue_FieldNumber_Name = 1,
  GPBEnumValue_FieldNumber_Number = 2,
  GPBEnumValue_FieldNumber_OptionsArray = 3,
};

// Enum value definition.
@interface GPBEnumValue : GPBMessage

// Enum value name.
@property(nonatomic, readwrite, copy, null_resettable) NSString *name;

// Enum value number.
@property(nonatomic, readwrite) int32_t number;

// Proto options for the enum value.
// |optionsArray| contains |GPBOption|
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray *optionsArray;
@property(nonatomic, readonly) NSUInteger optionsArray_Count;

@end

#pragma mark - GPBOption

typedef GPB_ENUM(GPBOption_FieldNumber) {
  GPBOption_FieldNumber_Name = 1,
  GPBOption_FieldNumber_Value = 2,
};

// Proto option attached to messages/fields/enums etc.
@interface GPBOption : GPBMessage

// Proto option name.
@property(nonatomic, readwrite, copy, null_resettable) NSString *name;

// Proto option value.
@property(nonatomic, readwrite) BOOL hasValue;
@property(nonatomic, readwrite, strong, null_resettable) GPBAny *value;

@end

NS_ASSUME_NONNULL_END

CF_EXTERN_C_END

// @@protoc_insertion_point(global_scope)
