// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/subscription/v1/keyapis_subscription_offer_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 KEYAPISSUBSCRIPTIONV1GetOfferCountResponse_Error;
@class KEYAPISSUBSCRIPTIONV1GetOfferListResponse_Error;
@class KEYAPISSUBSCRIPTIONV1Offer;
@class KEYAPISSUBSCRIPTIONV1OfferFilter;
@class KEYAPISSUBSCRIPTIONV1OfferFilter_ValidationError;
@class KEYAPISSUBSCRIPTIONV1OfferFilter_ValidationError_CompanyIdsInvalid;
@class KEYAPISSUBSCRIPTIONV1OfferFilter_ValidationError_OrponsInvalid;
@class KEYAPISSUBSCRIPTIONV1OfferPaging;
@class KEYAPISSUBSCRIPTIONV1OfferPaging_ValidationError;
@class KEYAPISSUBSCRIPTIONV1OfferPaging_ValidationError_LimitInvalid;
@class KEYAPISSUBSCRIPTIONV1OfferPaging_ValidationError_OffsetInvalid;
@class KEYAPISSUBSCRIPTIONV1Plan;

NS_ASSUME_NONNULL_BEGIN

#pragma mark - Enum KEYAPISSUBSCRIPTIONV1Offer_Type

/** Типы коммерческих возможностей */
typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1Offer_Type) {
  /**
   * 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.
   **/
  KEYAPISSUBSCRIPTIONV1Offer_Type_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISSUBSCRIPTIONV1Offer_Type_TypeUnknown = 0,

  /**
   * УК.
   * Услуги, которые назначаются на управляющие компанию
   **/
  KEYAPISSUBSCRIPTIONV1Offer_Type_Company = 1,

  /**
   * Ростелеком.
   * Услуги, которые Ростелеком подключает напрямую физическим лицам
   **/
  KEYAPISSUBSCRIPTIONV1Offer_Type_Rtk = 2,

  /**
   * Общая.
   * Услуги, которые видят клиенты обоих типов
   **/
  KEYAPISSUBSCRIPTIONV1Offer_Type_Shared = 3,
};

GPBEnumDescriptor *KEYAPISSUBSCRIPTIONV1Offer_Type_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 KEYAPISSUBSCRIPTIONV1Offer_Type_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISSUBSCRIPTIONV1Offer_StatusType

/** Типы статусов коммерческих возможностей */
typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1Offer_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.
   **/
  KEYAPISSUBSCRIPTIONV1Offer_StatusType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISSUBSCRIPTIONV1Offer_StatusType_StatusTypeUnknown = 0,

  /**
   * Активно.
   * Доступно
   **/
  KEYAPISSUBSCRIPTIONV1Offer_StatusType_Active = 1,

  /**
   * Заблокировано.
   * Приостановлено
   **/
  KEYAPISSUBSCRIPTIONV1Offer_StatusType_Blocked = 2,
};

GPBEnumDescriptor *KEYAPISSUBSCRIPTIONV1Offer_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 KEYAPISSUBSCRIPTIONV1Offer_StatusType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISSUBSCRIPTIONV1Offer_DiscountRequirementType

/** Справочник условий на скидки */
typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1Offer_DiscountRequirementType) {
  /**
   * 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.
   **/
  KEYAPISSUBSCRIPTIONV1Offer_DiscountRequirementType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /**
   * Значение не указано.
   * Если указана цена по скидке, а условие не проставлено, скидка не отображается и не применяется
   **/
  KEYAPISSUBSCRIPTIONV1Offer_DiscountRequirementType_DiscountRequirementTypeUnknown = 0,

  /** Безусловная скидка */
  KEYAPISSUBSCRIPTIONV1Offer_DiscountRequirementType_NoConditions = 1,

  /** ШПД интернет оплачен */
  KEYAPISSUBSCRIPTIONV1Offer_DiscountRequirementType_InternetIsPaid = 2,
};

GPBEnumDescriptor *KEYAPISSUBSCRIPTIONV1Offer_DiscountRequirementType_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 KEYAPISSUBSCRIPTIONV1Offer_DiscountRequirementType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISSUBSCRIPTIONV1OfferPaging_OrderByType

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

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

  /** По цене */
  KEYAPISSUBSCRIPTIONV1OfferPaging_OrderByType_Price = 2,
};

GPBEnumDescriptor *KEYAPISSUBSCRIPTIONV1OfferPaging_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 KEYAPISSUBSCRIPTIONV1OfferPaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISSUBSCRIPTIONV1OfferPaging_DirectionType

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

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

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

GPBEnumDescriptor *KEYAPISSUBSCRIPTIONV1OfferPaging_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 KEYAPISSUBSCRIPTIONV1OfferPaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - KEYAPISSUBSCRIPTIONV1KeyapisSubscriptionOfferV1Root

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

#pragma mark - KEYAPISSUBSCRIPTIONV1Offer

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1Offer_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1Offer_FieldNumber_Id_p = 1,
  KEYAPISSUBSCRIPTIONV1Offer_FieldNumber_Type = 2,
  KEYAPISSUBSCRIPTIONV1Offer_FieldNumber_Orpon = 3,
  KEYAPISSUBSCRIPTIONV1Offer_FieldNumber_CompanyId = 4,
  KEYAPISSUBSCRIPTIONV1Offer_FieldNumber_PlanId = 5,
  KEYAPISSUBSCRIPTIONV1Offer_FieldNumber_IsEnableAutoSubscribe = 6,
  KEYAPISSUBSCRIPTIONV1Offer_FieldNumber_StatusType = 7,
  KEYAPISSUBSCRIPTIONV1Offer_FieldNumber_Price = 8,
  KEYAPISSUBSCRIPTIONV1Offer_FieldNumber_IsDigitalWay = 9,
  KEYAPISSUBSCRIPTIONV1Offer_FieldNumber_CreatedAt = 10,
  KEYAPISSUBSCRIPTIONV1Offer_FieldNumber_ChangedAt = 11,
  KEYAPISSUBSCRIPTIONV1Offer_FieldNumber_OfferURL = 12,
  KEYAPISSUBSCRIPTIONV1Offer_FieldNumber_Plan = 13,
  KEYAPISSUBSCRIPTIONV1Offer_FieldNumber_DiscountPrice = 14,
  KEYAPISSUBSCRIPTIONV1Offer_FieldNumber_DiscountRequirementTypesArray = 15,
};

/**
 * Коммерческая возможность(КВ)
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1Offer : GPBMessage

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

/** Тип коммерческой возможности */
@property(nonatomic, readwrite) KEYAPISSUBSCRIPTIONV1Offer_Type type;

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

/** Идентификатор компании */
@property(nonatomic, readwrite, strong, null_resettable) GPBInt32Value *companyId;
/** Test to see if @c companyId has been set. */
@property(nonatomic, readwrite) BOOL hasCompanyId;

/** Идентификатор технологического плана */
@property(nonatomic, readwrite) int32_t planId;

/** Подключать ли автоматическую подписку */
@property(nonatomic, readwrite) BOOL isEnableAutoSubscribe;

/** Тип статуса заказа */
@property(nonatomic, readwrite) KEYAPISSUBSCRIPTIONV1Offer_StatusType statusType;

/** Цена */
@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) BOOL isDigitalWay;

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

/**
 * Адрес размещения офферты.
 * Полный url до файла
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBStringValue *offerURL;
/** Test to see if @c offerURL has been set. */
@property(nonatomic, readwrite) BOOL hasOfferURL;

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

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

/**
 * Условия на скидку.
 * Если условий много то для срабатывания должны выполнять все условия
 **/
// |discountRequirementTypesArray| contains |KEYAPISSUBSCRIPTIONV1Offer_DiscountRequirementType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *discountRequirementTypesArray;
/** The number of items in @c discountRequirementTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger discountRequirementTypesArray_Count;

@end

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

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

#pragma mark - KEYAPISSUBSCRIPTIONV1OfferFilter

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1OfferFilter_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1OfferFilter_FieldNumber_TypesArray = 1,
  KEYAPISSUBSCRIPTIONV1OfferFilter_FieldNumber_OrponsArray = 2,
  KEYAPISSUBSCRIPTIONV1OfferFilter_FieldNumber_CompanyIdsArray = 3,
};

/**
 * Фильтр по коммерческим возможностям
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1OfferFilter : GPBMessage

/** По типам */
// |typesArray| contains |KEYAPISSUBSCRIPTIONV1Offer_Type|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *typesArray;
/** The number of items in @c typesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger typesArray_Count;

/** По ОРПОНам */
@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) GPBInt32Array *companyIdsArray;
/** The number of items in @c companyIdsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger companyIdsArray_Count;

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1OfferFilter_ValidationError

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1OfferFilter_ValidationError_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1OfferFilter_ValidationError_FieldNumber_Orpons = 1,
  KEYAPISSUBSCRIPTIONV1OfferFilter_ValidationError_FieldNumber_CompanyIds = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1OfferFilter_ValidationError_Reason_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1OfferFilter_ValidationError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1OfferFilter_ValidationError_Reason_OneOfCase_Orpons = 1,
  KEYAPISSUBSCRIPTIONV1OfferFilter_ValidationError_Reason_OneOfCase_CompanyIds = 2,
};

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

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

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

/** Формат идентификатора компании некорректен */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1OfferFilter_ValidationError_CompanyIdsInvalid *companyIds;

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1OfferFilter_ValidationError_OrponsInvalid

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

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1OfferFilter_ValidationError_CompanyIdsInvalid

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

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1OfferPaging

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1OfferPaging_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1OfferPaging_FieldNumber_OrderByType = 1,
  KEYAPISSUBSCRIPTIONV1OfferPaging_FieldNumber_DirectionType = 2,
  KEYAPISSUBSCRIPTIONV1OfferPaging_FieldNumber_Limit = 3,
  KEYAPISSUBSCRIPTIONV1OfferPaging_FieldNumber_Offset = 4,
};

/**
 * Пагинация по коммерческим возможностям
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1OfferPaging : GPBMessage

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

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

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

#pragma mark - KEYAPISSUBSCRIPTIONV1OfferPaging_ValidationError

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1OfferPaging_ValidationError_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1OfferPaging_ValidationError_FieldNumber_Limit = 1,
  KEYAPISSUBSCRIPTIONV1OfferPaging_ValidationError_FieldNumber_Offset = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1OfferPaging_ValidationError_Reason_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1OfferPaging_ValidationError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1OfferPaging_ValidationError_Reason_OneOfCase_Limit = 1,
  KEYAPISSUBSCRIPTIONV1OfferPaging_ValidationError_Reason_OneOfCase_Offset = 2,
};

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

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

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

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

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1OfferPaging_ValidationError_LimitInvalid

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

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1OfferPaging_ValidationError_OffsetInvalid

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

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1GetOfferRequest

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetOfferRequest_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetOfferRequest_FieldNumber_Id_p = 1,
};

/**
 * Запрос получения коммерческой возможности
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetOfferRequest : GPBMessage

/** Идентификатор коммерческой возможности */
@property(nonatomic, readwrite, copy, null_resettable) NSString *id_p;

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1GetOfferResponse

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetOfferResponse_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetOfferResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetOfferResponse_Type_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetOfferResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetOfferResponse_Type_OneOfCase_Data_p = 1,
};

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

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

/** Коммерческая возможность */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1Offer *data_p;

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1GetOfferListRequest

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetOfferListRequest_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetOfferListRequest_FieldNumber_Filter = 1,
  KEYAPISSUBSCRIPTIONV1GetOfferListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetOfferListRequest_Pagination_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetOfferListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetOfferListRequest_Pagination_OneOfCase_Paging = 2,
};

/**
 * Запрос получения коммерческих возможностей
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetOfferListRequest : GPBMessage

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

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

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

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1GetOfferListResponse

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetOfferListResponse_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetOfferListResponse_FieldNumber_Data_p = 1,
  KEYAPISSUBSCRIPTIONV1GetOfferListResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetOfferListResponse_Type_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetOfferListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetOfferListResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISSUBSCRIPTIONV1GetOfferListResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Коммерческая возможность */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1Offer *data_p;

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

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1GetOfferListResponse_Error

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetOfferListResponse_Error_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetOfferListResponse_Error_FieldNumber_OfferFilterValidation = 1,
  KEYAPISSUBSCRIPTIONV1GetOfferListResponse_Error_FieldNumber_OfferPagingValidation = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetOfferListResponse_Error_Reason_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetOfferListResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetOfferListResponse_Error_Reason_OneOfCase_OfferFilterValidation = 1,
  KEYAPISSUBSCRIPTIONV1GetOfferListResponse_Error_Reason_OneOfCase_OfferPagingValidation = 2,
};

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

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

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

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

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1GetOfferCountRequest

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetOfferCountRequest_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetOfferCountRequest_FieldNumber_Filter = 1,
};

/**
 * Запрос получения количества коммерческих возможностей
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetOfferCountRequest : GPBMessage

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

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1GetOfferCountResponse

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetOfferCountResponse_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetOfferCountResponse_FieldNumber_Data_p = 1,
  KEYAPISSUBSCRIPTIONV1GetOfferCountResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetOfferCountResponse_Type_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetOfferCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetOfferCountResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISSUBSCRIPTIONV1GetOfferCountResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Всего коммерческих возможностей */
@property(nonatomic, readwrite) int32_t data_p;

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

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1GetOfferCountResponse_Error

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetOfferCountResponse_Error_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetOfferCountResponse_Error_FieldNumber_OfferFilterValidation = 1,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetOfferCountResponse_Error_Reason_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetOfferCountResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetOfferCountResponse_Error_Reason_OneOfCase_OfferFilterValidation = 1,
};

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

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

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

@end

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

NS_ASSUME_NONNULL_END

CF_EXTERN_C_END

#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)

// clang-format on
