// Generated by the protocol buffer compiler.  DO NOT EDIT!
// clang-format off
// source: keyapis/invoice/v1/keyapis_invoice_invoice_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 KEYAPISINVOICEV1CreateInvoiceResponse_Error;
@class KEYAPISINVOICEV1CreateInvoiceResponse_Error_MissingUserContacts;
@class KEYAPISINVOICEV1GetInvoiceListResponse_Error;
@class KEYAPISINVOICEV1GetInvoiceResponse_Error;
@class KEYAPISINVOICEV1Invoice;
@class KEYAPISINVOICEV1InvoiceFilter;
@class KEYAPISINVOICEV1InvoicePaging;
@class KEYAPISINVOICEV1Invoice_ExternalError;
@class KEYAPISINVOICEV1Invoice_ExternalError_ExternalSystemError;
@class KEYAPISINVOICEV1Invoice_Position;
@class KEYAPISINVOICEV1Invoice_SavingError;
@class KEYAPISINVOICEV1Invoice_SavingError_InvoiceAlreadyExists;
@class KEYAPISINVOICEV1PostInvoiceConfirmRequest_Card;
@class KEYAPISINVOICEV1ValidationError;

NS_ASSUME_NONNULL_BEGIN

#pragma mark - Enum KEYAPISINVOICEV1Invoice_InvoiceStatusType

/** Справочник типов статусов оплаты счёта */
typedef GPB_ENUM(KEYAPISINVOICEV1Invoice_InvoiceStatusType) {
  /**
   * 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.
   **/
  KEYAPISINVOICEV1Invoice_InvoiceStatusType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISINVOICEV1Invoice_InvoiceStatusType_InvoiceStatusTypeUnknown = 0,

  /** Создан, ожидает подтверждения */
  KEYAPISINVOICEV1Invoice_InvoiceStatusType_Planned = 1,

  /** Ожидает оплаты */
  KEYAPISINVOICEV1Invoice_InvoiceStatusType_Pending = 2,

  /** Ошибка оплаты */
  KEYAPISINVOICEV1Invoice_InvoiceStatusType_Error = 3,

  /** Оплачен */
  KEYAPISINVOICEV1Invoice_InvoiceStatusType_Paid = 4,

  /** Отменен */
  KEYAPISINVOICEV1Invoice_InvoiceStatusType_Cancelled = 5,
};

GPBEnumDescriptor *KEYAPISINVOICEV1Invoice_InvoiceStatusType_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 KEYAPISINVOICEV1Invoice_InvoiceStatusType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISINVOICEV1Invoice_CardType

/** Справочник банковских карт */
typedef GPB_ENUM(KEYAPISINVOICEV1Invoice_CardType) {
  /**
   * 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.
   **/
  KEYAPISINVOICEV1Invoice_CardType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISINVOICEV1Invoice_CardType_CardTypeUnknown = 0,

  /** Карта VISA */
  KEYAPISINVOICEV1Invoice_CardType_Visa = 1,

  /** Карта EuroCard/MasterCard */
  KEYAPISINVOICEV1Invoice_CardType_EcMc = 2,

  /** Карта DinersClub */
  KEYAPISINVOICEV1Invoice_CardType_Dcl = 3,

  /** Карта JCB */
  KEYAPISINVOICEV1Invoice_CardType_Jcb = 4,

  /** Карта American Express */
  KEYAPISINVOICEV1Invoice_CardType_Amex = 5,

  /** Платежная система "Мир" */
  KEYAPISINVOICEV1Invoice_CardType_Mir = 6,
};

GPBEnumDescriptor *KEYAPISINVOICEV1Invoice_CardType_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 KEYAPISINVOICEV1Invoice_CardType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISINVOICEV1Invoice_PayInterfaceType

/** Справочник методов платежа */
typedef GPB_ENUM(KEYAPISINVOICEV1Invoice_PayInterfaceType) {
  /**
   * 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.
   **/
  KEYAPISINVOICEV1Invoice_PayInterfaceType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISINVOICEV1Invoice_PayInterfaceType_PayInterfaceTypeUnknown = 0,

  /** Оплата через интерфейс предпроцессинга */
  KEYAPISINVOICEV1Invoice_PayInterfaceType_Gui = 1,

  /** Оплата с использованием ранее созданного способа платежа, настроенного по умолчанию */
  KEYAPISINVOICEV1Invoice_PayInterfaceType_M2M = 2,
};

GPBEnumDescriptor *KEYAPISINVOICEV1Invoice_PayInterfaceType_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 KEYAPISINVOICEV1Invoice_PayInterfaceType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISINVOICEV1Invoice_PaywayType

/** Справочник типов платежных средств */
typedef GPB_ENUM(KEYAPISINVOICEV1Invoice_PaywayType) {
  /**
   * 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.
   **/
  KEYAPISINVOICEV1Invoice_PaywayType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISINVOICEV1Invoice_PaywayType_PaywayTypeUnknown = 0,

  /** Банковская карта */
  KEYAPISINVOICEV1Invoice_PaywayType_BankCard = 1,

  /** Сервис быстрых платежей */
  KEYAPISINVOICEV1Invoice_PaywayType_Sbp = 2,

  /** Связка Сбербанка */
  KEYAPISINVOICEV1Invoice_PaywayType_SberPay = 3,
};

GPBEnumDescriptor *KEYAPISINVOICEV1Invoice_PaywayType_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 KEYAPISINVOICEV1Invoice_PaywayType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISINVOICEV1InvoicePaging_OrderByType

/**
 * Справочник типов значений сортировки.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISINVOICEV1InvoicePaging_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.
   **/
  KEYAPISINVOICEV1InvoicePaging_OrderByType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISINVOICEV1InvoicePaging_OrderByType_OrderByTypeUnknown = 0,

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

  /** По дате оплаты */
  KEYAPISINVOICEV1InvoicePaging_OrderByType_PaidAt = 2,

  /** По дате создания */
  KEYAPISINVOICEV1InvoicePaging_OrderByType_CreatedAt = 3,
};

GPBEnumDescriptor *KEYAPISINVOICEV1InvoicePaging_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 KEYAPISINVOICEV1InvoicePaging_OrderByType_IsValidValue(int32_t value);

#pragma mark - Enum KEYAPISINVOICEV1InvoicePaging_DirectionType

/**
 * Справочник типов направлений сортировки.
 * # Тип: byte
 **/
typedef GPB_ENUM(KEYAPISINVOICEV1InvoicePaging_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.
   **/
  KEYAPISINVOICEV1InvoicePaging_DirectionType_GPBUnrecognizedEnumeratorValue = kGPBUnrecognizedEnumeratorValue,
  /** Значение не указано */
  KEYAPISINVOICEV1InvoicePaging_DirectionType_DirectionTypeUnknown = 0,

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

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

GPBEnumDescriptor *KEYAPISINVOICEV1InvoicePaging_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 KEYAPISINVOICEV1InvoicePaging_DirectionType_IsValidValue(int32_t value);

#pragma mark - KEYAPISINVOICEV1KeyapisInvoiceInvoiceV1Root

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

#pragma mark - KEYAPISINVOICEV1Invoice

typedef GPB_ENUM(KEYAPISINVOICEV1Invoice_FieldNumber) {
  KEYAPISINVOICEV1Invoice_FieldNumber_Id_p = 1,
  KEYAPISINVOICEV1Invoice_FieldNumber_Title = 2,
  KEYAPISINVOICEV1Invoice_FieldNumber_UserId = 3,
  KEYAPISINVOICEV1Invoice_FieldNumber_InvoiceStatusType = 4,
  KEYAPISINVOICEV1Invoice_FieldNumber_CreatedAt = 5,
  KEYAPISINVOICEV1Invoice_FieldNumber_UpdatedAt = 6,
  KEYAPISINVOICEV1Invoice_FieldNumber_PositionsArray = 7,
  KEYAPISINVOICEV1Invoice_FieldNumber_PayInterfaceType = 8,
  KEYAPISINVOICEV1Invoice_FieldNumber_PaywayType = 9,
  KEYAPISINVOICEV1Invoice_FieldNumber_StatusChangedAt = 10,
  KEYAPISINVOICEV1Invoice_FieldNumber_PaidAt = 11,
  KEYAPISINVOICEV1Invoice_FieldNumber_PayURL = 12,
  KEYAPISINVOICEV1Invoice_FieldNumber_PaidByCardMasked = 13,
  KEYAPISINVOICEV1Invoice_FieldNumber_PaidByCardEsppId = 14,
  KEYAPISINVOICEV1Invoice_FieldNumber_CardType = 15,
  KEYAPISINVOICEV1Invoice_FieldNumber_EsppReqStatus = 16,
  KEYAPISINVOICEV1Invoice_FieldNumber_EsppReqUserMsg = 17,
  KEYAPISINVOICEV1Invoice_FieldNumber_EsppInvoiceId = 18,
  KEYAPISINVOICEV1Invoice_FieldNumber_PhoneNumber = 19,
  KEYAPISINVOICEV1Invoice_FieldNumber_Email = 20,
};

/**
 * Выставленный счёт
 **/
GPB_FINAL @interface KEYAPISINVOICEV1Invoice : GPBMessage

/**
 * Идентификатор платежа.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *id_p;

/** Описание платежа */
@property(nonatomic, readwrite, copy, null_resettable) NSString *title;

/** Идентификатор пользователя */
@property(nonatomic, readwrite) int32_t userId;

/** Статус платежа */
@property(nonatomic, readwrite) KEYAPISINVOICEV1Invoice_InvoiceStatusType invoiceStatusType;

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

/**
 * Дата обновления платежа.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *updatedAt;
/** Test to see if @c updatedAt has been set. */
@property(nonatomic, readwrite) BOOL hasUpdatedAt;

/** Позиция счета */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<KEYAPISINVOICEV1Invoice_Position*> *positionsArray;
/** The number of items in @c positionsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger positionsArray_Count;

/** Метод платежа */
@property(nonatomic, readwrite) KEYAPISINVOICEV1Invoice_PayInterfaceType payInterfaceType;

/** Способ оплаты */
@property(nonatomic, readwrite) KEYAPISINVOICEV1Invoice_PaywayType paywayType;

/**
 * Дата изменения статуса платежа.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *statusChangedAt;
/** Test to see if @c statusChangedAt has been set. */
@property(nonatomic, readwrite) BOOL hasStatusChangedAt;

/**
 * Дата платежа.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *paidAt;
/** Test to see if @c paidAt has been set. */
@property(nonatomic, readwrite) BOOL hasPaidAt;

/** Платежная ссылка */
@property(nonatomic, readwrite, copy, null_resettable) NSString *payURL;

/** Маскированный номер карты при платеже */
@property(nonatomic, readwrite, copy, null_resettable) NSString *paidByCardMasked;

/** Идентификатор платежного средства в внешней системы */
@property(nonatomic, readwrite, copy, null_resettable) NSString *paidByCardEsppId;

/** Тип банковской карты */
@property(nonatomic, readwrite) KEYAPISINVOICEV1Invoice_CardType cardType;

/** Код ошибки внешней системы */
@property(nonatomic, readwrite) int32_t esppReqStatus;

/** Комментарий к статусу платежа из внешней системы */
@property(nonatomic, readwrite, copy, null_resettable) NSString *esppReqUserMsg;

/** Уникальный номер транзакции в внешней системы */
@property(nonatomic, readwrite, copy, null_resettable) NSString *esppInvoiceId;

/** Номер телефона */
@property(nonatomic, readwrite, copy, null_resettable) NSString *phoneNumber;

/** Электронная почта */
@property(nonatomic, readwrite, copy, null_resettable) NSString *email;

@end

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

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

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

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

#pragma mark - KEYAPISINVOICEV1Invoice_ExternalError

typedef GPB_ENUM(KEYAPISINVOICEV1Invoice_ExternalError_FieldNumber) {
  KEYAPISINVOICEV1Invoice_ExternalError_FieldNumber_ExternalSystemError = 1,
};

typedef GPB_ENUM(KEYAPISINVOICEV1Invoice_ExternalError_Reason_OneOfCase) {
  KEYAPISINVOICEV1Invoice_ExternalError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISINVOICEV1Invoice_ExternalError_Reason_OneOfCase_ExternalSystemError = 1,
};

/**
 * Ошибки внешней системы
 **/
GPB_FINAL @interface KEYAPISINVOICEV1Invoice_ExternalError : GPBMessage

/** Причина */
@property(nonatomic, readonly) KEYAPISINVOICEV1Invoice_ExternalError_Reason_OneOfCase reasonOneOfCase;

/** Запрос к внешней системе вернул ошибку или прекращен по таймауту */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISINVOICEV1Invoice_ExternalError_ExternalSystemError *externalSystemError;

@end

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

#pragma mark - KEYAPISINVOICEV1Invoice_ExternalError_ExternalSystemError

/**
 * Запрос к внешней системе вернул ошибку или прекращен по таймауту
 **/
GPB_FINAL @interface KEYAPISINVOICEV1Invoice_ExternalError_ExternalSystemError : GPBMessage

@end

#pragma mark - KEYAPISINVOICEV1Invoice_Position

typedef GPB_ENUM(KEYAPISINVOICEV1Invoice_Position_FieldNumber) {
  KEYAPISINVOICEV1Invoice_Position_FieldNumber_Id_p = 1,
  KEYAPISINVOICEV1Invoice_Position_FieldNumber_InvoiceId = 2,
  KEYAPISINVOICEV1Invoice_Position_FieldNumber_Title = 3,
  KEYAPISINVOICEV1Invoice_Position_FieldNumber_Category = 4,
  KEYAPISINVOICEV1Invoice_Position_FieldNumber_Amount = 5,
  KEYAPISINVOICEV1Invoice_Position_FieldNumber_CreatedAt = 6,
  KEYAPISINVOICEV1Invoice_Position_FieldNumber_UpdatedAt = 7,
  KEYAPISINVOICEV1Invoice_Position_FieldNumber_MrfId = 8,
  KEYAPISINVOICEV1Invoice_Position_FieldNumber_RfId = 9,
  KEYAPISINVOICEV1Invoice_Position_FieldNumber_InstanceId = 10,
  KEYAPISINVOICEV1Invoice_Position_FieldNumber_OfferingId = 11,
  KEYAPISINVOICEV1Invoice_Position_FieldNumber_DueDateAt = 12,
  KEYAPISINVOICEV1Invoice_Position_FieldNumber_SvcTypeId = 13,
  KEYAPISINVOICEV1Invoice_Position_FieldNumber_IsDiscount = 14,
};

/**
 * Позиция счета
 **/
GPB_FINAL @interface KEYAPISINVOICEV1Invoice_Position : GPBMessage

/**
 * Идентификатор позиции.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *id_p;

/**
 * Идентификатор платежа.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *invoiceId;

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

/** Категория позиции (='subscription') */
@property(nonatomic, readwrite, copy, null_resettable) NSString *category;

/**
 * Цена в рублях.
 * Число должно быть больше 0
 **/
@property(nonatomic, readwrite) float amount;

/**
 * Дата создания позиции платежа.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *createdAt;
/** Test to see if @c createdAt has been set. */
@property(nonatomic, readwrite) BOOL hasCreatedAt;

/**
 * Дата обновления позиции платежа.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *updatedAt;
/** Test to see if @c updatedAt has been set. */
@property(nonatomic, readwrite) BOOL hasUpdatedAt;

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

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

/**
 * Идентификатор экземпляра оплачиваемой подписки.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *instanceId;

/** Идентификатор предложения оплачиваемой подписки */
@property(nonatomic, readwrite) int32_t offeringId;

/** Срок окончания оплачиваемого периода */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *dueDateAt;
/** Test to see if @c dueDateAt has been set. */
@property(nonatomic, readwrite) BOOL hasDueDateAt;

/** Идентификатор получателя платежа */
@property(nonatomic, readwrite, copy, null_resettable) NSString *svcTypeId;

/** Признак скидки */
@property(nonatomic, readwrite) BOOL isDiscount;

@end

#pragma mark - KEYAPISINVOICEV1Invoice_SavingError

typedef GPB_ENUM(KEYAPISINVOICEV1Invoice_SavingError_FieldNumber) {
  KEYAPISINVOICEV1Invoice_SavingError_FieldNumber_InvoiceAlreadyExists = 1,
};

typedef GPB_ENUM(KEYAPISINVOICEV1Invoice_SavingError_Reason_OneOfCase) {
  KEYAPISINVOICEV1Invoice_SavingError_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISINVOICEV1Invoice_SavingError_Reason_OneOfCase_InvoiceAlreadyExists = 1,
};

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

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

/** У пользователя уже есть платеж со статусом PENDING */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISINVOICEV1Invoice_SavingError_InvoiceAlreadyExists *invoiceAlreadyExists;

@end

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

#pragma mark - KEYAPISINVOICEV1Invoice_SavingError_InvoiceAlreadyExists

/**
 * У пользователя уже есть платеж со статусом PENDING
 **/
GPB_FINAL @interface KEYAPISINVOICEV1Invoice_SavingError_InvoiceAlreadyExists : GPBMessage

@end

#pragma mark - KEYAPISINVOICEV1InvoiceFilter

typedef GPB_ENUM(KEYAPISINVOICEV1InvoiceFilter_FieldNumber) {
  KEYAPISINVOICEV1InvoiceFilter_FieldNumber_UserId = 1,
  KEYAPISINVOICEV1InvoiceFilter_FieldNumber_InvoiceStatusType = 2,
};

/**
 * Фильтр инвойсов
 **/
GPB_FINAL @interface KEYAPISINVOICEV1InvoiceFilter : GPBMessage

/** Идентификатор пользователя */
@property(nonatomic, readwrite) int32_t userId;

/** Статус платежа */
@property(nonatomic, readwrite) KEYAPISINVOICEV1Invoice_InvoiceStatusType invoiceStatusType;

@end

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

#pragma mark - KEYAPISINVOICEV1InvoicePaging

typedef GPB_ENUM(KEYAPISINVOICEV1InvoicePaging_FieldNumber) {
  KEYAPISINVOICEV1InvoicePaging_FieldNumber_OrderByType = 1,
  KEYAPISINVOICEV1InvoicePaging_FieldNumber_DirectionType = 2,
  KEYAPISINVOICEV1InvoicePaging_FieldNumber_Limit = 3,
  KEYAPISINVOICEV1InvoicePaging_FieldNumber_Offset = 4,
};

/**
 * Постраничный вывод
 **/
GPB_FINAL @interface KEYAPISINVOICEV1InvoicePaging : GPBMessage

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

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

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

/**
 * Сдвиг.
 * # Диапазон: 0..2147483647
 **/
@property(nonatomic, readwrite) int32_t offset;

@end

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

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

#pragma mark - KEYAPISINVOICEV1CreateInvoiceRequest

typedef GPB_ENUM(KEYAPISINVOICEV1CreateInvoiceRequest_FieldNumber) {
  KEYAPISINVOICEV1CreateInvoiceRequest_FieldNumber_UserId = 1,
  KEYAPISINVOICEV1CreateInvoiceRequest_FieldNumber_PositionsArray = 2,
  KEYAPISINVOICEV1CreateInvoiceRequest_FieldNumber_PayInterfaceType = 3,
  KEYAPISINVOICEV1CreateInvoiceRequest_FieldNumber_PaywayType = 4,
  KEYAPISINVOICEV1CreateInvoiceRequest_FieldNumber_ReturnURL = 5,
  KEYAPISINVOICEV1CreateInvoiceRequest_FieldNumber_PhoneNumber = 6,
  KEYAPISINVOICEV1CreateInvoiceRequest_FieldNumber_Email = 7,
  KEYAPISINVOICEV1CreateInvoiceRequest_FieldNumber_Title = 8,
};

/**
 * Запрос на создание платежа
 **/
GPB_FINAL @interface KEYAPISINVOICEV1CreateInvoiceRequest : GPBMessage

/** Идентификатор пользователя */
@property(nonatomic, readwrite) int32_t userId;

/** Позиция счета */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<KEYAPISINVOICEV1Invoice_Position*> *positionsArray;
/** The number of items in @c positionsArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger positionsArray_Count;

/** Метод платежа */
@property(nonatomic, readwrite) KEYAPISINVOICEV1Invoice_PayInterfaceType payInterfaceType;

/**
 * Способ оплаты.
 * По умолчанию: BANK_CARD
 **/
@property(nonatomic, readwrite) KEYAPISINVOICEV1Invoice_PaywayType paywayType;

/**
 * Ссылка для перехода после оплаты.
 * Если не передан подставится значение по умолчанию
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *returnURL;

/**
 * Номер телефона.
 * Должно быть означено поле phone_number, либо поле email
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *phoneNumber;

/**
 * Электронная почта.
 * Должно быть означено поле phone_number, либо поле email
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *email;

/**
 * Описание платежа.
 * По умолчанию подставляется "Счёт от {DD.MM.YYYY}г."
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *title;

@end

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

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

#pragma mark - KEYAPISINVOICEV1CreateInvoiceResponse

typedef GPB_ENUM(KEYAPISINVOICEV1CreateInvoiceResponse_FieldNumber) {
  KEYAPISINVOICEV1CreateInvoiceResponse_FieldNumber_Error = 1,
  KEYAPISINVOICEV1CreateInvoiceResponse_FieldNumber_Data_p = 2,
};

typedef GPB_ENUM(KEYAPISINVOICEV1CreateInvoiceResponse_Type_OneOfCase) {
  KEYAPISINVOICEV1CreateInvoiceResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISINVOICEV1CreateInvoiceResponse_Type_OneOfCase_Error = 1,
  KEYAPISINVOICEV1CreateInvoiceResponse_Type_OneOfCase_Data_p = 2,
};

/**
 * Ответ на запрос создание платежа
 **/
GPB_FINAL @interface KEYAPISINVOICEV1CreateInvoiceResponse : GPBMessage

/** Тип ответа */
@property(nonatomic, readonly) KEYAPISINVOICEV1CreateInvoiceResponse_Type_OneOfCase typeOneOfCase;

/** Ошибка валидации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISINVOICEV1CreateInvoiceResponse_Error *error;

/** Платеж */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISINVOICEV1Invoice *data_p;

@end

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

#pragma mark - KEYAPISINVOICEV1CreateInvoiceResponse_Error

typedef GPB_ENUM(KEYAPISINVOICEV1CreateInvoiceResponse_Error_FieldNumber) {
  KEYAPISINVOICEV1CreateInvoiceResponse_Error_FieldNumber_Validation = 1,
  KEYAPISINVOICEV1CreateInvoiceResponse_Error_FieldNumber_MissingUserContacts = 2,
  KEYAPISINVOICEV1CreateInvoiceResponse_Error_FieldNumber_External = 3,
  KEYAPISINVOICEV1CreateInvoiceResponse_Error_FieldNumber_Saving = 4,
};

typedef GPB_ENUM(KEYAPISINVOICEV1CreateInvoiceResponse_Error_Reason_OneOfCase) {
  KEYAPISINVOICEV1CreateInvoiceResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISINVOICEV1CreateInvoiceResponse_Error_Reason_OneOfCase_Validation = 1,
  KEYAPISINVOICEV1CreateInvoiceResponse_Error_Reason_OneOfCase_MissingUserContacts = 2,
  KEYAPISINVOICEV1CreateInvoiceResponse_Error_Reason_OneOfCase_External = 3,
  KEYAPISINVOICEV1CreateInvoiceResponse_Error_Reason_OneOfCase_Saving = 4,
};

/**
 * Ошибка запроса
 **/
GPB_FINAL @interface KEYAPISINVOICEV1CreateInvoiceResponse_Error : GPBMessage

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

/** Ошибка валидации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISINVOICEV1ValidationError *validation;

/** Должно быть означено поле phone_number, либо поле email */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISINVOICEV1CreateInvoiceResponse_Error_MissingUserContacts *missingUserContacts;

/** Ошибки внешней системы */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISINVOICEV1Invoice_ExternalError *external;

/** Ошибка сохранения */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISINVOICEV1Invoice_SavingError *saving;

@end

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

#pragma mark - KEYAPISINVOICEV1CreateInvoiceResponse_Error_MissingUserContacts

/**
 * Должно быть означено поле phone_number, либо поле email
 **/
GPB_FINAL @interface KEYAPISINVOICEV1CreateInvoiceResponse_Error_MissingUserContacts : GPBMessage

@end

#pragma mark - KEYAPISINVOICEV1GetInvoiceRequest

typedef GPB_ENUM(KEYAPISINVOICEV1GetInvoiceRequest_FieldNumber) {
  KEYAPISINVOICEV1GetInvoiceRequest_FieldNumber_InvoiceId = 1,
};

/**
 * Запрос на получение статуса платежа
 **/
GPB_FINAL @interface KEYAPISINVOICEV1GetInvoiceRequest : GPBMessage

/**
 * Идентификатор платежа в Ключе.
 * # Тип: Guid
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *invoiceId;

@end

#pragma mark - KEYAPISINVOICEV1GetInvoiceResponse

typedef GPB_ENUM(KEYAPISINVOICEV1GetInvoiceResponse_FieldNumber) {
  KEYAPISINVOICEV1GetInvoiceResponse_FieldNumber_Error = 1,
  KEYAPISINVOICEV1GetInvoiceResponse_FieldNumber_Data_p = 2,
};

typedef GPB_ENUM(KEYAPISINVOICEV1GetInvoiceResponse_Type_OneOfCase) {
  KEYAPISINVOICEV1GetInvoiceResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISINVOICEV1GetInvoiceResponse_Type_OneOfCase_Error = 1,
  KEYAPISINVOICEV1GetInvoiceResponse_Type_OneOfCase_Data_p = 2,
};

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

/** Тип ответа */
@property(nonatomic, readonly) KEYAPISINVOICEV1GetInvoiceResponse_Type_OneOfCase typeOneOfCase;

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

/** Платеж */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISINVOICEV1Invoice *data_p;

@end

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

#pragma mark - KEYAPISINVOICEV1GetInvoiceResponse_Error

typedef GPB_ENUM(KEYAPISINVOICEV1GetInvoiceResponse_Error_FieldNumber) {
  KEYAPISINVOICEV1GetInvoiceResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISINVOICEV1GetInvoiceResponse_Error_Reason_OneOfCase) {
  KEYAPISINVOICEV1GetInvoiceResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISINVOICEV1GetInvoiceResponse_Error_Reason_OneOfCase_Validation = 1,
};

/**
 * Ошибка запроса
 **/
GPB_FINAL @interface KEYAPISINVOICEV1GetInvoiceResponse_Error : GPBMessage

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

/** Ошибка валидации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISINVOICEV1ValidationError *validation;

@end

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

#pragma mark - KEYAPISINVOICEV1PostInvoiceConfirmRequest

typedef GPB_ENUM(KEYAPISINVOICEV1PostInvoiceConfirmRequest_FieldNumber) {
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_FieldNumber_SrcPayId = 1,
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_FieldNumber_EsppPayId = 2,
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_FieldNumber_PayStatus = 3,
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_FieldNumber_ReqType = 4,
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_FieldNumber_Amount = 5,
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_FieldNumber_Currency = 6,
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_FieldNumber_PayMethod = 7,
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_FieldNumber_CreateTimeAt = 8,
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_FieldNumber_ReqNote = 9,
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_FieldNumber_ReqUserMsg = 10,
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_FieldNumber_PayTimeAt = 11,
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_FieldNumber_AbandonTimeAt = 12,
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_FieldNumber_Card = 13,
};

/**
 * Запрос на подтверждение платежа
 **/
GPB_FINAL @interface KEYAPISINVOICEV1PostInvoiceConfirmRequest : GPBMessage

/** Идентификатор платежа в Ключе */
@property(nonatomic, readwrite, copy, null_resettable) NSString *srcPayId;

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

/** Статус платежа из внешней системы */
@property(nonatomic, readwrite) int32_t payStatus;

/**
 * Тип запроса.
 * Должно иметь значение "confirmPayment"
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *reqType;

/** Сумма платежа в минимальных единицах валюты */
@property(nonatomic, readwrite) float amount;

/** Код валюты платежа */
@property(nonatomic, readwrite, copy, null_resettable) NSString *currency;

/** Код способа оплаты */
@property(nonatomic, readwrite, copy, null_resettable) NSString *payMethod;

/**
 * Дата регистрации платежа.
 * # Тип: DateTime
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *createTimeAt;
/** Test to see if @c createTimeAt has been set. */
@property(nonatomic, readwrite) BOOL hasCreateTimeAt;

/** Комментарий или сообщение об ошибке */
@property(nonatomic, readwrite, copy, null_resettable) NSString *reqNote;

/** Сообщение, отображаемое пользователю */
@property(nonatomic, readwrite, copy, null_resettable) NSString *reqUserMsg;

/** Время фактической оплаты. Время фактической оплаты на стороне Процессинга. Возвращается, если оплата состоялась */
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *payTimeAt;
/** Test to see if @c payTimeAt has been set. */
@property(nonatomic, readwrite) BOOL hasPayTimeAt;

/**
 * Время фактической отмены оплаты.
 * Время фактической отмены оплаты на стороне Процессинга.
 * Возвращается, если отмена оплаты состоялась
 **/
@property(nonatomic, readwrite, strong, null_resettable) GPBTimestamp *abandonTimeAt;
/** Test to see if @c abandonTimeAt has been set. */
@property(nonatomic, readwrite) BOOL hasAbandonTimeAt;

/**
 * Структура с информацией о карте плательщика.
 * Передаётся только при успешном платеже и если указаны способы оплаты payMethod = StoredBankCard либо BankCard
 **/
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISINVOICEV1PostInvoiceConfirmRequest_Card *card;
/** Test to see if @c card has been set. */
@property(nonatomic, readwrite) BOOL hasCard;

@end

#pragma mark - KEYAPISINVOICEV1PostInvoiceConfirmRequest_Card

typedef GPB_ENUM(KEYAPISINVOICEV1PostInvoiceConfirmRequest_Card_FieldNumber) {
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_Card_FieldNumber_EsppCardId = 1,
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_Card_FieldNumber_CardNum = 2,
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_Card_FieldNumber_CardKind = 3,
  KEYAPISINVOICEV1PostInvoiceConfirmRequest_Card_FieldNumber_BankName = 4,
};

/**
 * Структура с информацией о карте плательщика
 **/
GPB_FINAL @interface KEYAPISINVOICEV1PostInvoiceConfirmRequest_Card : GPBMessage

/**
 * Идентификатор платежного средства во внешней системы.
 * Возвращается в случае успешной привязки БК к УЗ
 **/
@property(nonatomic, readwrite) int32_t esppCardId;

/**
 * Номер платежного средства.
 * Маскированный номер карты. Например: 123456******7890
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *cardNum;

/** Тип банковской карты */
@property(nonatomic, readwrite, copy, null_resettable) NSString *cardKind;

/**
 * Банк-эмитент.
 * Наименование банка-эмитента. Процессинг может вернуть значение "НЕ ЗАДАВАЛСЯ".
 * В этом случае рекомендуется не отображать эту информацию для пользователя
 **/
@property(nonatomic, readwrite, copy, null_resettable) NSString *bankName;

@end

#pragma mark - KEYAPISINVOICEV1PostInvoiceConfirmResponse

/**
 * Ответ на запрос подтверждения платежа
 **/
GPB_FINAL @interface KEYAPISINVOICEV1PostInvoiceConfirmResponse : GPBMessage

@end

#pragma mark - KEYAPISINVOICEV1GetInvoiceListRequest

typedef GPB_ENUM(KEYAPISINVOICEV1GetInvoiceListRequest_FieldNumber) {
  KEYAPISINVOICEV1GetInvoiceListRequest_FieldNumber_Filter = 1,
  KEYAPISINVOICEV1GetInvoiceListRequest_FieldNumber_Paging = 2,
};

typedef GPB_ENUM(KEYAPISINVOICEV1GetInvoiceListRequest_Pagination_OneOfCase) {
  KEYAPISINVOICEV1GetInvoiceListRequest_Pagination_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISINVOICEV1GetInvoiceListRequest_Pagination_OneOfCase_Paging = 2,
};

/**
 * Запрос на получение списка платежей
 **/
GPB_FINAL @interface KEYAPISINVOICEV1GetInvoiceListRequest : GPBMessage

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

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

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

@end

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

#pragma mark - KEYAPISINVOICEV1GetInvoiceListResponse

typedef GPB_ENUM(KEYAPISINVOICEV1GetInvoiceListResponse_FieldNumber) {
  KEYAPISINVOICEV1GetInvoiceListResponse_FieldNumber_DataArray = 1,
  KEYAPISINVOICEV1GetInvoiceListResponse_FieldNumber_Error = 2,
};

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

/** Платежи */
@property(nonatomic, readwrite, strong, null_resettable) NSMutableArray<KEYAPISINVOICEV1Invoice*> *dataArray;
/** The number of items in @c dataArray without causing the container to be created. */
@property(nonatomic, readonly) NSUInteger dataArray_Count;

/** Ошибка */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISINVOICEV1GetInvoiceListResponse_Error *error;
/** Test to see if @c error has been set. */
@property(nonatomic, readwrite) BOOL hasError;

@end

#pragma mark - KEYAPISINVOICEV1GetInvoiceListResponse_Error

typedef GPB_ENUM(KEYAPISINVOICEV1GetInvoiceListResponse_Error_FieldNumber) {
  KEYAPISINVOICEV1GetInvoiceListResponse_Error_FieldNumber_Validation = 1,
};

typedef GPB_ENUM(KEYAPISINVOICEV1GetInvoiceListResponse_Error_Reason_OneOfCase) {
  KEYAPISINVOICEV1GetInvoiceListResponse_Error_Reason_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISINVOICEV1GetInvoiceListResponse_Error_Reason_OneOfCase_Validation = 1,
};

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

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

/** Ошибка валидации */
@property(nonatomic, readwrite, strong, null_resettable) KEYAPISINVOICEV1ValidationError *validation;

@end

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

#pragma mark - KEYAPISINVOICEV1GetInvoiceCountRequest

typedef GPB_ENUM(KEYAPISINVOICEV1GetInvoiceCountRequest_FieldNumber) {
  KEYAPISINVOICEV1GetInvoiceCountRequest_FieldNumber_Filter = 1,
};

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

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

@end

#pragma mark - KEYAPISINVOICEV1GetInvoiceCountResponse

typedef GPB_ENUM(KEYAPISINVOICEV1GetInvoiceCountResponse_FieldNumber) {
  KEYAPISINVOICEV1GetInvoiceCountResponse_FieldNumber_Data_p = 1,
};

typedef GPB_ENUM(KEYAPISINVOICEV1GetInvoiceCountResponse_Type_OneOfCase) {
  KEYAPISINVOICEV1GetInvoiceCountResponse_Type_OneOfCase_GPBUnsetOneOfCase = 0,
  KEYAPISINVOICEV1GetInvoiceCountResponse_Type_OneOfCase_Data_p = 1,
};

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

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

/** Количество */
@property(nonatomic, readwrite) int32_t data_p;

@end

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

NS_ASSUME_NONNULL_END

CF_EXTERN_C_END

#pragma clang diagnostic pop

// @@protoc_insertion_point(global_scope)

// clang-format on
