// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/subscription/v1/keyapis_subscription_plan_v1.proto

// This CPP symbol can be defined to use imports that match up to the framework
// imports needed when using CocoaPods.
#if !defined(GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS)
 #define GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS 0
#endif

#if GPB_USE_PROTOBUF_FRAMEWORK_IMPORTS
 #import <Protobuf/GPBProtocolBuffers.h>
#else
 #import "GPBProtocolBuffers.h"
#endif

#if GOOGLE_PROTOBUF_OBJC_VERSION < 30007
#error This file was generated by a newer version of protoc which is incompatible with your Protocol Buffer library sources.
#endif
#if 30007 < GOOGLE_PROTOBUF_OBJC_MIN_SUPPORTED_VERSION
#error This file was generated by an older version of protoc which is incompatible with your Protocol Buffer library sources.
#endif

// @@protoc_insertion_point(imports)

#pragma clang diagnostic push
#pragma clang diagnostic ignored "-Wdeprecated-declarations"

CF_EXTERN_C_BEGIN

@class KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Error;
@class KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Error;
@class KEYAPISSUBSCRIPTIONV1Plan;
@class KEYAPISSUBSCRIPTIONV1PlanFilter;
@class KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError;
@class KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError_TextInvalid;
@class KEYAPISSUBSCRIPTIONV1PlanPaging;
@class KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError;
@class KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_LimitInvalid;
@class KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_OffsetInvalid;
@class KEYAPISSUBSCRIPTIONV1Plan_OptionDescription;

NS_ASSUME_NONNULL_BEGIN

#pragma mark - Enum KEYAPISSUBSCRIPTIONV1Plan_IconType

/** Справочник типов иконок */
typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1Plan_IconType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISSUBSCRIPTIONV1Plan_IconType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISSUBSCRIPTIONV1Plan_IconType_IconTypeUnknown = 0,

  /** Быстро */
  KEYAPISSUBSCRIPTIONV1Plan_IconType_Fast = 1,

  /** Распознавание лиц */
  KEYAPISSUBSCRIPTIONV1Plan_IconType_FaceRec = 2,

  /** Безопасно */
  KEYAPISSUBSCRIPTIONV1Plan_IconType_Safe = 3,
};

GPBEnumDescriptor *KEYAPISSUBSCRIPTIONV1Plan_IconType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISSUBSCRIPTIONV1Plan_IconType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISSUBSCRIPTIONV1PlanPaging_OrderByType

/** Справочник типов значений сортировки */
typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1PlanPaging_OrderByType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISSUBSCRIPTIONV1PlanPaging_OrderByType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISSUBSCRIPTIONV1PlanPaging_OrderByType_OrderByTypeUnknown = 0,

  /** По идентификатору */
  KEYAPISSUBSCRIPTIONV1PlanPaging_OrderByType_Id = 1,
};

GPBEnumDescriptor *KEYAPISSUBSCRIPTIONV1PlanPaging_OrderByType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISSUBSCRIPTIONV1PlanPaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISSUBSCRIPTIONV1PlanPaging_DirectionType

/** Справочник типов направлений сортировки */
typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1PlanPaging_DirectionType) {
  /**
   * Value used if any message's field encounters a value that is not defined
   * by this enum. The message will also have C functions to get/set the rawValue
   * of the field.
   **/
  KEYAPISSUBSCRIPTIONV1PlanPaging_DirectionType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISSUBSCRIPTIONV1PlanPaging_DirectionType_DirectionTypeUnknown = 0,

  /** От большего к меньшему */
  KEYAPISSUBSCRIPTIONV1PlanPaging_DirectionType_Desc = 1,

  /** От меньшего к большему */
  KEYAPISSUBSCRIPTIONV1PlanPaging_DirectionType_Asc = 2,
};

GPBEnumDescriptor *KEYAPISSUBSCRIPTIONV1PlanPaging_DirectionType_EnumDescriptor(void);

/**
 * Checks to see if the given value is defined by the enum or was not known at
 * the time this source was generated.
 **/
BOOL KEYAPISSUBSCRIPTIONV1PlanPaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - KEYAPISSUBSCRIPTIONV1KeyapisSubscriptionPlanV1Root

/**
 * Exposes the extension registry for this file.
 *
 * The base class provides:
 * @code
 *   + (GPBExtensionRegistry *)extensionRegistry;
 * @endcode
 * which is a @c GPBExtensionRegistry that includes all the extensions defined by
 * this file and all files that it depends on.
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1KeyapisSubscriptionPlanV1Root : GPBRootObject
@end

#pragma mark - KEYAPISSUBSCRIPTIONV1Plan

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1Plan_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1Plan_FieldNumber_Id_p = 1,
  KEYAPISSUBSCRIPTIONV1Plan_FieldNumber_Title = 2,
  KEYAPISSUBSCRIPTIONV1Plan_FieldNumber_Description_p = 3,
  KEYAPISSUBSCRIPTIONV1Plan_FieldNumber_CreatedAt = 4,
  KEYAPISSUBSCRIPTIONV1Plan_FieldNumber_ChangedAt = 5,
  KEYAPISSUBSCRIPTIONV1Plan_FieldNumber_ParentIdsArray = 6,
  KEYAPISSUBSCRIPTIONV1Plan_FieldNumber_RfIdsArray = 7,
  KEYAPISSUBSCRIPTIONV1Plan_FieldNumber_Summary = 8,
  KEYAPISSUBSCRIPTIONV1Plan_FieldNumber_IconType = 9,
  KEYAPISSUBSCRIPTIONV1Plan_FieldNumber_OptionDescriptionsArray = 10,
  KEYAPISSUBSCRIPTIONV1Plan_FieldNumber_PrivilegeTypesArray = 11,
};

/**
 * Технологический план(ТП)
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1Plan : GPBMessage

/** Идентификатор */
@property(nonatomic, readwrite) int32_t id_p;

/** Название */
@property(nonatomic, readwrite, copy, null_resettable) NSString *title;

/** Описание */
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *description_p;
/** Test to see if @c description_p has been set. */
@property(nonatomic, readwrite) BOOL hasDescription_p;

/**
 * Дата создания записи.
 * Заполняется сервером
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *createdAt;
/** Test to see if @c createdAt has been set. */
@property(nonatomic, readwrite) BOOL hasCreatedAt;

/**
 * Дата последнего изменения.
 * Заполняется и обновляется сервером.
 * Заполняется при создании и изменении.
 * Является версией объекта
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *changedAt;
/** Test to see if @c changedAt has been set. */
@property(nonatomic, readwrite) BOOL hasChangedAt;

/** Идентификаторы родительских технологических планов(ТП) */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Array *parentIdsArray;
/** The number of items in @c parentIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger parentIdsArray_Count;

/** Идентификаторы регионов, в которых доступен технологический план(ТП) */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Array *rfIdsArray;
/** The number of items in @c rfIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger rfIdsArray_Count;

/** Краткое описание */
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *summary;
/** Test to see if @c summary has been set. */
@property(nonatomic, readwrite) BOOL hasSummary;

/** Тип иконки */
@property(nonatomic, readwrite) KEYAPISSUBSCRIPTIONV1Plan_IconType iconType;

/** Описание опций */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<KEYAPISSUBSCRIPTIONV1Plan_OptionDescription*> *optionDescriptionsArray;
/** The number of items in @c optionDescriptionsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger optionDescriptionsArray_Count;

/**
 * Привилегии.
 * Массив услуг доступных по технологическому плану
 **/
// |privilegeTypesArray| contains |KEYAPISSUBSCRIPTIONV1Privilege_Type|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *privilegeTypesArray;
/** The number of items in @c privilegeTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger privilegeTypesArray_Count;

@end

/**
 * Fetches the raw value of a @c KEYAPISSUBSCRIPTIONV1Plan's @c iconType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISSUBSCRIPTIONV1Plan_IconType_RawValue(KEYAPISSUBSCRIPTIONV1Plan *message);
/**
 * Sets the raw value of an @c KEYAPISSUBSCRIPTIONV1Plan's @c iconType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISSUBSCRIPTIONV1Plan_IconType_RawValue(KEYAPISSUBSCRIPTIONV1Plan *message, int32_t value);

#pragma mark - KEYAPISSUBSCRIPTIONV1Plan_OptionDescription

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1Plan_OptionDescription_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1Plan_OptionDescription_FieldNumber_IconType = 1,
  KEYAPISSUBSCRIPTIONV1Plan_OptionDescription_FieldNumber_Title = 2,
  KEYAPISSUBSCRIPTIONV1Plan_OptionDescription_FieldNumber_Summary = 3,
};

/**
 * Описание опции
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1Plan_OptionDescription : GPBMessage

/** Тип иконки */
@property(nonatomic, readwrite) KEYAPISSUBSCRIPTIONV1Plan_IconType iconType;

/** Название */
@property(nonatomic, readwrite, copy, null_resettable) NSString *title;

/** Краткое описание */
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *summary;
/** Test to see if @c summary has been set. */
@property(nonatomic, readwrite) BOOL hasSummary;

@end

/**
 * Fetches the raw value of a @c KEYAPISSUBSCRIPTIONV1Plan_OptionDescription's @c iconType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISSUBSCRIPTIONV1Plan_OptionDescription_IconType_RawValue(KEYAPISSUBSCRIPTIONV1Plan_OptionDescription *message);
/**
 * Sets the raw value of an @c KEYAPISSUBSCRIPTIONV1Plan_OptionDescription's @c iconType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISSUBSCRIPTIONV1Plan_OptionDescription_IconType_RawValue(KEYAPISSUBSCRIPTIONV1Plan_OptionDescription *message, int32_t value);

#pragma mark - KEYAPISSUBSCRIPTIONV1PlanFilter

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1PlanFilter_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1PlanFilter_FieldNumber_Text = 1,
  KEYAPISSUBSCRIPTIONV1PlanFilter_FieldNumber_RfIdsArray = 2,
};

/**
 * Фильтр по технологическим планам
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1PlanFilter : GPBMessage

/**
 * По тексту.
 * Если значение не передано то поиск по нему не производится.
 * # Поиск производится по полям:
 * # - Название;
 * # - Описание;
 * # - Краткое описание
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *text;
/** Test to see if @c text has been set. */
@property(nonatomic, readwrite) BOOL hasText;

/** По идентификаторам регионов */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Array *rfIdsArray;
/** The number of items in @c rfIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger rfIdsArray_Count;

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError_FieldNumber_Text = 1,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError_Reason_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError_Reason_OneOfCase_Text = 1,
};

/**
 * Ошибки валидации фильтра по технологическим планам.
 * Эти проверки выполняются до обращения в базу данных
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError_Reason_OneOfCase reasonOneOfCase;

/** Текст передан некорректно */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError_TextInvalid *text;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError_ClearReasonOneOfCase(KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError *message);

#pragma mark - KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError_TextInvalid

/**
 * Причины:
 * - Длина текста < 3 символов и >= 64
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError_TextInvalid : GPBMessage

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1PlanPaging

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1PlanPaging_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1PlanPaging_FieldNumber_OrderByType = 1,
  KEYAPISSUBSCRIPTIONV1PlanPaging_FieldNumber_DirectionType = 2,
  KEYAPISSUBSCRIPTIONV1PlanPaging_FieldNumber_Limit = 3,
  KEYAPISSUBSCRIPTIONV1PlanPaging_FieldNumber_Offset = 4,
};

/**
 * Пагинация по технологическим планам
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1PlanPaging : GPBMessage

/**
 * Тип значения сортировки.
 * По умолчанию: ID
 **/
@property(nonatomic, readwrite) KEYAPISSUBSCRIPTIONV1PlanPaging_OrderByType orderByType;

/**
 * Тип направления сортировки.
 * По умолчанию: DESC
 **/
@property(nonatomic, readwrite) KEYAPISSUBSCRIPTIONV1PlanPaging_DirectionType directionType;

/**
 * Количество записей на страницу.
 * Минимальное значение: 1.
 * Максимальное значение: 100.
 * По умолчанию: 20.
 * Если значение 0 (не передано), то выставляем значение по умолчанию
 **/
@property(nonatomic, readwrite) int32_t limit;

/**
 * Сдвиг.
 * По умолчанию: 0
 **/
@property(nonatomic, readwrite) int32_t offset;

@end

/**
 * Fetches the raw value of a @c KEYAPISSUBSCRIPTIONV1PlanPaging's @c orderByType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISSUBSCRIPTIONV1PlanPaging_OrderByType_RawValue(KEYAPISSUBSCRIPTIONV1PlanPaging *message);
/**
 * Sets the raw value of an @c KEYAPISSUBSCRIPTIONV1PlanPaging's @c orderByType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISSUBSCRIPTIONV1PlanPaging_OrderByType_RawValue(KEYAPISSUBSCRIPTIONV1PlanPaging *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISSUBSCRIPTIONV1PlanPaging's @c directionType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISSUBSCRIPTIONV1PlanPaging_DirectionType_RawValue(KEYAPISSUBSCRIPTIONV1PlanPaging *message);
/**
 * Sets the raw value of an @c KEYAPISSUBSCRIPTIONV1PlanPaging's @c directionType property, allowing
 * it to be set to a value that was not defined by the enum at the time the code
 * was generated.
 **/
void SetKEYAPISSUBSCRIPTIONV1PlanPaging_DirectionType_RawValue(KEYAPISSUBSCRIPTIONV1PlanPaging *message, int32_t value);

#pragma mark - KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_FieldNumber_Limit = 1,
  KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_FieldNumber_Offset = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_Reason_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_Reason_OneOfCase_Limit = 1,
  KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_Reason_OneOfCase_Offset = 2,
};

/**
 * Ошибка валидации постраничной пагинации по технологическим планам.
 * Эти проверки выполняются до обращения в базу данных
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_Reason_OneOfCase reasonOneOfCase;

/** Количество передано некорректно */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_LimitInvalid *limit;

/** Сдвиг передан некорректно */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_OffsetInvalid *offset;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_ClearReasonOneOfCase(KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError *message);

#pragma mark - KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_LimitInvalid

/**
 * Причины:
 * - Значение количества < 0 или > 100
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_LimitInvalid : GPBMessage

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_OffsetInvalid

/**
 * Причины:
 * - Значение сдвига < 0
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError_OffsetInvalid : GPBMessage

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1GetPlanRequest

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPlanRequest_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetPlanRequest_FieldNumber_Id_p = 1,
};

/**
 * Запрос получения технологического плана
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetPlanRequest : GPBMessage

/** Идентификатор */
@property(nonatomic, readwrite) int32_t id_p;

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1GetPlanResponse

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPlanResponse_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetPlanResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPlanResponse_Type_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetPlanResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetPlanResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Ответ на запрос получения технологического плана
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetPlanResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISSUBSCRIPTIONV1GetPlanResponse_Type_OneOfCase typeOneOfCase;

/** Технологический план */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1Plan *data_p;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISSUBSCRIPTIONV1GetPlanResponse_ClearTypeOneOfCase(KEYAPISSUBSCRIPTIONV1GetPlanResponse *message);

#pragma mark - KEYAPISSUBSCRIPTIONV1GetPlanListRequest

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPlanListRequest_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetPlanListRequest_FieldNumber_Filter = 1,
  KEYAPISSUBSCRIPTIONV1GetPlanListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPlanListRequest_Pagination_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetPlanListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetPlanListRequest_Pagination_OneOfCase_Paging = 2,
};

/**
 * Запрос получения технологических планов
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetPlanListRequest : GPBMessage

/** Фильтр */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1PlanFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

/** Вариант разбиения на страницы */
@property(nonatomic, readonly) KEYAPISSUBSCRIPTIONV1GetPlanListRequest_Pagination_OneOfCase paginationOneOfCase;

/** Пагинация */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1PlanPaging *paging;

@end

/**
 * Clears whatever value was set for the oneof 'pagination'.
 **/
void KEYAPISSUBSCRIPTIONV1GetPlanListRequest_ClearPaginationOneOfCase(KEYAPISSUBSCRIPTIONV1GetPlanListRequest *message);

#pragma mark - KEYAPISSUBSCRIPTIONV1GetPlanListResponse

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPlanListResponse_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetPlanListResponse_FieldNumber_Data_p = 1,
  KEYAPISSUBSCRIPTIONV1GetPlanListResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Type_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос получения технологических планов
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetPlanListResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Type_OneOfCase typeOneOfCase;

/** Технологический план */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1Plan *data_p;

/** Ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Error *error;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISSUBSCRIPTIONV1GetPlanListResponse_ClearTypeOneOfCase(KEYAPISSUBSCRIPTIONV1GetPlanListResponse *message);

#pragma mark - KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Error

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Error_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Error_FieldNumber_PlanFilterValidation = 1,
  KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Error_FieldNumber_PlanPagingValidation = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Error_Reason_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Error_Reason_OneOfCase_PlanFilterValidation = 1,
  KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Error_Reason_OneOfCase_PlanPagingValidation = 2,
};

/**
 * Ошибка запроса получения технологических планов
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Error : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Error_Reason_OneOfCase reasonOneOfCase;

/** Ошибка фильтрации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError *planFilterValidation;

/** Ошибка пагинации по страницам */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1PlanPaging_ValidationError *planPagingValidation;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Error_ClearReasonOneOfCase(KEYAPISSUBSCRIPTIONV1GetPlanListResponse_Error *message);

#pragma mark - KEYAPISSUBSCRIPTIONV1GetPlanCountRequest

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPlanCountRequest_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetPlanCountRequest_FieldNumber_Filter = 1,
};

/**
 * Запрос получения количества технологических планов
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetPlanCountRequest : GPBMessage

/** Фильтр */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1PlanFilter *filter;
/** Test to see if @c filter has been set. */
@property(nonatomic, readwrite) BOOL hasFilter;

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1GetPlanCountResponse

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_FieldNumber_Data_p = 1,
  KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Type_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Type_OneOfCase_Error = 2,
};

/**
 * Ответ на запрос получения количества технологических планов
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetPlanCountResponse : GPBMessage

/** Тип результата */
@property(nonatomic, readonly) KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Type_OneOfCase typeOneOfCase;

/** Всего технологических планов */
@property(nonatomic, readwrite) int32_t data_p;

/** Ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Error *error;

@end

/**
 * Clears whatever value was set for the oneof 'type'.
 **/
void KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_ClearTypeOneOfCase(KEYAPISSUBSCRIPTIONV1GetPlanCountResponse *message);

#pragma mark - KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Error

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Error_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Error_FieldNumber_PlanFilterValidation = 1,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Error_Reason_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Error_Reason_OneOfCase_PlanFilterValidation = 1,
};

/**
 * Ошибка запроса получения количества технологических планов
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Error : GPBMessage

/** Причина ошибки */
@property(nonatomic, readonly) KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Error_Reason_OneOfCase reasonOneOfCase;

/** Ошибка фильтрации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1PlanFilter_ValidationError *planFilterValidation;

@end

/**
 * Clears whatever value was set for the oneof 'reason'.
 **/
void KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Error_ClearReasonOneOfCase(KEYAPISSUBSCRIPTIONV1GetPlanCountResponse_Error *message);

NS_ASSUME_NONNULL_END

CF_EXTERN_C_END

#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)

// clang-format on
