// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/subscription/v1/keyapis_subscription_privilege_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 KEYAPISSUBSCRIPTIONV1GetPrivilegeCountResponse_Error;
@class KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse_Error;
@class KEYAPISSUBSCRIPTIONV1Privilege;
@class KEYAPISSUBSCRIPTIONV1PrivilegeFilter;
@class KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError;
@class KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError_FlatNumbersInvalid;
@class KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError_OrponsInvalid;
@class KEYAPISSUBSCRIPTIONV1PrivilegePaging;
@class KEYAPISSUBSCRIPTIONV1PrivilegePaging_ValidationError;
@class KEYAPISSUBSCRIPTIONV1PrivilegePaging_ValidationError_LimitInvalid;
@class KEYAPISSUBSCRIPTIONV1PrivilegePaging_ValidationError_OffsetInvalid;

NS_ASSUME_NONNULL_BEGIN

#pragma mark - Enum KEYAPISSUBSCRIPTIONV1Privilege_Type

/** Типы привилегий */
typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1Privilege_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.
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISSUBSCRIPTIONV1Privilege_Type_TypeUnknown = 0,

  /**
   * Умный домофон.
   * Базовые функции.
   * Право доступа к разделу с домофонами и калиткаи.
   * Действие.
   * Закрывает услуги: get_devices_intercom
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_IntercomUse = 1,

  /**
   * Умный домофон.
   * Базовые функции.
   * Право использовать функционал открытия двери домофона и калитки.
   * Действие.
   * Закрывает услуги: post_devices_open_intercom
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_IntercomOpen = 2,

  /**
   * Умный домофон.
   * Коды.
   * Право использовать функционал кодов домофонов и калиток.
   * Действие.
   * Закрывает услуги: get_devices_codes_intercom, post_devices_codes_intercom, delete_devices_codes_intercom
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_IntercomCodeUse = 3,

  /**
   * Умный домофон.
   * Ключи.
   * Право использовать функционал физических ключей домофонов и калиток.
   * Действие.
   * Закрывает услуги: get_devices_rfids_intercom, post_devices_rfids_barrier, delete_devices_rfids_barrier
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_IntercomRfidUse = 4,

  /**
   * Умный домофон.
   * События.
   * Право использовать функционал журнала событий домофонов и калиток.
   * Действие.
   * Закрывает услуги: get_events_intercom
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_IntercomEventUse = 5,

  /**
   * Умный домофон.
   * Камеры.
   * Право использовать функционал просмотра камер и лайв видео с домофонов и калиток.
   * Действие.
   * Закрывает услуги: get_devices_camera_intercom
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_IntercomCameraUse = 6,

  /**
   * Умный домофон.
   * Камеры.
   * Право использовать функционал архива видео с камер домофонов и калиток.
   * Действие.
   * Закрывает услуги: get_video_archive_intercom
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_IntercomCameraArchive = 7,

  /**
   * Умный домофон.
   * Переадресация.
   * Право перенаправления входящих вызова от домофона в приложения, используется только на сервере.
   * Поведение.
   * Закрывает услуги: devices_call_redirect_to_mobile_app_behavior
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_IntercomCallredirectApp = 8,

  /**
   * Умный домофон.
   * Переадресация.
   * Право перенаправление входящих вызовов от домофона на номера ТФОП, используется только на сервере.
   * Поведение.
   * Закрывает услуги: devices_call_redirect_to_pstn_behavior
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_IntercomCallredirectPstn = 9,

  /**
   * Умный домофон.
   * Переадресация.
   * Право перенаправление входящих вызовов от домофона на номера SIP, используется только на сервере.
   * Поведение.
   * Закрывает услуги: devices_call_redirect_to_sip_behavior
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_IntercomCallredirectSip = 10,

  /**
   * Умный шлагбаум.
   * Базовые функции.
   * Право доступа к разделу шлагбаумов.
   * Действие.
   * Закрывает услуги: get_devices_barrier
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_BarrierUse = 11,

  /**
   * Умный шлагбаум.
   * Базовые функции.
   * Право использовать функционала поднятия стрелы шлагбаума.
   * Действие.
   * Закрывает услуги: post_devices_open_barrier
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_BarrierOpen = 12,

  /**
   * Умный шлагбаум.
   * Коды.
   * Право использовать функционал открытия шлагбаума по звонку на короткий номер.
   * Действие.
   * Закрывает услуги: get_devices_codes_barrier, post_devices_codes_barrier, delete_devices_codes_barrier
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_BarrierCodeUse = 13,

  /**
   * Умный шлагбаум.
   * События.
   * Право использовать функционал журнала событий шлагбаума.
   * Действие.
   * Закрывает услуги: get_events_barrier
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_BarrierEventUse = 14,

  /**
   * Умный шлагбаум.
   * Камеры.
   * Право использовать функционал просмотра камер и лайв видео с шлагбаумов.
   * Действие.
   * Закрывает услуги: get_devices_camera_barrier
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_BarrierCameraUse = 15,

  /**
   * Умный шлагбаум.
   * Камеры.
   * Право использовать функционал архива видео с камер, направленных на шлагбаум.
   * Действие.
   * Закрывает услуги: get_video_archive_barrier
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_BarrierCameraArchive = 16,

  /**
   * Распознавание лица.
   * Фото.
   * Право доступа к разделу распознавания лиц.
   * Действие.
   * Закрывает услуги: get_photo_fr_intercom, fr_intercom_access_behavior, post_photo_fr_intercom, delete_photo_fr_intercom
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_FrUse = 17,

  /**
   * Телеметрия.
   * Базовые функции.
   * Право доступа к разделу показаний приборов учёта.
   * Действие.
   * Закрывает услуги: get_telemetry_rooms_layout
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_TelemetryUse = 18,

  /**
   * Камеры.
   * Базовые функции.
   * Право доступа к разделу камер и лайв видео с них.
   * Действие.
   * Закрывает услуги: get_devices_camera, get_events_camera, get_devices_camera_access_control_panel, get_devices_camera_barrier, get_devices_camera_intercom
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_CameraUse = 19,

  /**
   * Камеры.
   * Базовые функции.
   * Право использовать функционал архива видео с камер видеонаблюдения.
   * Действие.
   * Закрывает услуги: get_video_archive, get_video_archive_access_control_panel
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_CameraArchive = 20,

  /**
   * Умный домофон.
   * Переадресация.
   * Право приёма входящих вызовов от домофона на аналоговую трубку, используется только на сервере.
   * Поведение.
   * Закрывает услуги: devices_call_to_cms_phones_behavior
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_IntercomCmsPhonesUse = 21,

  /**
   * Умный домофон.
   * Переадресация.
   * Право приёма входящих вызовов от домофона на аналоговую трубку, используется только на сервере.
   * Поведение.
   * Закрывает услуги: get_events_camera
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_Type_CameraEventUse = 22,
};

GPBEnumDescriptor *KEYAPISSUBSCRIPTIONV1Privilege_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 KEYAPISSUBSCRIPTIONV1Privilege_Type_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISSUBSCRIPTIONV1Privilege_StateType

/** Типы состояний привилегий */
typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1Privilege_StateType) {
  /**
   * 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.
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_StateType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISSUBSCRIPTIONV1Privilege_StateType_StateTypeUnknown = 0,

  /**
   * Услуга доступная для подключения на доме пользователя, но не активна.
   * Услуга есть в доступных КВ на ОРПОН, но её нет у пользователя
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_StateType_CanBePaid = 1,

  /**
   * Услуга не оплачена и не активна.
   * Услуга есть в подписке в статусе: BLOCKED
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_StateType_NotPaid = 2,

  /**
   * Услуга отключается, но ещё активна.
   * Услуга есть в подписке в статусе: SCHEDULED_CANCELED
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_StateType_TurnsOff = 3,

  /**
   * Услуга в промо-периоде и активна.
   * Услуга есть в подписке в статусе: SETUP.
   * Обычно так создают промоподписки
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_StateType_Promo = 4,

  /**
   * Услуга оплачена и активна.
   * Услуга есть в подписке в статусе: ACTIVE.
   * Либо услуга есть в подписке с неблокируемой услугой
   **/
  KEYAPISSUBSCRIPTIONV1Privilege_StateType_Paid = 5,
};

GPBEnumDescriptor *KEYAPISSUBSCRIPTIONV1Privilege_StateType_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 KEYAPISSUBSCRIPTIONV1Privilege_StateType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISSUBSCRIPTIONV1PrivilegePaging_OrderByType

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

  /** По уникальному ключу: orpon+flat_number+type */
  KEYAPISSUBSCRIPTIONV1PrivilegePaging_OrderByType_Key = 1,
};

GPBEnumDescriptor *KEYAPISSUBSCRIPTIONV1PrivilegePaging_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 KEYAPISSUBSCRIPTIONV1PrivilegePaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISSUBSCRIPTIONV1PrivilegePaging_DirectionType

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

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

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

GPBEnumDescriptor *KEYAPISSUBSCRIPTIONV1PrivilegePaging_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 KEYAPISSUBSCRIPTIONV1PrivilegePaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - KEYAPISSUBSCRIPTIONV1KeyapisSubscriptionPrivilegeV1Root

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

#pragma mark - KEYAPISSUBSCRIPTIONV1Privilege

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1Privilege_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1Privilege_FieldNumber_Orpon = 1,
  KEYAPISSUBSCRIPTIONV1Privilege_FieldNumber_FlatNumber = 2,
  KEYAPISSUBSCRIPTIONV1Privilege_FieldNumber_Type = 3,
  KEYAPISSUBSCRIPTIONV1Privilege_FieldNumber_StateType = 4,
};

/**
 * Привилегия
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1Privilege : GPBMessage

/**
 * ОРПОН.
 * Идентификатор дома.
 * Уникальный ключ: поля в порядке 1,2,3
 **/
@property(nonatomic, readwrite) int64_t orpon;

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

/** Тип привилегии */
@property(nonatomic, readwrite) KEYAPISSUBSCRIPTIONV1Privilege_Type type;

/** Состояние привилегии */
@property(nonatomic, readwrite) KEYAPISSUBSCRIPTIONV1Privilege_StateType stateType;

@end

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

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

#pragma mark - KEYAPISSUBSCRIPTIONV1PrivilegeFilter

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1PrivilegeFilter_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1PrivilegeFilter_FieldNumber_OrponsArray = 1,
  KEYAPISSUBSCRIPTIONV1PrivilegeFilter_FieldNumber_FlatNumbersArray = 2,
  KEYAPISSUBSCRIPTIONV1PrivilegeFilter_FieldNumber_TypesArray = 3,
  KEYAPISSUBSCRIPTIONV1PrivilegeFilter_FieldNumber_StateTypesArray = 4,
};

/**
 * Фильтр по привилегиям
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1PrivilegeFilter : 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;

/** По типам привилегий */
// |typesArray| contains |KEYAPISSUBSCRIPTIONV1Privilege_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;

/** По состояниям привилегий */
// |stateTypesArray| contains |KEYAPISSUBSCRIPTIONV1Privilege_StateType|
@property(nonatomic, readwrite, strong, null_resettable) GPBEnumArray *stateTypesArray;
/** The number of items in @c stateTypesArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger stateTypesArray_Count;

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError_FieldNumber_Orpons = 1,
  KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError_FieldNumber_FlatNumbers = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError_Reason_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError_Reason_OneOfCase_Orpons = 1,
  KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError_Reason_OneOfCase_FlatNumbers = 2,
};

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

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

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

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

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError_OrponsInvalid

/**
 * Причины:
 * - Формат ОРПОН некорректен;
 * - Передано отрицательное значение
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError_OrponsInvalid : GPBMessage

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError_FlatNumbersInvalid

/**
 * Причины:
 * - Формат квартиры некорректен (например, длина номера квартира более 4 знаков);
 * - Номер квартиры содержит буквы
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError_FlatNumbersInvalid : GPBMessage

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1PrivilegePaging

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1PrivilegePaging_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1PrivilegePaging_FieldNumber_OrderByType = 1,
  KEYAPISSUBSCRIPTIONV1PrivilegePaging_FieldNumber_DirectionType = 2,
  KEYAPISSUBSCRIPTIONV1PrivilegePaging_FieldNumber_Limit = 3,
  KEYAPISSUBSCRIPTIONV1PrivilegePaging_FieldNumber_Offset = 4,
};

/**
 * Пагинация по привилегиям
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1PrivilegePaging : GPBMessage

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

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

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

#pragma mark - KEYAPISSUBSCRIPTIONV1PrivilegePaging_ValidationError

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1PrivilegePaging_ValidationError_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1PrivilegePaging_ValidationError_FieldNumber_Limit = 1,
  KEYAPISSUBSCRIPTIONV1PrivilegePaging_ValidationError_FieldNumber_Offset = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1PrivilegePaging_ValidationError_Reason_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1PrivilegePaging_ValidationError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1PrivilegePaging_ValidationError_Reason_OneOfCase_Limit = 1,
  KEYAPISSUBSCRIPTIONV1PrivilegePaging_ValidationError_Reason_OneOfCase_Offset = 2,
};

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

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

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

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

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1PrivilegePaging_ValidationError_LimitInvalid

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

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1PrivilegePaging_ValidationError_OffsetInvalid

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

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1GetPrivilegeListRequest

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPrivilegeListRequest_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetPrivilegeListRequest_FieldNumber_Filter = 1,
  KEYAPISSUBSCRIPTIONV1GetPrivilegeListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPrivilegeListRequest_Pagination_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetPrivilegeListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetPrivilegeListRequest_Pagination_OneOfCase_Paging = 2,
};

/**
 * Запрос получения привилегий
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetPrivilegeListRequest : GPBMessage

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

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

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

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse_FieldNumber_Data_p = 1,
  KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse_Type_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Предоставленная привилегия */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1Privilege *data_p;

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

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse_Error

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse_Error_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse_Error_FieldNumber_PrivilegeFilterValidation = 1,
  KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse_Error_FieldNumber_PrivilegePagingValidation = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse_Error_Reason_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse_Error_Reason_OneOfCase_PrivilegeFilterValidation = 1,
  KEYAPISSUBSCRIPTIONV1GetPrivilegeListResponse_Error_Reason_OneOfCase_PrivilegePagingValidation = 2,
};

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

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

/** Ошибка фильтрации по страницам */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError *privilegeFilterValidation;

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

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1GetPrivilegeCountRequest

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPrivilegeCountRequest_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetPrivilegeCountRequest_FieldNumber_Filter = 1,
};

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

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

@end

#pragma mark - KEYAPISSUBSCRIPTIONV1GetPrivilegeCountResponse

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPrivilegeCountResponse_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetPrivilegeCountResponse_FieldNumber_Data_p = 1,
  KEYAPISSUBSCRIPTIONV1GetPrivilegeCountResponse_FieldNumber_Error = 2,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPrivilegeCountResponse_Type_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetPrivilegeCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetPrivilegeCountResponse_Type_OneOfCase_Data_p = 1,
  KEYAPISSUBSCRIPTIONV1GetPrivilegeCountResponse_Type_OneOfCase_Error = 2,
};

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

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

/** Всего привилегий */
@property(nonatomic, readwrite) int32_t data_p;

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

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1GetPrivilegeCountResponse_Error

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPrivilegeCountResponse_Error_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetPrivilegeCountResponse_Error_FieldNumber_PrivilegeFilterValidation = 1,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPrivilegeCountResponse_Error_Reason_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetPrivilegeCountResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetPrivilegeCountResponse_Error_Reason_OneOfCase_PrivilegeFilterValidation = 1,
};

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

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

/** Ошибка фильтрации по страницам по привилегиям */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISSUBSCRIPTIONV1PrivilegeFilter_ValidationError *privilegeFilterValidation;

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1GetPrivilegeCheckRequest

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPrivilegeCheckRequest_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetPrivilegeCheckRequest_FieldNumber_Orpon = 1,
  KEYAPISSUBSCRIPTIONV1GetPrivilegeCheckRequest_FieldNumber_FlatNumber = 2,
  KEYAPISSUBSCRIPTIONV1GetPrivilegeCheckRequest_FieldNumber_PrivilegeType = 3,
};

/**
 * Запрос проверки предоставленной привилегии
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetPrivilegeCheckRequest : GPBMessage

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

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

/** Тип привилегии */
@property(nonatomic, readwrite) KEYAPISSUBSCRIPTIONV1Privilege_Type privilegeType;

@end

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

#pragma mark - KEYAPISSUBSCRIPTIONV1GetPrivilegeCheckResponse

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPrivilegeCheckResponse_FieldNumber) {
  KEYAPISSUBSCRIPTIONV1GetPrivilegeCheckResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISSUBSCRIPTIONV1GetPrivilegeCheckResponse_Type_OneOfCase) {
  KEYAPISSUBSCRIPTIONV1GetPrivilegeCheckResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISSUBSCRIPTIONV1GetPrivilegeCheckResponse_Type_OneOfCase_Data_p = 1,
};

/**
 * Результат запроса метода проверки предоставленной привилегии
 **/
GPB_FINAL @interface KEYAPISSUBSCRIPTIONV1GetPrivilegeCheckResponse : GPBMessage

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

/**
 * Доступна ли привилегия на квартире.
 * Вернётся true если статусы:
 * - PROMO;
 * - PAID;
 * - TURNS_OFF.
 * Вернётся false если статусы:
 * - NOT_PAID;
 * - CAN_BE_PAID;
 * - STATE_TYPE_UNKNOWN;
 * - Не найден
 **/
@property(nonatomic, readwrite) BOOL data_p;

@end

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

NS_ASSUME_NONNULL_END

CF_EXTERN_C_END

#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)

// clang-format on
