// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/subscription/v1/keyapis_subscription_subscription_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 KEYAPISSUBSCRIPTIONV1GetSubscriptionCountResponse_Error;
@class KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_Error;
@class KEYAPISSUBSCRIPTIONV1Offer;
@class KEYAPISSUBSCRIPTIONV1Subscription;
@class KEYAPISSUBSCRIPTIONV1SubscriptionFilter;
@class KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError;
@class KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError_FlatNumbersInvalid;
@class KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError_OrponsInvalid;
@class KEYAPISSUBSCRIPTIONV1SubscriptionPaging;
@class KEYAPISSUBSCRIPTIONV1SubscriptionPaging_ValidationError;
@class KEYAPISSUBSCRIPTIONV1SubscriptionPaging_ValidationError_LimitInvalid;
@class KEYAPISSUBSCRIPTIONV1SubscriptionPaging_ValidationError_OffsetInvalid;

NS_ASSUME_NONNULL_BEGIN

#pragma mark - Enum KEYAPISSUBSCRIPTIONV1Subscription_StatusType

/** Типы статусов подписки */
typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1Subscription_StatusType) {
  /**
   * 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.
   **/
  KEYAPISSUBSCRIPTIONV1Subscription_StatusType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISSUBSCRIPTIONV1Subscription_StatusType_StatusTypeUnknown = 0,

  /**
   * Настроена.
   * Подписка переведена в статус настройки.
   * Это промо-период, либо монтажник проверяет работу оборудования.
   * Услуги подписки не оплачены, но доступны для использования.
   * Финальный статус
   **/
  KEYAPISSUBSCRIPTIONV1Subscription_StatusType_Setup = 1,

  /**
   * Активна.
   * Подписка активирована.
   * С этого момента считаем что нужно считать денежки.
   * Услуги подписки оплачены и доступны для использования.
   * Финальный статус
   **/
  KEYAPISSUBSCRIPTIONV1Subscription_StatusType_Active = 2,

  /**
   * Заблокирована.
   * Подписка фин. заблокирована.
   * Подписка в фин. блокировке.
   * Услуги подписки не оплачены и не доступны.
   * Финальный статус
   **/
  KEYAPISSUBSCRIPTIONV1Subscription_StatusType_Blocked = 3,

  /**
   * Отменена.
   * Подписка отменена.
   * Пользователь отменил подписку.
   * Услуги подписки больше не существуют и не доступны абоненту
   **/
  KEYAPISSUBSCRIPTIONV1Subscription_StatusType_Canceled = 4,

  /**
   * Запланированная отмена.
   * Пользователь решил отказаться от услуги, но уже заплатил.
   * Подписка запланирована к отмене, будет действовать до истечения срока действия в подписке.
   * Услуги подписки оплачены и доступны для использования.
   * Финальный статус
   **/
  KEYAPISSUBSCRIPTIONV1Subscription_StatusType_ScheduledCanceled = 5,
};

GPBEnumDescriptor *KEYAPISSUBSCRIPTIONV1Subscription_StatusType_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 KEYAPISSUBSCRIPTIONV1Subscription_StatusType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISSUBSCRIPTIONV1Subscription_BillingType

/** Типы биллинга подпискии */
typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1Subscription_BillingType) {
  /**
   * 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.
   **/
  KEYAPISSUBSCRIPTIONV1Subscription_BillingType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISSUBSCRIPTIONV1Subscription_BillingType_BillingTypeUnknown = 0,

  /**
   * АСР МРФ.
   * Обслуживание счетов и расчёты с клиентами происходят в АСР МРФ
   **/
  KEYAPISSUBSCRIPTIONV1Subscription_BillingType_AsrMrf = 1,

  /**
   * АСР Ключ.
   * Обслуживание счетов и расчёты с клиентами происходят внутри Ключа
   **/
  KEYAPISSUBSCRIPTIONV1Subscription_BillingType_AsrKey = 2,

  /**
   * АСР УК.
   * Обслуживание счетов и расчёты с клиентами происходят во внешнем АСР от управляющей компании
   **/
  KEYAPISSUBSCRIPTIONV1Subscription_BillingType_AsrMc = 3,
};

GPBEnumDescriptor *KEYAPISSUBSCRIPTIONV1Subscription_BillingType_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 KEYAPISSUBSCRIPTIONV1Subscription_BillingType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISSUBSCRIPTIONV1SubscriptionPaging_OrderByType

/** Справочник типов значений сортировки */
typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1SubscriptionPaging_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.
   **/
  KEYAPISSUBSCRIPTIONV1SubscriptionPaging_OrderByType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISSUBSCRIPTIONV1SubscriptionPaging_OrderByType_OrderByTypeUnknown = 0,

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

GPBEnumDescriptor *KEYAPISSUBSCRIPTIONV1SubscriptionPaging_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 KEYAPISSUBSCRIPTIONV1SubscriptionPaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISSUBSCRIPTIONV1SubscriptionPaging_DirectionType

/** Справочник типов направлений сортировки */
typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1SubscriptionPaging_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.
   **/
  KEYAPISSUBSCRIPTIONV1SubscriptionPaging_DirectionType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISSUBSCRIPTIONV1SubscriptionPaging_DirectionType_DirectionTypeUnknown = 0,

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

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

GPBEnumDescriptor *KEYAPISSUBSCRIPTIONV1SubscriptionPaging_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 KEYAPISSUBSCRIPTIONV1SubscriptionPaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - KEYAPISSUBSCRIPTIONV1KeyapisSubscriptionSubscriptionV1Root

/**
 * 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 KEYAPISSUBSCRIPTIONV1KeyapisSubscriptionSubscriptionV1Root : GPBRootObject
@end

#pragma mark - KEYAPISSUBSCRIPTIONV1Subscription

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber_Id_p = 1,
  KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber_Orpon = 2,
  KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber_FlatNumber = 3,
  KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber_OfferId = 4,
  KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber_StatusType = 5,
  KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber_PreviousStatusType = 6,
  KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber_Price = 7,
  KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber_CreatedAt = 8,
  KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber_ChangedAt = 9,
  KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber_IsEnableAutoSubscribe = 10,
  KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber_BillingType = 11,
  KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber_ExpiredAt = 12,
  KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber_ParentId = 13,
  KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber_Account = 14,
  KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber_Offer = 15,
  KEYAPISSUBSCRIPTIONV1Subscription_FieldNumber_DiscountPrice = 16,
};

/**
 * Подписка
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1Subscription : GPBMessage

/**
 * Идентификатор.
 * Может быть явно задан при создании.
 * Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *id_p;

/**
 * ОРПОН.
 * Идентификатор дома
 **/
@property(nonatomic, readwrite) int64_t orpon;

/** Номер квартиры */
@property(nonatomic, readwrite, copy, null_resettable) NSString *flatNumber;

/**
 * Идентификатор коммерческой возможности(КВ).
 * Заполняется сервером на основе идентификатора из технологического плана(ТП)
 **/
@property(nonatomic, readwrite) int32_t offerId;

/**
 * Cтатус подписки.
 * При создании может быть: SETUP, ACTIVE
 **/
@property(nonatomic, readwrite) KEYAPISSUBSCRIPTIONV1Subscription_StatusType statusType;

/**
 * Предыдущий статус подписки.
 * В справочник входят только финальные статусы.
 * Заполняется сервером при изменении статусов
 **/
@property(nonatomic, readwrite) KEYAPISSUBSCRIPTIONV1Subscription_StatusType previousStatusType;

/** Цена */
@property(nonatomic, readwrite, strong, null_resettable) GPBDoubleValue *price;
/** Test to see if @c price has been set. */
@property(nonatomic, readwrite) BOOL hasPrice;

/**
 * Дата создания записи.
 * Заполняется сервером
 **/
@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;

/**
 * Признак для определения автоподписок.
 * Редактировать флаг запрещено.
 * Проставляется сервером в true при создании через задачу на автоподписку
 **/
@property(nonatomic, readwrite) BOOL isEnableAutoSubscribe;

/** Тип биллинга */
@property(nonatomic, readwrite) KEYAPISSUBSCRIPTIONV1Subscription_BillingType billingType;

/**
 * Срок действия.
 * Проставляется при создании
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *expiredAt;
/** Test to see if @c expiredAt has been set. */
@property(nonatomic, readwrite) BOOL hasExpiredAt;

/**
 * Идентификатор подписки, в зависимости от которой подключена данная.
 * Заполняется в подписках на опции.
 * Тип: Guid
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *parentId;
/** Test to see if @c parentId has been set. */
@property(nonatomic, readwrite) BOOL hasParentId;

/** Аккаунт */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt64Value *account;
/** Test to see if @c account has been set. */
@property(nonatomic, readwrite) BOOL hasAccount;

/**
 * Снапшот состояния коммерческой возможности на момент создания подписки.
 * В данный момент это ссылка в базе на запись, в будущем это будет снапшот
 **/
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1Offer *offer;
/** Test to see if @c offer has been set. */
@property(nonatomic, readwrite) BOOL hasOffer;

/**
 * Цена по скидки.
 * Заполнена если оплата подписки прошла по скидке, иначе очищается
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBDoubleValue *discountPrice;
/** Test to see if @c discountPrice has been set. */
@property(nonatomic, readwrite) BOOL hasDiscountPrice;

@end

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

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

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

#pragma mark - KEYAPISSUBSCRIPTIONV1SubscriptionFilter

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1SubscriptionFilter_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1SubscriptionFilter_FieldNumber_OrponsArray = 1,
  KEYAPISSUBSCRIPTIONV1SubscriptionFilter_FieldNumber_FlatNumbersArray = 2,
};

/**
 * Фильтр подписок
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1SubscriptionFilter : GPBMessage

/** По ОРПОНам */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt64Array *orponsArray;
/** The number of items in @c orponsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger orponsArray_Count;

/** По номерам квартир */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<NSString*> *flatNumbersArray;
/** The number of items in @c flatNumbersArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger flatNumbersArray_Count;

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError_FieldNumber_Orpons = 1,
  KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError_FieldNumber_FlatNumbers = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError_Reason_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError_Reason_OneOfCase_Orpons = 1,
  KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError_Reason_OneOfCase_FlatNumbers = 2,
};

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

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

/** Формат ОРПОН некорректен */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError_OrponsInvalid *orpons;

/** Формат квартиры некорректен */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError_FlatNumbersInvalid *flatNumbers;

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError_OrponsInvalid

/**
 * Причины:
 * - Формат ОРПОН некорректен;
 * - ОРПОН передан некорректно, к примеру, значение <= 1
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError_OrponsInvalid : GPBMessage

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError_FlatNumbersInvalid

/**
 * Причины:
 * - Формат квартиры некорректен (например, длина номера квартира более 4 знаков или отрицательное значение)
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError_FlatNumbersInvalid : GPBMessage

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1SubscriptionPaging

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1SubscriptionPaging_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1SubscriptionPaging_FieldNumber_OrderByType = 1,
  KEYAPISSUBSCRIPTIONV1SubscriptionPaging_FieldNumber_DirectionType = 2,
  KEYAPISSUBSCRIPTIONV1SubscriptionPaging_FieldNumber_Limit = 3,
  KEYAPISSUBSCRIPTIONV1SubscriptionPaging_FieldNumber_Offset = 4,
};

/**
 * Пагинация по подпискам
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1SubscriptionPaging : GPBMessage

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

/**
 * Тип направления сортировки.
 * По умолчанию: DESC
 **/
@property(nonatomic, readwrite) KEYAPISSUBSCRIPTIONV1SubscriptionPaging_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 KEYAPISSUBSCRIPTIONV1SubscriptionPaging's @c orderByType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISSUBSCRIPTIONV1SubscriptionPaging_OrderByType_RawValue(KEYAPISSUBSCRIPTIONV1SubscriptionPaging *message);
/**
 * Sets the raw value of an @c KEYAPISSUBSCRIPTIONV1SubscriptionPaging'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 SetKEYAPISSUBSCRIPTIONV1SubscriptionPaging_OrderByType_RawValue(KEYAPISSUBSCRIPTIONV1SubscriptionPaging *message, int32_t value);

/**
 * Fetches the raw value of a @c KEYAPISSUBSCRIPTIONV1SubscriptionPaging's @c directionType property, even
 * if the value was not defined by the enum at the time the code was generated.
 **/
int32_t KEYAPISSUBSCRIPTIONV1SubscriptionPaging_DirectionType_RawValue(KEYAPISSUBSCRIPTIONV1SubscriptionPaging *message);
/**
 * Sets the raw value of an @c KEYAPISSUBSCRIPTIONV1SubscriptionPaging'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 SetKEYAPISSUBSCRIPTIONV1SubscriptionPaging_DirectionType_RawValue(KEYAPISSUBSCRIPTIONV1SubscriptionPaging *message, int32_t value);

#pragma mark - KEYAPISSUBSCRIPTIONV1SubscriptionPaging_ValidationError

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1SubscriptionPaging_ValidationError_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1SubscriptionPaging_ValidationError_FieldNumber_Limit = 1,
  KEYAPISSUBSCRIPTIONV1SubscriptionPaging_ValidationError_FieldNumber_Offset = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1SubscriptionPaging_ValidationError_Reason_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1SubscriptionPaging_ValidationError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1SubscriptionPaging_ValidationError_Reason_OneOfCase_Limit = 1,
  KEYAPISSUBSCRIPTIONV1SubscriptionPaging_ValidationError_Reason_OneOfCase_Offset = 2,
};

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

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

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

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

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1SubscriptionPaging_ValidationError_LimitInvalid

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

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1SubscriptionPaging_ValidationError_OffsetInvalid

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

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1GetSubscriptionRequest

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetSubscriptionRequest_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetSubscriptionRequest_FieldNumber_Id_p = 1,
};

/**
 * Запрос получения подписки
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetSubscriptionRequest : GPBMessage

/** Идентификатор подписки */
@property(nonatomic, readwrite, copy, null_resettable) NSString *id_p;

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1GetSubscriptionResponse

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetSubscriptionResponse_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetSubscriptionResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetSubscriptionResponse_Type_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetSubscriptionResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetSubscriptionResponse_Type_OneOfCase_Data_p = 1,
};

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

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

/** Подписка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1Subscription *data_p;

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1GetSubscriptionListRequest

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetSubscriptionListRequest_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetSubscriptionListRequest_FieldNumber_Filter = 1,
  KEYAPISSUBSCRIPTIONV1GetSubscriptionListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetSubscriptionListRequest_Pagination_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetSubscriptionListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetSubscriptionListRequest_Pagination_OneOfCase_Paging = 2,
};

/**
 * Запрос получения списка подписок
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetSubscriptionListRequest : GPBMessage

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

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

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

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_FieldNumber_Data_p = 1,
  KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_Type_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Подписка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1Subscription *data_p;

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

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_Error

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_Error_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_Error_FieldNumber_SubscriptionFilterValidation = 1,
  KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_Error_FieldNumber_SubscriptionPagingValidation = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_Error_Reason_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_Error_Reason_OneOfCase_SubscriptionFilterValidation = 1,
  KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_Error_Reason_OneOfCase_SubscriptionPagingValidation = 2,
};

/**
 * Ошибка запроса получения списка подписки
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetSubscriptionListResponse_Error : GPBMessage

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

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

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

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1GetSubscriptionCountRequest

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetSubscriptionCountRequest_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetSubscriptionCountRequest_FieldNumber_Filter = 1,
};

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

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

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1GetSubscriptionCountResponse

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetSubscriptionCountResponse_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetSubscriptionCountResponse_FieldNumber_Data_p = 1,
  KEYAPISSUBSCRIPTIONV1GetSubscriptionCountResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetSubscriptionCountResponse_Type_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetSubscriptionCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetSubscriptionCountResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISSUBSCRIPTIONV1GetSubscriptionCountResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Всего подписок */
@property(nonatomic, readwrite) int32_t data_p;

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

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1GetSubscriptionCountResponse_Error

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetSubscriptionCountResponse_Error_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetSubscriptionCountResponse_Error_FieldNumber_SubscriptionFilterValidation = 1,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetSubscriptionCountResponse_Error_Reason_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetSubscriptionCountResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetSubscriptionCountResponse_Error_Reason_OneOfCase_SubscriptionFilterValidation = 1,
};

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

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

/** Ошибка фильтрации подписок */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1SubscriptionFilter_ValidationError *subscriptionFilterValidation;

@end

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

NS_ASSUME_NONNULL_END

CF_EXTERN_C_END

#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)

// clang-format on
