// Generated by the protocol buffer compiler.  DO NOT EDIT!
// source: keyapis/invoice/v1/keyapis_invoice_invoice_v1.proto

package ru.keyapis.invoice.v1;

public final class KeyapisInvoiceV1Proto {
  private KeyapisInvoiceV1Proto() {}
  public static void registerAllExtensions(
      com.google.protobuf.ExtensionRegistryLite registry) {
  }
  public interface InvoiceOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.Invoice)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Идентификатор платежа.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The id.
     */
    java.lang.String getId();
    /**
     * <pre>
     * Идентификатор платежа.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for id.
     */
    com.google.protobuf.ByteString
        getIdBytes();

    /**
     * <pre>
     * Описание платежа
     * </pre>
     *
     * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The title.
     */
    java.lang.String getTitle();
    /**
     * <pre>
     * Описание платежа
     * </pre>
     *
     * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for title.
     */
    com.google.protobuf.ByteString
        getTitleBytes();

    /**
     * <pre>
     * Идентификатор пользователя
     * </pre>
     *
     * <code>int32 user_id = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The userId.
     */
    int getUserId();

    /**
     * <pre>
     * Статус платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The enum numeric value on the wire for invoiceStatusType.
     */
    int getInvoiceStatusTypeValue();
    /**
     * <pre>
     * Статус платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The invoiceStatusType.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.InvoiceStatusType getInvoiceStatusType();

    /**
     * <pre>
     * Дата создания платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp created_at = 5 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the createdAt field is set.
     */
    boolean hasCreatedAt();
    /**
     * <pre>
     * Дата создания платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp created_at = 5 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The createdAt.
     */
    com.google.protobuf.Timestamp getCreatedAt();

    /**
     * <pre>
     * Дата обновления платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp updated_at = 6 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the updatedAt field is set.
     */
    boolean hasUpdatedAt();
    /**
     * <pre>
     * Дата обновления платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp updated_at = 6 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The updatedAt.
     */
    com.google.protobuf.Timestamp getUpdatedAt();

    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    java.util.List<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position> 
        getPositionsList();
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position getPositions(int index);
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    int getPositionsCount();

    /**
     * <pre>
     * Метод платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 8;</code>
     * @return The enum numeric value on the wire for payInterfaceType.
     */
    int getPayInterfaceTypeValue();
    /**
     * <pre>
     * Метод платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 8;</code>
     * @return The payInterfaceType.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PayInterfaceType getPayInterfaceType();

    /**
     * <pre>
     * Способ оплаты
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 9;</code>
     * @return The enum numeric value on the wire for paywayType.
     */
    int getPaywayTypeValue();
    /**
     * <pre>
     * Способ оплаты
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 9;</code>
     * @return The paywayType.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PaywayType getPaywayType();

    /**
     * <pre>
     * Дата изменения статуса платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp status_changed_at = 10;</code>
     * @return Whether the statusChangedAt field is set.
     */
    boolean hasStatusChangedAt();
    /**
     * <pre>
     * Дата изменения статуса платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp status_changed_at = 10;</code>
     * @return The statusChangedAt.
     */
    com.google.protobuf.Timestamp getStatusChangedAt();

    /**
     * <pre>
     * Дата платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp paid_at = 11;</code>
     * @return Whether the paidAt field is set.
     */
    boolean hasPaidAt();
    /**
     * <pre>
     * Дата платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp paid_at = 11;</code>
     * @return The paidAt.
     */
    com.google.protobuf.Timestamp getPaidAt();

    /**
     * <pre>
     * Платежная ссылка
     * </pre>
     *
     * <code>string pay_url = 12;</code>
     * @return The payUrl.
     */
    java.lang.String getPayUrl();
    /**
     * <pre>
     * Платежная ссылка
     * </pre>
     *
     * <code>string pay_url = 12;</code>
     * @return The bytes for payUrl.
     */
    com.google.protobuf.ByteString
        getPayUrlBytes();

    /**
     * <pre>
     * Маскированный номер карты при платеже
     * </pre>
     *
     * <code>string paid_by_card_masked = 13;</code>
     * @return The paidByCardMasked.
     */
    java.lang.String getPaidByCardMasked();
    /**
     * <pre>
     * Маскированный номер карты при платеже
     * </pre>
     *
     * <code>string paid_by_card_masked = 13;</code>
     * @return The bytes for paidByCardMasked.
     */
    com.google.protobuf.ByteString
        getPaidByCardMaskedBytes();

    /**
     * <pre>
     * Идентификатор платежного средства в внешней системы
     * </pre>
     *
     * <code>string paid_by_card_espp_id = 14;</code>
     * @return The paidByCardEsppId.
     */
    java.lang.String getPaidByCardEsppId();
    /**
     * <pre>
     * Идентификатор платежного средства в внешней системы
     * </pre>
     *
     * <code>string paid_by_card_espp_id = 14;</code>
     * @return The bytes for paidByCardEsppId.
     */
    com.google.protobuf.ByteString
        getPaidByCardEsppIdBytes();

    /**
     * <pre>
     * Тип банковской карты
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.CardType card_type = 15;</code>
     * @return The enum numeric value on the wire for cardType.
     */
    int getCardTypeValue();
    /**
     * <pre>
     * Тип банковской карты
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.CardType card_type = 15;</code>
     * @return The cardType.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.CardType getCardType();

    /**
     * <pre>
     * Код ошибки внешней системы
     * </pre>
     *
     * <code>int32 espp_req_status = 16;</code>
     * @return The esppReqStatus.
     */
    int getEsppReqStatus();

    /**
     * <pre>
     * Комментарий к статусу платежа из внешней системы
     * </pre>
     *
     * <code>string espp_req_user_msg = 17;</code>
     * @return The esppReqUserMsg.
     */
    java.lang.String getEsppReqUserMsg();
    /**
     * <pre>
     * Комментарий к статусу платежа из внешней системы
     * </pre>
     *
     * <code>string espp_req_user_msg = 17;</code>
     * @return The bytes for esppReqUserMsg.
     */
    com.google.protobuf.ByteString
        getEsppReqUserMsgBytes();

    /**
     * <pre>
     * Уникальный номер транзакции в внешней системы
     * </pre>
     *
     * <code>string espp_invoice_id = 18;</code>
     * @return The esppInvoiceId.
     */
    java.lang.String getEsppInvoiceId();
    /**
     * <pre>
     * Уникальный номер транзакции в внешней системы
     * </pre>
     *
     * <code>string espp_invoice_id = 18;</code>
     * @return The bytes for esppInvoiceId.
     */
    com.google.protobuf.ByteString
        getEsppInvoiceIdBytes();

    /**
     * <pre>
     * Номер телефона
     * </pre>
     *
     * <code>string phone_number = 19;</code>
     * @return The phoneNumber.
     */
    java.lang.String getPhoneNumber();
    /**
     * <pre>
     * Номер телефона
     * </pre>
     *
     * <code>string phone_number = 19;</code>
     * @return The bytes for phoneNumber.
     */
    com.google.protobuf.ByteString
        getPhoneNumberBytes();

    /**
     * <pre>
     * Электронная почта
     * </pre>
     *
     * <code>string email = 20;</code>
     * @return The email.
     */
    java.lang.String getEmail();
    /**
     * <pre>
     * Электронная почта
     * </pre>
     *
     * <code>string email = 20;</code>
     * @return The bytes for email.
     */
    com.google.protobuf.ByteString
        getEmailBytes();
  }
  /**
   * <pre>
   * Выставленный счёт
   * </pre>
   *
   * Protobuf type {@code keyapis.invoice.v1.Invoice}
   */
  public  static final class Invoice extends
      com.google.protobuf.GeneratedMessageLite<
          Invoice, Invoice.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.Invoice)
      InvoiceOrBuilder {
    private Invoice() {
      id_ = "";
      title_ = "";
      positions_ = emptyProtobufList();
      payUrl_ = "";
      paidByCardMasked_ = "";
      paidByCardEsppId_ = "";
      esppReqUserMsg_ = "";
      esppInvoiceId_ = "";
      phoneNumber_ = "";
      email_ = "";
    }
    /**
     * <pre>
     * Справочник типов статусов оплаты счёта
     * </pre>
     *
     * Protobuf enum {@code keyapis.invoice.v1.Invoice.InvoiceStatusType}
     */
    public enum InvoiceStatusType
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>INVOICE_STATUS_TYPE_UNKNOWN = 0;</code>
       */
      INVOICE_STATUS_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * Создан, ожидает подтверждения
       * </pre>
       *
       * <code>PLANNED = 1;</code>
       */
      PLANNED(1),
      /**
       * <pre>
       * Ожидает оплаты
       * </pre>
       *
       * <code>PENDING = 2;</code>
       */
      PENDING(2),
      /**
       * <pre>
       * Ошибка оплаты
       * </pre>
       *
       * <code>ERROR = 3;</code>
       */
      ERROR(3),
      /**
       * <pre>
       * Оплачен
       * </pre>
       *
       * <code>PAID = 4;</code>
       */
      PAID(4),
      /**
       * <pre>
       * Отменен
       * </pre>
       *
       * <code>CANCELLED = 5;</code>
       */
      CANCELLED(5),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>INVOICE_STATUS_TYPE_UNKNOWN = 0;</code>
       */
      public static final int INVOICE_STATUS_TYPE_UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * Создан, ожидает подтверждения
       * </pre>
       *
       * <code>PLANNED = 1;</code>
       */
      public static final int PLANNED_VALUE = 1;
      /**
       * <pre>
       * Ожидает оплаты
       * </pre>
       *
       * <code>PENDING = 2;</code>
       */
      public static final int PENDING_VALUE = 2;
      /**
       * <pre>
       * Ошибка оплаты
       * </pre>
       *
       * <code>ERROR = 3;</code>
       */
      public static final int ERROR_VALUE = 3;
      /**
       * <pre>
       * Оплачен
       * </pre>
       *
       * <code>PAID = 4;</code>
       */
      public static final int PAID_VALUE = 4;
      /**
       * <pre>
       * Отменен
       * </pre>
       *
       * <code>CANCELLED = 5;</code>
       */
      public static final int CANCELLED_VALUE = 5;


      @java.lang.Override
      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static InvoiceStatusType valueOf(int value) {
        return forNumber(value);
      }

      public static InvoiceStatusType forNumber(int value) {
        switch (value) {
          case 0: return INVOICE_STATUS_TYPE_UNKNOWN;
          case 1: return PLANNED;
          case 2: return PENDING;
          case 3: return ERROR;
          case 4: return PAID;
          case 5: return CANCELLED;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<InvoiceStatusType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          InvoiceStatusType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<InvoiceStatusType>() {
              @java.lang.Override
              public InvoiceStatusType findValueByNumber(int number) {
                return InvoiceStatusType.forNumber(number);
              }
            };

      public static com.google.protobuf.Internal.EnumVerifier 
          internalGetVerifier() {
        return InvoiceStatusTypeVerifier.INSTANCE;
      }

      private static final class InvoiceStatusTypeVerifier implements 
           com.google.protobuf.Internal.EnumVerifier { 
              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new InvoiceStatusTypeVerifier();
              @java.lang.Override
              public boolean isInRange(int number) {
                return InvoiceStatusType.forNumber(number) != null;
              }
            };

      private final int value;

      private InvoiceStatusType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:keyapis.invoice.v1.Invoice.InvoiceStatusType)
    }

    /**
     * <pre>
     * Справочник банковских карт
     * </pre>
     *
     * Protobuf enum {@code keyapis.invoice.v1.Invoice.CardType}
     */
    public enum CardType
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>CARD_TYPE_UNKNOWN = 0;</code>
       */
      CARD_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * Карта VISA
       * </pre>
       *
       * <code>VISA = 1;</code>
       */
      VISA(1),
      /**
       * <pre>
       * Карта EuroCard/MasterCard
       * </pre>
       *
       * <code>EC_MC = 2;</code>
       */
      EC_MC(2),
      /**
       * <pre>
       * Карта DinersClub
       * </pre>
       *
       * <code>DCL = 3;</code>
       */
      DCL(3),
      /**
       * <pre>
       * Карта JCB
       * </pre>
       *
       * <code>JCB = 4;</code>
       */
      JCB(4),
      /**
       * <pre>
       * Карта American Express
       * </pre>
       *
       * <code>AMEX = 5;</code>
       */
      AMEX(5),
      /**
       * <pre>
       * Платежная система "Мир"
       * </pre>
       *
       * <code>MIR = 6;</code>
       */
      MIR(6),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>CARD_TYPE_UNKNOWN = 0;</code>
       */
      public static final int CARD_TYPE_UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * Карта VISA
       * </pre>
       *
       * <code>VISA = 1;</code>
       */
      public static final int VISA_VALUE = 1;
      /**
       * <pre>
       * Карта EuroCard/MasterCard
       * </pre>
       *
       * <code>EC_MC = 2;</code>
       */
      public static final int EC_MC_VALUE = 2;
      /**
       * <pre>
       * Карта DinersClub
       * </pre>
       *
       * <code>DCL = 3;</code>
       */
      public static final int DCL_VALUE = 3;
      /**
       * <pre>
       * Карта JCB
       * </pre>
       *
       * <code>JCB = 4;</code>
       */
      public static final int JCB_VALUE = 4;
      /**
       * <pre>
       * Карта American Express
       * </pre>
       *
       * <code>AMEX = 5;</code>
       */
      public static final int AMEX_VALUE = 5;
      /**
       * <pre>
       * Платежная система "Мир"
       * </pre>
       *
       * <code>MIR = 6;</code>
       */
      public static final int MIR_VALUE = 6;


      @java.lang.Override
      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static CardType valueOf(int value) {
        return forNumber(value);
      }

      public static CardType forNumber(int value) {
        switch (value) {
          case 0: return CARD_TYPE_UNKNOWN;
          case 1: return VISA;
          case 2: return EC_MC;
          case 3: return DCL;
          case 4: return JCB;
          case 5: return AMEX;
          case 6: return MIR;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<CardType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          CardType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<CardType>() {
              @java.lang.Override
              public CardType findValueByNumber(int number) {
                return CardType.forNumber(number);
              }
            };

      public static com.google.protobuf.Internal.EnumVerifier 
          internalGetVerifier() {
        return CardTypeVerifier.INSTANCE;
      }

      private static final class CardTypeVerifier implements 
           com.google.protobuf.Internal.EnumVerifier { 
              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new CardTypeVerifier();
              @java.lang.Override
              public boolean isInRange(int number) {
                return CardType.forNumber(number) != null;
              }
            };

      private final int value;

      private CardType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:keyapis.invoice.v1.Invoice.CardType)
    }

    /**
     * <pre>
     * Справочник методов платежа
     * </pre>
     *
     * Protobuf enum {@code keyapis.invoice.v1.Invoice.PayInterfaceType}
     */
    public enum PayInterfaceType
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>PAY_INTERFACE_TYPE_UNKNOWN = 0;</code>
       */
      PAY_INTERFACE_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * Оплата через интерфейс предпроцессинга
       * </pre>
       *
       * <code>GUI = 1;</code>
       */
      GUI(1),
      /**
       * <pre>
       * Оплата с использованием ранее созданного способа платежа, настроенного по умолчанию
       * </pre>
       *
       * <code>M2M = 2;</code>
       */
      M2M(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>PAY_INTERFACE_TYPE_UNKNOWN = 0;</code>
       */
      public static final int PAY_INTERFACE_TYPE_UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * Оплата через интерфейс предпроцессинга
       * </pre>
       *
       * <code>GUI = 1;</code>
       */
      public static final int GUI_VALUE = 1;
      /**
       * <pre>
       * Оплата с использованием ранее созданного способа платежа, настроенного по умолчанию
       * </pre>
       *
       * <code>M2M = 2;</code>
       */
      public static final int M2M_VALUE = 2;


      @java.lang.Override
      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static PayInterfaceType valueOf(int value) {
        return forNumber(value);
      }

      public static PayInterfaceType forNumber(int value) {
        switch (value) {
          case 0: return PAY_INTERFACE_TYPE_UNKNOWN;
          case 1: return GUI;
          case 2: return M2M;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<PayInterfaceType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          PayInterfaceType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<PayInterfaceType>() {
              @java.lang.Override
              public PayInterfaceType findValueByNumber(int number) {
                return PayInterfaceType.forNumber(number);
              }
            };

      public static com.google.protobuf.Internal.EnumVerifier 
          internalGetVerifier() {
        return PayInterfaceTypeVerifier.INSTANCE;
      }

      private static final class PayInterfaceTypeVerifier implements 
           com.google.protobuf.Internal.EnumVerifier { 
              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new PayInterfaceTypeVerifier();
              @java.lang.Override
              public boolean isInRange(int number) {
                return PayInterfaceType.forNumber(number) != null;
              }
            };

      private final int value;

      private PayInterfaceType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:keyapis.invoice.v1.Invoice.PayInterfaceType)
    }

    /**
     * <pre>
     * Справочник типов платежных средств
     * </pre>
     *
     * Protobuf enum {@code keyapis.invoice.v1.Invoice.PaywayType}
     */
    public enum PaywayType
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>PAYWAY_TYPE_UNKNOWN = 0;</code>
       */
      PAYWAY_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * Банковская карта
       * </pre>
       *
       * <code>BANK_CARD = 1;</code>
       */
      BANK_CARD(1),
      /**
       * <pre>
       * Сервис быстрых платежей
       * </pre>
       *
       * <code>SBP = 2;</code>
       */
      SBP(2),
      /**
       * <pre>
       * Связка Сбербанка
       * </pre>
       *
       * <code>SBER_PAY = 3;</code>
       */
      SBER_PAY(3),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>PAYWAY_TYPE_UNKNOWN = 0;</code>
       */
      public static final int PAYWAY_TYPE_UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * Банковская карта
       * </pre>
       *
       * <code>BANK_CARD = 1;</code>
       */
      public static final int BANK_CARD_VALUE = 1;
      /**
       * <pre>
       * Сервис быстрых платежей
       * </pre>
       *
       * <code>SBP = 2;</code>
       */
      public static final int SBP_VALUE = 2;
      /**
       * <pre>
       * Связка Сбербанка
       * </pre>
       *
       * <code>SBER_PAY = 3;</code>
       */
      public static final int SBER_PAY_VALUE = 3;


      @java.lang.Override
      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static PaywayType valueOf(int value) {
        return forNumber(value);
      }

      public static PaywayType forNumber(int value) {
        switch (value) {
          case 0: return PAYWAY_TYPE_UNKNOWN;
          case 1: return BANK_CARD;
          case 2: return SBP;
          case 3: return SBER_PAY;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<PaywayType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          PaywayType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<PaywayType>() {
              @java.lang.Override
              public PaywayType findValueByNumber(int number) {
                return PaywayType.forNumber(number);
              }
            };

      public static com.google.protobuf.Internal.EnumVerifier 
          internalGetVerifier() {
        return PaywayTypeVerifier.INSTANCE;
      }

      private static final class PaywayTypeVerifier implements 
           com.google.protobuf.Internal.EnumVerifier { 
              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new PaywayTypeVerifier();
              @java.lang.Override
              public boolean isInRange(int number) {
                return PaywayType.forNumber(number) != null;
              }
            };

      private final int value;

      private PaywayType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:keyapis.invoice.v1.Invoice.PaywayType)
    }

    public interface ExternalErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.Invoice.ExternalError)
        com.google.protobuf.MessageLiteOrBuilder {

      /**
       * <pre>
       * Запрос к внешней системе вернул ошибку или прекращен по таймауту
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError external_system_error = 1;</code>
       * @return Whether the externalSystemError field is set.
       */
      boolean hasExternalSystemError();
      /**
       * <pre>
       * Запрос к внешней системе вернул ошибку или прекращен по таймауту
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError external_system_error = 1;</code>
       * @return The externalSystemError.
       */
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError getExternalSystemError();

      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибки внешней системы
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.Invoice.ExternalError}
     */
    public  static final class ExternalError extends
        com.google.protobuf.GeneratedMessageLite<
            ExternalError, ExternalError.Builder> implements
        // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.Invoice.ExternalError)
        ExternalErrorOrBuilder {
      private ExternalError() {
      }
      public interface ExternalSystemErrorOrBuilder extends
          // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError)
          com.google.protobuf.MessageLiteOrBuilder {
      }
      /**
       * <pre>
       * Запрос к внешней системе вернул ошибку или прекращен по таймауту
       * </pre>
       *
       * Protobuf type {@code keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError}
       */
      public  static final class ExternalSystemError extends
          com.google.protobuf.GeneratedMessageLite<
              ExternalSystemError, ExternalSystemError.Builder> implements
          // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError)
          ExternalSystemErrorOrBuilder {
        private ExternalSystemError() {
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input, extensionRegistry);
        }

        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return parseDelimitedFrom(DEFAULT_INSTANCE, input);
        }

        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input, extensionRegistry);
        }

        public static Builder newBuilder() {
          return (Builder) DEFAULT_INSTANCE.createBuilder();
        }
        public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError prototype) {
          return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
        }

        /**
         * <pre>
         * Запрос к внешней системе вернул ошибку или прекращен по таймауту
         * </pre>
         *
         * Protobuf type {@code keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageLite.Builder<
              ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError, Builder> implements
            // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError)
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemErrorOrBuilder {
          // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError.newBuilder()
          private Builder() {
            super(DEFAULT_INSTANCE);
          }


          // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError)
        }
        @java.lang.Override
        @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
        protected final java.lang.Object dynamicMethod(
            com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
            java.lang.Object arg0, java.lang.Object arg1) {
          switch (method) {
            case NEW_MUTABLE_INSTANCE: {
              return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError();
            }
            case NEW_BUILDER: {
              return new Builder();
            }
            case BUILD_MESSAGE_INFO: {
                java.lang.Object[] objects = null;java.lang.String info =
                    "\u0000\u0000";
                return newMessageInfo(DEFAULT_INSTANCE, info, objects);
            }
            // fall through
            case GET_DEFAULT_INSTANCE: {
              return DEFAULT_INSTANCE;
            }
            case GET_PARSER: {
              com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError> parser = PARSER;
              if (parser == null) {
                synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError.class) {
                  parser = PARSER;
                  if (parser == null) {
                    parser =
                        new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError>(
                            DEFAULT_INSTANCE);
                    PARSER = parser;
                  }
                }
              }
              return parser;
          }
          case GET_MEMOIZED_IS_INITIALIZED: {
            return (byte) 1;
          }
          case SET_MEMOIZED_IS_INITIALIZED: {
            return null;
          }
          }
          throw new UnsupportedOperationException();
        }


        // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError)
        private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError DEFAULT_INSTANCE;
        static {
          ExternalSystemError defaultInstance = new ExternalSystemError();
          // New instances are implicitly immutable so no need to make
          // immutable.
          DEFAULT_INSTANCE = defaultInstance;
          com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
            ExternalSystemError.class, defaultInstance);
        }

        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

        private static volatile com.google.protobuf.Parser<ExternalSystemError> PARSER;

        public static com.google.protobuf.Parser<ExternalSystemError> parser() {
          return DEFAULT_INSTANCE.getParserForType();
        }
      }

      private int reasonCase_ = 0;
      private java.lang.Object reason_;
      public enum ReasonCase {
        EXTERNAL_SYSTEM_ERROR(1),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ReasonCase valueOf(int value) {
          return forNumber(value);
        }

        public static ReasonCase forNumber(int value) {
          switch (value) {
            case 1: return EXTERNAL_SYSTEM_ERROR;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      @java.lang.Override
      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      private void clearReason() {
        reasonCase_ = 0;
        reason_ = null;
      }

      public static final int EXTERNAL_SYSTEM_ERROR_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Запрос к внешней системе вернул ошибку или прекращен по таймауту
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError external_system_error = 1;</code>
       */
      @java.lang.Override
      public boolean hasExternalSystemError() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Запрос к внешней системе вернул ошибку или прекращен по таймауту
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError external_system_error = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError getExternalSystemError() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError) reason_;
        }
        return ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError.getDefaultInstance();
      }
      /**
       * <pre>
       * Запрос к внешней системе вернул ошибку или прекращен по таймауту
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError external_system_error = 1;</code>
       */
      private void setExternalSystemError(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError value) {
        value.getClass();
  reason_ = value;
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Запрос к внешней системе вернул ошибку или прекращен по таймауту
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError external_system_error = 1;</code>
       */
      private void mergeExternalSystemError(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError value) {
        value.getClass();
  if (reasonCase_ == 1 &&
            reason_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError.getDefaultInstance()) {
          reason_ = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError.newBuilder((ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError) reason_)
              .mergeFrom(value).buildPartial();
        } else {
          reason_ = value;
        }
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Запрос к внешней системе вернул ошибку или прекращен по таймауту
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError external_system_error = 1;</code>
       */
      private void clearExternalSystemError() {
        if (reasonCase_ == 1) {
          reasonCase_ = 0;
          reason_ = null;
        }
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError prototype) {
        return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
      }

      /**
       * <pre>
       * Ошибки внешней системы
       * </pre>
       *
       * Protobuf type {@code keyapis.invoice.v1.Invoice.ExternalError}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError, Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.Invoice.ExternalError)
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalErrorOrBuilder {
        // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }

        @java.lang.Override
        public ReasonCase
            getReasonCase() {
          return instance.getReasonCase();
        }

        public Builder clearReason() {
          copyOnWrite();
          instance.clearReason();
          return this;
        }


        /**
         * <pre>
         * Запрос к внешней системе вернул ошибку или прекращен по таймауту
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError external_system_error = 1;</code>
         */
        @java.lang.Override
        public boolean hasExternalSystemError() {
          return instance.hasExternalSystemError();
        }
        /**
         * <pre>
         * Запрос к внешней системе вернул ошибку или прекращен по таймауту
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError external_system_error = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError getExternalSystemError() {
          return instance.getExternalSystemError();
        }
        /**
         * <pre>
         * Запрос к внешней системе вернул ошибку или прекращен по таймауту
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError external_system_error = 1;</code>
         */
        public Builder setExternalSystemError(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError value) {
          copyOnWrite();
          instance.setExternalSystemError(value);
          return this;
        }
        /**
         * <pre>
         * Запрос к внешней системе вернул ошибку или прекращен по таймауту
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError external_system_error = 1;</code>
         */
        public Builder setExternalSystemError(
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError.Builder builderForValue) {
          copyOnWrite();
          instance.setExternalSystemError(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Запрос к внешней системе вернул ошибку или прекращен по таймауту
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError external_system_error = 1;</code>
         */
        public Builder mergeExternalSystemError(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError value) {
          copyOnWrite();
          instance.mergeExternalSystemError(value);
          return this;
        }
        /**
         * <pre>
         * Запрос к внешней системе вернул ошибку или прекращен по таймауту
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.ExternalError.ExternalSystemError external_system_error = 1;</code>
         */
        public Builder clearExternalSystemError() {
          copyOnWrite();
          instance.clearExternalSystemError();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.Invoice.ExternalError)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "reason_",
                "reasonCase_",
                ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.ExternalSystemError.class,
              };
              java.lang.String info =
                  "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001<\u0000";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError> parser = PARSER;
            if (parser == null) {
              synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }


      // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.Invoice.ExternalError)
      private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError DEFAULT_INSTANCE;
      static {
        ExternalError defaultInstance = new ExternalError();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          ExternalError.class, defaultInstance);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static volatile com.google.protobuf.Parser<ExternalError> PARSER;

      public static com.google.protobuf.Parser<ExternalError> parser() {
        return DEFAULT_INSTANCE.getParserForType();
      }
    }

    public interface PositionOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.Invoice.Position)
        com.google.protobuf.MessageLiteOrBuilder {

      /**
       * <pre>
       * Идентификатор позиции.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The id.
       */
      java.lang.String getId();
      /**
       * <pre>
       * Идентификатор позиции.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The bytes for id.
       */
      com.google.protobuf.ByteString
          getIdBytes();

      /**
       * <pre>
       * Идентификатор платежа.
       * # Тип: Guid
       * </pre>
       *
       * <code>string invoice_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The invoiceId.
       */
      java.lang.String getInvoiceId();
      /**
       * <pre>
       * Идентификатор платежа.
       * # Тип: Guid
       * </pre>
       *
       * <code>string invoice_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for invoiceId.
       */
      com.google.protobuf.ByteString
          getInvoiceIdBytes();

      /**
       * <pre>
       * Название позиции
       * </pre>
       *
       * <code>string title = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The title.
       */
      java.lang.String getTitle();
      /**
       * <pre>
       * Название позиции
       * </pre>
       *
       * <code>string title = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for title.
       */
      com.google.protobuf.ByteString
          getTitleBytes();

      /**
       * <pre>
       * Категория позиции (='subscription')
       * </pre>
       *
       * <code>string category = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The category.
       */
      java.lang.String getCategory();
      /**
       * <pre>
       * Категория позиции (='subscription')
       * </pre>
       *
       * <code>string category = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for category.
       */
      com.google.protobuf.ByteString
          getCategoryBytes();

      /**
       * <pre>
       * Цена в рублях.
       * Число должно быть больше 0
       * </pre>
       *
       * <code>float amount = 5 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The amount.
       */
      float getAmount();

      /**
       * <pre>
       * Дата создания позиции платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       * @return Whether the createdAt field is set.
       */
      boolean hasCreatedAt();
      /**
       * <pre>
       * Дата создания позиции платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       * @return The createdAt.
       */
      com.google.protobuf.Timestamp getCreatedAt();

      /**
       * <pre>
       * Дата обновления позиции платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp updated_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       * @return Whether the updatedAt field is set.
       */
      boolean hasUpdatedAt();
      /**
       * <pre>
       * Дата обновления позиции платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp updated_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       * @return The updatedAt.
       */
      com.google.protobuf.Timestamp getUpdatedAt();

      /**
       * <pre>
       * Идентификатор МРФ
       * </pre>
       *
       * <code>int32 mrf_id = 8 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The mrfId.
       */
      int getMrfId();

      /**
       * <pre>
       * Идентификатор РФ
       * </pre>
       *
       * <code>int32 rf_id = 9 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The rfId.
       */
      int getRfId();

      /**
       * <pre>
       * Идентификатор экземпляра оплачиваемой подписки.
       * # Тип: Guid
       * </pre>
       *
       * <code>string instance_id = 10 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The instanceId.
       */
      java.lang.String getInstanceId();
      /**
       * <pre>
       * Идентификатор экземпляра оплачиваемой подписки.
       * # Тип: Guid
       * </pre>
       *
       * <code>string instance_id = 10 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for instanceId.
       */
      com.google.protobuf.ByteString
          getInstanceIdBytes();

      /**
       * <pre>
       * Идентификатор предложения оплачиваемой подписки
       * </pre>
       *
       * <code>int32 offering_id = 11 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The offeringId.
       */
      int getOfferingId();

      /**
       * <pre>
       * Срок окончания оплачиваемого периода
       * </pre>
       *
       * <code>.google.protobuf.Timestamp due_date_at = 12;</code>
       * @return Whether the dueDateAt field is set.
       */
      boolean hasDueDateAt();
      /**
       * <pre>
       * Срок окончания оплачиваемого периода
       * </pre>
       *
       * <code>.google.protobuf.Timestamp due_date_at = 12;</code>
       * @return The dueDateAt.
       */
      com.google.protobuf.Timestamp getDueDateAt();

      /**
       * <pre>
       * Идентификатор получателя платежа
       * </pre>
       *
       * <code>string svc_type_id = 13;</code>
       * @return The svcTypeId.
       */
      java.lang.String getSvcTypeId();
      /**
       * <pre>
       * Идентификатор получателя платежа
       * </pre>
       *
       * <code>string svc_type_id = 13;</code>
       * @return The bytes for svcTypeId.
       */
      com.google.protobuf.ByteString
          getSvcTypeIdBytes();

      /**
       * <pre>
       * Признак скидки
       * </pre>
       *
       * <code>bool is_discount = 14;</code>
       * @return The isDiscount.
       */
      boolean getIsDiscount();
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.Invoice.Position}
     */
    public  static final class Position extends
        com.google.protobuf.GeneratedMessageLite<
            Position, Position.Builder> implements
        // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.Invoice.Position)
        PositionOrBuilder {
      private Position() {
        id_ = "";
        invoiceId_ = "";
        title_ = "";
        category_ = "";
        instanceId_ = "";
        svcTypeId_ = "";
      }
      public static final int ID_FIELD_NUMBER = 1;
      private java.lang.String id_;
      /**
       * <pre>
       * Идентификатор позиции.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The id.
       */
      @java.lang.Override
      public java.lang.String getId() {
        return id_;
      }
      /**
       * <pre>
       * Идентификатор позиции.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1;</code>
       * @return The bytes for id.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getIdBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(id_);
      }
      /**
       * <pre>
       * Идентификатор позиции.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1;</code>
       * @param value The id to set.
       */
      private void setId(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
  
        id_ = value;
      }
      /**
       * <pre>
       * Идентификатор позиции.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1;</code>
       */
      private void clearId() {

        id_ = getDefaultInstance().getId();
      }
      /**
       * <pre>
       * Идентификатор позиции.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1;</code>
       * @param value The bytes for id to set.
       */
      private void setIdBytes(
          com.google.protobuf.ByteString value) {
        checkByteStringIsUtf8(value);
        id_ = value.toStringUtf8();

      }

      public static final int INVOICE_ID_FIELD_NUMBER = 2;
      private java.lang.String invoiceId_;
      /**
       * <pre>
       * Идентификатор платежа.
       * # Тип: Guid
       * </pre>
       *
       * <code>string invoice_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The invoiceId.
       */
      @java.lang.Override
      public java.lang.String getInvoiceId() {
        return invoiceId_;
      }
      /**
       * <pre>
       * Идентификатор платежа.
       * # Тип: Guid
       * </pre>
       *
       * <code>string invoice_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for invoiceId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getInvoiceIdBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(invoiceId_);
      }
      /**
       * <pre>
       * Идентификатор платежа.
       * # Тип: Guid
       * </pre>
       *
       * <code>string invoice_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The invoiceId to set.
       */
      private void setInvoiceId(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
  
        invoiceId_ = value;
      }
      /**
       * <pre>
       * Идентификатор платежа.
       * # Тип: Guid
       * </pre>
       *
       * <code>string invoice_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      private void clearInvoiceId() {

        invoiceId_ = getDefaultInstance().getInvoiceId();
      }
      /**
       * <pre>
       * Идентификатор платежа.
       * # Тип: Guid
       * </pre>
       *
       * <code>string invoice_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for invoiceId to set.
       */
      private void setInvoiceIdBytes(
          com.google.protobuf.ByteString value) {
        checkByteStringIsUtf8(value);
        invoiceId_ = value.toStringUtf8();

      }

      public static final int TITLE_FIELD_NUMBER = 3;
      private java.lang.String title_;
      /**
       * <pre>
       * Название позиции
       * </pre>
       *
       * <code>string title = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The title.
       */
      @java.lang.Override
      public java.lang.String getTitle() {
        return title_;
      }
      /**
       * <pre>
       * Название позиции
       * </pre>
       *
       * <code>string title = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for title.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getTitleBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(title_);
      }
      /**
       * <pre>
       * Название позиции
       * </pre>
       *
       * <code>string title = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The title to set.
       */
      private void setTitle(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
  
        title_ = value;
      }
      /**
       * <pre>
       * Название позиции
       * </pre>
       *
       * <code>string title = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      private void clearTitle() {

        title_ = getDefaultInstance().getTitle();
      }
      /**
       * <pre>
       * Название позиции
       * </pre>
       *
       * <code>string title = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for title to set.
       */
      private void setTitleBytes(
          com.google.protobuf.ByteString value) {
        checkByteStringIsUtf8(value);
        title_ = value.toStringUtf8();

      }

      public static final int CATEGORY_FIELD_NUMBER = 4;
      private java.lang.String category_;
      /**
       * <pre>
       * Категория позиции (='subscription')
       * </pre>
       *
       * <code>string category = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The category.
       */
      @java.lang.Override
      public java.lang.String getCategory() {
        return category_;
      }
      /**
       * <pre>
       * Категория позиции (='subscription')
       * </pre>
       *
       * <code>string category = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for category.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getCategoryBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(category_);
      }
      /**
       * <pre>
       * Категория позиции (='subscription')
       * </pre>
       *
       * <code>string category = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The category to set.
       */
      private void setCategory(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
  
        category_ = value;
      }
      /**
       * <pre>
       * Категория позиции (='subscription')
       * </pre>
       *
       * <code>string category = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      private void clearCategory() {

        category_ = getDefaultInstance().getCategory();
      }
      /**
       * <pre>
       * Категория позиции (='subscription')
       * </pre>
       *
       * <code>string category = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for category to set.
       */
      private void setCategoryBytes(
          com.google.protobuf.ByteString value) {
        checkByteStringIsUtf8(value);
        category_ = value.toStringUtf8();

      }

      public static final int AMOUNT_FIELD_NUMBER = 5;
      private float amount_;
      /**
       * <pre>
       * Цена в рублях.
       * Число должно быть больше 0
       * </pre>
       *
       * <code>float amount = 5 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The amount.
       */
      @java.lang.Override
      public float getAmount() {
        return amount_;
      }
      /**
       * <pre>
       * Цена в рублях.
       * Число должно быть больше 0
       * </pre>
       *
       * <code>float amount = 5 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The amount to set.
       */
      private void setAmount(float value) {
        
        amount_ = value;
      }
      /**
       * <pre>
       * Цена в рублях.
       * Число должно быть больше 0
       * </pre>
       *
       * <code>float amount = 5 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      private void clearAmount() {

        amount_ = 0F;
      }

      public static final int CREATED_AT_FIELD_NUMBER = 6;
      private com.google.protobuf.Timestamp createdAt_;
      /**
       * <pre>
       * Дата создания позиции платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      @java.lang.Override
      public boolean hasCreatedAt() {
        return createdAt_ != null;
      }
      /**
       * <pre>
       * Дата создания позиции платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      @java.lang.Override
      public com.google.protobuf.Timestamp getCreatedAt() {
        return createdAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : createdAt_;
      }
      /**
       * <pre>
       * Дата создания позиции платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      private void setCreatedAt(com.google.protobuf.Timestamp value) {
        value.getClass();
  createdAt_ = value;

        }
      /**
       * <pre>
       * Дата создания позиции платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      @java.lang.SuppressWarnings({"ReferenceEquality"})
      private void mergeCreatedAt(com.google.protobuf.Timestamp value) {
        value.getClass();
  if (createdAt_ != null &&
            createdAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
          createdAt_ =
            com.google.protobuf.Timestamp.newBuilder(createdAt_).mergeFrom(value).buildPartial();
        } else {
          createdAt_ = value;
        }

      }
      /**
       * <pre>
       * Дата создания позиции платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      private void clearCreatedAt() {  createdAt_ = null;

      }

      public static final int UPDATED_AT_FIELD_NUMBER = 7;
      private com.google.protobuf.Timestamp updatedAt_;
      /**
       * <pre>
       * Дата обновления позиции платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp updated_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      @java.lang.Override
      public boolean hasUpdatedAt() {
        return updatedAt_ != null;
      }
      /**
       * <pre>
       * Дата обновления позиции платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp updated_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      @java.lang.Override
      public com.google.protobuf.Timestamp getUpdatedAt() {
        return updatedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : updatedAt_;
      }
      /**
       * <pre>
       * Дата обновления позиции платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp updated_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      private void setUpdatedAt(com.google.protobuf.Timestamp value) {
        value.getClass();
  updatedAt_ = value;

        }
      /**
       * <pre>
       * Дата обновления позиции платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp updated_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      @java.lang.SuppressWarnings({"ReferenceEquality"})
      private void mergeUpdatedAt(com.google.protobuf.Timestamp value) {
        value.getClass();
  if (updatedAt_ != null &&
            updatedAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
          updatedAt_ =
            com.google.protobuf.Timestamp.newBuilder(updatedAt_).mergeFrom(value).buildPartial();
        } else {
          updatedAt_ = value;
        }

      }
      /**
       * <pre>
       * Дата обновления позиции платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp updated_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
       */
      private void clearUpdatedAt() {  updatedAt_ = null;

      }

      public static final int MRF_ID_FIELD_NUMBER = 8;
      private int mrfId_;
      /**
       * <pre>
       * Идентификатор МРФ
       * </pre>
       *
       * <code>int32 mrf_id = 8 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The mrfId.
       */
      @java.lang.Override
      public int getMrfId() {
        return mrfId_;
      }
      /**
       * <pre>
       * Идентификатор МРФ
       * </pre>
       *
       * <code>int32 mrf_id = 8 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The mrfId to set.
       */
      private void setMrfId(int value) {
        
        mrfId_ = value;
      }
      /**
       * <pre>
       * Идентификатор МРФ
       * </pre>
       *
       * <code>int32 mrf_id = 8 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      private void clearMrfId() {

        mrfId_ = 0;
      }

      public static final int RF_ID_FIELD_NUMBER = 9;
      private int rfId_;
      /**
       * <pre>
       * Идентификатор РФ
       * </pre>
       *
       * <code>int32 rf_id = 9 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The rfId.
       */
      @java.lang.Override
      public int getRfId() {
        return rfId_;
      }
      /**
       * <pre>
       * Идентификатор РФ
       * </pre>
       *
       * <code>int32 rf_id = 9 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The rfId to set.
       */
      private void setRfId(int value) {
        
        rfId_ = value;
      }
      /**
       * <pre>
       * Идентификатор РФ
       * </pre>
       *
       * <code>int32 rf_id = 9 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      private void clearRfId() {

        rfId_ = 0;
      }

      public static final int INSTANCE_ID_FIELD_NUMBER = 10;
      private java.lang.String instanceId_;
      /**
       * <pre>
       * Идентификатор экземпляра оплачиваемой подписки.
       * # Тип: Guid
       * </pre>
       *
       * <code>string instance_id = 10 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The instanceId.
       */
      @java.lang.Override
      public java.lang.String getInstanceId() {
        return instanceId_;
      }
      /**
       * <pre>
       * Идентификатор экземпляра оплачиваемой подписки.
       * # Тип: Guid
       * </pre>
       *
       * <code>string instance_id = 10 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for instanceId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getInstanceIdBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(instanceId_);
      }
      /**
       * <pre>
       * Идентификатор экземпляра оплачиваемой подписки.
       * # Тип: Guid
       * </pre>
       *
       * <code>string instance_id = 10 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The instanceId to set.
       */
      private void setInstanceId(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
  
        instanceId_ = value;
      }
      /**
       * <pre>
       * Идентификатор экземпляра оплачиваемой подписки.
       * # Тип: Guid
       * </pre>
       *
       * <code>string instance_id = 10 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      private void clearInstanceId() {

        instanceId_ = getDefaultInstance().getInstanceId();
      }
      /**
       * <pre>
       * Идентификатор экземпляра оплачиваемой подписки.
       * # Тип: Guid
       * </pre>
       *
       * <code>string instance_id = 10 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for instanceId to set.
       */
      private void setInstanceIdBytes(
          com.google.protobuf.ByteString value) {
        checkByteStringIsUtf8(value);
        instanceId_ = value.toStringUtf8();

      }

      public static final int OFFERING_ID_FIELD_NUMBER = 11;
      private int offeringId_;
      /**
       * <pre>
       * Идентификатор предложения оплачиваемой подписки
       * </pre>
       *
       * <code>int32 offering_id = 11 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The offeringId.
       */
      @java.lang.Override
      public int getOfferingId() {
        return offeringId_;
      }
      /**
       * <pre>
       * Идентификатор предложения оплачиваемой подписки
       * </pre>
       *
       * <code>int32 offering_id = 11 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The offeringId to set.
       */
      private void setOfferingId(int value) {
        
        offeringId_ = value;
      }
      /**
       * <pre>
       * Идентификатор предложения оплачиваемой подписки
       * </pre>
       *
       * <code>int32 offering_id = 11 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      private void clearOfferingId() {

        offeringId_ = 0;
      }

      public static final int DUE_DATE_AT_FIELD_NUMBER = 12;
      private com.google.protobuf.Timestamp dueDateAt_;
      /**
       * <pre>
       * Срок окончания оплачиваемого периода
       * </pre>
       *
       * <code>.google.protobuf.Timestamp due_date_at = 12;</code>
       */
      @java.lang.Override
      public boolean hasDueDateAt() {
        return dueDateAt_ != null;
      }
      /**
       * <pre>
       * Срок окончания оплачиваемого периода
       * </pre>
       *
       * <code>.google.protobuf.Timestamp due_date_at = 12;</code>
       */
      @java.lang.Override
      public com.google.protobuf.Timestamp getDueDateAt() {
        return dueDateAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : dueDateAt_;
      }
      /**
       * <pre>
       * Срок окончания оплачиваемого периода
       * </pre>
       *
       * <code>.google.protobuf.Timestamp due_date_at = 12;</code>
       */
      private void setDueDateAt(com.google.protobuf.Timestamp value) {
        value.getClass();
  dueDateAt_ = value;

        }
      /**
       * <pre>
       * Срок окончания оплачиваемого периода
       * </pre>
       *
       * <code>.google.protobuf.Timestamp due_date_at = 12;</code>
       */
      @java.lang.SuppressWarnings({"ReferenceEquality"})
      private void mergeDueDateAt(com.google.protobuf.Timestamp value) {
        value.getClass();
  if (dueDateAt_ != null &&
            dueDateAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
          dueDateAt_ =
            com.google.protobuf.Timestamp.newBuilder(dueDateAt_).mergeFrom(value).buildPartial();
        } else {
          dueDateAt_ = value;
        }

      }
      /**
       * <pre>
       * Срок окончания оплачиваемого периода
       * </pre>
       *
       * <code>.google.protobuf.Timestamp due_date_at = 12;</code>
       */
      private void clearDueDateAt() {  dueDateAt_ = null;

      }

      public static final int SVC_TYPE_ID_FIELD_NUMBER = 13;
      private java.lang.String svcTypeId_;
      /**
       * <pre>
       * Идентификатор получателя платежа
       * </pre>
       *
       * <code>string svc_type_id = 13;</code>
       * @return The svcTypeId.
       */
      @java.lang.Override
      public java.lang.String getSvcTypeId() {
        return svcTypeId_;
      }
      /**
       * <pre>
       * Идентификатор получателя платежа
       * </pre>
       *
       * <code>string svc_type_id = 13;</code>
       * @return The bytes for svcTypeId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getSvcTypeIdBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(svcTypeId_);
      }
      /**
       * <pre>
       * Идентификатор получателя платежа
       * </pre>
       *
       * <code>string svc_type_id = 13;</code>
       * @param value The svcTypeId to set.
       */
      private void setSvcTypeId(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
  
        svcTypeId_ = value;
      }
      /**
       * <pre>
       * Идентификатор получателя платежа
       * </pre>
       *
       * <code>string svc_type_id = 13;</code>
       */
      private void clearSvcTypeId() {

        svcTypeId_ = getDefaultInstance().getSvcTypeId();
      }
      /**
       * <pre>
       * Идентификатор получателя платежа
       * </pre>
       *
       * <code>string svc_type_id = 13;</code>
       * @param value The bytes for svcTypeId to set.
       */
      private void setSvcTypeIdBytes(
          com.google.protobuf.ByteString value) {
        checkByteStringIsUtf8(value);
        svcTypeId_ = value.toStringUtf8();

      }

      public static final int IS_DISCOUNT_FIELD_NUMBER = 14;
      private boolean isDiscount_;
      /**
       * <pre>
       * Признак скидки
       * </pre>
       *
       * <code>bool is_discount = 14;</code>
       * @return The isDiscount.
       */
      @java.lang.Override
      public boolean getIsDiscount() {
        return isDiscount_;
      }
      /**
       * <pre>
       * Признак скидки
       * </pre>
       *
       * <code>bool is_discount = 14;</code>
       * @param value The isDiscount to set.
       */
      private void setIsDiscount(boolean value) {
        
        isDiscount_ = value;
      }
      /**
       * <pre>
       * Признак скидки
       * </pre>
       *
       * <code>bool is_discount = 14;</code>
       */
      private void clearIsDiscount() {

        isDiscount_ = false;
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position prototype) {
        return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
      }

      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * Protobuf type {@code keyapis.invoice.v1.Invoice.Position}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position, Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.Invoice.Position)
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PositionOrBuilder {
        // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }


        /**
         * <pre>
         * Идентификатор позиции.
         * # Тип: Guid
         * </pre>
         *
         * <code>string id = 1;</code>
         * @return The id.
         */
        @java.lang.Override
        public java.lang.String getId() {
          return instance.getId();
        }
        /**
         * <pre>
         * Идентификатор позиции.
         * # Тип: Guid
         * </pre>
         *
         * <code>string id = 1;</code>
         * @return The bytes for id.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getIdBytes() {
          return instance.getIdBytes();
        }
        /**
         * <pre>
         * Идентификатор позиции.
         * # Тип: Guid
         * </pre>
         *
         * <code>string id = 1;</code>
         * @param value The id to set.
         * @return This builder for chaining.
         */
        public Builder setId(
            java.lang.String value) {
          copyOnWrite();
          instance.setId(value);
          return this;
        }
        /**
         * <pre>
         * Идентификатор позиции.
         * # Тип: Guid
         * </pre>
         *
         * <code>string id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearId() {
          copyOnWrite();
          instance.clearId();
          return this;
        }
        /**
         * <pre>
         * Идентификатор позиции.
         * # Тип: Guid
         * </pre>
         *
         * <code>string id = 1;</code>
         * @param value The bytes for id to set.
         * @return This builder for chaining.
         */
        public Builder setIdBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setIdBytes(value);
          return this;
        }

        /**
         * <pre>
         * Идентификатор платежа.
         * # Тип: Guid
         * </pre>
         *
         * <code>string invoice_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return The invoiceId.
         */
        @java.lang.Override
        public java.lang.String getInvoiceId() {
          return instance.getInvoiceId();
        }
        /**
         * <pre>
         * Идентификатор платежа.
         * # Тип: Guid
         * </pre>
         *
         * <code>string invoice_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return The bytes for invoiceId.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getInvoiceIdBytes() {
          return instance.getInvoiceIdBytes();
        }
        /**
         * <pre>
         * Идентификатор платежа.
         * # Тип: Guid
         * </pre>
         *
         * <code>string invoice_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
         * @param value The invoiceId to set.
         * @return This builder for chaining.
         */
        public Builder setInvoiceId(
            java.lang.String value) {
          copyOnWrite();
          instance.setInvoiceId(value);
          return this;
        }
        /**
         * <pre>
         * Идентификатор платежа.
         * # Тип: Guid
         * </pre>
         *
         * <code>string invoice_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return This builder for chaining.
         */
        public Builder clearInvoiceId() {
          copyOnWrite();
          instance.clearInvoiceId();
          return this;
        }
        /**
         * <pre>
         * Идентификатор платежа.
         * # Тип: Guid
         * </pre>
         *
         * <code>string invoice_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
         * @param value The bytes for invoiceId to set.
         * @return This builder for chaining.
         */
        public Builder setInvoiceIdBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setInvoiceIdBytes(value);
          return this;
        }

        /**
         * <pre>
         * Название позиции
         * </pre>
         *
         * <code>string title = 3 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return The title.
         */
        @java.lang.Override
        public java.lang.String getTitle() {
          return instance.getTitle();
        }
        /**
         * <pre>
         * Название позиции
         * </pre>
         *
         * <code>string title = 3 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return The bytes for title.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getTitleBytes() {
          return instance.getTitleBytes();
        }
        /**
         * <pre>
         * Название позиции
         * </pre>
         *
         * <code>string title = 3 [(.google.api.field_behavior) = REQUIRED];</code>
         * @param value The title to set.
         * @return This builder for chaining.
         */
        public Builder setTitle(
            java.lang.String value) {
          copyOnWrite();
          instance.setTitle(value);
          return this;
        }
        /**
         * <pre>
         * Название позиции
         * </pre>
         *
         * <code>string title = 3 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return This builder for chaining.
         */
        public Builder clearTitle() {
          copyOnWrite();
          instance.clearTitle();
          return this;
        }
        /**
         * <pre>
         * Название позиции
         * </pre>
         *
         * <code>string title = 3 [(.google.api.field_behavior) = REQUIRED];</code>
         * @param value The bytes for title to set.
         * @return This builder for chaining.
         */
        public Builder setTitleBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setTitleBytes(value);
          return this;
        }

        /**
         * <pre>
         * Категория позиции (='subscription')
         * </pre>
         *
         * <code>string category = 4 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return The category.
         */
        @java.lang.Override
        public java.lang.String getCategory() {
          return instance.getCategory();
        }
        /**
         * <pre>
         * Категория позиции (='subscription')
         * </pre>
         *
         * <code>string category = 4 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return The bytes for category.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getCategoryBytes() {
          return instance.getCategoryBytes();
        }
        /**
         * <pre>
         * Категория позиции (='subscription')
         * </pre>
         *
         * <code>string category = 4 [(.google.api.field_behavior) = REQUIRED];</code>
         * @param value The category to set.
         * @return This builder for chaining.
         */
        public Builder setCategory(
            java.lang.String value) {
          copyOnWrite();
          instance.setCategory(value);
          return this;
        }
        /**
         * <pre>
         * Категория позиции (='subscription')
         * </pre>
         *
         * <code>string category = 4 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return This builder for chaining.
         */
        public Builder clearCategory() {
          copyOnWrite();
          instance.clearCategory();
          return this;
        }
        /**
         * <pre>
         * Категория позиции (='subscription')
         * </pre>
         *
         * <code>string category = 4 [(.google.api.field_behavior) = REQUIRED];</code>
         * @param value The bytes for category to set.
         * @return This builder for chaining.
         */
        public Builder setCategoryBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setCategoryBytes(value);
          return this;
        }

        /**
         * <pre>
         * Цена в рублях.
         * Число должно быть больше 0
         * </pre>
         *
         * <code>float amount = 5 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return The amount.
         */
        @java.lang.Override
        public float getAmount() {
          return instance.getAmount();
        }
        /**
         * <pre>
         * Цена в рублях.
         * Число должно быть больше 0
         * </pre>
         *
         * <code>float amount = 5 [(.google.api.field_behavior) = REQUIRED];</code>
         * @param value The amount to set.
         * @return This builder for chaining.
         */
        public Builder setAmount(float value) {
          copyOnWrite();
          instance.setAmount(value);
          return this;
        }
        /**
         * <pre>
         * Цена в рублях.
         * Число должно быть больше 0
         * </pre>
         *
         * <code>float amount = 5 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return This builder for chaining.
         */
        public Builder clearAmount() {
          copyOnWrite();
          instance.clearAmount();
          return this;
        }

        /**
         * <pre>
         * Дата создания позиции платежа.
         * # Тип: DateTime
         * </pre>
         *
         * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
         */
        @java.lang.Override
        public boolean hasCreatedAt() {
          return instance.hasCreatedAt();
        }
        /**
         * <pre>
         * Дата создания позиции платежа.
         * # Тип: DateTime
         * </pre>
         *
         * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
         */
        @java.lang.Override
        public com.google.protobuf.Timestamp getCreatedAt() {
          return instance.getCreatedAt();
        }
        /**
         * <pre>
         * Дата создания позиции платежа.
         * # Тип: DateTime
         * </pre>
         *
         * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
         */
        public Builder setCreatedAt(com.google.protobuf.Timestamp value) {
          copyOnWrite();
          instance.setCreatedAt(value);
          return this;
          }
        /**
         * <pre>
         * Дата создания позиции платежа.
         * # Тип: DateTime
         * </pre>
         *
         * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
         */
        public Builder setCreatedAt(
            com.google.protobuf.Timestamp.Builder builderForValue) {
          copyOnWrite();
          instance.setCreatedAt(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Дата создания позиции платежа.
         * # Тип: DateTime
         * </pre>
         *
         * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
         */
        public Builder mergeCreatedAt(com.google.protobuf.Timestamp value) {
          copyOnWrite();
          instance.mergeCreatedAt(value);
          return this;
        }
        /**
         * <pre>
         * Дата создания позиции платежа.
         * # Тип: DateTime
         * </pre>
         *
         * <code>.google.protobuf.Timestamp created_at = 6 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
         */
        public Builder clearCreatedAt() {  copyOnWrite();
          instance.clearCreatedAt();
          return this;
        }

        /**
         * <pre>
         * Дата обновления позиции платежа.
         * # Тип: DateTime
         * </pre>
         *
         * <code>.google.protobuf.Timestamp updated_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
         */
        @java.lang.Override
        public boolean hasUpdatedAt() {
          return instance.hasUpdatedAt();
        }
        /**
         * <pre>
         * Дата обновления позиции платежа.
         * # Тип: DateTime
         * </pre>
         *
         * <code>.google.protobuf.Timestamp updated_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
         */
        @java.lang.Override
        public com.google.protobuf.Timestamp getUpdatedAt() {
          return instance.getUpdatedAt();
        }
        /**
         * <pre>
         * Дата обновления позиции платежа.
         * # Тип: DateTime
         * </pre>
         *
         * <code>.google.protobuf.Timestamp updated_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
         */
        public Builder setUpdatedAt(com.google.protobuf.Timestamp value) {
          copyOnWrite();
          instance.setUpdatedAt(value);
          return this;
          }
        /**
         * <pre>
         * Дата обновления позиции платежа.
         * # Тип: DateTime
         * </pre>
         *
         * <code>.google.protobuf.Timestamp updated_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
         */
        public Builder setUpdatedAt(
            com.google.protobuf.Timestamp.Builder builderForValue) {
          copyOnWrite();
          instance.setUpdatedAt(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Дата обновления позиции платежа.
         * # Тип: DateTime
         * </pre>
         *
         * <code>.google.protobuf.Timestamp updated_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
         */
        public Builder mergeUpdatedAt(com.google.protobuf.Timestamp value) {
          copyOnWrite();
          instance.mergeUpdatedAt(value);
          return this;
        }
        /**
         * <pre>
         * Дата обновления позиции платежа.
         * # Тип: DateTime
         * </pre>
         *
         * <code>.google.protobuf.Timestamp updated_at = 7 [(.google.api.field_behavior) = OUTPUT_ONLY];</code>
         */
        public Builder clearUpdatedAt() {  copyOnWrite();
          instance.clearUpdatedAt();
          return this;
        }

        /**
         * <pre>
         * Идентификатор МРФ
         * </pre>
         *
         * <code>int32 mrf_id = 8 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return The mrfId.
         */
        @java.lang.Override
        public int getMrfId() {
          return instance.getMrfId();
        }
        /**
         * <pre>
         * Идентификатор МРФ
         * </pre>
         *
         * <code>int32 mrf_id = 8 [(.google.api.field_behavior) = REQUIRED];</code>
         * @param value The mrfId to set.
         * @return This builder for chaining.
         */
        public Builder setMrfId(int value) {
          copyOnWrite();
          instance.setMrfId(value);
          return this;
        }
        /**
         * <pre>
         * Идентификатор МРФ
         * </pre>
         *
         * <code>int32 mrf_id = 8 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return This builder for chaining.
         */
        public Builder clearMrfId() {
          copyOnWrite();
          instance.clearMrfId();
          return this;
        }

        /**
         * <pre>
         * Идентификатор РФ
         * </pre>
         *
         * <code>int32 rf_id = 9 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return The rfId.
         */
        @java.lang.Override
        public int getRfId() {
          return instance.getRfId();
        }
        /**
         * <pre>
         * Идентификатор РФ
         * </pre>
         *
         * <code>int32 rf_id = 9 [(.google.api.field_behavior) = REQUIRED];</code>
         * @param value The rfId to set.
         * @return This builder for chaining.
         */
        public Builder setRfId(int value) {
          copyOnWrite();
          instance.setRfId(value);
          return this;
        }
        /**
         * <pre>
         * Идентификатор РФ
         * </pre>
         *
         * <code>int32 rf_id = 9 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return This builder for chaining.
         */
        public Builder clearRfId() {
          copyOnWrite();
          instance.clearRfId();
          return this;
        }

        /**
         * <pre>
         * Идентификатор экземпляра оплачиваемой подписки.
         * # Тип: Guid
         * </pre>
         *
         * <code>string instance_id = 10 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return The instanceId.
         */
        @java.lang.Override
        public java.lang.String getInstanceId() {
          return instance.getInstanceId();
        }
        /**
         * <pre>
         * Идентификатор экземпляра оплачиваемой подписки.
         * # Тип: Guid
         * </pre>
         *
         * <code>string instance_id = 10 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return The bytes for instanceId.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getInstanceIdBytes() {
          return instance.getInstanceIdBytes();
        }
        /**
         * <pre>
         * Идентификатор экземпляра оплачиваемой подписки.
         * # Тип: Guid
         * </pre>
         *
         * <code>string instance_id = 10 [(.google.api.field_behavior) = REQUIRED];</code>
         * @param value The instanceId to set.
         * @return This builder for chaining.
         */
        public Builder setInstanceId(
            java.lang.String value) {
          copyOnWrite();
          instance.setInstanceId(value);
          return this;
        }
        /**
         * <pre>
         * Идентификатор экземпляра оплачиваемой подписки.
         * # Тип: Guid
         * </pre>
         *
         * <code>string instance_id = 10 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return This builder for chaining.
         */
        public Builder clearInstanceId() {
          copyOnWrite();
          instance.clearInstanceId();
          return this;
        }
        /**
         * <pre>
         * Идентификатор экземпляра оплачиваемой подписки.
         * # Тип: Guid
         * </pre>
         *
         * <code>string instance_id = 10 [(.google.api.field_behavior) = REQUIRED];</code>
         * @param value The bytes for instanceId to set.
         * @return This builder for chaining.
         */
        public Builder setInstanceIdBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setInstanceIdBytes(value);
          return this;
        }

        /**
         * <pre>
         * Идентификатор предложения оплачиваемой подписки
         * </pre>
         *
         * <code>int32 offering_id = 11 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return The offeringId.
         */
        @java.lang.Override
        public int getOfferingId() {
          return instance.getOfferingId();
        }
        /**
         * <pre>
         * Идентификатор предложения оплачиваемой подписки
         * </pre>
         *
         * <code>int32 offering_id = 11 [(.google.api.field_behavior) = REQUIRED];</code>
         * @param value The offeringId to set.
         * @return This builder for chaining.
         */
        public Builder setOfferingId(int value) {
          copyOnWrite();
          instance.setOfferingId(value);
          return this;
        }
        /**
         * <pre>
         * Идентификатор предложения оплачиваемой подписки
         * </pre>
         *
         * <code>int32 offering_id = 11 [(.google.api.field_behavior) = REQUIRED];</code>
         * @return This builder for chaining.
         */
        public Builder clearOfferingId() {
          copyOnWrite();
          instance.clearOfferingId();
          return this;
        }

        /**
         * <pre>
         * Срок окончания оплачиваемого периода
         * </pre>
         *
         * <code>.google.protobuf.Timestamp due_date_at = 12;</code>
         */
        @java.lang.Override
        public boolean hasDueDateAt() {
          return instance.hasDueDateAt();
        }
        /**
         * <pre>
         * Срок окончания оплачиваемого периода
         * </pre>
         *
         * <code>.google.protobuf.Timestamp due_date_at = 12;</code>
         */
        @java.lang.Override
        public com.google.protobuf.Timestamp getDueDateAt() {
          return instance.getDueDateAt();
        }
        /**
         * <pre>
         * Срок окончания оплачиваемого периода
         * </pre>
         *
         * <code>.google.protobuf.Timestamp due_date_at = 12;</code>
         */
        public Builder setDueDateAt(com.google.protobuf.Timestamp value) {
          copyOnWrite();
          instance.setDueDateAt(value);
          return this;
          }
        /**
         * <pre>
         * Срок окончания оплачиваемого периода
         * </pre>
         *
         * <code>.google.protobuf.Timestamp due_date_at = 12;</code>
         */
        public Builder setDueDateAt(
            com.google.protobuf.Timestamp.Builder builderForValue) {
          copyOnWrite();
          instance.setDueDateAt(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Срок окончания оплачиваемого периода
         * </pre>
         *
         * <code>.google.protobuf.Timestamp due_date_at = 12;</code>
         */
        public Builder mergeDueDateAt(com.google.protobuf.Timestamp value) {
          copyOnWrite();
          instance.mergeDueDateAt(value);
          return this;
        }
        /**
         * <pre>
         * Срок окончания оплачиваемого периода
         * </pre>
         *
         * <code>.google.protobuf.Timestamp due_date_at = 12;</code>
         */
        public Builder clearDueDateAt() {  copyOnWrite();
          instance.clearDueDateAt();
          return this;
        }

        /**
         * <pre>
         * Идентификатор получателя платежа
         * </pre>
         *
         * <code>string svc_type_id = 13;</code>
         * @return The svcTypeId.
         */
        @java.lang.Override
        public java.lang.String getSvcTypeId() {
          return instance.getSvcTypeId();
        }
        /**
         * <pre>
         * Идентификатор получателя платежа
         * </pre>
         *
         * <code>string svc_type_id = 13;</code>
         * @return The bytes for svcTypeId.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getSvcTypeIdBytes() {
          return instance.getSvcTypeIdBytes();
        }
        /**
         * <pre>
         * Идентификатор получателя платежа
         * </pre>
         *
         * <code>string svc_type_id = 13;</code>
         * @param value The svcTypeId to set.
         * @return This builder for chaining.
         */
        public Builder setSvcTypeId(
            java.lang.String value) {
          copyOnWrite();
          instance.setSvcTypeId(value);
          return this;
        }
        /**
         * <pre>
         * Идентификатор получателя платежа
         * </pre>
         *
         * <code>string svc_type_id = 13;</code>
         * @return This builder for chaining.
         */
        public Builder clearSvcTypeId() {
          copyOnWrite();
          instance.clearSvcTypeId();
          return this;
        }
        /**
         * <pre>
         * Идентификатор получателя платежа
         * </pre>
         *
         * <code>string svc_type_id = 13;</code>
         * @param value The bytes for svcTypeId to set.
         * @return This builder for chaining.
         */
        public Builder setSvcTypeIdBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setSvcTypeIdBytes(value);
          return this;
        }

        /**
         * <pre>
         * Признак скидки
         * </pre>
         *
         * <code>bool is_discount = 14;</code>
         * @return The isDiscount.
         */
        @java.lang.Override
        public boolean getIsDiscount() {
          return instance.getIsDiscount();
        }
        /**
         * <pre>
         * Признак скидки
         * </pre>
         *
         * <code>bool is_discount = 14;</code>
         * @param value The isDiscount to set.
         * @return This builder for chaining.
         */
        public Builder setIsDiscount(boolean value) {
          copyOnWrite();
          instance.setIsDiscount(value);
          return this;
        }
        /**
         * <pre>
         * Признак скидки
         * </pre>
         *
         * <code>bool is_discount = 14;</code>
         * @return This builder for chaining.
         */
        public Builder clearIsDiscount() {
          copyOnWrite();
          instance.clearIsDiscount();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.Invoice.Position)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "id_",
                "invoiceId_",
                "title_",
                "category_",
                "amount_",
                "createdAt_",
                "updatedAt_",
                "mrfId_",
                "rfId_",
                "instanceId_",
                "offeringId_",
                "dueDateAt_",
                "svcTypeId_",
                "isDiscount_",
              };
              java.lang.String info =
                  "\u0000\u000e\u0000\u0000\u0001\u000e\u000e\u0000\u0000\u0000\u0001\u0208\u0002\u0208" +
                  "\u0003\u0208\u0004\u0208\u0005\u0001\u0006\t\u0007\t\b\u0004\t\u0004\n\u0208\u000b" +
                  "\u0004\f\t\r\u0208\u000e\u0007";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position> parser = PARSER;
            if (parser == null) {
              synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }


      // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.Invoice.Position)
      private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position DEFAULT_INSTANCE;
      static {
        Position defaultInstance = new Position();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          Position.class, defaultInstance);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static volatile com.google.protobuf.Parser<Position> PARSER;

      public static com.google.protobuf.Parser<Position> parser() {
        return DEFAULT_INSTANCE.getParserForType();
      }
    }

    public interface SavingErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.Invoice.SavingError)
        com.google.protobuf.MessageLiteOrBuilder {

      /**
       * <pre>
       * У пользователя уже есть платеж со статусом PENDING
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists invoice_already_exists = 1;</code>
       * @return Whether the invoiceAlreadyExists field is set.
       */
      boolean hasInvoiceAlreadyExists();
      /**
       * <pre>
       * У пользователя уже есть платеж со статусом PENDING
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists invoice_already_exists = 1;</code>
       * @return The invoiceAlreadyExists.
       */
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists getInvoiceAlreadyExists();

      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка сохранения.
     * Эти проверки выполняются при работе с базой данных и сторонними сервисами
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.Invoice.SavingError}
     */
    public  static final class SavingError extends
        com.google.protobuf.GeneratedMessageLite<
            SavingError, SavingError.Builder> implements
        // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.Invoice.SavingError)
        SavingErrorOrBuilder {
      private SavingError() {
      }
      public interface InvoiceAlreadyExistsOrBuilder extends
          // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists)
          com.google.protobuf.MessageLiteOrBuilder {
      }
      /**
       * <pre>
       * У пользователя уже есть платеж со статусом PENDING
       * </pre>
       *
       * Protobuf type {@code keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists}
       */
      public  static final class InvoiceAlreadyExists extends
          com.google.protobuf.GeneratedMessageLite<
              InvoiceAlreadyExists, InvoiceAlreadyExists.Builder> implements
          // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists)
          InvoiceAlreadyExistsOrBuilder {
        private InvoiceAlreadyExists() {
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input, extensionRegistry);
        }

        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return parseDelimitedFrom(DEFAULT_INSTANCE, input);
        }

        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input, extensionRegistry);
        }

        public static Builder newBuilder() {
          return (Builder) DEFAULT_INSTANCE.createBuilder();
        }
        public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists prototype) {
          return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
        }

        /**
         * <pre>
         * У пользователя уже есть платеж со статусом PENDING
         * </pre>
         *
         * Protobuf type {@code keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageLite.Builder<
              ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists, Builder> implements
            // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists)
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExistsOrBuilder {
          // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists.newBuilder()
          private Builder() {
            super(DEFAULT_INSTANCE);
          }


          // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists)
        }
        @java.lang.Override
        @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
        protected final java.lang.Object dynamicMethod(
            com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
            java.lang.Object arg0, java.lang.Object arg1) {
          switch (method) {
            case NEW_MUTABLE_INSTANCE: {
              return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists();
            }
            case NEW_BUILDER: {
              return new Builder();
            }
            case BUILD_MESSAGE_INFO: {
                java.lang.Object[] objects = null;java.lang.String info =
                    "\u0000\u0000";
                return newMessageInfo(DEFAULT_INSTANCE, info, objects);
            }
            // fall through
            case GET_DEFAULT_INSTANCE: {
              return DEFAULT_INSTANCE;
            }
            case GET_PARSER: {
              com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists> parser = PARSER;
              if (parser == null) {
                synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists.class) {
                  parser = PARSER;
                  if (parser == null) {
                    parser =
                        new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists>(
                            DEFAULT_INSTANCE);
                    PARSER = parser;
                  }
                }
              }
              return parser;
          }
          case GET_MEMOIZED_IS_INITIALIZED: {
            return (byte) 1;
          }
          case SET_MEMOIZED_IS_INITIALIZED: {
            return null;
          }
          }
          throw new UnsupportedOperationException();
        }


        // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists)
        private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists DEFAULT_INSTANCE;
        static {
          InvoiceAlreadyExists defaultInstance = new InvoiceAlreadyExists();
          // New instances are implicitly immutable so no need to make
          // immutable.
          DEFAULT_INSTANCE = defaultInstance;
          com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
            InvoiceAlreadyExists.class, defaultInstance);
        }

        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

        private static volatile com.google.protobuf.Parser<InvoiceAlreadyExists> PARSER;

        public static com.google.protobuf.Parser<InvoiceAlreadyExists> parser() {
          return DEFAULT_INSTANCE.getParserForType();
        }
      }

      private int reasonCase_ = 0;
      private java.lang.Object reason_;
      public enum ReasonCase {
        INVOICE_ALREADY_EXISTS(1),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ReasonCase valueOf(int value) {
          return forNumber(value);
        }

        public static ReasonCase forNumber(int value) {
          switch (value) {
            case 1: return INVOICE_ALREADY_EXISTS;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      @java.lang.Override
      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      private void clearReason() {
        reasonCase_ = 0;
        reason_ = null;
      }

      public static final int INVOICE_ALREADY_EXISTS_FIELD_NUMBER = 1;
      /**
       * <pre>
       * У пользователя уже есть платеж со статусом PENDING
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists invoice_already_exists = 1;</code>
       */
      @java.lang.Override
      public boolean hasInvoiceAlreadyExists() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * У пользователя уже есть платеж со статусом PENDING
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists invoice_already_exists = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists getInvoiceAlreadyExists() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists) reason_;
        }
        return ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists.getDefaultInstance();
      }
      /**
       * <pre>
       * У пользователя уже есть платеж со статусом PENDING
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists invoice_already_exists = 1;</code>
       */
      private void setInvoiceAlreadyExists(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists value) {
        value.getClass();
  reason_ = value;
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * У пользователя уже есть платеж со статусом PENDING
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists invoice_already_exists = 1;</code>
       */
      private void mergeInvoiceAlreadyExists(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists value) {
        value.getClass();
  if (reasonCase_ == 1 &&
            reason_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists.getDefaultInstance()) {
          reason_ = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists.newBuilder((ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists) reason_)
              .mergeFrom(value).buildPartial();
        } else {
          reason_ = value;
        }
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * У пользователя уже есть платеж со статусом PENDING
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists invoice_already_exists = 1;</code>
       */
      private void clearInvoiceAlreadyExists() {
        if (reasonCase_ == 1) {
          reasonCase_ = 0;
          reason_ = null;
        }
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError prototype) {
        return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
      }

      /**
       * <pre>
       * Ошибка сохранения.
       * Эти проверки выполняются при работе с базой данных и сторонними сервисами
       * </pre>
       *
       * Protobuf type {@code keyapis.invoice.v1.Invoice.SavingError}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError, Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.Invoice.SavingError)
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingErrorOrBuilder {
        // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }

        @java.lang.Override
        public ReasonCase
            getReasonCase() {
          return instance.getReasonCase();
        }

        public Builder clearReason() {
          copyOnWrite();
          instance.clearReason();
          return this;
        }


        /**
         * <pre>
         * У пользователя уже есть платеж со статусом PENDING
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists invoice_already_exists = 1;</code>
         */
        @java.lang.Override
        public boolean hasInvoiceAlreadyExists() {
          return instance.hasInvoiceAlreadyExists();
        }
        /**
         * <pre>
         * У пользователя уже есть платеж со статусом PENDING
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists invoice_already_exists = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists getInvoiceAlreadyExists() {
          return instance.getInvoiceAlreadyExists();
        }
        /**
         * <pre>
         * У пользователя уже есть платеж со статусом PENDING
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists invoice_already_exists = 1;</code>
         */
        public Builder setInvoiceAlreadyExists(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists value) {
          copyOnWrite();
          instance.setInvoiceAlreadyExists(value);
          return this;
        }
        /**
         * <pre>
         * У пользователя уже есть платеж со статусом PENDING
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists invoice_already_exists = 1;</code>
         */
        public Builder setInvoiceAlreadyExists(
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists.Builder builderForValue) {
          copyOnWrite();
          instance.setInvoiceAlreadyExists(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * У пользователя уже есть платеж со статусом PENDING
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists invoice_already_exists = 1;</code>
         */
        public Builder mergeInvoiceAlreadyExists(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists value) {
          copyOnWrite();
          instance.mergeInvoiceAlreadyExists(value);
          return this;
        }
        /**
         * <pre>
         * У пользователя уже есть платеж со статусом PENDING
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.SavingError.InvoiceAlreadyExists invoice_already_exists = 1;</code>
         */
        public Builder clearInvoiceAlreadyExists() {
          copyOnWrite();
          instance.clearInvoiceAlreadyExists();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.Invoice.SavingError)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "reason_",
                "reasonCase_",
                ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.InvoiceAlreadyExists.class,
              };
              java.lang.String info =
                  "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001<\u0000";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError> parser = PARSER;
            if (parser == null) {
              synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }


      // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.Invoice.SavingError)
      private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError DEFAULT_INSTANCE;
      static {
        SavingError defaultInstance = new SavingError();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          SavingError.class, defaultInstance);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static volatile com.google.protobuf.Parser<SavingError> PARSER;

      public static com.google.protobuf.Parser<SavingError> parser() {
        return DEFAULT_INSTANCE.getParserForType();
      }
    }

    public static final int ID_FIELD_NUMBER = 1;
    private java.lang.String id_;
    /**
     * <pre>
     * Идентификатор платежа.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The id.
     */
    @java.lang.Override
    public java.lang.String getId() {
      return id_;
    }
    /**
     * <pre>
     * Идентификатор платежа.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for id.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(id_);
    }
    /**
     * <pre>
     * Идентификатор платежа.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The id to set.
     */
    private void setId(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      id_ = value;
    }
    /**
     * <pre>
     * Идентификатор платежа.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearId() {

      id_ = getDefaultInstance().getId();
    }
    /**
     * <pre>
     * Идентификатор платежа.
     * # Тип: Guid
     * </pre>
     *
     * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for id to set.
     */
    private void setIdBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      id_ = value.toStringUtf8();

    }

    public static final int TITLE_FIELD_NUMBER = 2;
    private java.lang.String title_;
    /**
     * <pre>
     * Описание платежа
     * </pre>
     *
     * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The title.
     */
    @java.lang.Override
    public java.lang.String getTitle() {
      return title_;
    }
    /**
     * <pre>
     * Описание платежа
     * </pre>
     *
     * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for title.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTitleBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(title_);
    }
    /**
     * <pre>
     * Описание платежа
     * </pre>
     *
     * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The title to set.
     */
    private void setTitle(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      title_ = value;
    }
    /**
     * <pre>
     * Описание платежа
     * </pre>
     *
     * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearTitle() {

      title_ = getDefaultInstance().getTitle();
    }
    /**
     * <pre>
     * Описание платежа
     * </pre>
     *
     * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for title to set.
     */
    private void setTitleBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      title_ = value.toStringUtf8();

    }

    public static final int USER_ID_FIELD_NUMBER = 3;
    private int userId_;
    /**
     * <pre>
     * Идентификатор пользователя
     * </pre>
     *
     * <code>int32 user_id = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The userId.
     */
    @java.lang.Override
    public int getUserId() {
      return userId_;
    }
    /**
     * <pre>
     * Идентификатор пользователя
     * </pre>
     *
     * <code>int32 user_id = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The userId to set.
     */
    private void setUserId(int value) {
      
      userId_ = value;
    }
    /**
     * <pre>
     * Идентификатор пользователя
     * </pre>
     *
     * <code>int32 user_id = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearUserId() {

      userId_ = 0;
    }

    public static final int INVOICE_STATUS_TYPE_FIELD_NUMBER = 4;
    private int invoiceStatusType_;
    /**
     * <pre>
     * Статус платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The enum numeric value on the wire for invoiceStatusType.
     */
    @java.lang.Override
    public int getInvoiceStatusTypeValue() {
      return invoiceStatusType_;
    }
    /**
     * <pre>
     * Статус платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The invoiceStatusType.
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.InvoiceStatusType getInvoiceStatusType() {
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.InvoiceStatusType result = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.InvoiceStatusType.forNumber(invoiceStatusType_);
      return result == null ? ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.InvoiceStatusType.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * Статус платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The enum numeric value on the wire for invoiceStatusType to set.
     */
    private void setInvoiceStatusTypeValue(int value) {
        invoiceStatusType_ = value;
    }
    /**
     * <pre>
     * Статус платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The invoiceStatusType to set.
     */
    private void setInvoiceStatusType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.InvoiceStatusType value) {
      invoiceStatusType_ = value.getNumber();

    }
    /**
     * <pre>
     * Статус платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearInvoiceStatusType() {

      invoiceStatusType_ = 0;
    }

    public static final int CREATED_AT_FIELD_NUMBER = 5;
    private com.google.protobuf.Timestamp createdAt_;
    /**
     * <pre>
     * Дата создания платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp created_at = 5 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public boolean hasCreatedAt() {
      return createdAt_ != null;
    }
    /**
     * <pre>
     * Дата создания платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp created_at = 5 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getCreatedAt() {
      return createdAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : createdAt_;
    }
    /**
     * <pre>
     * Дата создания платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp created_at = 5 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void setCreatedAt(com.google.protobuf.Timestamp value) {
      value.getClass();
  createdAt_ = value;

      }
    /**
     * <pre>
     * Дата создания платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp created_at = 5 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeCreatedAt(com.google.protobuf.Timestamp value) {
      value.getClass();
  if (createdAt_ != null &&
          createdAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
        createdAt_ =
          com.google.protobuf.Timestamp.newBuilder(createdAt_).mergeFrom(value).buildPartial();
      } else {
        createdAt_ = value;
      }

    }
    /**
     * <pre>
     * Дата создания платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp created_at = 5 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearCreatedAt() {  createdAt_ = null;

    }

    public static final int UPDATED_AT_FIELD_NUMBER = 6;
    private com.google.protobuf.Timestamp updatedAt_;
    /**
     * <pre>
     * Дата обновления платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp updated_at = 6 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public boolean hasUpdatedAt() {
      return updatedAt_ != null;
    }
    /**
     * <pre>
     * Дата обновления платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp updated_at = 6 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getUpdatedAt() {
      return updatedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : updatedAt_;
    }
    /**
     * <pre>
     * Дата обновления платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp updated_at = 6 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void setUpdatedAt(com.google.protobuf.Timestamp value) {
      value.getClass();
  updatedAt_ = value;

      }
    /**
     * <pre>
     * Дата обновления платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp updated_at = 6 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeUpdatedAt(com.google.protobuf.Timestamp value) {
      value.getClass();
  if (updatedAt_ != null &&
          updatedAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
        updatedAt_ =
          com.google.protobuf.Timestamp.newBuilder(updatedAt_).mergeFrom(value).buildPartial();
      } else {
        updatedAt_ = value;
      }

    }
    /**
     * <pre>
     * Дата обновления платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp updated_at = 6 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearUpdatedAt() {  updatedAt_ = null;

    }

    public static final int POSITIONS_FIELD_NUMBER = 7;
    private com.google.protobuf.Internal.ProtobufList<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position> positions_;
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public java.util.List<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position> getPositionsList() {
      return positions_;
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    public java.util.List<? extends ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PositionOrBuilder> 
        getPositionsOrBuilderList() {
      return positions_;
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public int getPositionsCount() {
      return positions_.size();
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position getPositions(int index) {
      return positions_.get(index);
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PositionOrBuilder getPositionsOrBuilder(
        int index) {
      return positions_.get(index);
    }
    private void ensurePositionsIsMutable() {
      com.google.protobuf.Internal.ProtobufList<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position> tmp = positions_;
      if (!tmp.isModifiable()) {
        positions_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }

    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void setPositions(
        int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position value) {
      value.getClass();
  ensurePositionsIsMutable();
      positions_.set(index, value);
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void addPositions(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position value) {
      value.getClass();
  ensurePositionsIsMutable();
      positions_.add(value);
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void addPositions(
        int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position value) {
      value.getClass();
  ensurePositionsIsMutable();
      positions_.add(index, value);
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void addAllPositions(
        java.lang.Iterable<? extends ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position> values) {
      ensurePositionsIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, positions_);
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearPositions() {
      positions_ = emptyProtobufList();
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void removePositions(int index) {
      ensurePositionsIsMutable();
      positions_.remove(index);
    }

    public static final int PAY_INTERFACE_TYPE_FIELD_NUMBER = 8;
    private int payInterfaceType_;
    /**
     * <pre>
     * Метод платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 8;</code>
     * @return The enum numeric value on the wire for payInterfaceType.
     */
    @java.lang.Override
    public int getPayInterfaceTypeValue() {
      return payInterfaceType_;
    }
    /**
     * <pre>
     * Метод платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 8;</code>
     * @return The payInterfaceType.
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PayInterfaceType getPayInterfaceType() {
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PayInterfaceType result = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PayInterfaceType.forNumber(payInterfaceType_);
      return result == null ? ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PayInterfaceType.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * Метод платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 8;</code>
     * @param value The enum numeric value on the wire for payInterfaceType to set.
     */
    private void setPayInterfaceTypeValue(int value) {
        payInterfaceType_ = value;
    }
    /**
     * <pre>
     * Метод платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 8;</code>
     * @param value The payInterfaceType to set.
     */
    private void setPayInterfaceType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PayInterfaceType value) {
      payInterfaceType_ = value.getNumber();

    }
    /**
     * <pre>
     * Метод платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 8;</code>
     */
    private void clearPayInterfaceType() {

      payInterfaceType_ = 0;
    }

    public static final int PAYWAY_TYPE_FIELD_NUMBER = 9;
    private int paywayType_;
    /**
     * <pre>
     * Способ оплаты
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 9;</code>
     * @return The enum numeric value on the wire for paywayType.
     */
    @java.lang.Override
    public int getPaywayTypeValue() {
      return paywayType_;
    }
    /**
     * <pre>
     * Способ оплаты
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 9;</code>
     * @return The paywayType.
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PaywayType getPaywayType() {
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PaywayType result = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PaywayType.forNumber(paywayType_);
      return result == null ? ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PaywayType.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * Способ оплаты
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 9;</code>
     * @param value The enum numeric value on the wire for paywayType to set.
     */
    private void setPaywayTypeValue(int value) {
        paywayType_ = value;
    }
    /**
     * <pre>
     * Способ оплаты
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 9;</code>
     * @param value The paywayType to set.
     */
    private void setPaywayType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PaywayType value) {
      paywayType_ = value.getNumber();

    }
    /**
     * <pre>
     * Способ оплаты
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 9;</code>
     */
    private void clearPaywayType() {

      paywayType_ = 0;
    }

    public static final int STATUS_CHANGED_AT_FIELD_NUMBER = 10;
    private com.google.protobuf.Timestamp statusChangedAt_;
    /**
     * <pre>
     * Дата изменения статуса платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp status_changed_at = 10;</code>
     */
    @java.lang.Override
    public boolean hasStatusChangedAt() {
      return statusChangedAt_ != null;
    }
    /**
     * <pre>
     * Дата изменения статуса платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp status_changed_at = 10;</code>
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getStatusChangedAt() {
      return statusChangedAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : statusChangedAt_;
    }
    /**
     * <pre>
     * Дата изменения статуса платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp status_changed_at = 10;</code>
     */
    private void setStatusChangedAt(com.google.protobuf.Timestamp value) {
      value.getClass();
  statusChangedAt_ = value;

      }
    /**
     * <pre>
     * Дата изменения статуса платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp status_changed_at = 10;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeStatusChangedAt(com.google.protobuf.Timestamp value) {
      value.getClass();
  if (statusChangedAt_ != null &&
          statusChangedAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
        statusChangedAt_ =
          com.google.protobuf.Timestamp.newBuilder(statusChangedAt_).mergeFrom(value).buildPartial();
      } else {
        statusChangedAt_ = value;
      }

    }
    /**
     * <pre>
     * Дата изменения статуса платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp status_changed_at = 10;</code>
     */
    private void clearStatusChangedAt() {  statusChangedAt_ = null;

    }

    public static final int PAID_AT_FIELD_NUMBER = 11;
    private com.google.protobuf.Timestamp paidAt_;
    /**
     * <pre>
     * Дата платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp paid_at = 11;</code>
     */
    @java.lang.Override
    public boolean hasPaidAt() {
      return paidAt_ != null;
    }
    /**
     * <pre>
     * Дата платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp paid_at = 11;</code>
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getPaidAt() {
      return paidAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : paidAt_;
    }
    /**
     * <pre>
     * Дата платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp paid_at = 11;</code>
     */
    private void setPaidAt(com.google.protobuf.Timestamp value) {
      value.getClass();
  paidAt_ = value;

      }
    /**
     * <pre>
     * Дата платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp paid_at = 11;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergePaidAt(com.google.protobuf.Timestamp value) {
      value.getClass();
  if (paidAt_ != null &&
          paidAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
        paidAt_ =
          com.google.protobuf.Timestamp.newBuilder(paidAt_).mergeFrom(value).buildPartial();
      } else {
        paidAt_ = value;
      }

    }
    /**
     * <pre>
     * Дата платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp paid_at = 11;</code>
     */
    private void clearPaidAt() {  paidAt_ = null;

    }

    public static final int PAY_URL_FIELD_NUMBER = 12;
    private java.lang.String payUrl_;
    /**
     * <pre>
     * Платежная ссылка
     * </pre>
     *
     * <code>string pay_url = 12;</code>
     * @return The payUrl.
     */
    @java.lang.Override
    public java.lang.String getPayUrl() {
      return payUrl_;
    }
    /**
     * <pre>
     * Платежная ссылка
     * </pre>
     *
     * <code>string pay_url = 12;</code>
     * @return The bytes for payUrl.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPayUrlBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(payUrl_);
    }
    /**
     * <pre>
     * Платежная ссылка
     * </pre>
     *
     * <code>string pay_url = 12;</code>
     * @param value The payUrl to set.
     */
    private void setPayUrl(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      payUrl_ = value;
    }
    /**
     * <pre>
     * Платежная ссылка
     * </pre>
     *
     * <code>string pay_url = 12;</code>
     */
    private void clearPayUrl() {

      payUrl_ = getDefaultInstance().getPayUrl();
    }
    /**
     * <pre>
     * Платежная ссылка
     * </pre>
     *
     * <code>string pay_url = 12;</code>
     * @param value The bytes for payUrl to set.
     */
    private void setPayUrlBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      payUrl_ = value.toStringUtf8();

    }

    public static final int PAID_BY_CARD_MASKED_FIELD_NUMBER = 13;
    private java.lang.String paidByCardMasked_;
    /**
     * <pre>
     * Маскированный номер карты при платеже
     * </pre>
     *
     * <code>string paid_by_card_masked = 13;</code>
     * @return The paidByCardMasked.
     */
    @java.lang.Override
    public java.lang.String getPaidByCardMasked() {
      return paidByCardMasked_;
    }
    /**
     * <pre>
     * Маскированный номер карты при платеже
     * </pre>
     *
     * <code>string paid_by_card_masked = 13;</code>
     * @return The bytes for paidByCardMasked.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPaidByCardMaskedBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(paidByCardMasked_);
    }
    /**
     * <pre>
     * Маскированный номер карты при платеже
     * </pre>
     *
     * <code>string paid_by_card_masked = 13;</code>
     * @param value The paidByCardMasked to set.
     */
    private void setPaidByCardMasked(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      paidByCardMasked_ = value;
    }
    /**
     * <pre>
     * Маскированный номер карты при платеже
     * </pre>
     *
     * <code>string paid_by_card_masked = 13;</code>
     */
    private void clearPaidByCardMasked() {

      paidByCardMasked_ = getDefaultInstance().getPaidByCardMasked();
    }
    /**
     * <pre>
     * Маскированный номер карты при платеже
     * </pre>
     *
     * <code>string paid_by_card_masked = 13;</code>
     * @param value The bytes for paidByCardMasked to set.
     */
    private void setPaidByCardMaskedBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      paidByCardMasked_ = value.toStringUtf8();

    }

    public static final int PAID_BY_CARD_ESPP_ID_FIELD_NUMBER = 14;
    private java.lang.String paidByCardEsppId_;
    /**
     * <pre>
     * Идентификатор платежного средства в внешней системы
     * </pre>
     *
     * <code>string paid_by_card_espp_id = 14;</code>
     * @return The paidByCardEsppId.
     */
    @java.lang.Override
    public java.lang.String getPaidByCardEsppId() {
      return paidByCardEsppId_;
    }
    /**
     * <pre>
     * Идентификатор платежного средства в внешней системы
     * </pre>
     *
     * <code>string paid_by_card_espp_id = 14;</code>
     * @return The bytes for paidByCardEsppId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPaidByCardEsppIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(paidByCardEsppId_);
    }
    /**
     * <pre>
     * Идентификатор платежного средства в внешней системы
     * </pre>
     *
     * <code>string paid_by_card_espp_id = 14;</code>
     * @param value The paidByCardEsppId to set.
     */
    private void setPaidByCardEsppId(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      paidByCardEsppId_ = value;
    }
    /**
     * <pre>
     * Идентификатор платежного средства в внешней системы
     * </pre>
     *
     * <code>string paid_by_card_espp_id = 14;</code>
     */
    private void clearPaidByCardEsppId() {

      paidByCardEsppId_ = getDefaultInstance().getPaidByCardEsppId();
    }
    /**
     * <pre>
     * Идентификатор платежного средства в внешней системы
     * </pre>
     *
     * <code>string paid_by_card_espp_id = 14;</code>
     * @param value The bytes for paidByCardEsppId to set.
     */
    private void setPaidByCardEsppIdBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      paidByCardEsppId_ = value.toStringUtf8();

    }

    public static final int CARD_TYPE_FIELD_NUMBER = 15;
    private int cardType_;
    /**
     * <pre>
     * Тип банковской карты
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.CardType card_type = 15;</code>
     * @return The enum numeric value on the wire for cardType.
     */
    @java.lang.Override
    public int getCardTypeValue() {
      return cardType_;
    }
    /**
     * <pre>
     * Тип банковской карты
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.CardType card_type = 15;</code>
     * @return The cardType.
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.CardType getCardType() {
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.CardType result = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.CardType.forNumber(cardType_);
      return result == null ? ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.CardType.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * Тип банковской карты
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.CardType card_type = 15;</code>
     * @param value The enum numeric value on the wire for cardType to set.
     */
    private void setCardTypeValue(int value) {
        cardType_ = value;
    }
    /**
     * <pre>
     * Тип банковской карты
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.CardType card_type = 15;</code>
     * @param value The cardType to set.
     */
    private void setCardType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.CardType value) {
      cardType_ = value.getNumber();

    }
    /**
     * <pre>
     * Тип банковской карты
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.CardType card_type = 15;</code>
     */
    private void clearCardType() {

      cardType_ = 0;
    }

    public static final int ESPP_REQ_STATUS_FIELD_NUMBER = 16;
    private int esppReqStatus_;
    /**
     * <pre>
     * Код ошибки внешней системы
     * </pre>
     *
     * <code>int32 espp_req_status = 16;</code>
     * @return The esppReqStatus.
     */
    @java.lang.Override
    public int getEsppReqStatus() {
      return esppReqStatus_;
    }
    /**
     * <pre>
     * Код ошибки внешней системы
     * </pre>
     *
     * <code>int32 espp_req_status = 16;</code>
     * @param value The esppReqStatus to set.
     */
    private void setEsppReqStatus(int value) {
      
      esppReqStatus_ = value;
    }
    /**
     * <pre>
     * Код ошибки внешней системы
     * </pre>
     *
     * <code>int32 espp_req_status = 16;</code>
     */
    private void clearEsppReqStatus() {

      esppReqStatus_ = 0;
    }

    public static final int ESPP_REQ_USER_MSG_FIELD_NUMBER = 17;
    private java.lang.String esppReqUserMsg_;
    /**
     * <pre>
     * Комментарий к статусу платежа из внешней системы
     * </pre>
     *
     * <code>string espp_req_user_msg = 17;</code>
     * @return The esppReqUserMsg.
     */
    @java.lang.Override
    public java.lang.String getEsppReqUserMsg() {
      return esppReqUserMsg_;
    }
    /**
     * <pre>
     * Комментарий к статусу платежа из внешней системы
     * </pre>
     *
     * <code>string espp_req_user_msg = 17;</code>
     * @return The bytes for esppReqUserMsg.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEsppReqUserMsgBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(esppReqUserMsg_);
    }
    /**
     * <pre>
     * Комментарий к статусу платежа из внешней системы
     * </pre>
     *
     * <code>string espp_req_user_msg = 17;</code>
     * @param value The esppReqUserMsg to set.
     */
    private void setEsppReqUserMsg(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      esppReqUserMsg_ = value;
    }
    /**
     * <pre>
     * Комментарий к статусу платежа из внешней системы
     * </pre>
     *
     * <code>string espp_req_user_msg = 17;</code>
     */
    private void clearEsppReqUserMsg() {

      esppReqUserMsg_ = getDefaultInstance().getEsppReqUserMsg();
    }
    /**
     * <pre>
     * Комментарий к статусу платежа из внешней системы
     * </pre>
     *
     * <code>string espp_req_user_msg = 17;</code>
     * @param value The bytes for esppReqUserMsg to set.
     */
    private void setEsppReqUserMsgBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      esppReqUserMsg_ = value.toStringUtf8();

    }

    public static final int ESPP_INVOICE_ID_FIELD_NUMBER = 18;
    private java.lang.String esppInvoiceId_;
    /**
     * <pre>
     * Уникальный номер транзакции в внешней системы
     * </pre>
     *
     * <code>string espp_invoice_id = 18;</code>
     * @return The esppInvoiceId.
     */
    @java.lang.Override
    public java.lang.String getEsppInvoiceId() {
      return esppInvoiceId_;
    }
    /**
     * <pre>
     * Уникальный номер транзакции в внешней системы
     * </pre>
     *
     * <code>string espp_invoice_id = 18;</code>
     * @return The bytes for esppInvoiceId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEsppInvoiceIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(esppInvoiceId_);
    }
    /**
     * <pre>
     * Уникальный номер транзакции в внешней системы
     * </pre>
     *
     * <code>string espp_invoice_id = 18;</code>
     * @param value The esppInvoiceId to set.
     */
    private void setEsppInvoiceId(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      esppInvoiceId_ = value;
    }
    /**
     * <pre>
     * Уникальный номер транзакции в внешней системы
     * </pre>
     *
     * <code>string espp_invoice_id = 18;</code>
     */
    private void clearEsppInvoiceId() {

      esppInvoiceId_ = getDefaultInstance().getEsppInvoiceId();
    }
    /**
     * <pre>
     * Уникальный номер транзакции в внешней системы
     * </pre>
     *
     * <code>string espp_invoice_id = 18;</code>
     * @param value The bytes for esppInvoiceId to set.
     */
    private void setEsppInvoiceIdBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      esppInvoiceId_ = value.toStringUtf8();

    }

    public static final int PHONE_NUMBER_FIELD_NUMBER = 19;
    private java.lang.String phoneNumber_;
    /**
     * <pre>
     * Номер телефона
     * </pre>
     *
     * <code>string phone_number = 19;</code>
     * @return The phoneNumber.
     */
    @java.lang.Override
    public java.lang.String getPhoneNumber() {
      return phoneNumber_;
    }
    /**
     * <pre>
     * Номер телефона
     * </pre>
     *
     * <code>string phone_number = 19;</code>
     * @return The bytes for phoneNumber.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPhoneNumberBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(phoneNumber_);
    }
    /**
     * <pre>
     * Номер телефона
     * </pre>
     *
     * <code>string phone_number = 19;</code>
     * @param value The phoneNumber to set.
     */
    private void setPhoneNumber(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      phoneNumber_ = value;
    }
    /**
     * <pre>
     * Номер телефона
     * </pre>
     *
     * <code>string phone_number = 19;</code>
     */
    private void clearPhoneNumber() {

      phoneNumber_ = getDefaultInstance().getPhoneNumber();
    }
    /**
     * <pre>
     * Номер телефона
     * </pre>
     *
     * <code>string phone_number = 19;</code>
     * @param value The bytes for phoneNumber to set.
     */
    private void setPhoneNumberBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      phoneNumber_ = value.toStringUtf8();

    }

    public static final int EMAIL_FIELD_NUMBER = 20;
    private java.lang.String email_;
    /**
     * <pre>
     * Электронная почта
     * </pre>
     *
     * <code>string email = 20;</code>
     * @return The email.
     */
    @java.lang.Override
    public java.lang.String getEmail() {
      return email_;
    }
    /**
     * <pre>
     * Электронная почта
     * </pre>
     *
     * <code>string email = 20;</code>
     * @return The bytes for email.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEmailBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(email_);
    }
    /**
     * <pre>
     * Электронная почта
     * </pre>
     *
     * <code>string email = 20;</code>
     * @param value The email to set.
     */
    private void setEmail(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      email_ = value;
    }
    /**
     * <pre>
     * Электронная почта
     * </pre>
     *
     * <code>string email = 20;</code>
     */
    private void clearEmail() {

      email_ = getDefaultInstance().getEmail();
    }
    /**
     * <pre>
     * Электронная почта
     * </pre>
     *
     * <code>string email = 20;</code>
     * @param value The bytes for email to set.
     */
    private void setEmailBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      email_ = value.toStringUtf8();

    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Выставленный счёт
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.Invoice}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.Invoice)
        ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceOrBuilder {
      // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Идентификатор платежа.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The id.
       */
      @java.lang.Override
      public java.lang.String getId() {
        return instance.getId();
      }
      /**
       * <pre>
       * Идентификатор платежа.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for id.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getIdBytes() {
        return instance.getIdBytes();
      }
      /**
       * <pre>
       * Идентификатор платежа.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The id to set.
       * @return This builder for chaining.
       */
      public Builder setId(
          java.lang.String value) {
        copyOnWrite();
        instance.setId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор платежа.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearId() {
        copyOnWrite();
        instance.clearId();
        return this;
      }
      /**
       * <pre>
       * Идентификатор платежа.
       * # Тип: Guid
       * </pre>
       *
       * <code>string id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for id to set.
       * @return This builder for chaining.
       */
      public Builder setIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setIdBytes(value);
        return this;
      }

      /**
       * <pre>
       * Описание платежа
       * </pre>
       *
       * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The title.
       */
      @java.lang.Override
      public java.lang.String getTitle() {
        return instance.getTitle();
      }
      /**
       * <pre>
       * Описание платежа
       * </pre>
       *
       * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for title.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getTitleBytes() {
        return instance.getTitleBytes();
      }
      /**
       * <pre>
       * Описание платежа
       * </pre>
       *
       * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The title to set.
       * @return This builder for chaining.
       */
      public Builder setTitle(
          java.lang.String value) {
        copyOnWrite();
        instance.setTitle(value);
        return this;
      }
      /**
       * <pre>
       * Описание платежа
       * </pre>
       *
       * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearTitle() {
        copyOnWrite();
        instance.clearTitle();
        return this;
      }
      /**
       * <pre>
       * Описание платежа
       * </pre>
       *
       * <code>string title = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for title to set.
       * @return This builder for chaining.
       */
      public Builder setTitleBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setTitleBytes(value);
        return this;
      }

      /**
       * <pre>
       * Идентификатор пользователя
       * </pre>
       *
       * <code>int32 user_id = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The userId.
       */
      @java.lang.Override
      public int getUserId() {
        return instance.getUserId();
      }
      /**
       * <pre>
       * Идентификатор пользователя
       * </pre>
       *
       * <code>int32 user_id = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The userId to set.
       * @return This builder for chaining.
       */
      public Builder setUserId(int value) {
        copyOnWrite();
        instance.setUserId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор пользователя
       * </pre>
       *
       * <code>int32 user_id = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearUserId() {
        copyOnWrite();
        instance.clearUserId();
        return this;
      }

      /**
       * <pre>
       * Статус платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The enum numeric value on the wire for invoiceStatusType.
       */
      @java.lang.Override
      public int getInvoiceStatusTypeValue() {
        return instance.getInvoiceStatusTypeValue();
      }
      /**
       * <pre>
       * Статус платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The invoiceStatusType to set.
       * @return This builder for chaining.
       */
      public Builder setInvoiceStatusTypeValue(int value) {
        copyOnWrite();
        instance.setInvoiceStatusTypeValue(value);
        return this;
      }
      /**
       * <pre>
       * Статус платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The invoiceStatusType.
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.InvoiceStatusType getInvoiceStatusType() {
        return instance.getInvoiceStatusType();
      }
      /**
       * <pre>
       * Статус платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The enum numeric value on the wire for invoiceStatusType to set.
       * @return This builder for chaining.
       */
      public Builder setInvoiceStatusType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.InvoiceStatusType value) {
        copyOnWrite();
        instance.setInvoiceStatusType(value);
        return this;
      }
      /**
       * <pre>
       * Статус платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearInvoiceStatusType() {
        copyOnWrite();
        instance.clearInvoiceStatusType();
        return this;
      }

      /**
       * <pre>
       * Дата создания платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 5 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public boolean hasCreatedAt() {
        return instance.hasCreatedAt();
      }
      /**
       * <pre>
       * Дата создания платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 5 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public com.google.protobuf.Timestamp getCreatedAt() {
        return instance.getCreatedAt();
      }
      /**
       * <pre>
       * Дата создания платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 5 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setCreatedAt(com.google.protobuf.Timestamp value) {
        copyOnWrite();
        instance.setCreatedAt(value);
        return this;
        }
      /**
       * <pre>
       * Дата создания платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 5 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setCreatedAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        copyOnWrite();
        instance.setCreatedAt(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Дата создания платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 5 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder mergeCreatedAt(com.google.protobuf.Timestamp value) {
        copyOnWrite();
        instance.mergeCreatedAt(value);
        return this;
      }
      /**
       * <pre>
       * Дата создания платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp created_at = 5 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearCreatedAt() {  copyOnWrite();
        instance.clearCreatedAt();
        return this;
      }

      /**
       * <pre>
       * Дата обновления платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp updated_at = 6 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public boolean hasUpdatedAt() {
        return instance.hasUpdatedAt();
      }
      /**
       * <pre>
       * Дата обновления платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp updated_at = 6 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public com.google.protobuf.Timestamp getUpdatedAt() {
        return instance.getUpdatedAt();
      }
      /**
       * <pre>
       * Дата обновления платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp updated_at = 6 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setUpdatedAt(com.google.protobuf.Timestamp value) {
        copyOnWrite();
        instance.setUpdatedAt(value);
        return this;
        }
      /**
       * <pre>
       * Дата обновления платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp updated_at = 6 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setUpdatedAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        copyOnWrite();
        instance.setUpdatedAt(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Дата обновления платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp updated_at = 6 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder mergeUpdatedAt(com.google.protobuf.Timestamp value) {
        copyOnWrite();
        instance.mergeUpdatedAt(value);
        return this;
      }
      /**
       * <pre>
       * Дата обновления платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp updated_at = 6 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearUpdatedAt() {  copyOnWrite();
        instance.clearUpdatedAt();
        return this;
      }

      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public java.util.List<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position> getPositionsList() {
        return java.util.Collections.unmodifiableList(
            instance.getPositionsList());
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public int getPositionsCount() {
        return instance.getPositionsCount();
      }/**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position getPositions(int index) {
        return instance.getPositions(index);
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setPositions(
          int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position value) {
        copyOnWrite();
        instance.setPositions(index, value);
        return this;
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setPositions(
          int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position.Builder builderForValue) {
        copyOnWrite();
        instance.setPositions(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder addPositions(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position value) {
        copyOnWrite();
        instance.addPositions(value);
        return this;
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder addPositions(
          int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position value) {
        copyOnWrite();
        instance.addPositions(index, value);
        return this;
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder addPositions(
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position.Builder builderForValue) {
        copyOnWrite();
        instance.addPositions(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder addPositions(
          int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position.Builder builderForValue) {
        copyOnWrite();
        instance.addPositions(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder addAllPositions(
          java.lang.Iterable<? extends ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position> values) {
        copyOnWrite();
        instance.addAllPositions(values);
        return this;
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearPositions() {
        copyOnWrite();
        instance.clearPositions();
        return this;
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 7 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder removePositions(int index) {
        copyOnWrite();
        instance.removePositions(index);
        return this;
      }

      /**
       * <pre>
       * Метод платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 8;</code>
       * @return The enum numeric value on the wire for payInterfaceType.
       */
      @java.lang.Override
      public int getPayInterfaceTypeValue() {
        return instance.getPayInterfaceTypeValue();
      }
      /**
       * <pre>
       * Метод платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 8;</code>
       * @param value The payInterfaceType to set.
       * @return This builder for chaining.
       */
      public Builder setPayInterfaceTypeValue(int value) {
        copyOnWrite();
        instance.setPayInterfaceTypeValue(value);
        return this;
      }
      /**
       * <pre>
       * Метод платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 8;</code>
       * @return The payInterfaceType.
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PayInterfaceType getPayInterfaceType() {
        return instance.getPayInterfaceType();
      }
      /**
       * <pre>
       * Метод платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 8;</code>
       * @param value The enum numeric value on the wire for payInterfaceType to set.
       * @return This builder for chaining.
       */
      public Builder setPayInterfaceType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PayInterfaceType value) {
        copyOnWrite();
        instance.setPayInterfaceType(value);
        return this;
      }
      /**
       * <pre>
       * Метод платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearPayInterfaceType() {
        copyOnWrite();
        instance.clearPayInterfaceType();
        return this;
      }

      /**
       * <pre>
       * Способ оплаты
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 9;</code>
       * @return The enum numeric value on the wire for paywayType.
       */
      @java.lang.Override
      public int getPaywayTypeValue() {
        return instance.getPaywayTypeValue();
      }
      /**
       * <pre>
       * Способ оплаты
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 9;</code>
       * @param value The paywayType to set.
       * @return This builder for chaining.
       */
      public Builder setPaywayTypeValue(int value) {
        copyOnWrite();
        instance.setPaywayTypeValue(value);
        return this;
      }
      /**
       * <pre>
       * Способ оплаты
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 9;</code>
       * @return The paywayType.
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PaywayType getPaywayType() {
        return instance.getPaywayType();
      }
      /**
       * <pre>
       * Способ оплаты
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 9;</code>
       * @param value The enum numeric value on the wire for paywayType to set.
       * @return This builder for chaining.
       */
      public Builder setPaywayType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PaywayType value) {
        copyOnWrite();
        instance.setPaywayType(value);
        return this;
      }
      /**
       * <pre>
       * Способ оплаты
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearPaywayType() {
        copyOnWrite();
        instance.clearPaywayType();
        return this;
      }

      /**
       * <pre>
       * Дата изменения статуса платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp status_changed_at = 10;</code>
       */
      @java.lang.Override
      public boolean hasStatusChangedAt() {
        return instance.hasStatusChangedAt();
      }
      /**
       * <pre>
       * Дата изменения статуса платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp status_changed_at = 10;</code>
       */
      @java.lang.Override
      public com.google.protobuf.Timestamp getStatusChangedAt() {
        return instance.getStatusChangedAt();
      }
      /**
       * <pre>
       * Дата изменения статуса платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp status_changed_at = 10;</code>
       */
      public Builder setStatusChangedAt(com.google.protobuf.Timestamp value) {
        copyOnWrite();
        instance.setStatusChangedAt(value);
        return this;
        }
      /**
       * <pre>
       * Дата изменения статуса платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp status_changed_at = 10;</code>
       */
      public Builder setStatusChangedAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        copyOnWrite();
        instance.setStatusChangedAt(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Дата изменения статуса платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp status_changed_at = 10;</code>
       */
      public Builder mergeStatusChangedAt(com.google.protobuf.Timestamp value) {
        copyOnWrite();
        instance.mergeStatusChangedAt(value);
        return this;
      }
      /**
       * <pre>
       * Дата изменения статуса платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp status_changed_at = 10;</code>
       */
      public Builder clearStatusChangedAt() {  copyOnWrite();
        instance.clearStatusChangedAt();
        return this;
      }

      /**
       * <pre>
       * Дата платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp paid_at = 11;</code>
       */
      @java.lang.Override
      public boolean hasPaidAt() {
        return instance.hasPaidAt();
      }
      /**
       * <pre>
       * Дата платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp paid_at = 11;</code>
       */
      @java.lang.Override
      public com.google.protobuf.Timestamp getPaidAt() {
        return instance.getPaidAt();
      }
      /**
       * <pre>
       * Дата платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp paid_at = 11;</code>
       */
      public Builder setPaidAt(com.google.protobuf.Timestamp value) {
        copyOnWrite();
        instance.setPaidAt(value);
        return this;
        }
      /**
       * <pre>
       * Дата платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp paid_at = 11;</code>
       */
      public Builder setPaidAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        copyOnWrite();
        instance.setPaidAt(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Дата платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp paid_at = 11;</code>
       */
      public Builder mergePaidAt(com.google.protobuf.Timestamp value) {
        copyOnWrite();
        instance.mergePaidAt(value);
        return this;
      }
      /**
       * <pre>
       * Дата платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp paid_at = 11;</code>
       */
      public Builder clearPaidAt() {  copyOnWrite();
        instance.clearPaidAt();
        return this;
      }

      /**
       * <pre>
       * Платежная ссылка
       * </pre>
       *
       * <code>string pay_url = 12;</code>
       * @return The payUrl.
       */
      @java.lang.Override
      public java.lang.String getPayUrl() {
        return instance.getPayUrl();
      }
      /**
       * <pre>
       * Платежная ссылка
       * </pre>
       *
       * <code>string pay_url = 12;</code>
       * @return The bytes for payUrl.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getPayUrlBytes() {
        return instance.getPayUrlBytes();
      }
      /**
       * <pre>
       * Платежная ссылка
       * </pre>
       *
       * <code>string pay_url = 12;</code>
       * @param value The payUrl to set.
       * @return This builder for chaining.
       */
      public Builder setPayUrl(
          java.lang.String value) {
        copyOnWrite();
        instance.setPayUrl(value);
        return this;
      }
      /**
       * <pre>
       * Платежная ссылка
       * </pre>
       *
       * <code>string pay_url = 12;</code>
       * @return This builder for chaining.
       */
      public Builder clearPayUrl() {
        copyOnWrite();
        instance.clearPayUrl();
        return this;
      }
      /**
       * <pre>
       * Платежная ссылка
       * </pre>
       *
       * <code>string pay_url = 12;</code>
       * @param value The bytes for payUrl to set.
       * @return This builder for chaining.
       */
      public Builder setPayUrlBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setPayUrlBytes(value);
        return this;
      }

      /**
       * <pre>
       * Маскированный номер карты при платеже
       * </pre>
       *
       * <code>string paid_by_card_masked = 13;</code>
       * @return The paidByCardMasked.
       */
      @java.lang.Override
      public java.lang.String getPaidByCardMasked() {
        return instance.getPaidByCardMasked();
      }
      /**
       * <pre>
       * Маскированный номер карты при платеже
       * </pre>
       *
       * <code>string paid_by_card_masked = 13;</code>
       * @return The bytes for paidByCardMasked.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getPaidByCardMaskedBytes() {
        return instance.getPaidByCardMaskedBytes();
      }
      /**
       * <pre>
       * Маскированный номер карты при платеже
       * </pre>
       *
       * <code>string paid_by_card_masked = 13;</code>
       * @param value The paidByCardMasked to set.
       * @return This builder for chaining.
       */
      public Builder setPaidByCardMasked(
          java.lang.String value) {
        copyOnWrite();
        instance.setPaidByCardMasked(value);
        return this;
      }
      /**
       * <pre>
       * Маскированный номер карты при платеже
       * </pre>
       *
       * <code>string paid_by_card_masked = 13;</code>
       * @return This builder for chaining.
       */
      public Builder clearPaidByCardMasked() {
        copyOnWrite();
        instance.clearPaidByCardMasked();
        return this;
      }
      /**
       * <pre>
       * Маскированный номер карты при платеже
       * </pre>
       *
       * <code>string paid_by_card_masked = 13;</code>
       * @param value The bytes for paidByCardMasked to set.
       * @return This builder for chaining.
       */
      public Builder setPaidByCardMaskedBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setPaidByCardMaskedBytes(value);
        return this;
      }

      /**
       * <pre>
       * Идентификатор платежного средства в внешней системы
       * </pre>
       *
       * <code>string paid_by_card_espp_id = 14;</code>
       * @return The paidByCardEsppId.
       */
      @java.lang.Override
      public java.lang.String getPaidByCardEsppId() {
        return instance.getPaidByCardEsppId();
      }
      /**
       * <pre>
       * Идентификатор платежного средства в внешней системы
       * </pre>
       *
       * <code>string paid_by_card_espp_id = 14;</code>
       * @return The bytes for paidByCardEsppId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getPaidByCardEsppIdBytes() {
        return instance.getPaidByCardEsppIdBytes();
      }
      /**
       * <pre>
       * Идентификатор платежного средства в внешней системы
       * </pre>
       *
       * <code>string paid_by_card_espp_id = 14;</code>
       * @param value The paidByCardEsppId to set.
       * @return This builder for chaining.
       */
      public Builder setPaidByCardEsppId(
          java.lang.String value) {
        copyOnWrite();
        instance.setPaidByCardEsppId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор платежного средства в внешней системы
       * </pre>
       *
       * <code>string paid_by_card_espp_id = 14;</code>
       * @return This builder for chaining.
       */
      public Builder clearPaidByCardEsppId() {
        copyOnWrite();
        instance.clearPaidByCardEsppId();
        return this;
      }
      /**
       * <pre>
       * Идентификатор платежного средства в внешней системы
       * </pre>
       *
       * <code>string paid_by_card_espp_id = 14;</code>
       * @param value The bytes for paidByCardEsppId to set.
       * @return This builder for chaining.
       */
      public Builder setPaidByCardEsppIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setPaidByCardEsppIdBytes(value);
        return this;
      }

      /**
       * <pre>
       * Тип банковской карты
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.CardType card_type = 15;</code>
       * @return The enum numeric value on the wire for cardType.
       */
      @java.lang.Override
      public int getCardTypeValue() {
        return instance.getCardTypeValue();
      }
      /**
       * <pre>
       * Тип банковской карты
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.CardType card_type = 15;</code>
       * @param value The cardType to set.
       * @return This builder for chaining.
       */
      public Builder setCardTypeValue(int value) {
        copyOnWrite();
        instance.setCardTypeValue(value);
        return this;
      }
      /**
       * <pre>
       * Тип банковской карты
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.CardType card_type = 15;</code>
       * @return The cardType.
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.CardType getCardType() {
        return instance.getCardType();
      }
      /**
       * <pre>
       * Тип банковской карты
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.CardType card_type = 15;</code>
       * @param value The enum numeric value on the wire for cardType to set.
       * @return This builder for chaining.
       */
      public Builder setCardType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.CardType value) {
        copyOnWrite();
        instance.setCardType(value);
        return this;
      }
      /**
       * <pre>
       * Тип банковской карты
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.CardType card_type = 15;</code>
       * @return This builder for chaining.
       */
      public Builder clearCardType() {
        copyOnWrite();
        instance.clearCardType();
        return this;
      }

      /**
       * <pre>
       * Код ошибки внешней системы
       * </pre>
       *
       * <code>int32 espp_req_status = 16;</code>
       * @return The esppReqStatus.
       */
      @java.lang.Override
      public int getEsppReqStatus() {
        return instance.getEsppReqStatus();
      }
      /**
       * <pre>
       * Код ошибки внешней системы
       * </pre>
       *
       * <code>int32 espp_req_status = 16;</code>
       * @param value The esppReqStatus to set.
       * @return This builder for chaining.
       */
      public Builder setEsppReqStatus(int value) {
        copyOnWrite();
        instance.setEsppReqStatus(value);
        return this;
      }
      /**
       * <pre>
       * Код ошибки внешней системы
       * </pre>
       *
       * <code>int32 espp_req_status = 16;</code>
       * @return This builder for chaining.
       */
      public Builder clearEsppReqStatus() {
        copyOnWrite();
        instance.clearEsppReqStatus();
        return this;
      }

      /**
       * <pre>
       * Комментарий к статусу платежа из внешней системы
       * </pre>
       *
       * <code>string espp_req_user_msg = 17;</code>
       * @return The esppReqUserMsg.
       */
      @java.lang.Override
      public java.lang.String getEsppReqUserMsg() {
        return instance.getEsppReqUserMsg();
      }
      /**
       * <pre>
       * Комментарий к статусу платежа из внешней системы
       * </pre>
       *
       * <code>string espp_req_user_msg = 17;</code>
       * @return The bytes for esppReqUserMsg.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getEsppReqUserMsgBytes() {
        return instance.getEsppReqUserMsgBytes();
      }
      /**
       * <pre>
       * Комментарий к статусу платежа из внешней системы
       * </pre>
       *
       * <code>string espp_req_user_msg = 17;</code>
       * @param value The esppReqUserMsg to set.
       * @return This builder for chaining.
       */
      public Builder setEsppReqUserMsg(
          java.lang.String value) {
        copyOnWrite();
        instance.setEsppReqUserMsg(value);
        return this;
      }
      /**
       * <pre>
       * Комментарий к статусу платежа из внешней системы
       * </pre>
       *
       * <code>string espp_req_user_msg = 17;</code>
       * @return This builder for chaining.
       */
      public Builder clearEsppReqUserMsg() {
        copyOnWrite();
        instance.clearEsppReqUserMsg();
        return this;
      }
      /**
       * <pre>
       * Комментарий к статусу платежа из внешней системы
       * </pre>
       *
       * <code>string espp_req_user_msg = 17;</code>
       * @param value The bytes for esppReqUserMsg to set.
       * @return This builder for chaining.
       */
      public Builder setEsppReqUserMsgBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setEsppReqUserMsgBytes(value);
        return this;
      }

      /**
       * <pre>
       * Уникальный номер транзакции в внешней системы
       * </pre>
       *
       * <code>string espp_invoice_id = 18;</code>
       * @return The esppInvoiceId.
       */
      @java.lang.Override
      public java.lang.String getEsppInvoiceId() {
        return instance.getEsppInvoiceId();
      }
      /**
       * <pre>
       * Уникальный номер транзакции в внешней системы
       * </pre>
       *
       * <code>string espp_invoice_id = 18;</code>
       * @return The bytes for esppInvoiceId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getEsppInvoiceIdBytes() {
        return instance.getEsppInvoiceIdBytes();
      }
      /**
       * <pre>
       * Уникальный номер транзакции в внешней системы
       * </pre>
       *
       * <code>string espp_invoice_id = 18;</code>
       * @param value The esppInvoiceId to set.
       * @return This builder for chaining.
       */
      public Builder setEsppInvoiceId(
          java.lang.String value) {
        copyOnWrite();
        instance.setEsppInvoiceId(value);
        return this;
      }
      /**
       * <pre>
       * Уникальный номер транзакции в внешней системы
       * </pre>
       *
       * <code>string espp_invoice_id = 18;</code>
       * @return This builder for chaining.
       */
      public Builder clearEsppInvoiceId() {
        copyOnWrite();
        instance.clearEsppInvoiceId();
        return this;
      }
      /**
       * <pre>
       * Уникальный номер транзакции в внешней системы
       * </pre>
       *
       * <code>string espp_invoice_id = 18;</code>
       * @param value The bytes for esppInvoiceId to set.
       * @return This builder for chaining.
       */
      public Builder setEsppInvoiceIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setEsppInvoiceIdBytes(value);
        return this;
      }

      /**
       * <pre>
       * Номер телефона
       * </pre>
       *
       * <code>string phone_number = 19;</code>
       * @return The phoneNumber.
       */
      @java.lang.Override
      public java.lang.String getPhoneNumber() {
        return instance.getPhoneNumber();
      }
      /**
       * <pre>
       * Номер телефона
       * </pre>
       *
       * <code>string phone_number = 19;</code>
       * @return The bytes for phoneNumber.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getPhoneNumberBytes() {
        return instance.getPhoneNumberBytes();
      }
      /**
       * <pre>
       * Номер телефона
       * </pre>
       *
       * <code>string phone_number = 19;</code>
       * @param value The phoneNumber to set.
       * @return This builder for chaining.
       */
      public Builder setPhoneNumber(
          java.lang.String value) {
        copyOnWrite();
        instance.setPhoneNumber(value);
        return this;
      }
      /**
       * <pre>
       * Номер телефона
       * </pre>
       *
       * <code>string phone_number = 19;</code>
       * @return This builder for chaining.
       */
      public Builder clearPhoneNumber() {
        copyOnWrite();
        instance.clearPhoneNumber();
        return this;
      }
      /**
       * <pre>
       * Номер телефона
       * </pre>
       *
       * <code>string phone_number = 19;</code>
       * @param value The bytes for phoneNumber to set.
       * @return This builder for chaining.
       */
      public Builder setPhoneNumberBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setPhoneNumberBytes(value);
        return this;
      }

      /**
       * <pre>
       * Электронная почта
       * </pre>
       *
       * <code>string email = 20;</code>
       * @return The email.
       */
      @java.lang.Override
      public java.lang.String getEmail() {
        return instance.getEmail();
      }
      /**
       * <pre>
       * Электронная почта
       * </pre>
       *
       * <code>string email = 20;</code>
       * @return The bytes for email.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getEmailBytes() {
        return instance.getEmailBytes();
      }
      /**
       * <pre>
       * Электронная почта
       * </pre>
       *
       * <code>string email = 20;</code>
       * @param value The email to set.
       * @return This builder for chaining.
       */
      public Builder setEmail(
          java.lang.String value) {
        copyOnWrite();
        instance.setEmail(value);
        return this;
      }
      /**
       * <pre>
       * Электронная почта
       * </pre>
       *
       * <code>string email = 20;</code>
       * @return This builder for chaining.
       */
      public Builder clearEmail() {
        copyOnWrite();
        instance.clearEmail();
        return this;
      }
      /**
       * <pre>
       * Электронная почта
       * </pre>
       *
       * <code>string email = 20;</code>
       * @param value The bytes for email to set.
       * @return This builder for chaining.
       */
      public Builder setEmailBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setEmailBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.Invoice)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "id_",
              "title_",
              "userId_",
              "invoiceStatusType_",
              "createdAt_",
              "updatedAt_",
              "positions_",
              ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position.class,
              "payInterfaceType_",
              "paywayType_",
              "statusChangedAt_",
              "paidAt_",
              "payUrl_",
              "paidByCardMasked_",
              "paidByCardEsppId_",
              "cardType_",
              "esppReqStatus_",
              "esppReqUserMsg_",
              "esppInvoiceId_",
              "phoneNumber_",
              "email_",
            };
            java.lang.String info =
                "\u0000\u0014\u0000\u0000\u0001\u0014\u0014\u0000\u0001\u0000\u0001\u0208\u0002\u0208" +
                "\u0003\u0004\u0004\f\u0005\t\u0006\t\u0007\u001b\b\f\t\f\n\t\u000b\t\f\u0208\r\u0208" +
                "\u000e\u0208\u000f\f\u0010\u0004\u0011\u0208\u0012\u0208\u0013\u0208\u0014\u0208" +
                "";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.Invoice)
    private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice DEFAULT_INSTANCE;
    static {
      Invoice defaultInstance = new Invoice();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        Invoice.class, defaultInstance);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<Invoice> PARSER;

    public static com.google.protobuf.Parser<Invoice> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface InvoiceFilterOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.InvoiceFilter)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Идентификатор пользователя
     * </pre>
     *
     * <code>int32 user_id = 1;</code>
     * @return The userId.
     */
    int getUserId();

    /**
     * <pre>
     * Статус платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 2;</code>
     * @return The enum numeric value on the wire for invoiceStatusType.
     */
    int getInvoiceStatusTypeValue();
    /**
     * <pre>
     * Статус платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 2;</code>
     * @return The invoiceStatusType.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.InvoiceStatusType getInvoiceStatusType();
  }
  /**
   * <pre>
   * Фильтр инвойсов
   * </pre>
   *
   * Protobuf type {@code keyapis.invoice.v1.InvoiceFilter}
   */
  public  static final class InvoiceFilter extends
      com.google.protobuf.GeneratedMessageLite<
          InvoiceFilter, InvoiceFilter.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.InvoiceFilter)
      InvoiceFilterOrBuilder {
    private InvoiceFilter() {
    }
    public static final int USER_ID_FIELD_NUMBER = 1;
    private int userId_;
    /**
     * <pre>
     * Идентификатор пользователя
     * </pre>
     *
     * <code>int32 user_id = 1;</code>
     * @return The userId.
     */
    @java.lang.Override
    public int getUserId() {
      return userId_;
    }
    /**
     * <pre>
     * Идентификатор пользователя
     * </pre>
     *
     * <code>int32 user_id = 1;</code>
     * @param value The userId to set.
     */
    private void setUserId(int value) {
      
      userId_ = value;
    }
    /**
     * <pre>
     * Идентификатор пользователя
     * </pre>
     *
     * <code>int32 user_id = 1;</code>
     */
    private void clearUserId() {

      userId_ = 0;
    }

    public static final int INVOICE_STATUS_TYPE_FIELD_NUMBER = 2;
    private int invoiceStatusType_;
    /**
     * <pre>
     * Статус платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 2;</code>
     * @return The enum numeric value on the wire for invoiceStatusType.
     */
    @java.lang.Override
    public int getInvoiceStatusTypeValue() {
      return invoiceStatusType_;
    }
    /**
     * <pre>
     * Статус платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 2;</code>
     * @return The invoiceStatusType.
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.InvoiceStatusType getInvoiceStatusType() {
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.InvoiceStatusType result = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.InvoiceStatusType.forNumber(invoiceStatusType_);
      return result == null ? ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.InvoiceStatusType.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * Статус платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 2;</code>
     * @param value The enum numeric value on the wire for invoiceStatusType to set.
     */
    private void setInvoiceStatusTypeValue(int value) {
        invoiceStatusType_ = value;
    }
    /**
     * <pre>
     * Статус платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 2;</code>
     * @param value The invoiceStatusType to set.
     */
    private void setInvoiceStatusType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.InvoiceStatusType value) {
      invoiceStatusType_ = value.getNumber();

    }
    /**
     * <pre>
     * Статус платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 2;</code>
     */
    private void clearInvoiceStatusType() {

      invoiceStatusType_ = 0;
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Фильтр инвойсов
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.InvoiceFilter}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.InvoiceFilter)
        ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilterOrBuilder {
      // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Идентификатор пользователя
       * </pre>
       *
       * <code>int32 user_id = 1;</code>
       * @return The userId.
       */
      @java.lang.Override
      public int getUserId() {
        return instance.getUserId();
      }
      /**
       * <pre>
       * Идентификатор пользователя
       * </pre>
       *
       * <code>int32 user_id = 1;</code>
       * @param value The userId to set.
       * @return This builder for chaining.
       */
      public Builder setUserId(int value) {
        copyOnWrite();
        instance.setUserId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор пользователя
       * </pre>
       *
       * <code>int32 user_id = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearUserId() {
        copyOnWrite();
        instance.clearUserId();
        return this;
      }

      /**
       * <pre>
       * Статус платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 2;</code>
       * @return The enum numeric value on the wire for invoiceStatusType.
       */
      @java.lang.Override
      public int getInvoiceStatusTypeValue() {
        return instance.getInvoiceStatusTypeValue();
      }
      /**
       * <pre>
       * Статус платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 2;</code>
       * @param value The invoiceStatusType to set.
       * @return This builder for chaining.
       */
      public Builder setInvoiceStatusTypeValue(int value) {
        copyOnWrite();
        instance.setInvoiceStatusTypeValue(value);
        return this;
      }
      /**
       * <pre>
       * Статус платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 2;</code>
       * @return The invoiceStatusType.
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.InvoiceStatusType getInvoiceStatusType() {
        return instance.getInvoiceStatusType();
      }
      /**
       * <pre>
       * Статус платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 2;</code>
       * @param value The enum numeric value on the wire for invoiceStatusType to set.
       * @return This builder for chaining.
       */
      public Builder setInvoiceStatusType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.InvoiceStatusType value) {
        copyOnWrite();
        instance.setInvoiceStatusType(value);
        return this;
      }
      /**
       * <pre>
       * Статус платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.InvoiceStatusType invoice_status_type = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearInvoiceStatusType() {
        copyOnWrite();
        instance.clearInvoiceStatusType();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.InvoiceFilter)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "userId_",
              "invoiceStatusType_",
            };
            java.lang.String info =
                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\u0004\u0002\f" +
                "";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.InvoiceFilter)
    private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter DEFAULT_INSTANCE;
    static {
      InvoiceFilter defaultInstance = new InvoiceFilter();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        InvoiceFilter.class, defaultInstance);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<InvoiceFilter> PARSER;

    public static com.google.protobuf.Parser<InvoiceFilter> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface InvoicePagingOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.InvoicePaging)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: PAID_AT
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging.OrderByType order_by_type = 1;</code>
     * @return The enum numeric value on the wire for orderByType.
     */
    int getOrderByTypeValue();
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: PAID_AT
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging.OrderByType order_by_type = 1;</code>
     * @return The orderByType.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.OrderByType getOrderByType();

    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging.DirectionType direction_type = 2;</code>
     * @return The enum numeric value on the wire for directionType.
     */
    int getDirectionTypeValue();
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging.DirectionType direction_type = 2;</code>
     * @return The directionType.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.DirectionType getDirectionType();

    /**
     * <pre>
     * Количество записей на страницу.
     * Если значение 0 (не передано), то будет взято значение по умолчанию.
     * # Диапазон: 0..100.
     * # По умолчанию: 20
     * </pre>
     *
     * <code>int32 limit = 3;</code>
     * @return The limit.
     */
    int getLimit();

    /**
     * <pre>
     * Сдвиг.
     * # Диапазон: 0..2147483647
     * </pre>
     *
     * <code>int32 offset = 4;</code>
     * @return The offset.
     */
    int getOffset();
  }
  /**
   * <pre>
   * Постраничный вывод
   * </pre>
   *
   * Protobuf type {@code keyapis.invoice.v1.InvoicePaging}
   */
  public  static final class InvoicePaging extends
      com.google.protobuf.GeneratedMessageLite<
          InvoicePaging, InvoicePaging.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.InvoicePaging)
      InvoicePagingOrBuilder {
    private InvoicePaging() {
    }
    /**
     * <pre>
     * Справочник типов значений сортировки.
     * # Тип: byte
     * </pre>
     *
     * Protobuf enum {@code keyapis.invoice.v1.InvoicePaging.OrderByType}
     */
    public enum OrderByType
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>ORDER_BY_TYPE_UNKNOWN = 0;</code>
       */
      ORDER_BY_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * По идентификатору
       * </pre>
       *
       * <code>ID = 1;</code>
       */
      ID(1),
      /**
       * <pre>
       * По дате оплаты
       * </pre>
       *
       * <code>PAID_AT = 2;</code>
       */
      PAID_AT(2),
      /**
       * <pre>
       * По дате создания
       * </pre>
       *
       * <code>CREATED_AT = 3;</code>
       */
      CREATED_AT(3),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>ORDER_BY_TYPE_UNKNOWN = 0;</code>
       */
      public static final int ORDER_BY_TYPE_UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * По идентификатору
       * </pre>
       *
       * <code>ID = 1;</code>
       */
      public static final int ID_VALUE = 1;
      /**
       * <pre>
       * По дате оплаты
       * </pre>
       *
       * <code>PAID_AT = 2;</code>
       */
      public static final int PAID_AT_VALUE = 2;
      /**
       * <pre>
       * По дате создания
       * </pre>
       *
       * <code>CREATED_AT = 3;</code>
       */
      public static final int CREATED_AT_VALUE = 3;


      @java.lang.Override
      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static OrderByType valueOf(int value) {
        return forNumber(value);
      }

      public static OrderByType forNumber(int value) {
        switch (value) {
          case 0: return ORDER_BY_TYPE_UNKNOWN;
          case 1: return ID;
          case 2: return PAID_AT;
          case 3: return CREATED_AT;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<OrderByType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          OrderByType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<OrderByType>() {
              @java.lang.Override
              public OrderByType findValueByNumber(int number) {
                return OrderByType.forNumber(number);
              }
            };

      public static com.google.protobuf.Internal.EnumVerifier 
          internalGetVerifier() {
        return OrderByTypeVerifier.INSTANCE;
      }

      private static final class OrderByTypeVerifier implements 
           com.google.protobuf.Internal.EnumVerifier { 
              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new OrderByTypeVerifier();
              @java.lang.Override
              public boolean isInRange(int number) {
                return OrderByType.forNumber(number) != null;
              }
            };

      private final int value;

      private OrderByType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:keyapis.invoice.v1.InvoicePaging.OrderByType)
    }

    /**
     * <pre>
     * Справочник типов направлений сортировки.
     * # Тип: byte
     * </pre>
     *
     * Protobuf enum {@code keyapis.invoice.v1.InvoicePaging.DirectionType}
     */
    public enum DirectionType
        implements com.google.protobuf.Internal.EnumLite {
      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>DIRECTION_TYPE_UNKNOWN = 0;</code>
       */
      DIRECTION_TYPE_UNKNOWN(0),
      /**
       * <pre>
       * От большего к меньшему
       * </pre>
       *
       * <code>DESC = 1;</code>
       */
      DESC(1),
      /**
       * <pre>
       * От меньшего к большему
       * </pre>
       *
       * <code>ASC = 2;</code>
       */
      ASC(2),
      UNRECOGNIZED(-1),
      ;

      /**
       * <pre>
       * Значение не указано
       * </pre>
       *
       * <code>DIRECTION_TYPE_UNKNOWN = 0;</code>
       */
      public static final int DIRECTION_TYPE_UNKNOWN_VALUE = 0;
      /**
       * <pre>
       * От большего к меньшему
       * </pre>
       *
       * <code>DESC = 1;</code>
       */
      public static final int DESC_VALUE = 1;
      /**
       * <pre>
       * От меньшего к большему
       * </pre>
       *
       * <code>ASC = 2;</code>
       */
      public static final int ASC_VALUE = 2;


      @java.lang.Override
      public final int getNumber() {
        if (this == UNRECOGNIZED) {
          throw new java.lang.IllegalArgumentException(
              "Can't get the number of an unknown enum value.");
        }
        return value;
      }

      /**
       * @param value The number of the enum to look for.
       * @return The enum associated with the given number.
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static DirectionType valueOf(int value) {
        return forNumber(value);
      }

      public static DirectionType forNumber(int value) {
        switch (value) {
          case 0: return DIRECTION_TYPE_UNKNOWN;
          case 1: return DESC;
          case 2: return ASC;
          default: return null;
        }
      }

      public static com.google.protobuf.Internal.EnumLiteMap<DirectionType>
          internalGetValueMap() {
        return internalValueMap;
      }
      private static final com.google.protobuf.Internal.EnumLiteMap<
          DirectionType> internalValueMap =
            new com.google.protobuf.Internal.EnumLiteMap<DirectionType>() {
              @java.lang.Override
              public DirectionType findValueByNumber(int number) {
                return DirectionType.forNumber(number);
              }
            };

      public static com.google.protobuf.Internal.EnumVerifier 
          internalGetVerifier() {
        return DirectionTypeVerifier.INSTANCE;
      }

      private static final class DirectionTypeVerifier implements 
           com.google.protobuf.Internal.EnumVerifier { 
              static final com.google.protobuf.Internal.EnumVerifier           INSTANCE = new DirectionTypeVerifier();
              @java.lang.Override
              public boolean isInRange(int number) {
                return DirectionType.forNumber(number) != null;
              }
            };

      private final int value;

      private DirectionType(int value) {
        this.value = value;
      }

      // @@protoc_insertion_point(enum_scope:keyapis.invoice.v1.InvoicePaging.DirectionType)
    }

    public static final int ORDER_BY_TYPE_FIELD_NUMBER = 1;
    private int orderByType_;
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: PAID_AT
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging.OrderByType order_by_type = 1;</code>
     * @return The enum numeric value on the wire for orderByType.
     */
    @java.lang.Override
    public int getOrderByTypeValue() {
      return orderByType_;
    }
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: PAID_AT
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging.OrderByType order_by_type = 1;</code>
     * @return The orderByType.
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.OrderByType getOrderByType() {
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.OrderByType result = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.OrderByType.forNumber(orderByType_);
      return result == null ? ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.OrderByType.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: PAID_AT
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging.OrderByType order_by_type = 1;</code>
     * @param value The enum numeric value on the wire for orderByType to set.
     */
    private void setOrderByTypeValue(int value) {
        orderByType_ = value;
    }
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: PAID_AT
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging.OrderByType order_by_type = 1;</code>
     * @param value The orderByType to set.
     */
    private void setOrderByType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.OrderByType value) {
      orderByType_ = value.getNumber();

    }
    /**
     * <pre>
     * Тип значения сортировки.
     * Если значение не передано, то будет взято значение по умолчанию.
     * # По умолчанию: PAID_AT
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging.OrderByType order_by_type = 1;</code>
     */
    private void clearOrderByType() {

      orderByType_ = 0;
    }

    public static final int DIRECTION_TYPE_FIELD_NUMBER = 2;
    private int directionType_;
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging.DirectionType direction_type = 2;</code>
     * @return The enum numeric value on the wire for directionType.
     */
    @java.lang.Override
    public int getDirectionTypeValue() {
      return directionType_;
    }
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging.DirectionType direction_type = 2;</code>
     * @return The directionType.
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.DirectionType getDirectionType() {
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.DirectionType result = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.DirectionType.forNumber(directionType_);
      return result == null ? ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.DirectionType.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging.DirectionType direction_type = 2;</code>
     * @param value The enum numeric value on the wire for directionType to set.
     */
    private void setDirectionTypeValue(int value) {
        directionType_ = value;
    }
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging.DirectionType direction_type = 2;</code>
     * @param value The directionType to set.
     */
    private void setDirectionType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.DirectionType value) {
      directionType_ = value.getNumber();

    }
    /**
     * <pre>
     * Тип направления сортировки.
     * # По умолчанию: DESC
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging.DirectionType direction_type = 2;</code>
     */
    private void clearDirectionType() {

      directionType_ = 0;
    }

    public static final int LIMIT_FIELD_NUMBER = 3;
    private int limit_;
    /**
     * <pre>
     * Количество записей на страницу.
     * Если значение 0 (не передано), то будет взято значение по умолчанию.
     * # Диапазон: 0..100.
     * # По умолчанию: 20
     * </pre>
     *
     * <code>int32 limit = 3;</code>
     * @return The limit.
     */
    @java.lang.Override
    public int getLimit() {
      return limit_;
    }
    /**
     * <pre>
     * Количество записей на страницу.
     * Если значение 0 (не передано), то будет взято значение по умолчанию.
     * # Диапазон: 0..100.
     * # По умолчанию: 20
     * </pre>
     *
     * <code>int32 limit = 3;</code>
     * @param value The limit to set.
     */
    private void setLimit(int value) {
      
      limit_ = value;
    }
    /**
     * <pre>
     * Количество записей на страницу.
     * Если значение 0 (не передано), то будет взято значение по умолчанию.
     * # Диапазон: 0..100.
     * # По умолчанию: 20
     * </pre>
     *
     * <code>int32 limit = 3;</code>
     */
    private void clearLimit() {

      limit_ = 0;
    }

    public static final int OFFSET_FIELD_NUMBER = 4;
    private int offset_;
    /**
     * <pre>
     * Сдвиг.
     * # Диапазон: 0..2147483647
     * </pre>
     *
     * <code>int32 offset = 4;</code>
     * @return The offset.
     */
    @java.lang.Override
    public int getOffset() {
      return offset_;
    }
    /**
     * <pre>
     * Сдвиг.
     * # Диапазон: 0..2147483647
     * </pre>
     *
     * <code>int32 offset = 4;</code>
     * @param value The offset to set.
     */
    private void setOffset(int value) {
      
      offset_ = value;
    }
    /**
     * <pre>
     * Сдвиг.
     * # Диапазон: 0..2147483647
     * </pre>
     *
     * <code>int32 offset = 4;</code>
     */
    private void clearOffset() {

      offset_ = 0;
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Постраничный вывод
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.InvoicePaging}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.InvoicePaging)
        ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePagingOrBuilder {
      // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: PAID_AT
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoicePaging.OrderByType order_by_type = 1;</code>
       * @return The enum numeric value on the wire for orderByType.
       */
      @java.lang.Override
      public int getOrderByTypeValue() {
        return instance.getOrderByTypeValue();
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: PAID_AT
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoicePaging.OrderByType order_by_type = 1;</code>
       * @param value The orderByType to set.
       * @return This builder for chaining.
       */
      public Builder setOrderByTypeValue(int value) {
        copyOnWrite();
        instance.setOrderByTypeValue(value);
        return this;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: PAID_AT
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoicePaging.OrderByType order_by_type = 1;</code>
       * @return The orderByType.
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.OrderByType getOrderByType() {
        return instance.getOrderByType();
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: PAID_AT
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoicePaging.OrderByType order_by_type = 1;</code>
       * @param value The enum numeric value on the wire for orderByType to set.
       * @return This builder for chaining.
       */
      public Builder setOrderByType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.OrderByType value) {
        copyOnWrite();
        instance.setOrderByType(value);
        return this;
      }
      /**
       * <pre>
       * Тип значения сортировки.
       * Если значение не передано, то будет взято значение по умолчанию.
       * # По умолчанию: PAID_AT
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoicePaging.OrderByType order_by_type = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearOrderByType() {
        copyOnWrite();
        instance.clearOrderByType();
        return this;
      }

      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoicePaging.DirectionType direction_type = 2;</code>
       * @return The enum numeric value on the wire for directionType.
       */
      @java.lang.Override
      public int getDirectionTypeValue() {
        return instance.getDirectionTypeValue();
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoicePaging.DirectionType direction_type = 2;</code>
       * @param value The directionType to set.
       * @return This builder for chaining.
       */
      public Builder setDirectionTypeValue(int value) {
        copyOnWrite();
        instance.setDirectionTypeValue(value);
        return this;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoicePaging.DirectionType direction_type = 2;</code>
       * @return The directionType.
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.DirectionType getDirectionType() {
        return instance.getDirectionType();
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoicePaging.DirectionType direction_type = 2;</code>
       * @param value The enum numeric value on the wire for directionType to set.
       * @return This builder for chaining.
       */
      public Builder setDirectionType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.DirectionType value) {
        copyOnWrite();
        instance.setDirectionType(value);
        return this;
      }
      /**
       * <pre>
       * Тип направления сортировки.
       * # По умолчанию: DESC
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoicePaging.DirectionType direction_type = 2;</code>
       * @return This builder for chaining.
       */
      public Builder clearDirectionType() {
        copyOnWrite();
        instance.clearDirectionType();
        return this;
      }

      /**
       * <pre>
       * Количество записей на страницу.
       * Если значение 0 (не передано), то будет взято значение по умолчанию.
       * # Диапазон: 0..100.
       * # По умолчанию: 20
       * </pre>
       *
       * <code>int32 limit = 3;</code>
       * @return The limit.
       */
      @java.lang.Override
      public int getLimit() {
        return instance.getLimit();
      }
      /**
       * <pre>
       * Количество записей на страницу.
       * Если значение 0 (не передано), то будет взято значение по умолчанию.
       * # Диапазон: 0..100.
       * # По умолчанию: 20
       * </pre>
       *
       * <code>int32 limit = 3;</code>
       * @param value The limit to set.
       * @return This builder for chaining.
       */
      public Builder setLimit(int value) {
        copyOnWrite();
        instance.setLimit(value);
        return this;
      }
      /**
       * <pre>
       * Количество записей на страницу.
       * Если значение 0 (не передано), то будет взято значение по умолчанию.
       * # Диапазон: 0..100.
       * # По умолчанию: 20
       * </pre>
       *
       * <code>int32 limit = 3;</code>
       * @return This builder for chaining.
       */
      public Builder clearLimit() {
        copyOnWrite();
        instance.clearLimit();
        return this;
      }

      /**
       * <pre>
       * Сдвиг.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 offset = 4;</code>
       * @return The offset.
       */
      @java.lang.Override
      public int getOffset() {
        return instance.getOffset();
      }
      /**
       * <pre>
       * Сдвиг.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 offset = 4;</code>
       * @param value The offset to set.
       * @return This builder for chaining.
       */
      public Builder setOffset(int value) {
        copyOnWrite();
        instance.setOffset(value);
        return this;
      }
      /**
       * <pre>
       * Сдвиг.
       * # Диапазон: 0..2147483647
       * </pre>
       *
       * <code>int32 offset = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearOffset() {
        copyOnWrite();
        instance.clearOffset();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.InvoicePaging)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "orderByType_",
              "directionType_",
              "limit_",
              "offset_",
            };
            java.lang.String info =
                "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001\f\u0002\f\u0003" +
                "\u0004\u0004\u0004";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.InvoicePaging)
    private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging DEFAULT_INSTANCE;
    static {
      InvoicePaging defaultInstance = new InvoicePaging();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        InvoicePaging.class, defaultInstance);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<InvoicePaging> PARSER;

    public static com.google.protobuf.Parser<InvoicePaging> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface CreateInvoiceRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.CreateInvoiceRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Идентификатор пользователя
     * </pre>
     *
     * <code>int32 user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The userId.
     */
    int getUserId();

    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    java.util.List<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position> 
        getPositionsList();
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position getPositions(int index);
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    int getPositionsCount();

    /**
     * <pre>
     * Метод платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The enum numeric value on the wire for payInterfaceType.
     */
    int getPayInterfaceTypeValue();
    /**
     * <pre>
     * Метод платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The payInterfaceType.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PayInterfaceType getPayInterfaceType();

    /**
     * <pre>
     * Способ оплаты.
     * По умолчанию: BANK_CARD
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 4;</code>
     * @return The enum numeric value on the wire for paywayType.
     */
    int getPaywayTypeValue();
    /**
     * <pre>
     * Способ оплаты.
     * По умолчанию: BANK_CARD
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 4;</code>
     * @return The paywayType.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PaywayType getPaywayType();

    /**
     * <pre>
     * Ссылка для перехода после оплаты.
     * Если не передан подставится значение по умолчанию
     * </pre>
     *
     * <code>string return_url = 5;</code>
     * @return The returnUrl.
     */
    java.lang.String getReturnUrl();
    /**
     * <pre>
     * Ссылка для перехода после оплаты.
     * Если не передан подставится значение по умолчанию
     * </pre>
     *
     * <code>string return_url = 5;</code>
     * @return The bytes for returnUrl.
     */
    com.google.protobuf.ByteString
        getReturnUrlBytes();

    /**
     * <pre>
     * Номер телефона.
     * Должно быть означено поле phone_number, либо поле email
     * </pre>
     *
     * <code>string phone_number = 6;</code>
     * @return The phoneNumber.
     */
    java.lang.String getPhoneNumber();
    /**
     * <pre>
     * Номер телефона.
     * Должно быть означено поле phone_number, либо поле email
     * </pre>
     *
     * <code>string phone_number = 6;</code>
     * @return The bytes for phoneNumber.
     */
    com.google.protobuf.ByteString
        getPhoneNumberBytes();

    /**
     * <pre>
     * Электронная почта.
     * Должно быть означено поле phone_number, либо поле email
     * </pre>
     *
     * <code>string email = 7;</code>
     * @return The email.
     */
    java.lang.String getEmail();
    /**
     * <pre>
     * Электронная почта.
     * Должно быть означено поле phone_number, либо поле email
     * </pre>
     *
     * <code>string email = 7;</code>
     * @return The bytes for email.
     */
    com.google.protobuf.ByteString
        getEmailBytes();

    /**
     * <pre>
     * Описание платежа.
     * По умолчанию подставляется "Счёт от {DD.MM.YYYY}г."
     * </pre>
     *
     * <code>string title = 8;</code>
     * @return The title.
     */
    java.lang.String getTitle();
    /**
     * <pre>
     * Описание платежа.
     * По умолчанию подставляется "Счёт от {DD.MM.YYYY}г."
     * </pre>
     *
     * <code>string title = 8;</code>
     * @return The bytes for title.
     */
    com.google.protobuf.ByteString
        getTitleBytes();
  }
  /**
   * <pre>
   * Запрос на создание платежа
   * </pre>
   *
   * Protobuf type {@code keyapis.invoice.v1.CreateInvoiceRequest}
   */
  public  static final class CreateInvoiceRequest extends
      com.google.protobuf.GeneratedMessageLite<
          CreateInvoiceRequest, CreateInvoiceRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.CreateInvoiceRequest)
      CreateInvoiceRequestOrBuilder {
    private CreateInvoiceRequest() {
      positions_ = emptyProtobufList();
      returnUrl_ = "";
      phoneNumber_ = "";
      email_ = "";
      title_ = "";
    }
    public static final int USER_ID_FIELD_NUMBER = 1;
    private int userId_;
    /**
     * <pre>
     * Идентификатор пользователя
     * </pre>
     *
     * <code>int32 user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The userId.
     */
    @java.lang.Override
    public int getUserId() {
      return userId_;
    }
    /**
     * <pre>
     * Идентификатор пользователя
     * </pre>
     *
     * <code>int32 user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The userId to set.
     */
    private void setUserId(int value) {
      
      userId_ = value;
    }
    /**
     * <pre>
     * Идентификатор пользователя
     * </pre>
     *
     * <code>int32 user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearUserId() {

      userId_ = 0;
    }

    public static final int POSITIONS_FIELD_NUMBER = 2;
    private com.google.protobuf.Internal.ProtobufList<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position> positions_;
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public java.util.List<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position> getPositionsList() {
      return positions_;
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    public java.util.List<? extends ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PositionOrBuilder> 
        getPositionsOrBuilderList() {
      return positions_;
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public int getPositionsCount() {
      return positions_.size();
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position getPositions(int index) {
      return positions_.get(index);
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PositionOrBuilder getPositionsOrBuilder(
        int index) {
      return positions_.get(index);
    }
    private void ensurePositionsIsMutable() {
      com.google.protobuf.Internal.ProtobufList<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position> tmp = positions_;
      if (!tmp.isModifiable()) {
        positions_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }

    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void setPositions(
        int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position value) {
      value.getClass();
  ensurePositionsIsMutable();
      positions_.set(index, value);
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void addPositions(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position value) {
      value.getClass();
  ensurePositionsIsMutable();
      positions_.add(value);
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void addPositions(
        int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position value) {
      value.getClass();
  ensurePositionsIsMutable();
      positions_.add(index, value);
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void addAllPositions(
        java.lang.Iterable<? extends ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position> values) {
      ensurePositionsIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, positions_);
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearPositions() {
      positions_ = emptyProtobufList();
    }
    /**
     * <pre>
     * Позиция счета
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void removePositions(int index) {
      ensurePositionsIsMutable();
      positions_.remove(index);
    }

    public static final int PAY_INTERFACE_TYPE_FIELD_NUMBER = 3;
    private int payInterfaceType_;
    /**
     * <pre>
     * Метод платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The enum numeric value on the wire for payInterfaceType.
     */
    @java.lang.Override
    public int getPayInterfaceTypeValue() {
      return payInterfaceType_;
    }
    /**
     * <pre>
     * Метод платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The payInterfaceType.
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PayInterfaceType getPayInterfaceType() {
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PayInterfaceType result = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PayInterfaceType.forNumber(payInterfaceType_);
      return result == null ? ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PayInterfaceType.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * Метод платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The enum numeric value on the wire for payInterfaceType to set.
     */
    private void setPayInterfaceTypeValue(int value) {
        payInterfaceType_ = value;
    }
    /**
     * <pre>
     * Метод платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The payInterfaceType to set.
     */
    private void setPayInterfaceType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PayInterfaceType value) {
      payInterfaceType_ = value.getNumber();

    }
    /**
     * <pre>
     * Метод платежа
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearPayInterfaceType() {

      payInterfaceType_ = 0;
    }

    public static final int PAYWAY_TYPE_FIELD_NUMBER = 4;
    private int paywayType_;
    /**
     * <pre>
     * Способ оплаты.
     * По умолчанию: BANK_CARD
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 4;</code>
     * @return The enum numeric value on the wire for paywayType.
     */
    @java.lang.Override
    public int getPaywayTypeValue() {
      return paywayType_;
    }
    /**
     * <pre>
     * Способ оплаты.
     * По умолчанию: BANK_CARD
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 4;</code>
     * @return The paywayType.
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PaywayType getPaywayType() {
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PaywayType result = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PaywayType.forNumber(paywayType_);
      return result == null ? ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PaywayType.UNRECOGNIZED : result;
    }
    /**
     * <pre>
     * Способ оплаты.
     * По умолчанию: BANK_CARD
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 4;</code>
     * @param value The enum numeric value on the wire for paywayType to set.
     */
    private void setPaywayTypeValue(int value) {
        paywayType_ = value;
    }
    /**
     * <pre>
     * Способ оплаты.
     * По умолчанию: BANK_CARD
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 4;</code>
     * @param value The paywayType to set.
     */
    private void setPaywayType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PaywayType value) {
      paywayType_ = value.getNumber();

    }
    /**
     * <pre>
     * Способ оплаты.
     * По умолчанию: BANK_CARD
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 4;</code>
     */
    private void clearPaywayType() {

      paywayType_ = 0;
    }

    public static final int RETURN_URL_FIELD_NUMBER = 5;
    private java.lang.String returnUrl_;
    /**
     * <pre>
     * Ссылка для перехода после оплаты.
     * Если не передан подставится значение по умолчанию
     * </pre>
     *
     * <code>string return_url = 5;</code>
     * @return The returnUrl.
     */
    @java.lang.Override
    public java.lang.String getReturnUrl() {
      return returnUrl_;
    }
    /**
     * <pre>
     * Ссылка для перехода после оплаты.
     * Если не передан подставится значение по умолчанию
     * </pre>
     *
     * <code>string return_url = 5;</code>
     * @return The bytes for returnUrl.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getReturnUrlBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(returnUrl_);
    }
    /**
     * <pre>
     * Ссылка для перехода после оплаты.
     * Если не передан подставится значение по умолчанию
     * </pre>
     *
     * <code>string return_url = 5;</code>
     * @param value The returnUrl to set.
     */
    private void setReturnUrl(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      returnUrl_ = value;
    }
    /**
     * <pre>
     * Ссылка для перехода после оплаты.
     * Если не передан подставится значение по умолчанию
     * </pre>
     *
     * <code>string return_url = 5;</code>
     */
    private void clearReturnUrl() {

      returnUrl_ = getDefaultInstance().getReturnUrl();
    }
    /**
     * <pre>
     * Ссылка для перехода после оплаты.
     * Если не передан подставится значение по умолчанию
     * </pre>
     *
     * <code>string return_url = 5;</code>
     * @param value The bytes for returnUrl to set.
     */
    private void setReturnUrlBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      returnUrl_ = value.toStringUtf8();

    }

    public static final int PHONE_NUMBER_FIELD_NUMBER = 6;
    private java.lang.String phoneNumber_;
    /**
     * <pre>
     * Номер телефона.
     * Должно быть означено поле phone_number, либо поле email
     * </pre>
     *
     * <code>string phone_number = 6;</code>
     * @return The phoneNumber.
     */
    @java.lang.Override
    public java.lang.String getPhoneNumber() {
      return phoneNumber_;
    }
    /**
     * <pre>
     * Номер телефона.
     * Должно быть означено поле phone_number, либо поле email
     * </pre>
     *
     * <code>string phone_number = 6;</code>
     * @return The bytes for phoneNumber.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPhoneNumberBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(phoneNumber_);
    }
    /**
     * <pre>
     * Номер телефона.
     * Должно быть означено поле phone_number, либо поле email
     * </pre>
     *
     * <code>string phone_number = 6;</code>
     * @param value The phoneNumber to set.
     */
    private void setPhoneNumber(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      phoneNumber_ = value;
    }
    /**
     * <pre>
     * Номер телефона.
     * Должно быть означено поле phone_number, либо поле email
     * </pre>
     *
     * <code>string phone_number = 6;</code>
     */
    private void clearPhoneNumber() {

      phoneNumber_ = getDefaultInstance().getPhoneNumber();
    }
    /**
     * <pre>
     * Номер телефона.
     * Должно быть означено поле phone_number, либо поле email
     * </pre>
     *
     * <code>string phone_number = 6;</code>
     * @param value The bytes for phoneNumber to set.
     */
    private void setPhoneNumberBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      phoneNumber_ = value.toStringUtf8();

    }

    public static final int EMAIL_FIELD_NUMBER = 7;
    private java.lang.String email_;
    /**
     * <pre>
     * Электронная почта.
     * Должно быть означено поле phone_number, либо поле email
     * </pre>
     *
     * <code>string email = 7;</code>
     * @return The email.
     */
    @java.lang.Override
    public java.lang.String getEmail() {
      return email_;
    }
    /**
     * <pre>
     * Электронная почта.
     * Должно быть означено поле phone_number, либо поле email
     * </pre>
     *
     * <code>string email = 7;</code>
     * @return The bytes for email.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEmailBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(email_);
    }
    /**
     * <pre>
     * Электронная почта.
     * Должно быть означено поле phone_number, либо поле email
     * </pre>
     *
     * <code>string email = 7;</code>
     * @param value The email to set.
     */
    private void setEmail(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      email_ = value;
    }
    /**
     * <pre>
     * Электронная почта.
     * Должно быть означено поле phone_number, либо поле email
     * </pre>
     *
     * <code>string email = 7;</code>
     */
    private void clearEmail() {

      email_ = getDefaultInstance().getEmail();
    }
    /**
     * <pre>
     * Электронная почта.
     * Должно быть означено поле phone_number, либо поле email
     * </pre>
     *
     * <code>string email = 7;</code>
     * @param value The bytes for email to set.
     */
    private void setEmailBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      email_ = value.toStringUtf8();

    }

    public static final int TITLE_FIELD_NUMBER = 8;
    private java.lang.String title_;
    /**
     * <pre>
     * Описание платежа.
     * По умолчанию подставляется "Счёт от {DD.MM.YYYY}г."
     * </pre>
     *
     * <code>string title = 8;</code>
     * @return The title.
     */
    @java.lang.Override
    public java.lang.String getTitle() {
      return title_;
    }
    /**
     * <pre>
     * Описание платежа.
     * По умолчанию подставляется "Счёт от {DD.MM.YYYY}г."
     * </pre>
     *
     * <code>string title = 8;</code>
     * @return The bytes for title.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getTitleBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(title_);
    }
    /**
     * <pre>
     * Описание платежа.
     * По умолчанию подставляется "Счёт от {DD.MM.YYYY}г."
     * </pre>
     *
     * <code>string title = 8;</code>
     * @param value The title to set.
     */
    private void setTitle(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      title_ = value;
    }
    /**
     * <pre>
     * Описание платежа.
     * По умолчанию подставляется "Счёт от {DD.MM.YYYY}г."
     * </pre>
     *
     * <code>string title = 8;</code>
     */
    private void clearTitle() {

      title_ = getDefaultInstance().getTitle();
    }
    /**
     * <pre>
     * Описание платежа.
     * По умолчанию подставляется "Счёт от {DD.MM.YYYY}г."
     * </pre>
     *
     * <code>string title = 8;</code>
     * @param value The bytes for title to set.
     */
    private void setTitleBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      title_ = value.toStringUtf8();

    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос на создание платежа
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.CreateInvoiceRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.CreateInvoiceRequest)
        ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequestOrBuilder {
      // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Идентификатор пользователя
       * </pre>
       *
       * <code>int32 user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The userId.
       */
      @java.lang.Override
      public int getUserId() {
        return instance.getUserId();
      }
      /**
       * <pre>
       * Идентификатор пользователя
       * </pre>
       *
       * <code>int32 user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The userId to set.
       * @return This builder for chaining.
       */
      public Builder setUserId(int value) {
        copyOnWrite();
        instance.setUserId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор пользователя
       * </pre>
       *
       * <code>int32 user_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearUserId() {
        copyOnWrite();
        instance.clearUserId();
        return this;
      }

      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public java.util.List<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position> getPositionsList() {
        return java.util.Collections.unmodifiableList(
            instance.getPositionsList());
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public int getPositionsCount() {
        return instance.getPositionsCount();
      }/**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position getPositions(int index) {
        return instance.getPositions(index);
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setPositions(
          int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position value) {
        copyOnWrite();
        instance.setPositions(index, value);
        return this;
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setPositions(
          int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position.Builder builderForValue) {
        copyOnWrite();
        instance.setPositions(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder addPositions(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position value) {
        copyOnWrite();
        instance.addPositions(value);
        return this;
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder addPositions(
          int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position value) {
        copyOnWrite();
        instance.addPositions(index, value);
        return this;
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder addPositions(
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position.Builder builderForValue) {
        copyOnWrite();
        instance.addPositions(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder addPositions(
          int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position.Builder builderForValue) {
        copyOnWrite();
        instance.addPositions(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder addAllPositions(
          java.lang.Iterable<? extends ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position> values) {
        copyOnWrite();
        instance.addAllPositions(values);
        return this;
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearPositions() {
        copyOnWrite();
        instance.clearPositions();
        return this;
      }
      /**
       * <pre>
       * Позиция счета
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice.Position positions = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder removePositions(int index) {
        copyOnWrite();
        instance.removePositions(index);
        return this;
      }

      /**
       * <pre>
       * Метод платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The enum numeric value on the wire for payInterfaceType.
       */
      @java.lang.Override
      public int getPayInterfaceTypeValue() {
        return instance.getPayInterfaceTypeValue();
      }
      /**
       * <pre>
       * Метод платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The payInterfaceType to set.
       * @return This builder for chaining.
       */
      public Builder setPayInterfaceTypeValue(int value) {
        copyOnWrite();
        instance.setPayInterfaceTypeValue(value);
        return this;
      }
      /**
       * <pre>
       * Метод платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The payInterfaceType.
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PayInterfaceType getPayInterfaceType() {
        return instance.getPayInterfaceType();
      }
      /**
       * <pre>
       * Метод платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The enum numeric value on the wire for payInterfaceType to set.
       * @return This builder for chaining.
       */
      public Builder setPayInterfaceType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PayInterfaceType value) {
        copyOnWrite();
        instance.setPayInterfaceType(value);
        return this;
      }
      /**
       * <pre>
       * Метод платежа
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PayInterfaceType pay_interface_type = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearPayInterfaceType() {
        copyOnWrite();
        instance.clearPayInterfaceType();
        return this;
      }

      /**
       * <pre>
       * Способ оплаты.
       * По умолчанию: BANK_CARD
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 4;</code>
       * @return The enum numeric value on the wire for paywayType.
       */
      @java.lang.Override
      public int getPaywayTypeValue() {
        return instance.getPaywayTypeValue();
      }
      /**
       * <pre>
       * Способ оплаты.
       * По умолчанию: BANK_CARD
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 4;</code>
       * @param value The paywayType to set.
       * @return This builder for chaining.
       */
      public Builder setPaywayTypeValue(int value) {
        copyOnWrite();
        instance.setPaywayTypeValue(value);
        return this;
      }
      /**
       * <pre>
       * Способ оплаты.
       * По умолчанию: BANK_CARD
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 4;</code>
       * @return The paywayType.
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PaywayType getPaywayType() {
        return instance.getPaywayType();
      }
      /**
       * <pre>
       * Способ оплаты.
       * По умолчанию: BANK_CARD
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 4;</code>
       * @param value The enum numeric value on the wire for paywayType to set.
       * @return This builder for chaining.
       */
      public Builder setPaywayType(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.PaywayType value) {
        copyOnWrite();
        instance.setPaywayType(value);
        return this;
      }
      /**
       * <pre>
       * Способ оплаты.
       * По умолчанию: BANK_CARD
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.PaywayType payway_type = 4;</code>
       * @return This builder for chaining.
       */
      public Builder clearPaywayType() {
        copyOnWrite();
        instance.clearPaywayType();
        return this;
      }

      /**
       * <pre>
       * Ссылка для перехода после оплаты.
       * Если не передан подставится значение по умолчанию
       * </pre>
       *
       * <code>string return_url = 5;</code>
       * @return The returnUrl.
       */
      @java.lang.Override
      public java.lang.String getReturnUrl() {
        return instance.getReturnUrl();
      }
      /**
       * <pre>
       * Ссылка для перехода после оплаты.
       * Если не передан подставится значение по умолчанию
       * </pre>
       *
       * <code>string return_url = 5;</code>
       * @return The bytes for returnUrl.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getReturnUrlBytes() {
        return instance.getReturnUrlBytes();
      }
      /**
       * <pre>
       * Ссылка для перехода после оплаты.
       * Если не передан подставится значение по умолчанию
       * </pre>
       *
       * <code>string return_url = 5;</code>
       * @param value The returnUrl to set.
       * @return This builder for chaining.
       */
      public Builder setReturnUrl(
          java.lang.String value) {
        copyOnWrite();
        instance.setReturnUrl(value);
        return this;
      }
      /**
       * <pre>
       * Ссылка для перехода после оплаты.
       * Если не передан подставится значение по умолчанию
       * </pre>
       *
       * <code>string return_url = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearReturnUrl() {
        copyOnWrite();
        instance.clearReturnUrl();
        return this;
      }
      /**
       * <pre>
       * Ссылка для перехода после оплаты.
       * Если не передан подставится значение по умолчанию
       * </pre>
       *
       * <code>string return_url = 5;</code>
       * @param value The bytes for returnUrl to set.
       * @return This builder for chaining.
       */
      public Builder setReturnUrlBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setReturnUrlBytes(value);
        return this;
      }

      /**
       * <pre>
       * Номер телефона.
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>string phone_number = 6;</code>
       * @return The phoneNumber.
       */
      @java.lang.Override
      public java.lang.String getPhoneNumber() {
        return instance.getPhoneNumber();
      }
      /**
       * <pre>
       * Номер телефона.
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>string phone_number = 6;</code>
       * @return The bytes for phoneNumber.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getPhoneNumberBytes() {
        return instance.getPhoneNumberBytes();
      }
      /**
       * <pre>
       * Номер телефона.
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>string phone_number = 6;</code>
       * @param value The phoneNumber to set.
       * @return This builder for chaining.
       */
      public Builder setPhoneNumber(
          java.lang.String value) {
        copyOnWrite();
        instance.setPhoneNumber(value);
        return this;
      }
      /**
       * <pre>
       * Номер телефона.
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>string phone_number = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearPhoneNumber() {
        copyOnWrite();
        instance.clearPhoneNumber();
        return this;
      }
      /**
       * <pre>
       * Номер телефона.
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>string phone_number = 6;</code>
       * @param value The bytes for phoneNumber to set.
       * @return This builder for chaining.
       */
      public Builder setPhoneNumberBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setPhoneNumberBytes(value);
        return this;
      }

      /**
       * <pre>
       * Электронная почта.
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>string email = 7;</code>
       * @return The email.
       */
      @java.lang.Override
      public java.lang.String getEmail() {
        return instance.getEmail();
      }
      /**
       * <pre>
       * Электронная почта.
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>string email = 7;</code>
       * @return The bytes for email.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getEmailBytes() {
        return instance.getEmailBytes();
      }
      /**
       * <pre>
       * Электронная почта.
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>string email = 7;</code>
       * @param value The email to set.
       * @return This builder for chaining.
       */
      public Builder setEmail(
          java.lang.String value) {
        copyOnWrite();
        instance.setEmail(value);
        return this;
      }
      /**
       * <pre>
       * Электронная почта.
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>string email = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearEmail() {
        copyOnWrite();
        instance.clearEmail();
        return this;
      }
      /**
       * <pre>
       * Электронная почта.
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>string email = 7;</code>
       * @param value The bytes for email to set.
       * @return This builder for chaining.
       */
      public Builder setEmailBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setEmailBytes(value);
        return this;
      }

      /**
       * <pre>
       * Описание платежа.
       * По умолчанию подставляется "Счёт от {DD.MM.YYYY}г."
       * </pre>
       *
       * <code>string title = 8;</code>
       * @return The title.
       */
      @java.lang.Override
      public java.lang.String getTitle() {
        return instance.getTitle();
      }
      /**
       * <pre>
       * Описание платежа.
       * По умолчанию подставляется "Счёт от {DD.MM.YYYY}г."
       * </pre>
       *
       * <code>string title = 8;</code>
       * @return The bytes for title.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getTitleBytes() {
        return instance.getTitleBytes();
      }
      /**
       * <pre>
       * Описание платежа.
       * По умолчанию подставляется "Счёт от {DD.MM.YYYY}г."
       * </pre>
       *
       * <code>string title = 8;</code>
       * @param value The title to set.
       * @return This builder for chaining.
       */
      public Builder setTitle(
          java.lang.String value) {
        copyOnWrite();
        instance.setTitle(value);
        return this;
      }
      /**
       * <pre>
       * Описание платежа.
       * По умолчанию подставляется "Счёт от {DD.MM.YYYY}г."
       * </pre>
       *
       * <code>string title = 8;</code>
       * @return This builder for chaining.
       */
      public Builder clearTitle() {
        copyOnWrite();
        instance.clearTitle();
        return this;
      }
      /**
       * <pre>
       * Описание платежа.
       * По умолчанию подставляется "Счёт от {DD.MM.YYYY}г."
       * </pre>
       *
       * <code>string title = 8;</code>
       * @param value The bytes for title to set.
       * @return This builder for chaining.
       */
      public Builder setTitleBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setTitleBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.CreateInvoiceRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "userId_",
              "positions_",
              ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Position.class,
              "payInterfaceType_",
              "paywayType_",
              "returnUrl_",
              "phoneNumber_",
              "email_",
              "title_",
            };
            java.lang.String info =
                "\u0000\b\u0000\u0000\u0001\b\b\u0000\u0001\u0000\u0001\u0004\u0002\u001b\u0003\f" +
                "\u0004\f\u0005\u0208\u0006\u0208\u0007\u0208\b\u0208";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.CreateInvoiceRequest)
    private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest DEFAULT_INSTANCE;
    static {
      CreateInvoiceRequest defaultInstance = new CreateInvoiceRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        CreateInvoiceRequest.class, defaultInstance);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<CreateInvoiceRequest> PARSER;

    public static com.google.protobuf.Parser<CreateInvoiceRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface CreateInvoiceResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.CreateInvoiceResponse)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Ошибка валидации
     * </pre>
     *
     * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error error = 1;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Ошибка валидации
     * </pre>
     *
     * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error error = 1;</code>
     * @return The error.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error getError();

    /**
     * <pre>
     * Платеж
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Платеж
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
     * @return The data.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice getData();

    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос создание платежа
   * </pre>
   *
   * Protobuf type {@code keyapis.invoice.v1.CreateInvoiceResponse}
   */
  public  static final class CreateInvoiceResponse extends
      com.google.protobuf.GeneratedMessageLite<
          CreateInvoiceResponse, CreateInvoiceResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.CreateInvoiceResponse)
      CreateInvoiceResponseOrBuilder {
    private CreateInvoiceResponse() {
    }
    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.CreateInvoiceResponse.Error)
        com.google.protobuf.MessageLiteOrBuilder {

      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      boolean hasValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError getValidation();

      /**
       * <pre>
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts missing_user_contacts = 2;</code>
       * @return Whether the missingUserContacts field is set.
       */
      boolean hasMissingUserContacts();
      /**
       * <pre>
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts missing_user_contacts = 2;</code>
       * @return The missingUserContacts.
       */
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts getMissingUserContacts();

      /**
       * <pre>
       * Ошибки внешней системы
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.ExternalError external = 3;</code>
       * @return Whether the external field is set.
       */
      boolean hasExternal();
      /**
       * <pre>
       * Ошибки внешней системы
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.ExternalError external = 3;</code>
       * @return The external.
       */
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError getExternal();

      /**
       * <pre>
       * Ошибка сохранения
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.SavingError saving = 4;</code>
       * @return Whether the saving field is set.
       */
      boolean hasSaving();
      /**
       * <pre>
       * Ошибка сохранения
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.SavingError saving = 4;</code>
       * @return The saving.
       */
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError getSaving();

      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка запроса
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.CreateInvoiceResponse.Error}
     */
    public  static final class Error extends
        com.google.protobuf.GeneratedMessageLite<
            Error, Error.Builder> implements
        // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.CreateInvoiceResponse.Error)
        ErrorOrBuilder {
      private Error() {
      }
      public interface MissingUserContactsOrBuilder extends
          // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts)
          com.google.protobuf.MessageLiteOrBuilder {
      }
      /**
       * <pre>
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * Protobuf type {@code keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts}
       */
      public  static final class MissingUserContacts extends
          com.google.protobuf.GeneratedMessageLite<
              MissingUserContacts, MissingUserContacts.Builder> implements
          // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts)
          MissingUserContactsOrBuilder {
        private MissingUserContacts() {
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts parseFrom(
            java.nio.ByteBuffer data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts parseFrom(
            java.nio.ByteBuffer data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts parseFrom(
            com.google.protobuf.ByteString data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts parseFrom(
            com.google.protobuf.ByteString data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts parseFrom(byte[] data)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts parseFrom(
            byte[] data,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws com.google.protobuf.InvalidProtocolBufferException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, data, extensionRegistry);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts parseFrom(java.io.InputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts parseFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input, extensionRegistry);
        }

        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts parseDelimitedFrom(java.io.InputStream input)
            throws java.io.IOException {
          return parseDelimitedFrom(DEFAULT_INSTANCE, input);
        }

        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts parseDelimitedFrom(
            java.io.InputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts parseFrom(
            com.google.protobuf.CodedInputStream input)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input);
        }
        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts parseFrom(
            com.google.protobuf.CodedInputStream input,
            com.google.protobuf.ExtensionRegistryLite extensionRegistry)
            throws java.io.IOException {
          return com.google.protobuf.GeneratedMessageLite.parseFrom(
              DEFAULT_INSTANCE, input, extensionRegistry);
        }

        public static Builder newBuilder() {
          return (Builder) DEFAULT_INSTANCE.createBuilder();
        }
        public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts prototype) {
          return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
        }

        /**
         * <pre>
         * Должно быть означено поле phone_number, либо поле email
         * </pre>
         *
         * Protobuf type {@code keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts}
         */
        public static final class Builder extends
            com.google.protobuf.GeneratedMessageLite.Builder<
              ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts, Builder> implements
            // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts)
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContactsOrBuilder {
          // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts.newBuilder()
          private Builder() {
            super(DEFAULT_INSTANCE);
          }


          // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts)
        }
        @java.lang.Override
        @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
        protected final java.lang.Object dynamicMethod(
            com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
            java.lang.Object arg0, java.lang.Object arg1) {
          switch (method) {
            case NEW_MUTABLE_INSTANCE: {
              return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts();
            }
            case NEW_BUILDER: {
              return new Builder();
            }
            case BUILD_MESSAGE_INFO: {
                java.lang.Object[] objects = null;java.lang.String info =
                    "\u0000\u0000";
                return newMessageInfo(DEFAULT_INSTANCE, info, objects);
            }
            // fall through
            case GET_DEFAULT_INSTANCE: {
              return DEFAULT_INSTANCE;
            }
            case GET_PARSER: {
              com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts> parser = PARSER;
              if (parser == null) {
                synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts.class) {
                  parser = PARSER;
                  if (parser == null) {
                    parser =
                        new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts>(
                            DEFAULT_INSTANCE);
                    PARSER = parser;
                  }
                }
              }
              return parser;
          }
          case GET_MEMOIZED_IS_INITIALIZED: {
            return (byte) 1;
          }
          case SET_MEMOIZED_IS_INITIALIZED: {
            return null;
          }
          }
          throw new UnsupportedOperationException();
        }


        // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts)
        private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts DEFAULT_INSTANCE;
        static {
          MissingUserContacts defaultInstance = new MissingUserContacts();
          // New instances are implicitly immutable so no need to make
          // immutable.
          DEFAULT_INSTANCE = defaultInstance;
          com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
            MissingUserContacts.class, defaultInstance);
        }

        public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts getDefaultInstance() {
          return DEFAULT_INSTANCE;
        }

        private static volatile com.google.protobuf.Parser<MissingUserContacts> PARSER;

        public static com.google.protobuf.Parser<MissingUserContacts> parser() {
          return DEFAULT_INSTANCE.getParserForType();
        }
      }

      private int reasonCase_ = 0;
      private java.lang.Object reason_;
      public enum ReasonCase {
        VALIDATION(1),
        MISSING_USER_CONTACTS(2),
        EXTERNAL(3),
        SAVING(4),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ReasonCase valueOf(int value) {
          return forNumber(value);
        }

        public static ReasonCase forNumber(int value) {
          switch (value) {
            case 1: return VALIDATION;
            case 2: return MISSING_USER_CONTACTS;
            case 3: return EXTERNAL;
            case 4: return SAVING;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      @java.lang.Override
      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      private void clearReason() {
        reasonCase_ = 0;
        reason_ = null;
      }

      public static final int VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError getValidation() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       */
      private void setValidation(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError value) {
        value.getClass();
  reason_ = value;
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       */
      private void mergeValidation(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError value) {
        value.getClass();
  if (reasonCase_ == 1 &&
            reason_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError.getDefaultInstance()) {
          reason_ = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError.newBuilder((ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError) reason_)
              .mergeFrom(value).buildPartial();
        } else {
          reason_ = value;
        }
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       */
      private void clearValidation() {
        if (reasonCase_ == 1) {
          reasonCase_ = 0;
          reason_ = null;
        }
      }

      public static final int MISSING_USER_CONTACTS_FIELD_NUMBER = 2;
      /**
       * <pre>
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts missing_user_contacts = 2;</code>
       */
      @java.lang.Override
      public boolean hasMissingUserContacts() {
        return reasonCase_ == 2;
      }
      /**
       * <pre>
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts missing_user_contacts = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts getMissingUserContacts() {
        if (reasonCase_ == 2) {
           return (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts) reason_;
        }
        return ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts.getDefaultInstance();
      }
      /**
       * <pre>
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts missing_user_contacts = 2;</code>
       */
      private void setMissingUserContacts(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts value) {
        value.getClass();
  reason_ = value;
        reasonCase_ = 2;
      }
      /**
       * <pre>
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts missing_user_contacts = 2;</code>
       */
      private void mergeMissingUserContacts(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts value) {
        value.getClass();
  if (reasonCase_ == 2 &&
            reason_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts.getDefaultInstance()) {
          reason_ = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts.newBuilder((ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts) reason_)
              .mergeFrom(value).buildPartial();
        } else {
          reason_ = value;
        }
        reasonCase_ = 2;
      }
      /**
       * <pre>
       * Должно быть означено поле phone_number, либо поле email
       * </pre>
       *
       * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts missing_user_contacts = 2;</code>
       */
      private void clearMissingUserContacts() {
        if (reasonCase_ == 2) {
          reasonCase_ = 0;
          reason_ = null;
        }
      }

      public static final int EXTERNAL_FIELD_NUMBER = 3;
      /**
       * <pre>
       * Ошибки внешней системы
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.ExternalError external = 3;</code>
       */
      @java.lang.Override
      public boolean hasExternal() {
        return reasonCase_ == 3;
      }
      /**
       * <pre>
       * Ошибки внешней системы
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.ExternalError external = 3;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError getExternal() {
        if (reasonCase_ == 3) {
           return (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError) reason_;
        }
        return ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибки внешней системы
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.ExternalError external = 3;</code>
       */
      private void setExternal(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError value) {
        value.getClass();
  reason_ = value;
        reasonCase_ = 3;
      }
      /**
       * <pre>
       * Ошибки внешней системы
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.ExternalError external = 3;</code>
       */
      private void mergeExternal(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError value) {
        value.getClass();
  if (reasonCase_ == 3 &&
            reason_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.getDefaultInstance()) {
          reason_ = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.newBuilder((ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError) reason_)
              .mergeFrom(value).buildPartial();
        } else {
          reason_ = value;
        }
        reasonCase_ = 3;
      }
      /**
       * <pre>
       * Ошибки внешней системы
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.ExternalError external = 3;</code>
       */
      private void clearExternal() {
        if (reasonCase_ == 3) {
          reasonCase_ = 0;
          reason_ = null;
        }
      }

      public static final int SAVING_FIELD_NUMBER = 4;
      /**
       * <pre>
       * Ошибка сохранения
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.SavingError saving = 4;</code>
       */
      @java.lang.Override
      public boolean hasSaving() {
        return reasonCase_ == 4;
      }
      /**
       * <pre>
       * Ошибка сохранения
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.SavingError saving = 4;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError getSaving() {
        if (reasonCase_ == 4) {
           return (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError) reason_;
        }
        return ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка сохранения
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.SavingError saving = 4;</code>
       */
      private void setSaving(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError value) {
        value.getClass();
  reason_ = value;
        reasonCase_ = 4;
      }
      /**
       * <pre>
       * Ошибка сохранения
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.SavingError saving = 4;</code>
       */
      private void mergeSaving(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError value) {
        value.getClass();
  if (reasonCase_ == 4 &&
            reason_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.getDefaultInstance()) {
          reason_ = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.newBuilder((ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError) reason_)
              .mergeFrom(value).buildPartial();
        } else {
          reason_ = value;
        }
        reasonCase_ = 4;
      }
      /**
       * <pre>
       * Ошибка сохранения
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice.SavingError saving = 4;</code>
       */
      private void clearSaving() {
        if (reasonCase_ == 4) {
          reasonCase_ = 0;
          reason_ = null;
        }
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error prototype) {
        return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
      }

      /**
       * <pre>
       * Ошибка запроса
       * </pre>
       *
       * Protobuf type {@code keyapis.invoice.v1.CreateInvoiceResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error, Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.CreateInvoiceResponse.Error)
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.ErrorOrBuilder {
        // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }

        @java.lang.Override
        public ReasonCase
            getReasonCase() {
          return instance.getReasonCase();
        }

        public Builder clearReason() {
          copyOnWrite();
          instance.clearReason();
          return this;
        }


        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public boolean hasValidation() {
          return instance.hasValidation();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError getValidation() {
          return instance.getValidation();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError value) {
          copyOnWrite();
          instance.setValidation(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError.Builder builderForValue) {
          copyOnWrite();
          instance.setValidation(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        public Builder mergeValidation(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError value) {
          copyOnWrite();
          instance.mergeValidation(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        public Builder clearValidation() {
          copyOnWrite();
          instance.clearValidation();
          return this;
        }

        /**
         * <pre>
         * Должно быть означено поле phone_number, либо поле email
         * </pre>
         *
         * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts missing_user_contacts = 2;</code>
         */
        @java.lang.Override
        public boolean hasMissingUserContacts() {
          return instance.hasMissingUserContacts();
        }
        /**
         * <pre>
         * Должно быть означено поле phone_number, либо поле email
         * </pre>
         *
         * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts missing_user_contacts = 2;</code>
         */
        @java.lang.Override
        public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts getMissingUserContacts() {
          return instance.getMissingUserContacts();
        }
        /**
         * <pre>
         * Должно быть означено поле phone_number, либо поле email
         * </pre>
         *
         * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts missing_user_contacts = 2;</code>
         */
        public Builder setMissingUserContacts(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts value) {
          copyOnWrite();
          instance.setMissingUserContacts(value);
          return this;
        }
        /**
         * <pre>
         * Должно быть означено поле phone_number, либо поле email
         * </pre>
         *
         * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts missing_user_contacts = 2;</code>
         */
        public Builder setMissingUserContacts(
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts.Builder builderForValue) {
          copyOnWrite();
          instance.setMissingUserContacts(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Должно быть означено поле phone_number, либо поле email
         * </pre>
         *
         * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts missing_user_contacts = 2;</code>
         */
        public Builder mergeMissingUserContacts(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts value) {
          copyOnWrite();
          instance.mergeMissingUserContacts(value);
          return this;
        }
        /**
         * <pre>
         * Должно быть означено поле phone_number, либо поле email
         * </pre>
         *
         * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error.MissingUserContacts missing_user_contacts = 2;</code>
         */
        public Builder clearMissingUserContacts() {
          copyOnWrite();
          instance.clearMissingUserContacts();
          return this;
        }

        /**
         * <pre>
         * Ошибки внешней системы
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.ExternalError external = 3;</code>
         */
        @java.lang.Override
        public boolean hasExternal() {
          return instance.hasExternal();
        }
        /**
         * <pre>
         * Ошибки внешней системы
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.ExternalError external = 3;</code>
         */
        @java.lang.Override
        public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError getExternal() {
          return instance.getExternal();
        }
        /**
         * <pre>
         * Ошибки внешней системы
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.ExternalError external = 3;</code>
         */
        public Builder setExternal(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError value) {
          copyOnWrite();
          instance.setExternal(value);
          return this;
        }
        /**
         * <pre>
         * Ошибки внешней системы
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.ExternalError external = 3;</code>
         */
        public Builder setExternal(
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.Builder builderForValue) {
          copyOnWrite();
          instance.setExternal(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Ошибки внешней системы
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.ExternalError external = 3;</code>
         */
        public Builder mergeExternal(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError value) {
          copyOnWrite();
          instance.mergeExternal(value);
          return this;
        }
        /**
         * <pre>
         * Ошибки внешней системы
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.ExternalError external = 3;</code>
         */
        public Builder clearExternal() {
          copyOnWrite();
          instance.clearExternal();
          return this;
        }

        /**
         * <pre>
         * Ошибка сохранения
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.SavingError saving = 4;</code>
         */
        @java.lang.Override
        public boolean hasSaving() {
          return instance.hasSaving();
        }
        /**
         * <pre>
         * Ошибка сохранения
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.SavingError saving = 4;</code>
         */
        @java.lang.Override
        public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError getSaving() {
          return instance.getSaving();
        }
        /**
         * <pre>
         * Ошибка сохранения
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.SavingError saving = 4;</code>
         */
        public Builder setSaving(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError value) {
          copyOnWrite();
          instance.setSaving(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка сохранения
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.SavingError saving = 4;</code>
         */
        public Builder setSaving(
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.Builder builderForValue) {
          copyOnWrite();
          instance.setSaving(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Ошибка сохранения
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.SavingError saving = 4;</code>
         */
        public Builder mergeSaving(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError value) {
          copyOnWrite();
          instance.mergeSaving(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка сохранения
         * </pre>
         *
         * <code>.keyapis.invoice.v1.Invoice.SavingError saving = 4;</code>
         */
        public Builder clearSaving() {
          copyOnWrite();
          instance.clearSaving();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.CreateInvoiceResponse.Error)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "reason_",
                "reasonCase_",
                ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError.class,
                ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.MissingUserContacts.class,
                ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.ExternalError.class,
                ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.SavingError.class,
              };
              java.lang.String info =
                  "\u0000\u0004\u0001\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001<\u0000\u0002<" +
                  "\u0000\u0003<\u0000\u0004<\u0000";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error> parser = PARSER;
            if (parser == null) {
              synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }


      // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.CreateInvoiceResponse.Error)
      private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error DEFAULT_INSTANCE;
      static {
        Error defaultInstance = new Error();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          Error.class, defaultInstance);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static volatile com.google.protobuf.Parser<Error> PARSER;

      public static com.google.protobuf.Parser<Error> parser() {
        return DEFAULT_INSTANCE.getParserForType();
      }
    }

    private int typeCase_ = 0;
    private java.lang.Object type_;
    public enum TypeCase {
      ERROR(1),
      DATA(2),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static TypeCase forNumber(int value) {
        switch (value) {
          case 1: return ERROR;
          case 2: return DATA;
          case 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    @java.lang.Override
    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    private void clearType() {
      typeCase_ = 0;
      type_ = null;
    }

    public static final int ERROR_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Ошибка валидации
     * </pre>
     *
     * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error error = 1;</code>
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Ошибка валидации
     * </pre>
     *
     * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error error = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error getError() {
      if (typeCase_ == 1) {
         return (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error) type_;
      }
      return ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка валидации
     * </pre>
     *
     * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error error = 1;</code>
     */
    private void setError(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error value) {
      value.getClass();
  type_ = value;
      typeCase_ = 1;
    }
    /**
     * <pre>
     * Ошибка валидации
     * </pre>
     *
     * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error error = 1;</code>
     */
    private void mergeError(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error value) {
      value.getClass();
  if (typeCase_ == 1 &&
          type_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.getDefaultInstance()) {
        type_ = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.newBuilder((ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error) type_)
            .mergeFrom(value).buildPartial();
      } else {
        type_ = value;
      }
      typeCase_ = 1;
    }
    /**
     * <pre>
     * Ошибка валидации
     * </pre>
     *
     * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error error = 1;</code>
     */
    private void clearError() {
      if (typeCase_ == 1) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static final int DATA_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Платеж
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Платеж
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice getData() {
      if (typeCase_ == 2) {
         return (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice) type_;
      }
      return ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.getDefaultInstance();
    }
    /**
     * <pre>
     * Платеж
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
     */
    private void setData(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice value) {
      value.getClass();
  type_ = value;
      typeCase_ = 2;
    }
    /**
     * <pre>
     * Платеж
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
     */
    private void mergeData(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice value) {
      value.getClass();
  if (typeCase_ == 2 &&
          type_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.getDefaultInstance()) {
        type_ = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.newBuilder((ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice) type_)
            .mergeFrom(value).buildPartial();
      } else {
        type_ = value;
      }
      typeCase_ = 2;
    }
    /**
     * <pre>
     * Платеж
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
     */
    private void clearData() {
      if (typeCase_ == 2) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос создание платежа
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.CreateInvoiceResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.CreateInvoiceResponse)
        ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponseOrBuilder {
      // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public TypeCase
          getTypeCase() {
        return instance.getTypeCase();
      }

      public Builder clearType() {
        copyOnWrite();
        instance.clearType();
        return this;
      }


      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error error = 1;</code>
       */
      @java.lang.Override
      public boolean hasError() {
        return instance.hasError();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error error = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error getError() {
        return instance.getError();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error error = 1;</code>
       */
      public Builder setError(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error value) {
        copyOnWrite();
        instance.setError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error error = 1;</code>
       */
      public Builder setError(
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.Builder builderForValue) {
        copyOnWrite();
        instance.setError(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error error = 1;</code>
       */
      public Builder mergeError(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error value) {
        copyOnWrite();
        instance.mergeError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.CreateInvoiceResponse.Error error = 1;</code>
       */
      public Builder clearError() {
        copyOnWrite();
        instance.clearError();
        return this;
      }

      /**
       * <pre>
       * Платеж
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
       */
      @java.lang.Override
      public boolean hasData() {
        return instance.hasData();
      }
      /**
       * <pre>
       * Платеж
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice getData() {
        return instance.getData();
      }
      /**
       * <pre>
       * Платеж
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
       */
      public Builder setData(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <pre>
       * Платеж
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
       */
      public Builder setData(
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Builder builderForValue) {
        copyOnWrite();
        instance.setData(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Платеж
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
       */
      public Builder mergeData(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice value) {
        copyOnWrite();
        instance.mergeData(value);
        return this;
      }
      /**
       * <pre>
       * Платеж
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.CreateInvoiceResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "type_",
              "typeCase_",
              ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.Error.class,
              ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.class,
            };
            java.lang.String info =
                "\u0000\u0002\u0001\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001<\u0000\u0002<" +
                "\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.CreateInvoiceResponse)
    private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse DEFAULT_INSTANCE;
    static {
      CreateInvoiceResponse defaultInstance = new CreateInvoiceResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        CreateInvoiceResponse.class, defaultInstance);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.CreateInvoiceResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<CreateInvoiceResponse> PARSER;

    public static com.google.protobuf.Parser<CreateInvoiceResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetInvoiceRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.GetInvoiceRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Идентификатор платежа в Ключе.
     * # Тип: Guid
     * </pre>
     *
     * <code>string invoice_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The invoiceId.
     */
    java.lang.String getInvoiceId();
    /**
     * <pre>
     * Идентификатор платежа в Ключе.
     * # Тип: Guid
     * </pre>
     *
     * <code>string invoice_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for invoiceId.
     */
    com.google.protobuf.ByteString
        getInvoiceIdBytes();
  }
  /**
   * <pre>
   * Запрос на получение статуса платежа
   * </pre>
   *
   * Protobuf type {@code keyapis.invoice.v1.GetInvoiceRequest}
   */
  public  static final class GetInvoiceRequest extends
      com.google.protobuf.GeneratedMessageLite<
          GetInvoiceRequest, GetInvoiceRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.GetInvoiceRequest)
      GetInvoiceRequestOrBuilder {
    private GetInvoiceRequest() {
      invoiceId_ = "";
    }
    public static final int INVOICE_ID_FIELD_NUMBER = 1;
    private java.lang.String invoiceId_;
    /**
     * <pre>
     * Идентификатор платежа в Ключе.
     * # Тип: Guid
     * </pre>
     *
     * <code>string invoice_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The invoiceId.
     */
    @java.lang.Override
    public java.lang.String getInvoiceId() {
      return invoiceId_;
    }
    /**
     * <pre>
     * Идентификатор платежа в Ключе.
     * # Тип: Guid
     * </pre>
     *
     * <code>string invoice_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for invoiceId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getInvoiceIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(invoiceId_);
    }
    /**
     * <pre>
     * Идентификатор платежа в Ключе.
     * # Тип: Guid
     * </pre>
     *
     * <code>string invoice_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The invoiceId to set.
     */
    private void setInvoiceId(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      invoiceId_ = value;
    }
    /**
     * <pre>
     * Идентификатор платежа в Ключе.
     * # Тип: Guid
     * </pre>
     *
     * <code>string invoice_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearInvoiceId() {

      invoiceId_ = getDefaultInstance().getInvoiceId();
    }
    /**
     * <pre>
     * Идентификатор платежа в Ключе.
     * # Тип: Guid
     * </pre>
     *
     * <code>string invoice_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for invoiceId to set.
     */
    private void setInvoiceIdBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      invoiceId_ = value.toStringUtf8();

    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос на получение статуса платежа
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.GetInvoiceRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.GetInvoiceRequest)
        ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequestOrBuilder {
      // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Идентификатор платежа в Ключе.
       * # Тип: Guid
       * </pre>
       *
       * <code>string invoice_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The invoiceId.
       */
      @java.lang.Override
      public java.lang.String getInvoiceId() {
        return instance.getInvoiceId();
      }
      /**
       * <pre>
       * Идентификатор платежа в Ключе.
       * # Тип: Guid
       * </pre>
       *
       * <code>string invoice_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for invoiceId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getInvoiceIdBytes() {
        return instance.getInvoiceIdBytes();
      }
      /**
       * <pre>
       * Идентификатор платежа в Ключе.
       * # Тип: Guid
       * </pre>
       *
       * <code>string invoice_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The invoiceId to set.
       * @return This builder for chaining.
       */
      public Builder setInvoiceId(
          java.lang.String value) {
        copyOnWrite();
        instance.setInvoiceId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор платежа в Ключе.
       * # Тип: Guid
       * </pre>
       *
       * <code>string invoice_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearInvoiceId() {
        copyOnWrite();
        instance.clearInvoiceId();
        return this;
      }
      /**
       * <pre>
       * Идентификатор платежа в Ключе.
       * # Тип: Guid
       * </pre>
       *
       * <code>string invoice_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for invoiceId to set.
       * @return This builder for chaining.
       */
      public Builder setInvoiceIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setInvoiceIdBytes(value);
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.GetInvoiceRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "invoiceId_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\u0208";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.GetInvoiceRequest)
    private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest DEFAULT_INSTANCE;
    static {
      GetInvoiceRequest defaultInstance = new GetInvoiceRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetInvoiceRequest.class, defaultInstance);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetInvoiceRequest> PARSER;

    public static com.google.protobuf.Parser<GetInvoiceRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetInvoiceResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.GetInvoiceResponse)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.invoice.v1.GetInvoiceResponse.Error error = 1;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.invoice.v1.GetInvoiceResponse.Error error = 1;</code>
     * @return The error.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error getError();

    /**
     * <pre>
     * Платеж
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Платеж
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
     * @return The data.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice getData();

    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос получения платежа
   * </pre>
   *
   * Protobuf type {@code keyapis.invoice.v1.GetInvoiceResponse}
   */
  public  static final class GetInvoiceResponse extends
      com.google.protobuf.GeneratedMessageLite<
          GetInvoiceResponse, GetInvoiceResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.GetInvoiceResponse)
      GetInvoiceResponseOrBuilder {
    private GetInvoiceResponse() {
    }
    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.GetInvoiceResponse.Error)
        com.google.protobuf.MessageLiteOrBuilder {

      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      boolean hasValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError getValidation();

      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка запроса
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.GetInvoiceResponse.Error}
     */
    public  static final class Error extends
        com.google.protobuf.GeneratedMessageLite<
            Error, Error.Builder> implements
        // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.GetInvoiceResponse.Error)
        ErrorOrBuilder {
      private Error() {
      }
      private int reasonCase_ = 0;
      private java.lang.Object reason_;
      public enum ReasonCase {
        VALIDATION(1),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ReasonCase valueOf(int value) {
          return forNumber(value);
        }

        public static ReasonCase forNumber(int value) {
          switch (value) {
            case 1: return VALIDATION;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      @java.lang.Override
      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      private void clearReason() {
        reasonCase_ = 0;
        reason_ = null;
      }

      public static final int VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError getValidation() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       */
      private void setValidation(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError value) {
        value.getClass();
  reason_ = value;
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       */
      private void mergeValidation(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError value) {
        value.getClass();
  if (reasonCase_ == 1 &&
            reason_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError.getDefaultInstance()) {
          reason_ = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError.newBuilder((ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError) reason_)
              .mergeFrom(value).buildPartial();
        } else {
          reason_ = value;
        }
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       */
      private void clearValidation() {
        if (reasonCase_ == 1) {
          reasonCase_ = 0;
          reason_ = null;
        }
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error prototype) {
        return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
      }

      /**
       * <pre>
       * Ошибка запроса
       * </pre>
       *
       * Protobuf type {@code keyapis.invoice.v1.GetInvoiceResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error, Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.GetInvoiceResponse.Error)
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.ErrorOrBuilder {
        // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }

        @java.lang.Override
        public ReasonCase
            getReasonCase() {
          return instance.getReasonCase();
        }

        public Builder clearReason() {
          copyOnWrite();
          instance.clearReason();
          return this;
        }


        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public boolean hasValidation() {
          return instance.hasValidation();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError getValidation() {
          return instance.getValidation();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError value) {
          copyOnWrite();
          instance.setValidation(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError.Builder builderForValue) {
          copyOnWrite();
          instance.setValidation(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        public Builder mergeValidation(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError value) {
          copyOnWrite();
          instance.mergeValidation(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        public Builder clearValidation() {
          copyOnWrite();
          instance.clearValidation();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.GetInvoiceResponse.Error)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "reason_",
                "reasonCase_",
                ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError.class,
              };
              java.lang.String info =
                  "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001<\u0000";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error> parser = PARSER;
            if (parser == null) {
              synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }


      // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.GetInvoiceResponse.Error)
      private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error DEFAULT_INSTANCE;
      static {
        Error defaultInstance = new Error();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          Error.class, defaultInstance);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static volatile com.google.protobuf.Parser<Error> PARSER;

      public static com.google.protobuf.Parser<Error> parser() {
        return DEFAULT_INSTANCE.getParserForType();
      }
    }

    private int typeCase_ = 0;
    private java.lang.Object type_;
    public enum TypeCase {
      ERROR(1),
      DATA(2),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static TypeCase forNumber(int value) {
        switch (value) {
          case 1: return ERROR;
          case 2: return DATA;
          case 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    @java.lang.Override
    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    private void clearType() {
      typeCase_ = 0;
      type_ = null;
    }

    public static final int ERROR_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.invoice.v1.GetInvoiceResponse.Error error = 1;</code>
     */
    @java.lang.Override
    public boolean hasError() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.invoice.v1.GetInvoiceResponse.Error error = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error getError() {
      if (typeCase_ == 1) {
         return (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error) type_;
      }
      return ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error.getDefaultInstance();
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.invoice.v1.GetInvoiceResponse.Error error = 1;</code>
     */
    private void setError(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error value) {
      value.getClass();
  type_ = value;
      typeCase_ = 1;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.invoice.v1.GetInvoiceResponse.Error error = 1;</code>
     */
    private void mergeError(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error value) {
      value.getClass();
  if (typeCase_ == 1 &&
          type_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error.getDefaultInstance()) {
        type_ = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error.newBuilder((ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error) type_)
            .mergeFrom(value).buildPartial();
      } else {
        type_ = value;
      }
      typeCase_ = 1;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.invoice.v1.GetInvoiceResponse.Error error = 1;</code>
     */
    private void clearError() {
      if (typeCase_ == 1) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static final int DATA_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Платеж
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 2;
    }
    /**
     * <pre>
     * Платеж
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice getData() {
      if (typeCase_ == 2) {
         return (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice) type_;
      }
      return ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.getDefaultInstance();
    }
    /**
     * <pre>
     * Платеж
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
     */
    private void setData(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice value) {
      value.getClass();
  type_ = value;
      typeCase_ = 2;
    }
    /**
     * <pre>
     * Платеж
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
     */
    private void mergeData(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice value) {
      value.getClass();
  if (typeCase_ == 2 &&
          type_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.getDefaultInstance()) {
        type_ = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.newBuilder((ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice) type_)
            .mergeFrom(value).buildPartial();
      } else {
        type_ = value;
      }
      typeCase_ = 2;
    }
    /**
     * <pre>
     * Платеж
     * </pre>
     *
     * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
     */
    private void clearData() {
      if (typeCase_ == 2) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос получения платежа
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.GetInvoiceResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.GetInvoiceResponse)
        ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponseOrBuilder {
      // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public TypeCase
          getTypeCase() {
        return instance.getTypeCase();
      }

      public Builder clearType() {
        copyOnWrite();
        instance.clearType();
        return this;
      }


      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.invoice.v1.GetInvoiceResponse.Error error = 1;</code>
       */
      @java.lang.Override
      public boolean hasError() {
        return instance.hasError();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.invoice.v1.GetInvoiceResponse.Error error = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error getError() {
        return instance.getError();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.invoice.v1.GetInvoiceResponse.Error error = 1;</code>
       */
      public Builder setError(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error value) {
        copyOnWrite();
        instance.setError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.invoice.v1.GetInvoiceResponse.Error error = 1;</code>
       */
      public Builder setError(
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error.Builder builderForValue) {
        copyOnWrite();
        instance.setError(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.invoice.v1.GetInvoiceResponse.Error error = 1;</code>
       */
      public Builder mergeError(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error value) {
        copyOnWrite();
        instance.mergeError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.invoice.v1.GetInvoiceResponse.Error error = 1;</code>
       */
      public Builder clearError() {
        copyOnWrite();
        instance.clearError();
        return this;
      }

      /**
       * <pre>
       * Платеж
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
       */
      @java.lang.Override
      public boolean hasData() {
        return instance.hasData();
      }
      /**
       * <pre>
       * Платеж
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice getData() {
        return instance.getData();
      }
      /**
       * <pre>
       * Платеж
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
       */
      public Builder setData(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <pre>
       * Платеж
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
       */
      public Builder setData(
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Builder builderForValue) {
        copyOnWrite();
        instance.setData(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Платеж
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
       */
      public Builder mergeData(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice value) {
        copyOnWrite();
        instance.mergeData(value);
        return this;
      }
      /**
       * <pre>
       * Платеж
       * </pre>
       *
       * <code>.keyapis.invoice.v1.Invoice data = 2;</code>
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.GetInvoiceResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "type_",
              "typeCase_",
              ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.Error.class,
              ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.class,
            };
            java.lang.String info =
                "\u0000\u0002\u0001\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001<\u0000\u0002<" +
                "\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.GetInvoiceResponse)
    private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse DEFAULT_INSTANCE;
    static {
      GetInvoiceResponse defaultInstance = new GetInvoiceResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetInvoiceResponse.class, defaultInstance);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetInvoiceResponse> PARSER;

    public static com.google.protobuf.Parser<GetInvoiceResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface PostInvoiceConfirmRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.PostInvoiceConfirmRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Идентификатор платежа в Ключе
     * </pre>
     *
     * <code>string src_pay_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The srcPayId.
     */
    java.lang.String getSrcPayId();
    /**
     * <pre>
     * Идентификатор платежа в Ключе
     * </pre>
     *
     * <code>string src_pay_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for srcPayId.
     */
    com.google.protobuf.ByteString
        getSrcPayIdBytes();

    /**
     * <pre>
     * Идентификатор платежа во внешней системе
     * </pre>
     *
     * <code>string espp_pay_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The esppPayId.
     */
    java.lang.String getEsppPayId();
    /**
     * <pre>
     * Идентификатор платежа во внешней системе
     * </pre>
     *
     * <code>string espp_pay_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for esppPayId.
     */
    com.google.protobuf.ByteString
        getEsppPayIdBytes();

    /**
     * <pre>
     * Статус платежа из внешней системы
     * </pre>
     *
     * <code>int32 pay_status = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The payStatus.
     */
    int getPayStatus();

    /**
     * <pre>
     * Тип запроса.
     * Должно иметь значение "confirmPayment"
     * </pre>
     *
     * <code>string req_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The reqType.
     */
    java.lang.String getReqType();
    /**
     * <pre>
     * Тип запроса.
     * Должно иметь значение "confirmPayment"
     * </pre>
     *
     * <code>string req_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for reqType.
     */
    com.google.protobuf.ByteString
        getReqTypeBytes();

    /**
     * <pre>
     * Сумма платежа в минимальных единицах валюты
     * </pre>
     *
     * <code>float amount = 5;</code>
     * @return The amount.
     */
    float getAmount();

    /**
     * <pre>
     * Код валюты платежа
     * </pre>
     *
     * <code>string currency = 6;</code>
     * @return The currency.
     */
    java.lang.String getCurrency();
    /**
     * <pre>
     * Код валюты платежа
     * </pre>
     *
     * <code>string currency = 6;</code>
     * @return The bytes for currency.
     */
    com.google.protobuf.ByteString
        getCurrencyBytes();

    /**
     * <pre>
     * Код способа оплаты
     * </pre>
     *
     * <code>string pay_method = 7;</code>
     * @return The payMethod.
     */
    java.lang.String getPayMethod();
    /**
     * <pre>
     * Код способа оплаты
     * </pre>
     *
     * <code>string pay_method = 7;</code>
     * @return The bytes for payMethod.
     */
    com.google.protobuf.ByteString
        getPayMethodBytes();

    /**
     * <pre>
     * Дата регистрации платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp create_time_at = 8 [json_name = "createTime"];</code>
     * @return Whether the createTimeAt field is set.
     */
    boolean hasCreateTimeAt();
    /**
     * <pre>
     * Дата регистрации платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp create_time_at = 8 [json_name = "createTime"];</code>
     * @return The createTimeAt.
     */
    com.google.protobuf.Timestamp getCreateTimeAt();

    /**
     * <pre>
     * Комментарий или сообщение об ошибке
     * </pre>
     *
     * <code>string req_note = 9;</code>
     * @return The reqNote.
     */
    java.lang.String getReqNote();
    /**
     * <pre>
     * Комментарий или сообщение об ошибке
     * </pre>
     *
     * <code>string req_note = 9;</code>
     * @return The bytes for reqNote.
     */
    com.google.protobuf.ByteString
        getReqNoteBytes();

    /**
     * <pre>
     * Сообщение, отображаемое пользователю
     * </pre>
     *
     * <code>string req_user_msg = 10;</code>
     * @return The reqUserMsg.
     */
    java.lang.String getReqUserMsg();
    /**
     * <pre>
     * Сообщение, отображаемое пользователю
     * </pre>
     *
     * <code>string req_user_msg = 10;</code>
     * @return The bytes for reqUserMsg.
     */
    com.google.protobuf.ByteString
        getReqUserMsgBytes();

    /**
     * <pre>
     * Время фактической оплаты. Время фактической оплаты на стороне Процессинга. Возвращается, если оплата состоялась
     * </pre>
     *
     * <code>.google.protobuf.Timestamp pay_time_at = 11 [json_name = "payTime"];</code>
     * @return Whether the payTimeAt field is set.
     */
    boolean hasPayTimeAt();
    /**
     * <pre>
     * Время фактической оплаты. Время фактической оплаты на стороне Процессинга. Возвращается, если оплата состоялась
     * </pre>
     *
     * <code>.google.protobuf.Timestamp pay_time_at = 11 [json_name = "payTime"];</code>
     * @return The payTimeAt.
     */
    com.google.protobuf.Timestamp getPayTimeAt();

    /**
     * <pre>
     * Время фактической отмены оплаты.
     * Время фактической отмены оплаты на стороне Процессинга.
     * Возвращается, если отмена оплаты состоялась
     * </pre>
     *
     * <code>.google.protobuf.Timestamp abandon_time_at = 12 [json_name = "abandonTime"];</code>
     * @return Whether the abandonTimeAt field is set.
     */
    boolean hasAbandonTimeAt();
    /**
     * <pre>
     * Время фактической отмены оплаты.
     * Время фактической отмены оплаты на стороне Процессинга.
     * Возвращается, если отмена оплаты состоялась
     * </pre>
     *
     * <code>.google.protobuf.Timestamp abandon_time_at = 12 [json_name = "abandonTime"];</code>
     * @return The abandonTimeAt.
     */
    com.google.protobuf.Timestamp getAbandonTimeAt();

    /**
     * <pre>
     * Структура с информацией о карте плательщика.
     * Передаётся только при успешном платеже и если указаны способы оплаты payMethod = StoredBankCard либо BankCard
     * </pre>
     *
     * <code>.keyapis.invoice.v1.PostInvoiceConfirmRequest.Card card = 13;</code>
     * @return Whether the card field is set.
     */
    boolean hasCard();
    /**
     * <pre>
     * Структура с информацией о карте плательщика.
     * Передаётся только при успешном платеже и если указаны способы оплаты payMethod = StoredBankCard либо BankCard
     * </pre>
     *
     * <code>.keyapis.invoice.v1.PostInvoiceConfirmRequest.Card card = 13;</code>
     * @return The card.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card getCard();
  }
  /**
   * <pre>
   * Запрос на подтверждение платежа
   * </pre>
   *
   * Protobuf type {@code keyapis.invoice.v1.PostInvoiceConfirmRequest}
   */
  public  static final class PostInvoiceConfirmRequest extends
      com.google.protobuf.GeneratedMessageLite<
          PostInvoiceConfirmRequest, PostInvoiceConfirmRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.PostInvoiceConfirmRequest)
      PostInvoiceConfirmRequestOrBuilder {
    private PostInvoiceConfirmRequest() {
      srcPayId_ = "";
      esppPayId_ = "";
      reqType_ = "";
      currency_ = "";
      payMethod_ = "";
      reqNote_ = "";
      reqUserMsg_ = "";
    }
    public interface CardOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.PostInvoiceConfirmRequest.Card)
        com.google.protobuf.MessageLiteOrBuilder {

      /**
       * <pre>
       * Идентификатор платежного средства во внешней системы.
       * Возвращается в случае успешной привязки БК к УЗ
       * </pre>
       *
       * <code>int32 espp_card_id = 1;</code>
       * @return The esppCardId.
       */
      int getEsppCardId();

      /**
       * <pre>
       * Номер платежного средства.
       * Маскированный номер карты. Например: 123456******7890
       * </pre>
       *
       * <code>string card_num = 2;</code>
       * @return The cardNum.
       */
      java.lang.String getCardNum();
      /**
       * <pre>
       * Номер платежного средства.
       * Маскированный номер карты. Например: 123456******7890
       * </pre>
       *
       * <code>string card_num = 2;</code>
       * @return The bytes for cardNum.
       */
      com.google.protobuf.ByteString
          getCardNumBytes();

      /**
       * <pre>
       * Тип банковской карты
       * </pre>
       *
       * <code>string card_kind = 3 [json_name = "cardType"];</code>
       * @return The cardKind.
       */
      java.lang.String getCardKind();
      /**
       * <pre>
       * Тип банковской карты
       * </pre>
       *
       * <code>string card_kind = 3 [json_name = "cardType"];</code>
       * @return The bytes for cardKind.
       */
      com.google.protobuf.ByteString
          getCardKindBytes();

      /**
       * <pre>
       * Банк-эмитент.
       * Наименование банка-эмитента. Процессинг может вернуть значение "НЕ ЗАДАВАЛСЯ".
       * В этом случае рекомендуется не отображать эту информацию для пользователя
       * </pre>
       *
       * <code>string bank_name = 4;</code>
       * @return The bankName.
       */
      java.lang.String getBankName();
      /**
       * <pre>
       * Банк-эмитент.
       * Наименование банка-эмитента. Процессинг может вернуть значение "НЕ ЗАДАВАЛСЯ".
       * В этом случае рекомендуется не отображать эту информацию для пользователя
       * </pre>
       *
       * <code>string bank_name = 4;</code>
       * @return The bytes for bankName.
       */
      com.google.protobuf.ByteString
          getBankNameBytes();
    }
    /**
     * <pre>
     * Структура с информацией о карте плательщика
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.PostInvoiceConfirmRequest.Card}
     */
    public  static final class Card extends
        com.google.protobuf.GeneratedMessageLite<
            Card, Card.Builder> implements
        // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.PostInvoiceConfirmRequest.Card)
        CardOrBuilder {
      private Card() {
        cardNum_ = "";
        cardKind_ = "";
        bankName_ = "";
      }
      public static final int ESPP_CARD_ID_FIELD_NUMBER = 1;
      private int esppCardId_;
      /**
       * <pre>
       * Идентификатор платежного средства во внешней системы.
       * Возвращается в случае успешной привязки БК к УЗ
       * </pre>
       *
       * <code>int32 espp_card_id = 1;</code>
       * @return The esppCardId.
       */
      @java.lang.Override
      public int getEsppCardId() {
        return esppCardId_;
      }
      /**
       * <pre>
       * Идентификатор платежного средства во внешней системы.
       * Возвращается в случае успешной привязки БК к УЗ
       * </pre>
       *
       * <code>int32 espp_card_id = 1;</code>
       * @param value The esppCardId to set.
       */
      private void setEsppCardId(int value) {
        
        esppCardId_ = value;
      }
      /**
       * <pre>
       * Идентификатор платежного средства во внешней системы.
       * Возвращается в случае успешной привязки БК к УЗ
       * </pre>
       *
       * <code>int32 espp_card_id = 1;</code>
       */
      private void clearEsppCardId() {

        esppCardId_ = 0;
      }

      public static final int CARD_NUM_FIELD_NUMBER = 2;
      private java.lang.String cardNum_;
      /**
       * <pre>
       * Номер платежного средства.
       * Маскированный номер карты. Например: 123456******7890
       * </pre>
       *
       * <code>string card_num = 2;</code>
       * @return The cardNum.
       */
      @java.lang.Override
      public java.lang.String getCardNum() {
        return cardNum_;
      }
      /**
       * <pre>
       * Номер платежного средства.
       * Маскированный номер карты. Например: 123456******7890
       * </pre>
       *
       * <code>string card_num = 2;</code>
       * @return The bytes for cardNum.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getCardNumBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(cardNum_);
      }
      /**
       * <pre>
       * Номер платежного средства.
       * Маскированный номер карты. Например: 123456******7890
       * </pre>
       *
       * <code>string card_num = 2;</code>
       * @param value The cardNum to set.
       */
      private void setCardNum(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
  
        cardNum_ = value;
      }
      /**
       * <pre>
       * Номер платежного средства.
       * Маскированный номер карты. Например: 123456******7890
       * </pre>
       *
       * <code>string card_num = 2;</code>
       */
      private void clearCardNum() {

        cardNum_ = getDefaultInstance().getCardNum();
      }
      /**
       * <pre>
       * Номер платежного средства.
       * Маскированный номер карты. Например: 123456******7890
       * </pre>
       *
       * <code>string card_num = 2;</code>
       * @param value The bytes for cardNum to set.
       */
      private void setCardNumBytes(
          com.google.protobuf.ByteString value) {
        checkByteStringIsUtf8(value);
        cardNum_ = value.toStringUtf8();

      }

      public static final int CARD_KIND_FIELD_NUMBER = 3;
      private java.lang.String cardKind_;
      /**
       * <pre>
       * Тип банковской карты
       * </pre>
       *
       * <code>string card_kind = 3 [json_name = "cardType"];</code>
       * @return The cardKind.
       */
      @java.lang.Override
      public java.lang.String getCardKind() {
        return cardKind_;
      }
      /**
       * <pre>
       * Тип банковской карты
       * </pre>
       *
       * <code>string card_kind = 3 [json_name = "cardType"];</code>
       * @return The bytes for cardKind.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getCardKindBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(cardKind_);
      }
      /**
       * <pre>
       * Тип банковской карты
       * </pre>
       *
       * <code>string card_kind = 3 [json_name = "cardType"];</code>
       * @param value The cardKind to set.
       */
      private void setCardKind(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
  
        cardKind_ = value;
      }
      /**
       * <pre>
       * Тип банковской карты
       * </pre>
       *
       * <code>string card_kind = 3 [json_name = "cardType"];</code>
       */
      private void clearCardKind() {

        cardKind_ = getDefaultInstance().getCardKind();
      }
      /**
       * <pre>
       * Тип банковской карты
       * </pre>
       *
       * <code>string card_kind = 3 [json_name = "cardType"];</code>
       * @param value The bytes for cardKind to set.
       */
      private void setCardKindBytes(
          com.google.protobuf.ByteString value) {
        checkByteStringIsUtf8(value);
        cardKind_ = value.toStringUtf8();

      }

      public static final int BANK_NAME_FIELD_NUMBER = 4;
      private java.lang.String bankName_;
      /**
       * <pre>
       * Банк-эмитент.
       * Наименование банка-эмитента. Процессинг может вернуть значение "НЕ ЗАДАВАЛСЯ".
       * В этом случае рекомендуется не отображать эту информацию для пользователя
       * </pre>
       *
       * <code>string bank_name = 4;</code>
       * @return The bankName.
       */
      @java.lang.Override
      public java.lang.String getBankName() {
        return bankName_;
      }
      /**
       * <pre>
       * Банк-эмитент.
       * Наименование банка-эмитента. Процессинг может вернуть значение "НЕ ЗАДАВАЛСЯ".
       * В этом случае рекомендуется не отображать эту информацию для пользователя
       * </pre>
       *
       * <code>string bank_name = 4;</code>
       * @return The bytes for bankName.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getBankNameBytes() {
        return com.google.protobuf.ByteString.copyFromUtf8(bankName_);
      }
      /**
       * <pre>
       * Банк-эмитент.
       * Наименование банка-эмитента. Процессинг может вернуть значение "НЕ ЗАДАВАЛСЯ".
       * В этом случае рекомендуется не отображать эту информацию для пользователя
       * </pre>
       *
       * <code>string bank_name = 4;</code>
       * @param value The bankName to set.
       */
      private void setBankName(
          java.lang.String value) {
        java.lang.Class<?> valueClass = value.getClass();
  
        bankName_ = value;
      }
      /**
       * <pre>
       * Банк-эмитент.
       * Наименование банка-эмитента. Процессинг может вернуть значение "НЕ ЗАДАВАЛСЯ".
       * В этом случае рекомендуется не отображать эту информацию для пользователя
       * </pre>
       *
       * <code>string bank_name = 4;</code>
       */
      private void clearBankName() {

        bankName_ = getDefaultInstance().getBankName();
      }
      /**
       * <pre>
       * Банк-эмитент.
       * Наименование банка-эмитента. Процессинг может вернуть значение "НЕ ЗАДАВАЛСЯ".
       * В этом случае рекомендуется не отображать эту информацию для пользователя
       * </pre>
       *
       * <code>string bank_name = 4;</code>
       * @param value The bytes for bankName to set.
       */
      private void setBankNameBytes(
          com.google.protobuf.ByteString value) {
        checkByteStringIsUtf8(value);
        bankName_ = value.toStringUtf8();

      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card prototype) {
        return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
      }

      /**
       * <pre>
       * Структура с информацией о карте плательщика
       * </pre>
       *
       * Protobuf type {@code keyapis.invoice.v1.PostInvoiceConfirmRequest.Card}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card, Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.PostInvoiceConfirmRequest.Card)
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.CardOrBuilder {
        // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }


        /**
         * <pre>
         * Идентификатор платежного средства во внешней системы.
         * Возвращается в случае успешной привязки БК к УЗ
         * </pre>
         *
         * <code>int32 espp_card_id = 1;</code>
         * @return The esppCardId.
         */
        @java.lang.Override
        public int getEsppCardId() {
          return instance.getEsppCardId();
        }
        /**
         * <pre>
         * Идентификатор платежного средства во внешней системы.
         * Возвращается в случае успешной привязки БК к УЗ
         * </pre>
         *
         * <code>int32 espp_card_id = 1;</code>
         * @param value The esppCardId to set.
         * @return This builder for chaining.
         */
        public Builder setEsppCardId(int value) {
          copyOnWrite();
          instance.setEsppCardId(value);
          return this;
        }
        /**
         * <pre>
         * Идентификатор платежного средства во внешней системы.
         * Возвращается в случае успешной привязки БК к УЗ
         * </pre>
         *
         * <code>int32 espp_card_id = 1;</code>
         * @return This builder for chaining.
         */
        public Builder clearEsppCardId() {
          copyOnWrite();
          instance.clearEsppCardId();
          return this;
        }

        /**
         * <pre>
         * Номер платежного средства.
         * Маскированный номер карты. Например: 123456******7890
         * </pre>
         *
         * <code>string card_num = 2;</code>
         * @return The cardNum.
         */
        @java.lang.Override
        public java.lang.String getCardNum() {
          return instance.getCardNum();
        }
        /**
         * <pre>
         * Номер платежного средства.
         * Маскированный номер карты. Например: 123456******7890
         * </pre>
         *
         * <code>string card_num = 2;</code>
         * @return The bytes for cardNum.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getCardNumBytes() {
          return instance.getCardNumBytes();
        }
        /**
         * <pre>
         * Номер платежного средства.
         * Маскированный номер карты. Например: 123456******7890
         * </pre>
         *
         * <code>string card_num = 2;</code>
         * @param value The cardNum to set.
         * @return This builder for chaining.
         */
        public Builder setCardNum(
            java.lang.String value) {
          copyOnWrite();
          instance.setCardNum(value);
          return this;
        }
        /**
         * <pre>
         * Номер платежного средства.
         * Маскированный номер карты. Например: 123456******7890
         * </pre>
         *
         * <code>string card_num = 2;</code>
         * @return This builder for chaining.
         */
        public Builder clearCardNum() {
          copyOnWrite();
          instance.clearCardNum();
          return this;
        }
        /**
         * <pre>
         * Номер платежного средства.
         * Маскированный номер карты. Например: 123456******7890
         * </pre>
         *
         * <code>string card_num = 2;</code>
         * @param value The bytes for cardNum to set.
         * @return This builder for chaining.
         */
        public Builder setCardNumBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setCardNumBytes(value);
          return this;
        }

        /**
         * <pre>
         * Тип банковской карты
         * </pre>
         *
         * <code>string card_kind = 3 [json_name = "cardType"];</code>
         * @return The cardKind.
         */
        @java.lang.Override
        public java.lang.String getCardKind() {
          return instance.getCardKind();
        }
        /**
         * <pre>
         * Тип банковской карты
         * </pre>
         *
         * <code>string card_kind = 3 [json_name = "cardType"];</code>
         * @return The bytes for cardKind.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getCardKindBytes() {
          return instance.getCardKindBytes();
        }
        /**
         * <pre>
         * Тип банковской карты
         * </pre>
         *
         * <code>string card_kind = 3 [json_name = "cardType"];</code>
         * @param value The cardKind to set.
         * @return This builder for chaining.
         */
        public Builder setCardKind(
            java.lang.String value) {
          copyOnWrite();
          instance.setCardKind(value);
          return this;
        }
        /**
         * <pre>
         * Тип банковской карты
         * </pre>
         *
         * <code>string card_kind = 3 [json_name = "cardType"];</code>
         * @return This builder for chaining.
         */
        public Builder clearCardKind() {
          copyOnWrite();
          instance.clearCardKind();
          return this;
        }
        /**
         * <pre>
         * Тип банковской карты
         * </pre>
         *
         * <code>string card_kind = 3 [json_name = "cardType"];</code>
         * @param value The bytes for cardKind to set.
         * @return This builder for chaining.
         */
        public Builder setCardKindBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setCardKindBytes(value);
          return this;
        }

        /**
         * <pre>
         * Банк-эмитент.
         * Наименование банка-эмитента. Процессинг может вернуть значение "НЕ ЗАДАВАЛСЯ".
         * В этом случае рекомендуется не отображать эту информацию для пользователя
         * </pre>
         *
         * <code>string bank_name = 4;</code>
         * @return The bankName.
         */
        @java.lang.Override
        public java.lang.String getBankName() {
          return instance.getBankName();
        }
        /**
         * <pre>
         * Банк-эмитент.
         * Наименование банка-эмитента. Процессинг может вернуть значение "НЕ ЗАДАВАЛСЯ".
         * В этом случае рекомендуется не отображать эту информацию для пользователя
         * </pre>
         *
         * <code>string bank_name = 4;</code>
         * @return The bytes for bankName.
         */
        @java.lang.Override
        public com.google.protobuf.ByteString
            getBankNameBytes() {
          return instance.getBankNameBytes();
        }
        /**
         * <pre>
         * Банк-эмитент.
         * Наименование банка-эмитента. Процессинг может вернуть значение "НЕ ЗАДАВАЛСЯ".
         * В этом случае рекомендуется не отображать эту информацию для пользователя
         * </pre>
         *
         * <code>string bank_name = 4;</code>
         * @param value The bankName to set.
         * @return This builder for chaining.
         */
        public Builder setBankName(
            java.lang.String value) {
          copyOnWrite();
          instance.setBankName(value);
          return this;
        }
        /**
         * <pre>
         * Банк-эмитент.
         * Наименование банка-эмитента. Процессинг может вернуть значение "НЕ ЗАДАВАЛСЯ".
         * В этом случае рекомендуется не отображать эту информацию для пользователя
         * </pre>
         *
         * <code>string bank_name = 4;</code>
         * @return This builder for chaining.
         */
        public Builder clearBankName() {
          copyOnWrite();
          instance.clearBankName();
          return this;
        }
        /**
         * <pre>
         * Банк-эмитент.
         * Наименование банка-эмитента. Процессинг может вернуть значение "НЕ ЗАДАВАЛСЯ".
         * В этом случае рекомендуется не отображать эту информацию для пользователя
         * </pre>
         *
         * <code>string bank_name = 4;</code>
         * @param value The bytes for bankName to set.
         * @return This builder for chaining.
         */
        public Builder setBankNameBytes(
            com.google.protobuf.ByteString value) {
          copyOnWrite();
          instance.setBankNameBytes(value);
          return this;
        }

        // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.PostInvoiceConfirmRequest.Card)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "esppCardId_",
                "cardNum_",
                "cardKind_",
                "bankName_",
              };
              java.lang.String info =
                  "\u0000\u0004\u0000\u0000\u0001\u0004\u0004\u0000\u0000\u0000\u0001\u0004\u0002\u0208" +
                  "\u0003\u0208\u0004\u0208";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card> parser = PARSER;
            if (parser == null) {
              synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }


      // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.PostInvoiceConfirmRequest.Card)
      private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card DEFAULT_INSTANCE;
      static {
        Card defaultInstance = new Card();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          Card.class, defaultInstance);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static volatile com.google.protobuf.Parser<Card> PARSER;

      public static com.google.protobuf.Parser<Card> parser() {
        return DEFAULT_INSTANCE.getParserForType();
      }
    }

    public static final int SRC_PAY_ID_FIELD_NUMBER = 1;
    private java.lang.String srcPayId_;
    /**
     * <pre>
     * Идентификатор платежа в Ключе
     * </pre>
     *
     * <code>string src_pay_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The srcPayId.
     */
    @java.lang.Override
    public java.lang.String getSrcPayId() {
      return srcPayId_;
    }
    /**
     * <pre>
     * Идентификатор платежа в Ключе
     * </pre>
     *
     * <code>string src_pay_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for srcPayId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getSrcPayIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(srcPayId_);
    }
    /**
     * <pre>
     * Идентификатор платежа в Ключе
     * </pre>
     *
     * <code>string src_pay_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The srcPayId to set.
     */
    private void setSrcPayId(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      srcPayId_ = value;
    }
    /**
     * <pre>
     * Идентификатор платежа в Ключе
     * </pre>
     *
     * <code>string src_pay_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearSrcPayId() {

      srcPayId_ = getDefaultInstance().getSrcPayId();
    }
    /**
     * <pre>
     * Идентификатор платежа в Ключе
     * </pre>
     *
     * <code>string src_pay_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for srcPayId to set.
     */
    private void setSrcPayIdBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      srcPayId_ = value.toStringUtf8();

    }

    public static final int ESPP_PAY_ID_FIELD_NUMBER = 2;
    private java.lang.String esppPayId_;
    /**
     * <pre>
     * Идентификатор платежа во внешней системе
     * </pre>
     *
     * <code>string espp_pay_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The esppPayId.
     */
    @java.lang.Override
    public java.lang.String getEsppPayId() {
      return esppPayId_;
    }
    /**
     * <pre>
     * Идентификатор платежа во внешней системе
     * </pre>
     *
     * <code>string espp_pay_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for esppPayId.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getEsppPayIdBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(esppPayId_);
    }
    /**
     * <pre>
     * Идентификатор платежа во внешней системе
     * </pre>
     *
     * <code>string espp_pay_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The esppPayId to set.
     */
    private void setEsppPayId(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      esppPayId_ = value;
    }
    /**
     * <pre>
     * Идентификатор платежа во внешней системе
     * </pre>
     *
     * <code>string espp_pay_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearEsppPayId() {

      esppPayId_ = getDefaultInstance().getEsppPayId();
    }
    /**
     * <pre>
     * Идентификатор платежа во внешней системе
     * </pre>
     *
     * <code>string espp_pay_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for esppPayId to set.
     */
    private void setEsppPayIdBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      esppPayId_ = value.toStringUtf8();

    }

    public static final int PAY_STATUS_FIELD_NUMBER = 3;
    private int payStatus_;
    /**
     * <pre>
     * Статус платежа из внешней системы
     * </pre>
     *
     * <code>int32 pay_status = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The payStatus.
     */
    @java.lang.Override
    public int getPayStatus() {
      return payStatus_;
    }
    /**
     * <pre>
     * Статус платежа из внешней системы
     * </pre>
     *
     * <code>int32 pay_status = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The payStatus to set.
     */
    private void setPayStatus(int value) {
      
      payStatus_ = value;
    }
    /**
     * <pre>
     * Статус платежа из внешней системы
     * </pre>
     *
     * <code>int32 pay_status = 3 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearPayStatus() {

      payStatus_ = 0;
    }

    public static final int REQ_TYPE_FIELD_NUMBER = 4;
    private java.lang.String reqType_;
    /**
     * <pre>
     * Тип запроса.
     * Должно иметь значение "confirmPayment"
     * </pre>
     *
     * <code>string req_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The reqType.
     */
    @java.lang.Override
    public java.lang.String getReqType() {
      return reqType_;
    }
    /**
     * <pre>
     * Тип запроса.
     * Должно иметь значение "confirmPayment"
     * </pre>
     *
     * <code>string req_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The bytes for reqType.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getReqTypeBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(reqType_);
    }
    /**
     * <pre>
     * Тип запроса.
     * Должно иметь значение "confirmPayment"
     * </pre>
     *
     * <code>string req_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The reqType to set.
     */
    private void setReqType(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      reqType_ = value;
    }
    /**
     * <pre>
     * Тип запроса.
     * Должно иметь значение "confirmPayment"
     * </pre>
     *
     * <code>string req_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearReqType() {

      reqType_ = getDefaultInstance().getReqType();
    }
    /**
     * <pre>
     * Тип запроса.
     * Должно иметь значение "confirmPayment"
     * </pre>
     *
     * <code>string req_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
     * @param value The bytes for reqType to set.
     */
    private void setReqTypeBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      reqType_ = value.toStringUtf8();

    }

    public static final int AMOUNT_FIELD_NUMBER = 5;
    private float amount_;
    /**
     * <pre>
     * Сумма платежа в минимальных единицах валюты
     * </pre>
     *
     * <code>float amount = 5;</code>
     * @return The amount.
     */
    @java.lang.Override
    public float getAmount() {
      return amount_;
    }
    /**
     * <pre>
     * Сумма платежа в минимальных единицах валюты
     * </pre>
     *
     * <code>float amount = 5;</code>
     * @param value The amount to set.
     */
    private void setAmount(float value) {
      
      amount_ = value;
    }
    /**
     * <pre>
     * Сумма платежа в минимальных единицах валюты
     * </pre>
     *
     * <code>float amount = 5;</code>
     */
    private void clearAmount() {

      amount_ = 0F;
    }

    public static final int CURRENCY_FIELD_NUMBER = 6;
    private java.lang.String currency_;
    /**
     * <pre>
     * Код валюты платежа
     * </pre>
     *
     * <code>string currency = 6;</code>
     * @return The currency.
     */
    @java.lang.Override
    public java.lang.String getCurrency() {
      return currency_;
    }
    /**
     * <pre>
     * Код валюты платежа
     * </pre>
     *
     * <code>string currency = 6;</code>
     * @return The bytes for currency.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getCurrencyBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(currency_);
    }
    /**
     * <pre>
     * Код валюты платежа
     * </pre>
     *
     * <code>string currency = 6;</code>
     * @param value The currency to set.
     */
    private void setCurrency(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      currency_ = value;
    }
    /**
     * <pre>
     * Код валюты платежа
     * </pre>
     *
     * <code>string currency = 6;</code>
     */
    private void clearCurrency() {

      currency_ = getDefaultInstance().getCurrency();
    }
    /**
     * <pre>
     * Код валюты платежа
     * </pre>
     *
     * <code>string currency = 6;</code>
     * @param value The bytes for currency to set.
     */
    private void setCurrencyBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      currency_ = value.toStringUtf8();

    }

    public static final int PAY_METHOD_FIELD_NUMBER = 7;
    private java.lang.String payMethod_;
    /**
     * <pre>
     * Код способа оплаты
     * </pre>
     *
     * <code>string pay_method = 7;</code>
     * @return The payMethod.
     */
    @java.lang.Override
    public java.lang.String getPayMethod() {
      return payMethod_;
    }
    /**
     * <pre>
     * Код способа оплаты
     * </pre>
     *
     * <code>string pay_method = 7;</code>
     * @return The bytes for payMethod.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getPayMethodBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(payMethod_);
    }
    /**
     * <pre>
     * Код способа оплаты
     * </pre>
     *
     * <code>string pay_method = 7;</code>
     * @param value The payMethod to set.
     */
    private void setPayMethod(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      payMethod_ = value;
    }
    /**
     * <pre>
     * Код способа оплаты
     * </pre>
     *
     * <code>string pay_method = 7;</code>
     */
    private void clearPayMethod() {

      payMethod_ = getDefaultInstance().getPayMethod();
    }
    /**
     * <pre>
     * Код способа оплаты
     * </pre>
     *
     * <code>string pay_method = 7;</code>
     * @param value The bytes for payMethod to set.
     */
    private void setPayMethodBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      payMethod_ = value.toStringUtf8();

    }

    public static final int CREATE_TIME_AT_FIELD_NUMBER = 8;
    private com.google.protobuf.Timestamp createTimeAt_;
    /**
     * <pre>
     * Дата регистрации платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp create_time_at = 8 [json_name = "createTime"];</code>
     */
    @java.lang.Override
    public boolean hasCreateTimeAt() {
      return createTimeAt_ != null;
    }
    /**
     * <pre>
     * Дата регистрации платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp create_time_at = 8 [json_name = "createTime"];</code>
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getCreateTimeAt() {
      return createTimeAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : createTimeAt_;
    }
    /**
     * <pre>
     * Дата регистрации платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp create_time_at = 8 [json_name = "createTime"];</code>
     */
    private void setCreateTimeAt(com.google.protobuf.Timestamp value) {
      value.getClass();
  createTimeAt_ = value;

      }
    /**
     * <pre>
     * Дата регистрации платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp create_time_at = 8 [json_name = "createTime"];</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeCreateTimeAt(com.google.protobuf.Timestamp value) {
      value.getClass();
  if (createTimeAt_ != null &&
          createTimeAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
        createTimeAt_ =
          com.google.protobuf.Timestamp.newBuilder(createTimeAt_).mergeFrom(value).buildPartial();
      } else {
        createTimeAt_ = value;
      }

    }
    /**
     * <pre>
     * Дата регистрации платежа.
     * # Тип: DateTime
     * </pre>
     *
     * <code>.google.protobuf.Timestamp create_time_at = 8 [json_name = "createTime"];</code>
     */
    private void clearCreateTimeAt() {  createTimeAt_ = null;

    }

    public static final int REQ_NOTE_FIELD_NUMBER = 9;
    private java.lang.String reqNote_;
    /**
     * <pre>
     * Комментарий или сообщение об ошибке
     * </pre>
     *
     * <code>string req_note = 9;</code>
     * @return The reqNote.
     */
    @java.lang.Override
    public java.lang.String getReqNote() {
      return reqNote_;
    }
    /**
     * <pre>
     * Комментарий или сообщение об ошибке
     * </pre>
     *
     * <code>string req_note = 9;</code>
     * @return The bytes for reqNote.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getReqNoteBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(reqNote_);
    }
    /**
     * <pre>
     * Комментарий или сообщение об ошибке
     * </pre>
     *
     * <code>string req_note = 9;</code>
     * @param value The reqNote to set.
     */
    private void setReqNote(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      reqNote_ = value;
    }
    /**
     * <pre>
     * Комментарий или сообщение об ошибке
     * </pre>
     *
     * <code>string req_note = 9;</code>
     */
    private void clearReqNote() {

      reqNote_ = getDefaultInstance().getReqNote();
    }
    /**
     * <pre>
     * Комментарий или сообщение об ошибке
     * </pre>
     *
     * <code>string req_note = 9;</code>
     * @param value The bytes for reqNote to set.
     */
    private void setReqNoteBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      reqNote_ = value.toStringUtf8();

    }

    public static final int REQ_USER_MSG_FIELD_NUMBER = 10;
    private java.lang.String reqUserMsg_;
    /**
     * <pre>
     * Сообщение, отображаемое пользователю
     * </pre>
     *
     * <code>string req_user_msg = 10;</code>
     * @return The reqUserMsg.
     */
    @java.lang.Override
    public java.lang.String getReqUserMsg() {
      return reqUserMsg_;
    }
    /**
     * <pre>
     * Сообщение, отображаемое пользователю
     * </pre>
     *
     * <code>string req_user_msg = 10;</code>
     * @return The bytes for reqUserMsg.
     */
    @java.lang.Override
    public com.google.protobuf.ByteString
        getReqUserMsgBytes() {
      return com.google.protobuf.ByteString.copyFromUtf8(reqUserMsg_);
    }
    /**
     * <pre>
     * Сообщение, отображаемое пользователю
     * </pre>
     *
     * <code>string req_user_msg = 10;</code>
     * @param value The reqUserMsg to set.
     */
    private void setReqUserMsg(
        java.lang.String value) {
      java.lang.Class<?> valueClass = value.getClass();
  
      reqUserMsg_ = value;
    }
    /**
     * <pre>
     * Сообщение, отображаемое пользователю
     * </pre>
     *
     * <code>string req_user_msg = 10;</code>
     */
    private void clearReqUserMsg() {

      reqUserMsg_ = getDefaultInstance().getReqUserMsg();
    }
    /**
     * <pre>
     * Сообщение, отображаемое пользователю
     * </pre>
     *
     * <code>string req_user_msg = 10;</code>
     * @param value The bytes for reqUserMsg to set.
     */
    private void setReqUserMsgBytes(
        com.google.protobuf.ByteString value) {
      checkByteStringIsUtf8(value);
      reqUserMsg_ = value.toStringUtf8();

    }

    public static final int PAY_TIME_AT_FIELD_NUMBER = 11;
    private com.google.protobuf.Timestamp payTimeAt_;
    /**
     * <pre>
     * Время фактической оплаты. Время фактической оплаты на стороне Процессинга. Возвращается, если оплата состоялась
     * </pre>
     *
     * <code>.google.protobuf.Timestamp pay_time_at = 11 [json_name = "payTime"];</code>
     */
    @java.lang.Override
    public boolean hasPayTimeAt() {
      return payTimeAt_ != null;
    }
    /**
     * <pre>
     * Время фактической оплаты. Время фактической оплаты на стороне Процессинга. Возвращается, если оплата состоялась
     * </pre>
     *
     * <code>.google.protobuf.Timestamp pay_time_at = 11 [json_name = "payTime"];</code>
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getPayTimeAt() {
      return payTimeAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : payTimeAt_;
    }
    /**
     * <pre>
     * Время фактической оплаты. Время фактической оплаты на стороне Процессинга. Возвращается, если оплата состоялась
     * </pre>
     *
     * <code>.google.protobuf.Timestamp pay_time_at = 11 [json_name = "payTime"];</code>
     */
    private void setPayTimeAt(com.google.protobuf.Timestamp value) {
      value.getClass();
  payTimeAt_ = value;

      }
    /**
     * <pre>
     * Время фактической оплаты. Время фактической оплаты на стороне Процессинга. Возвращается, если оплата состоялась
     * </pre>
     *
     * <code>.google.protobuf.Timestamp pay_time_at = 11 [json_name = "payTime"];</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergePayTimeAt(com.google.protobuf.Timestamp value) {
      value.getClass();
  if (payTimeAt_ != null &&
          payTimeAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
        payTimeAt_ =
          com.google.protobuf.Timestamp.newBuilder(payTimeAt_).mergeFrom(value).buildPartial();
      } else {
        payTimeAt_ = value;
      }

    }
    /**
     * <pre>
     * Время фактической оплаты. Время фактической оплаты на стороне Процессинга. Возвращается, если оплата состоялась
     * </pre>
     *
     * <code>.google.protobuf.Timestamp pay_time_at = 11 [json_name = "payTime"];</code>
     */
    private void clearPayTimeAt() {  payTimeAt_ = null;

    }

    public static final int ABANDON_TIME_AT_FIELD_NUMBER = 12;
    private com.google.protobuf.Timestamp abandonTimeAt_;
    /**
     * <pre>
     * Время фактической отмены оплаты.
     * Время фактической отмены оплаты на стороне Процессинга.
     * Возвращается, если отмена оплаты состоялась
     * </pre>
     *
     * <code>.google.protobuf.Timestamp abandon_time_at = 12 [json_name = "abandonTime"];</code>
     */
    @java.lang.Override
    public boolean hasAbandonTimeAt() {
      return abandonTimeAt_ != null;
    }
    /**
     * <pre>
     * Время фактической отмены оплаты.
     * Время фактической отмены оплаты на стороне Процессинга.
     * Возвращается, если отмена оплаты состоялась
     * </pre>
     *
     * <code>.google.protobuf.Timestamp abandon_time_at = 12 [json_name = "abandonTime"];</code>
     */
    @java.lang.Override
    public com.google.protobuf.Timestamp getAbandonTimeAt() {
      return abandonTimeAt_ == null ? com.google.protobuf.Timestamp.getDefaultInstance() : abandonTimeAt_;
    }
    /**
     * <pre>
     * Время фактической отмены оплаты.
     * Время фактической отмены оплаты на стороне Процессинга.
     * Возвращается, если отмена оплаты состоялась
     * </pre>
     *
     * <code>.google.protobuf.Timestamp abandon_time_at = 12 [json_name = "abandonTime"];</code>
     */
    private void setAbandonTimeAt(com.google.protobuf.Timestamp value) {
      value.getClass();
  abandonTimeAt_ = value;

      }
    /**
     * <pre>
     * Время фактической отмены оплаты.
     * Время фактической отмены оплаты на стороне Процессинга.
     * Возвращается, если отмена оплаты состоялась
     * </pre>
     *
     * <code>.google.protobuf.Timestamp abandon_time_at = 12 [json_name = "abandonTime"];</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeAbandonTimeAt(com.google.protobuf.Timestamp value) {
      value.getClass();
  if (abandonTimeAt_ != null &&
          abandonTimeAt_ != com.google.protobuf.Timestamp.getDefaultInstance()) {
        abandonTimeAt_ =
          com.google.protobuf.Timestamp.newBuilder(abandonTimeAt_).mergeFrom(value).buildPartial();
      } else {
        abandonTimeAt_ = value;
      }

    }
    /**
     * <pre>
     * Время фактической отмены оплаты.
     * Время фактической отмены оплаты на стороне Процессинга.
     * Возвращается, если отмена оплаты состоялась
     * </pre>
     *
     * <code>.google.protobuf.Timestamp abandon_time_at = 12 [json_name = "abandonTime"];</code>
     */
    private void clearAbandonTimeAt() {  abandonTimeAt_ = null;

    }

    public static final int CARD_FIELD_NUMBER = 13;
    private ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card card_;
    /**
     * <pre>
     * Структура с информацией о карте плательщика.
     * Передаётся только при успешном платеже и если указаны способы оплаты payMethod = StoredBankCard либо BankCard
     * </pre>
     *
     * <code>.keyapis.invoice.v1.PostInvoiceConfirmRequest.Card card = 13;</code>
     */
    @java.lang.Override
    public boolean hasCard() {
      return card_ != null;
    }
    /**
     * <pre>
     * Структура с информацией о карте плательщика.
     * Передаётся только при успешном платеже и если указаны способы оплаты payMethod = StoredBankCard либо BankCard
     * </pre>
     *
     * <code>.keyapis.invoice.v1.PostInvoiceConfirmRequest.Card card = 13;</code>
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card getCard() {
      return card_ == null ? ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card.getDefaultInstance() : card_;
    }
    /**
     * <pre>
     * Структура с информацией о карте плательщика.
     * Передаётся только при успешном платеже и если указаны способы оплаты payMethod = StoredBankCard либо BankCard
     * </pre>
     *
     * <code>.keyapis.invoice.v1.PostInvoiceConfirmRequest.Card card = 13;</code>
     */
    private void setCard(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card value) {
      value.getClass();
  card_ = value;

      }
    /**
     * <pre>
     * Структура с информацией о карте плательщика.
     * Передаётся только при успешном платеже и если указаны способы оплаты payMethod = StoredBankCard либо BankCard
     * </pre>
     *
     * <code>.keyapis.invoice.v1.PostInvoiceConfirmRequest.Card card = 13;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeCard(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card value) {
      value.getClass();
  if (card_ != null &&
          card_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card.getDefaultInstance()) {
        card_ =
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card.newBuilder(card_).mergeFrom(value).buildPartial();
      } else {
        card_ = value;
      }

    }
    /**
     * <pre>
     * Структура с информацией о карте плательщика.
     * Передаётся только при успешном платеже и если указаны способы оплаты payMethod = StoredBankCard либо BankCard
     * </pre>
     *
     * <code>.keyapis.invoice.v1.PostInvoiceConfirmRequest.Card card = 13;</code>
     */
    private void clearCard() {  card_ = null;

    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос на подтверждение платежа
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.PostInvoiceConfirmRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.PostInvoiceConfirmRequest)
        ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequestOrBuilder {
      // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Идентификатор платежа в Ключе
       * </pre>
       *
       * <code>string src_pay_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The srcPayId.
       */
      @java.lang.Override
      public java.lang.String getSrcPayId() {
        return instance.getSrcPayId();
      }
      /**
       * <pre>
       * Идентификатор платежа в Ключе
       * </pre>
       *
       * <code>string src_pay_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for srcPayId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getSrcPayIdBytes() {
        return instance.getSrcPayIdBytes();
      }
      /**
       * <pre>
       * Идентификатор платежа в Ключе
       * </pre>
       *
       * <code>string src_pay_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The srcPayId to set.
       * @return This builder for chaining.
       */
      public Builder setSrcPayId(
          java.lang.String value) {
        copyOnWrite();
        instance.setSrcPayId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор платежа в Ключе
       * </pre>
       *
       * <code>string src_pay_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearSrcPayId() {
        copyOnWrite();
        instance.clearSrcPayId();
        return this;
      }
      /**
       * <pre>
       * Идентификатор платежа в Ключе
       * </pre>
       *
       * <code>string src_pay_id = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for srcPayId to set.
       * @return This builder for chaining.
       */
      public Builder setSrcPayIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setSrcPayIdBytes(value);
        return this;
      }

      /**
       * <pre>
       * Идентификатор платежа во внешней системе
       * </pre>
       *
       * <code>string espp_pay_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The esppPayId.
       */
      @java.lang.Override
      public java.lang.String getEsppPayId() {
        return instance.getEsppPayId();
      }
      /**
       * <pre>
       * Идентификатор платежа во внешней системе
       * </pre>
       *
       * <code>string espp_pay_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for esppPayId.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getEsppPayIdBytes() {
        return instance.getEsppPayIdBytes();
      }
      /**
       * <pre>
       * Идентификатор платежа во внешней системе
       * </pre>
       *
       * <code>string espp_pay_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The esppPayId to set.
       * @return This builder for chaining.
       */
      public Builder setEsppPayId(
          java.lang.String value) {
        copyOnWrite();
        instance.setEsppPayId(value);
        return this;
      }
      /**
       * <pre>
       * Идентификатор платежа во внешней системе
       * </pre>
       *
       * <code>string espp_pay_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearEsppPayId() {
        copyOnWrite();
        instance.clearEsppPayId();
        return this;
      }
      /**
       * <pre>
       * Идентификатор платежа во внешней системе
       * </pre>
       *
       * <code>string espp_pay_id = 2 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for esppPayId to set.
       * @return This builder for chaining.
       */
      public Builder setEsppPayIdBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setEsppPayIdBytes(value);
        return this;
      }

      /**
       * <pre>
       * Статус платежа из внешней системы
       * </pre>
       *
       * <code>int32 pay_status = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The payStatus.
       */
      @java.lang.Override
      public int getPayStatus() {
        return instance.getPayStatus();
      }
      /**
       * <pre>
       * Статус платежа из внешней системы
       * </pre>
       *
       * <code>int32 pay_status = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The payStatus to set.
       * @return This builder for chaining.
       */
      public Builder setPayStatus(int value) {
        copyOnWrite();
        instance.setPayStatus(value);
        return this;
      }
      /**
       * <pre>
       * Статус платежа из внешней системы
       * </pre>
       *
       * <code>int32 pay_status = 3 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearPayStatus() {
        copyOnWrite();
        instance.clearPayStatus();
        return this;
      }

      /**
       * <pre>
       * Тип запроса.
       * Должно иметь значение "confirmPayment"
       * </pre>
       *
       * <code>string req_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The reqType.
       */
      @java.lang.Override
      public java.lang.String getReqType() {
        return instance.getReqType();
      }
      /**
       * <pre>
       * Тип запроса.
       * Должно иметь значение "confirmPayment"
       * </pre>
       *
       * <code>string req_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return The bytes for reqType.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getReqTypeBytes() {
        return instance.getReqTypeBytes();
      }
      /**
       * <pre>
       * Тип запроса.
       * Должно иметь значение "confirmPayment"
       * </pre>
       *
       * <code>string req_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The reqType to set.
       * @return This builder for chaining.
       */
      public Builder setReqType(
          java.lang.String value) {
        copyOnWrite();
        instance.setReqType(value);
        return this;
      }
      /**
       * <pre>
       * Тип запроса.
       * Должно иметь значение "confirmPayment"
       * </pre>
       *
       * <code>string req_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @return This builder for chaining.
       */
      public Builder clearReqType() {
        copyOnWrite();
        instance.clearReqType();
        return this;
      }
      /**
       * <pre>
       * Тип запроса.
       * Должно иметь значение "confirmPayment"
       * </pre>
       *
       * <code>string req_type = 4 [(.google.api.field_behavior) = REQUIRED];</code>
       * @param value The bytes for reqType to set.
       * @return This builder for chaining.
       */
      public Builder setReqTypeBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setReqTypeBytes(value);
        return this;
      }

      /**
       * <pre>
       * Сумма платежа в минимальных единицах валюты
       * </pre>
       *
       * <code>float amount = 5;</code>
       * @return The amount.
       */
      @java.lang.Override
      public float getAmount() {
        return instance.getAmount();
      }
      /**
       * <pre>
       * Сумма платежа в минимальных единицах валюты
       * </pre>
       *
       * <code>float amount = 5;</code>
       * @param value The amount to set.
       * @return This builder for chaining.
       */
      public Builder setAmount(float value) {
        copyOnWrite();
        instance.setAmount(value);
        return this;
      }
      /**
       * <pre>
       * Сумма платежа в минимальных единицах валюты
       * </pre>
       *
       * <code>float amount = 5;</code>
       * @return This builder for chaining.
       */
      public Builder clearAmount() {
        copyOnWrite();
        instance.clearAmount();
        return this;
      }

      /**
       * <pre>
       * Код валюты платежа
       * </pre>
       *
       * <code>string currency = 6;</code>
       * @return The currency.
       */
      @java.lang.Override
      public java.lang.String getCurrency() {
        return instance.getCurrency();
      }
      /**
       * <pre>
       * Код валюты платежа
       * </pre>
       *
       * <code>string currency = 6;</code>
       * @return The bytes for currency.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getCurrencyBytes() {
        return instance.getCurrencyBytes();
      }
      /**
       * <pre>
       * Код валюты платежа
       * </pre>
       *
       * <code>string currency = 6;</code>
       * @param value The currency to set.
       * @return This builder for chaining.
       */
      public Builder setCurrency(
          java.lang.String value) {
        copyOnWrite();
        instance.setCurrency(value);
        return this;
      }
      /**
       * <pre>
       * Код валюты платежа
       * </pre>
       *
       * <code>string currency = 6;</code>
       * @return This builder for chaining.
       */
      public Builder clearCurrency() {
        copyOnWrite();
        instance.clearCurrency();
        return this;
      }
      /**
       * <pre>
       * Код валюты платежа
       * </pre>
       *
       * <code>string currency = 6;</code>
       * @param value The bytes for currency to set.
       * @return This builder for chaining.
       */
      public Builder setCurrencyBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setCurrencyBytes(value);
        return this;
      }

      /**
       * <pre>
       * Код способа оплаты
       * </pre>
       *
       * <code>string pay_method = 7;</code>
       * @return The payMethod.
       */
      @java.lang.Override
      public java.lang.String getPayMethod() {
        return instance.getPayMethod();
      }
      /**
       * <pre>
       * Код способа оплаты
       * </pre>
       *
       * <code>string pay_method = 7;</code>
       * @return The bytes for payMethod.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getPayMethodBytes() {
        return instance.getPayMethodBytes();
      }
      /**
       * <pre>
       * Код способа оплаты
       * </pre>
       *
       * <code>string pay_method = 7;</code>
       * @param value The payMethod to set.
       * @return This builder for chaining.
       */
      public Builder setPayMethod(
          java.lang.String value) {
        copyOnWrite();
        instance.setPayMethod(value);
        return this;
      }
      /**
       * <pre>
       * Код способа оплаты
       * </pre>
       *
       * <code>string pay_method = 7;</code>
       * @return This builder for chaining.
       */
      public Builder clearPayMethod() {
        copyOnWrite();
        instance.clearPayMethod();
        return this;
      }
      /**
       * <pre>
       * Код способа оплаты
       * </pre>
       *
       * <code>string pay_method = 7;</code>
       * @param value The bytes for payMethod to set.
       * @return This builder for chaining.
       */
      public Builder setPayMethodBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setPayMethodBytes(value);
        return this;
      }

      /**
       * <pre>
       * Дата регистрации платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp create_time_at = 8 [json_name = "createTime"];</code>
       */
      @java.lang.Override
      public boolean hasCreateTimeAt() {
        return instance.hasCreateTimeAt();
      }
      /**
       * <pre>
       * Дата регистрации платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp create_time_at = 8 [json_name = "createTime"];</code>
       */
      @java.lang.Override
      public com.google.protobuf.Timestamp getCreateTimeAt() {
        return instance.getCreateTimeAt();
      }
      /**
       * <pre>
       * Дата регистрации платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp create_time_at = 8 [json_name = "createTime"];</code>
       */
      public Builder setCreateTimeAt(com.google.protobuf.Timestamp value) {
        copyOnWrite();
        instance.setCreateTimeAt(value);
        return this;
        }
      /**
       * <pre>
       * Дата регистрации платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp create_time_at = 8 [json_name = "createTime"];</code>
       */
      public Builder setCreateTimeAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        copyOnWrite();
        instance.setCreateTimeAt(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Дата регистрации платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp create_time_at = 8 [json_name = "createTime"];</code>
       */
      public Builder mergeCreateTimeAt(com.google.protobuf.Timestamp value) {
        copyOnWrite();
        instance.mergeCreateTimeAt(value);
        return this;
      }
      /**
       * <pre>
       * Дата регистрации платежа.
       * # Тип: DateTime
       * </pre>
       *
       * <code>.google.protobuf.Timestamp create_time_at = 8 [json_name = "createTime"];</code>
       */
      public Builder clearCreateTimeAt() {  copyOnWrite();
        instance.clearCreateTimeAt();
        return this;
      }

      /**
       * <pre>
       * Комментарий или сообщение об ошибке
       * </pre>
       *
       * <code>string req_note = 9;</code>
       * @return The reqNote.
       */
      @java.lang.Override
      public java.lang.String getReqNote() {
        return instance.getReqNote();
      }
      /**
       * <pre>
       * Комментарий или сообщение об ошибке
       * </pre>
       *
       * <code>string req_note = 9;</code>
       * @return The bytes for reqNote.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getReqNoteBytes() {
        return instance.getReqNoteBytes();
      }
      /**
       * <pre>
       * Комментарий или сообщение об ошибке
       * </pre>
       *
       * <code>string req_note = 9;</code>
       * @param value The reqNote to set.
       * @return This builder for chaining.
       */
      public Builder setReqNote(
          java.lang.String value) {
        copyOnWrite();
        instance.setReqNote(value);
        return this;
      }
      /**
       * <pre>
       * Комментарий или сообщение об ошибке
       * </pre>
       *
       * <code>string req_note = 9;</code>
       * @return This builder for chaining.
       */
      public Builder clearReqNote() {
        copyOnWrite();
        instance.clearReqNote();
        return this;
      }
      /**
       * <pre>
       * Комментарий или сообщение об ошибке
       * </pre>
       *
       * <code>string req_note = 9;</code>
       * @param value The bytes for reqNote to set.
       * @return This builder for chaining.
       */
      public Builder setReqNoteBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setReqNoteBytes(value);
        return this;
      }

      /**
       * <pre>
       * Сообщение, отображаемое пользователю
       * </pre>
       *
       * <code>string req_user_msg = 10;</code>
       * @return The reqUserMsg.
       */
      @java.lang.Override
      public java.lang.String getReqUserMsg() {
        return instance.getReqUserMsg();
      }
      /**
       * <pre>
       * Сообщение, отображаемое пользователю
       * </pre>
       *
       * <code>string req_user_msg = 10;</code>
       * @return The bytes for reqUserMsg.
       */
      @java.lang.Override
      public com.google.protobuf.ByteString
          getReqUserMsgBytes() {
        return instance.getReqUserMsgBytes();
      }
      /**
       * <pre>
       * Сообщение, отображаемое пользователю
       * </pre>
       *
       * <code>string req_user_msg = 10;</code>
       * @param value The reqUserMsg to set.
       * @return This builder for chaining.
       */
      public Builder setReqUserMsg(
          java.lang.String value) {
        copyOnWrite();
        instance.setReqUserMsg(value);
        return this;
      }
      /**
       * <pre>
       * Сообщение, отображаемое пользователю
       * </pre>
       *
       * <code>string req_user_msg = 10;</code>
       * @return This builder for chaining.
       */
      public Builder clearReqUserMsg() {
        copyOnWrite();
        instance.clearReqUserMsg();
        return this;
      }
      /**
       * <pre>
       * Сообщение, отображаемое пользователю
       * </pre>
       *
       * <code>string req_user_msg = 10;</code>
       * @param value The bytes for reqUserMsg to set.
       * @return This builder for chaining.
       */
      public Builder setReqUserMsgBytes(
          com.google.protobuf.ByteString value) {
        copyOnWrite();
        instance.setReqUserMsgBytes(value);
        return this;
      }

      /**
       * <pre>
       * Время фактической оплаты. Время фактической оплаты на стороне Процессинга. Возвращается, если оплата состоялась
       * </pre>
       *
       * <code>.google.protobuf.Timestamp pay_time_at = 11 [json_name = "payTime"];</code>
       */
      @java.lang.Override
      public boolean hasPayTimeAt() {
        return instance.hasPayTimeAt();
      }
      /**
       * <pre>
       * Время фактической оплаты. Время фактической оплаты на стороне Процессинга. Возвращается, если оплата состоялась
       * </pre>
       *
       * <code>.google.protobuf.Timestamp pay_time_at = 11 [json_name = "payTime"];</code>
       */
      @java.lang.Override
      public com.google.protobuf.Timestamp getPayTimeAt() {
        return instance.getPayTimeAt();
      }
      /**
       * <pre>
       * Время фактической оплаты. Время фактической оплаты на стороне Процессинга. Возвращается, если оплата состоялась
       * </pre>
       *
       * <code>.google.protobuf.Timestamp pay_time_at = 11 [json_name = "payTime"];</code>
       */
      public Builder setPayTimeAt(com.google.protobuf.Timestamp value) {
        copyOnWrite();
        instance.setPayTimeAt(value);
        return this;
        }
      /**
       * <pre>
       * Время фактической оплаты. Время фактической оплаты на стороне Процессинга. Возвращается, если оплата состоялась
       * </pre>
       *
       * <code>.google.protobuf.Timestamp pay_time_at = 11 [json_name = "payTime"];</code>
       */
      public Builder setPayTimeAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        copyOnWrite();
        instance.setPayTimeAt(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Время фактической оплаты. Время фактической оплаты на стороне Процессинга. Возвращается, если оплата состоялась
       * </pre>
       *
       * <code>.google.protobuf.Timestamp pay_time_at = 11 [json_name = "payTime"];</code>
       */
      public Builder mergePayTimeAt(com.google.protobuf.Timestamp value) {
        copyOnWrite();
        instance.mergePayTimeAt(value);
        return this;
      }
      /**
       * <pre>
       * Время фактической оплаты. Время фактической оплаты на стороне Процессинга. Возвращается, если оплата состоялась
       * </pre>
       *
       * <code>.google.protobuf.Timestamp pay_time_at = 11 [json_name = "payTime"];</code>
       */
      public Builder clearPayTimeAt() {  copyOnWrite();
        instance.clearPayTimeAt();
        return this;
      }

      /**
       * <pre>
       * Время фактической отмены оплаты.
       * Время фактической отмены оплаты на стороне Процессинга.
       * Возвращается, если отмена оплаты состоялась
       * </pre>
       *
       * <code>.google.protobuf.Timestamp abandon_time_at = 12 [json_name = "abandonTime"];</code>
       */
      @java.lang.Override
      public boolean hasAbandonTimeAt() {
        return instance.hasAbandonTimeAt();
      }
      /**
       * <pre>
       * Время фактической отмены оплаты.
       * Время фактической отмены оплаты на стороне Процессинга.
       * Возвращается, если отмена оплаты состоялась
       * </pre>
       *
       * <code>.google.protobuf.Timestamp abandon_time_at = 12 [json_name = "abandonTime"];</code>
       */
      @java.lang.Override
      public com.google.protobuf.Timestamp getAbandonTimeAt() {
        return instance.getAbandonTimeAt();
      }
      /**
       * <pre>
       * Время фактической отмены оплаты.
       * Время фактической отмены оплаты на стороне Процессинга.
       * Возвращается, если отмена оплаты состоялась
       * </pre>
       *
       * <code>.google.protobuf.Timestamp abandon_time_at = 12 [json_name = "abandonTime"];</code>
       */
      public Builder setAbandonTimeAt(com.google.protobuf.Timestamp value) {
        copyOnWrite();
        instance.setAbandonTimeAt(value);
        return this;
        }
      /**
       * <pre>
       * Время фактической отмены оплаты.
       * Время фактической отмены оплаты на стороне Процессинга.
       * Возвращается, если отмена оплаты состоялась
       * </pre>
       *
       * <code>.google.protobuf.Timestamp abandon_time_at = 12 [json_name = "abandonTime"];</code>
       */
      public Builder setAbandonTimeAt(
          com.google.protobuf.Timestamp.Builder builderForValue) {
        copyOnWrite();
        instance.setAbandonTimeAt(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Время фактической отмены оплаты.
       * Время фактической отмены оплаты на стороне Процессинга.
       * Возвращается, если отмена оплаты состоялась
       * </pre>
       *
       * <code>.google.protobuf.Timestamp abandon_time_at = 12 [json_name = "abandonTime"];</code>
       */
      public Builder mergeAbandonTimeAt(com.google.protobuf.Timestamp value) {
        copyOnWrite();
        instance.mergeAbandonTimeAt(value);
        return this;
      }
      /**
       * <pre>
       * Время фактической отмены оплаты.
       * Время фактической отмены оплаты на стороне Процессинга.
       * Возвращается, если отмена оплаты состоялась
       * </pre>
       *
       * <code>.google.protobuf.Timestamp abandon_time_at = 12 [json_name = "abandonTime"];</code>
       */
      public Builder clearAbandonTimeAt() {  copyOnWrite();
        instance.clearAbandonTimeAt();
        return this;
      }

      /**
       * <pre>
       * Структура с информацией о карте плательщика.
       * Передаётся только при успешном платеже и если указаны способы оплаты payMethod = StoredBankCard либо BankCard
       * </pre>
       *
       * <code>.keyapis.invoice.v1.PostInvoiceConfirmRequest.Card card = 13;</code>
       */
      @java.lang.Override
      public boolean hasCard() {
        return instance.hasCard();
      }
      /**
       * <pre>
       * Структура с информацией о карте плательщика.
       * Передаётся только при успешном платеже и если указаны способы оплаты payMethod = StoredBankCard либо BankCard
       * </pre>
       *
       * <code>.keyapis.invoice.v1.PostInvoiceConfirmRequest.Card card = 13;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card getCard() {
        return instance.getCard();
      }
      /**
       * <pre>
       * Структура с информацией о карте плательщика.
       * Передаётся только при успешном платеже и если указаны способы оплаты payMethod = StoredBankCard либо BankCard
       * </pre>
       *
       * <code>.keyapis.invoice.v1.PostInvoiceConfirmRequest.Card card = 13;</code>
       */
      public Builder setCard(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card value) {
        copyOnWrite();
        instance.setCard(value);
        return this;
        }
      /**
       * <pre>
       * Структура с информацией о карте плательщика.
       * Передаётся только при успешном платеже и если указаны способы оплаты payMethod = StoredBankCard либо BankCard
       * </pre>
       *
       * <code>.keyapis.invoice.v1.PostInvoiceConfirmRequest.Card card = 13;</code>
       */
      public Builder setCard(
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card.Builder builderForValue) {
        copyOnWrite();
        instance.setCard(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Структура с информацией о карте плательщика.
       * Передаётся только при успешном платеже и если указаны способы оплаты payMethod = StoredBankCard либо BankCard
       * </pre>
       *
       * <code>.keyapis.invoice.v1.PostInvoiceConfirmRequest.Card card = 13;</code>
       */
      public Builder mergeCard(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.Card value) {
        copyOnWrite();
        instance.mergeCard(value);
        return this;
      }
      /**
       * <pre>
       * Структура с информацией о карте плательщика.
       * Передаётся только при успешном платеже и если указаны способы оплаты payMethod = StoredBankCard либо BankCard
       * </pre>
       *
       * <code>.keyapis.invoice.v1.PostInvoiceConfirmRequest.Card card = 13;</code>
       */
      public Builder clearCard() {  copyOnWrite();
        instance.clearCard();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.PostInvoiceConfirmRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "srcPayId_",
              "esppPayId_",
              "payStatus_",
              "reqType_",
              "amount_",
              "currency_",
              "payMethod_",
              "createTimeAt_",
              "reqNote_",
              "reqUserMsg_",
              "payTimeAt_",
              "abandonTimeAt_",
              "card_",
            };
            java.lang.String info =
                "\u0000\r\u0000\u0000\u0001\r\r\u0000\u0000\u0000\u0001\u0208\u0002\u0208\u0003\u0004" +
                "\u0004\u0208\u0005\u0001\u0006\u0208\u0007\u0208\b\t\t\u0208\n\u0208\u000b\t\f\t" +
                "\r\t";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.PostInvoiceConfirmRequest)
    private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest DEFAULT_INSTANCE;
    static {
      PostInvoiceConfirmRequest defaultInstance = new PostInvoiceConfirmRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        PostInvoiceConfirmRequest.class, defaultInstance);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<PostInvoiceConfirmRequest> PARSER;

    public static com.google.protobuf.Parser<PostInvoiceConfirmRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface PostInvoiceConfirmResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.PostInvoiceConfirmResponse)
      com.google.protobuf.MessageLiteOrBuilder {
  }
  /**
   * <pre>
   * Ответ на запрос подтверждения платежа
   * </pre>
   *
   * Protobuf type {@code keyapis.invoice.v1.PostInvoiceConfirmResponse}
   */
  public  static final class PostInvoiceConfirmResponse extends
      com.google.protobuf.GeneratedMessageLite<
          PostInvoiceConfirmResponse, PostInvoiceConfirmResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.PostInvoiceConfirmResponse)
      PostInvoiceConfirmResponseOrBuilder {
    private PostInvoiceConfirmResponse() {
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос подтверждения платежа
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.PostInvoiceConfirmResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.PostInvoiceConfirmResponse)
        ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponseOrBuilder {
      // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.PostInvoiceConfirmResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = null;java.lang.String info =
                "\u0000\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.PostInvoiceConfirmResponse)
    private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse DEFAULT_INSTANCE;
    static {
      PostInvoiceConfirmResponse defaultInstance = new PostInvoiceConfirmResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        PostInvoiceConfirmResponse.class, defaultInstance);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.PostInvoiceConfirmResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<PostInvoiceConfirmResponse> PARSER;

    public static com.google.protobuf.Parser<PostInvoiceConfirmResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetInvoiceListRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.GetInvoiceListRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1;</code>
     * @return Whether the filter field is set.
     */
    boolean hasFilter();
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1;</code>
     * @return The filter.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter getFilter();

    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging paging = 2;</code>
     * @return Whether the paging field is set.
     */
    boolean hasPaging();
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging paging = 2;</code>
     * @return The paging.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging getPaging();

    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest.PaginationCase getPaginationCase();
  }
  /**
   * <pre>
   * Запрос на получение списка платежей
   * </pre>
   *
   * Protobuf type {@code keyapis.invoice.v1.GetInvoiceListRequest}
   */
  public  static final class GetInvoiceListRequest extends
      com.google.protobuf.GeneratedMessageLite<
          GetInvoiceListRequest, GetInvoiceListRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.GetInvoiceListRequest)
      GetInvoiceListRequestOrBuilder {
    private GetInvoiceListRequest() {
    }
    private int paginationCase_ = 0;
    private java.lang.Object pagination_;
    public enum PaginationCase {
      PAGING(2),
      PAGINATION_NOT_SET(0);
      private final int value;
      private PaginationCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static PaginationCase valueOf(int value) {
        return forNumber(value);
      }

      public static PaginationCase forNumber(int value) {
        switch (value) {
          case 2: return PAGING;
          case 0: return PAGINATION_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    @java.lang.Override
    public PaginationCase
    getPaginationCase() {
      return PaginationCase.forNumber(
          paginationCase_);
    }

    private void clearPagination() {
      paginationCase_ = 0;
      pagination_ = null;
    }

    public static final int FILTER_FIELD_NUMBER = 1;
    private ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter filter_;
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1;</code>
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter getFilter() {
      return filter_ == null ? ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter.getDefaultInstance() : filter_;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1;</code>
     */
    private void setFilter(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter value) {
      value.getClass();
  filter_ = value;

      }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeFilter(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter value) {
      value.getClass();
  if (filter_ != null &&
          filter_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter.getDefaultInstance()) {
        filter_ =
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter.newBuilder(filter_).mergeFrom(value).buildPartial();
      } else {
        filter_ = value;
      }

    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1;</code>
     */
    private void clearFilter() {  filter_ = null;

    }

    public static final int PAGING_FIELD_NUMBER = 2;
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging paging = 2;</code>
     */
    @java.lang.Override
    public boolean hasPaging() {
      return paginationCase_ == 2;
    }
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging paging = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging getPaging() {
      if (paginationCase_ == 2) {
         return (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging) pagination_;
      }
      return ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.getDefaultInstance();
    }
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging paging = 2;</code>
     */
    private void setPaging(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging value) {
      value.getClass();
  pagination_ = value;
      paginationCase_ = 2;
    }
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging paging = 2;</code>
     */
    private void mergePaging(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging value) {
      value.getClass();
  if (paginationCase_ == 2 &&
          pagination_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.getDefaultInstance()) {
        pagination_ = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.newBuilder((ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging) pagination_)
            .mergeFrom(value).buildPartial();
      } else {
        pagination_ = value;
      }
      paginationCase_ = 2;
    }
    /**
     * <pre>
     * Пагинация
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoicePaging paging = 2;</code>
     */
    private void clearPaging() {
      if (paginationCase_ == 2) {
        paginationCase_ = 0;
        pagination_ = null;
      }
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос на получение списка платежей
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.GetInvoiceListRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.GetInvoiceListRequest)
        ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequestOrBuilder {
      // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public PaginationCase
          getPaginationCase() {
        return instance.getPaginationCase();
      }

      public Builder clearPagination() {
        copyOnWrite();
        instance.clearPagination();
        return this;
      }


      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1;</code>
       */
      @java.lang.Override
      public boolean hasFilter() {
        return instance.hasFilter();
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter getFilter() {
        return instance.getFilter();
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1;</code>
       */
      public Builder setFilter(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter value) {
        copyOnWrite();
        instance.setFilter(value);
        return this;
        }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1;</code>
       */
      public Builder setFilter(
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter.Builder builderForValue) {
        copyOnWrite();
        instance.setFilter(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1;</code>
       */
      public Builder mergeFilter(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter value) {
        copyOnWrite();
        instance.mergeFilter(value);
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1;</code>
       */
      public Builder clearFilter() {  copyOnWrite();
        instance.clearFilter();
        return this;
      }

      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoicePaging paging = 2;</code>
       */
      @java.lang.Override
      public boolean hasPaging() {
        return instance.hasPaging();
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoicePaging paging = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging getPaging() {
        return instance.getPaging();
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoicePaging paging = 2;</code>
       */
      public Builder setPaging(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging value) {
        copyOnWrite();
        instance.setPaging(value);
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoicePaging paging = 2;</code>
       */
      public Builder setPaging(
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.Builder builderForValue) {
        copyOnWrite();
        instance.setPaging(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoicePaging paging = 2;</code>
       */
      public Builder mergePaging(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging value) {
        copyOnWrite();
        instance.mergePaging(value);
        return this;
      }
      /**
       * <pre>
       * Пагинация
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoicePaging paging = 2;</code>
       */
      public Builder clearPaging() {
        copyOnWrite();
        instance.clearPaging();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.GetInvoiceListRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "pagination_",
              "paginationCase_",
              "filter_",
              ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoicePaging.class,
            };
            java.lang.String info =
                "\u0000\u0002\u0001\u0000\u0001\u0002\u0002\u0000\u0000\u0000\u0001\t\u0002<\u0000" +
                "";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.GetInvoiceListRequest)
    private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest DEFAULT_INSTANCE;
    static {
      GetInvoiceListRequest defaultInstance = new GetInvoiceListRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetInvoiceListRequest.class, defaultInstance);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetInvoiceListRequest> PARSER;

    public static com.google.protobuf.Parser<GetInvoiceListRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetInvoiceListResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.GetInvoiceListResponse)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Платежи
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
     */
    java.util.List<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice> 
        getDataList();
    /**
     * <pre>
     * Платежи
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice getData(int index);
    /**
     * <pre>
     * Платежи
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
     */
    int getDataCount();

    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.invoice.v1.GetInvoiceListResponse.Error error = 2;</code>
     * @return Whether the error field is set.
     */
    boolean hasError();
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.invoice.v1.GetInvoiceListResponse.Error error = 2;</code>
     * @return The error.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error getError();
  }
  /**
   * <pre>
   * Ответ на запрос получения списка платежей
   * </pre>
   *
   * Protobuf type {@code keyapis.invoice.v1.GetInvoiceListResponse}
   */
  public  static final class GetInvoiceListResponse extends
      com.google.protobuf.GeneratedMessageLite<
          GetInvoiceListResponse, GetInvoiceListResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.GetInvoiceListResponse)
      GetInvoiceListResponseOrBuilder {
    private GetInvoiceListResponse() {
      data_ = emptyProtobufList();
    }
    public interface ErrorOrBuilder extends
        // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.GetInvoiceListResponse.Error)
        com.google.protobuf.MessageLiteOrBuilder {

      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       * @return Whether the validation field is set.
       */
      boolean hasValidation();
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       * @return The validation.
       */
      ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError getValidation();

      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error.ReasonCase getReasonCase();
    }
    /**
     * <pre>
     * Ошибка запроса на получение списка платежей
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.GetInvoiceListResponse.Error}
     */
    public  static final class Error extends
        com.google.protobuf.GeneratedMessageLite<
            Error, Error.Builder> implements
        // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.GetInvoiceListResponse.Error)
        ErrorOrBuilder {
      private Error() {
      }
      private int reasonCase_ = 0;
      private java.lang.Object reason_;
      public enum ReasonCase {
        VALIDATION(1),
        REASON_NOT_SET(0);
        private final int value;
        private ReasonCase(int value) {
          this.value = value;
        }
        /**
         * @deprecated Use {@link #forNumber(int)} instead.
         */
        @java.lang.Deprecated
        public static ReasonCase valueOf(int value) {
          return forNumber(value);
        }

        public static ReasonCase forNumber(int value) {
          switch (value) {
            case 1: return VALIDATION;
            case 0: return REASON_NOT_SET;
            default: return null;
          }
        }
        public int getNumber() {
          return this.value;
        }
      };

      @java.lang.Override
      public ReasonCase
      getReasonCase() {
        return ReasonCase.forNumber(
            reasonCase_);
      }

      private void clearReason() {
        reasonCase_ = 0;
        reason_ = null;
      }

      public static final int VALIDATION_FIELD_NUMBER = 1;
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public boolean hasValidation() {
        return reasonCase_ == 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError getValidation() {
        if (reasonCase_ == 1) {
           return (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError) reason_;
        }
        return ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError.getDefaultInstance();
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       */
      private void setValidation(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError value) {
        value.getClass();
  reason_ = value;
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       */
      private void mergeValidation(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError value) {
        value.getClass();
  if (reasonCase_ == 1 &&
            reason_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError.getDefaultInstance()) {
          reason_ = ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError.newBuilder((ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError) reason_)
              .mergeFrom(value).buildPartial();
        } else {
          reason_ = value;
        }
        reasonCase_ = 1;
      }
      /**
       * <pre>
       * Ошибка валидации
       * </pre>
       *
       * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
       */
      private void clearValidation() {
        if (reasonCase_ == 1) {
          reasonCase_ = 0;
          reason_ = null;
        }
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error parseFrom(
          java.nio.ByteBuffer data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error parseFrom(
          java.nio.ByteBuffer data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error parseFrom(
          com.google.protobuf.ByteString data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error parseFrom(
          com.google.protobuf.ByteString data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error parseFrom(byte[] data)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error parseFrom(
          byte[] data,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws com.google.protobuf.InvalidProtocolBufferException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, data, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error parseFrom(java.io.InputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error parseFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error parseDelimitedFrom(java.io.InputStream input)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error parseDelimitedFrom(
          java.io.InputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input);
      }
      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error parseFrom(
          com.google.protobuf.CodedInputStream input,
          com.google.protobuf.ExtensionRegistryLite extensionRegistry)
          throws java.io.IOException {
        return com.google.protobuf.GeneratedMessageLite.parseFrom(
            DEFAULT_INSTANCE, input, extensionRegistry);
      }

      public static Builder newBuilder() {
        return (Builder) DEFAULT_INSTANCE.createBuilder();
      }
      public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error prototype) {
        return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
      }

      /**
       * <pre>
       * Ошибка запроса на получение списка платежей
       * </pre>
       *
       * Protobuf type {@code keyapis.invoice.v1.GetInvoiceListResponse.Error}
       */
      public static final class Builder extends
          com.google.protobuf.GeneratedMessageLite.Builder<
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error, Builder> implements
          // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.GetInvoiceListResponse.Error)
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.ErrorOrBuilder {
        // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error.newBuilder()
        private Builder() {
          super(DEFAULT_INSTANCE);
        }

        @java.lang.Override
        public ReasonCase
            getReasonCase() {
          return instance.getReasonCase();
        }

        public Builder clearReason() {
          copyOnWrite();
          instance.clearReason();
          return this;
        }


        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public boolean hasValidation() {
          return instance.hasValidation();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        @java.lang.Override
        public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError getValidation() {
          return instance.getValidation();
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError value) {
          copyOnWrite();
          instance.setValidation(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        public Builder setValidation(
            ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError.Builder builderForValue) {
          copyOnWrite();
          instance.setValidation(builderForValue.build());
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        public Builder mergeValidation(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError value) {
          copyOnWrite();
          instance.mergeValidation(value);
          return this;
        }
        /**
         * <pre>
         * Ошибка валидации
         * </pre>
         *
         * <code>.keyapis.invoice.v1.ValidationError validation = 1;</code>
         */
        public Builder clearValidation() {
          copyOnWrite();
          instance.clearValidation();
          return this;
        }

        // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.GetInvoiceListResponse.Error)
      }
      @java.lang.Override
      @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
      protected final java.lang.Object dynamicMethod(
          com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
          java.lang.Object arg0, java.lang.Object arg1) {
        switch (method) {
          case NEW_MUTABLE_INSTANCE: {
            return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error();
          }
          case NEW_BUILDER: {
            return new Builder();
          }
          case BUILD_MESSAGE_INFO: {
              java.lang.Object[] objects = new java.lang.Object[] {
                "reason_",
                "reasonCase_",
                ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.ValidationError.class,
              };
              java.lang.String info =
                  "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001<\u0000";
              return newMessageInfo(DEFAULT_INSTANCE, info, objects);
          }
          // fall through
          case GET_DEFAULT_INSTANCE: {
            return DEFAULT_INSTANCE;
          }
          case GET_PARSER: {
            com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error> parser = PARSER;
            if (parser == null) {
              synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error.class) {
                parser = PARSER;
                if (parser == null) {
                  parser =
                      new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error>(
                          DEFAULT_INSTANCE);
                  PARSER = parser;
                }
              }
            }
            return parser;
        }
        case GET_MEMOIZED_IS_INITIALIZED: {
          return (byte) 1;
        }
        case SET_MEMOIZED_IS_INITIALIZED: {
          return null;
        }
        }
        throw new UnsupportedOperationException();
      }


      // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.GetInvoiceListResponse.Error)
      private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error DEFAULT_INSTANCE;
      static {
        Error defaultInstance = new Error();
        // New instances are implicitly immutable so no need to make
        // immutable.
        DEFAULT_INSTANCE = defaultInstance;
        com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
          Error.class, defaultInstance);
      }

      public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error getDefaultInstance() {
        return DEFAULT_INSTANCE;
      }

      private static volatile com.google.protobuf.Parser<Error> PARSER;

      public static com.google.protobuf.Parser<Error> parser() {
        return DEFAULT_INSTANCE.getParserForType();
      }
    }

    public static final int DATA_FIELD_NUMBER = 1;
    private com.google.protobuf.Internal.ProtobufList<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice> data_;
    /**
     * <pre>
     * Платежи
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
     */
    @java.lang.Override
    public java.util.List<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice> getDataList() {
      return data_;
    }
    /**
     * <pre>
     * Платежи
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
     */
    public java.util.List<? extends ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceOrBuilder> 
        getDataOrBuilderList() {
      return data_;
    }
    /**
     * <pre>
     * Платежи
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
     */
    @java.lang.Override
    public int getDataCount() {
      return data_.size();
    }
    /**
     * <pre>
     * Платежи
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice getData(int index) {
      return data_.get(index);
    }
    /**
     * <pre>
     * Платежи
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
     */
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceOrBuilder getDataOrBuilder(
        int index) {
      return data_.get(index);
    }
    private void ensureDataIsMutable() {
      com.google.protobuf.Internal.ProtobufList<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice> tmp = data_;
      if (!tmp.isModifiable()) {
        data_ =
            com.google.protobuf.GeneratedMessageLite.mutableCopy(tmp);
       }
    }

    /**
     * <pre>
     * Платежи
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
     */
    private void setData(
        int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice value) {
      value.getClass();
  ensureDataIsMutable();
      data_.set(index, value);
    }
    /**
     * <pre>
     * Платежи
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
     */
    private void addData(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice value) {
      value.getClass();
  ensureDataIsMutable();
      data_.add(value);
    }
    /**
     * <pre>
     * Платежи
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
     */
    private void addData(
        int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice value) {
      value.getClass();
  ensureDataIsMutable();
      data_.add(index, value);
    }
    /**
     * <pre>
     * Платежи
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
     */
    private void addAllData(
        java.lang.Iterable<? extends ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice> values) {
      ensureDataIsMutable();
      com.google.protobuf.AbstractMessageLite.addAll(
          values, data_);
    }
    /**
     * <pre>
     * Платежи
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
     */
    private void clearData() {
      data_ = emptyProtobufList();
    }
    /**
     * <pre>
     * Платежи
     * </pre>
     *
     * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
     */
    private void removeData(int index) {
      ensureDataIsMutable();
      data_.remove(index);
    }

    public static final int ERROR_FIELD_NUMBER = 2;
    private ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error error_;
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.invoice.v1.GetInvoiceListResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public boolean hasError() {
      return error_ != null;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.invoice.v1.GetInvoiceListResponse.Error error = 2;</code>
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error getError() {
      return error_ == null ? ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error.getDefaultInstance() : error_;
    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.invoice.v1.GetInvoiceListResponse.Error error = 2;</code>
     */
    private void setError(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error value) {
      value.getClass();
  error_ = value;

      }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.invoice.v1.GetInvoiceListResponse.Error error = 2;</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeError(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error value) {
      value.getClass();
  if (error_ != null &&
          error_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error.getDefaultInstance()) {
        error_ =
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error.newBuilder(error_).mergeFrom(value).buildPartial();
      } else {
        error_ = value;
      }

    }
    /**
     * <pre>
     * Ошибка
     * </pre>
     *
     * <code>.keyapis.invoice.v1.GetInvoiceListResponse.Error error = 2;</code>
     */
    private void clearError() {  error_ = null;

    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос получения списка платежей
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.GetInvoiceListResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.GetInvoiceListResponse)
        ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponseOrBuilder {
      // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Платежи
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
       */
      @java.lang.Override
      public java.util.List<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice> getDataList() {
        return java.util.Collections.unmodifiableList(
            instance.getDataList());
      }
      /**
       * <pre>
       * Платежи
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
       */
      @java.lang.Override
      public int getDataCount() {
        return instance.getDataCount();
      }/**
       * <pre>
       * Платежи
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice getData(int index) {
        return instance.getData(index);
      }
      /**
       * <pre>
       * Платежи
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
       */
      public Builder setData(
          int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice value) {
        copyOnWrite();
        instance.setData(index, value);
        return this;
      }
      /**
       * <pre>
       * Платежи
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
       */
      public Builder setData(
          int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Builder builderForValue) {
        copyOnWrite();
        instance.setData(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Платежи
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
       */
      public Builder addData(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice value) {
        copyOnWrite();
        instance.addData(value);
        return this;
      }
      /**
       * <pre>
       * Платежи
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
       */
      public Builder addData(
          int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice value) {
        copyOnWrite();
        instance.addData(index, value);
        return this;
      }
      /**
       * <pre>
       * Платежи
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
       */
      public Builder addData(
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Builder builderForValue) {
        copyOnWrite();
        instance.addData(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Платежи
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
       */
      public Builder addData(
          int index, ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.Builder builderForValue) {
        copyOnWrite();
        instance.addData(index,
            builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Платежи
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
       */
      public Builder addAllData(
          java.lang.Iterable<? extends ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice> values) {
        copyOnWrite();
        instance.addAllData(values);
        return this;
      }
      /**
       * <pre>
       * Платежи
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }
      /**
       * <pre>
       * Платежи
       * </pre>
       *
       * <code>repeated .keyapis.invoice.v1.Invoice data = 1;</code>
       */
      public Builder removeData(int index) {
        copyOnWrite();
        instance.removeData(index);
        return this;
      }

      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.invoice.v1.GetInvoiceListResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public boolean hasError() {
        return instance.hasError();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.invoice.v1.GetInvoiceListResponse.Error error = 2;</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error getError() {
        return instance.getError();
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.invoice.v1.GetInvoiceListResponse.Error error = 2;</code>
       */
      public Builder setError(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error value) {
        copyOnWrite();
        instance.setError(value);
        return this;
        }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.invoice.v1.GetInvoiceListResponse.Error error = 2;</code>
       */
      public Builder setError(
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error.Builder builderForValue) {
        copyOnWrite();
        instance.setError(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.invoice.v1.GetInvoiceListResponse.Error error = 2;</code>
       */
      public Builder mergeError(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.Error value) {
        copyOnWrite();
        instance.mergeError(value);
        return this;
      }
      /**
       * <pre>
       * Ошибка
       * </pre>
       *
       * <code>.keyapis.invoice.v1.GetInvoiceListResponse.Error error = 2;</code>
       */
      public Builder clearError() {  copyOnWrite();
        instance.clearError();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.GetInvoiceListResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "data_",
              ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.Invoice.class,
              "error_",
            };
            java.lang.String info =
                "\u0000\u0002\u0000\u0000\u0001\u0002\u0002\u0000\u0001\u0000\u0001\u001b\u0002\t" +
                "";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.GetInvoiceListResponse)
    private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse DEFAULT_INSTANCE;
    static {
      GetInvoiceListResponse defaultInstance = new GetInvoiceListResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetInvoiceListResponse.class, defaultInstance);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceListResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetInvoiceListResponse> PARSER;

    public static com.google.protobuf.Parser<GetInvoiceListResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetInvoiceCountRequestOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.GetInvoiceCountRequest)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return Whether the filter field is set.
     */
    boolean hasFilter();
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     * @return The filter.
     */
    ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter getFilter();
  }
  /**
   * <pre>
   * Запрос на получение количества платежей
   * </pre>
   *
   * Protobuf type {@code keyapis.invoice.v1.GetInvoiceCountRequest}
   */
  public  static final class GetInvoiceCountRequest extends
      com.google.protobuf.GeneratedMessageLite<
          GetInvoiceCountRequest, GetInvoiceCountRequest.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.GetInvoiceCountRequest)
      GetInvoiceCountRequestOrBuilder {
    private GetInvoiceCountRequest() {
    }
    public static final int FILTER_FIELD_NUMBER = 1;
    private ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter filter_;
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public boolean hasFilter() {
      return filter_ != null;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.Override
    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter getFilter() {
      return filter_ == null ? ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter.getDefaultInstance() : filter_;
    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void setFilter(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter value) {
      value.getClass();
  filter_ = value;

      }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    @java.lang.SuppressWarnings({"ReferenceEquality"})
    private void mergeFilter(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter value) {
      value.getClass();
  if (filter_ != null &&
          filter_ != ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter.getDefaultInstance()) {
        filter_ =
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter.newBuilder(filter_).mergeFrom(value).buildPartial();
      } else {
        filter_ = value;
      }

    }
    /**
     * <pre>
     * Фильтр
     * </pre>
     *
     * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1 [(.google.api.field_behavior) = REQUIRED];</code>
     */
    private void clearFilter() {  filter_ = null;

    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Запрос на получение количества платежей
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.GetInvoiceCountRequest}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.GetInvoiceCountRequest)
        ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequestOrBuilder {
      // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }


      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public boolean hasFilter() {
        return instance.hasFilter();
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      @java.lang.Override
      public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter getFilter() {
        return instance.getFilter();
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setFilter(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter value) {
        copyOnWrite();
        instance.setFilter(value);
        return this;
        }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder setFilter(
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter.Builder builderForValue) {
        copyOnWrite();
        instance.setFilter(builderForValue.build());
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder mergeFilter(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.InvoiceFilter value) {
        copyOnWrite();
        instance.mergeFilter(value);
        return this;
      }
      /**
       * <pre>
       * Фильтр
       * </pre>
       *
       * <code>.keyapis.invoice.v1.InvoiceFilter filter = 1 [(.google.api.field_behavior) = REQUIRED];</code>
       */
      public Builder clearFilter() {  copyOnWrite();
        instance.clearFilter();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.GetInvoiceCountRequest)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "filter_",
            };
            java.lang.String info =
                "\u0000\u0001\u0000\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u0001\t";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.GetInvoiceCountRequest)
    private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest DEFAULT_INSTANCE;
    static {
      GetInvoiceCountRequest defaultInstance = new GetInvoiceCountRequest();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetInvoiceCountRequest.class, defaultInstance);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountRequest getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetInvoiceCountRequest> PARSER;

    public static com.google.protobuf.Parser<GetInvoiceCountRequest> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }

  public interface GetInvoiceCountResponseOrBuilder extends
      // @@protoc_insertion_point(interface_extends:keyapis.invoice.v1.GetInvoiceCountResponse)
      com.google.protobuf.MessageLiteOrBuilder {

    /**
     * <pre>
     * Количество
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return Whether the data field is set.
     */
    boolean hasData();
    /**
     * <pre>
     * Количество
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return The data.
     */
    int getData();

    public ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse.TypeCase getTypeCase();
  }
  /**
   * <pre>
   * Ответ на запрос получения количества платежей
   * </pre>
   *
   * Protobuf type {@code keyapis.invoice.v1.GetInvoiceCountResponse}
   */
  public  static final class GetInvoiceCountResponse extends
      com.google.protobuf.GeneratedMessageLite<
          GetInvoiceCountResponse, GetInvoiceCountResponse.Builder> implements
      // @@protoc_insertion_point(message_implements:keyapis.invoice.v1.GetInvoiceCountResponse)
      GetInvoiceCountResponseOrBuilder {
    private GetInvoiceCountResponse() {
    }
    private int typeCase_ = 0;
    private java.lang.Object type_;
    public enum TypeCase {
      DATA(1),
      TYPE_NOT_SET(0);
      private final int value;
      private TypeCase(int value) {
        this.value = value;
      }
      /**
       * @deprecated Use {@link #forNumber(int)} instead.
       */
      @java.lang.Deprecated
      public static TypeCase valueOf(int value) {
        return forNumber(value);
      }

      public static TypeCase forNumber(int value) {
        switch (value) {
          case 1: return DATA;
          case 0: return TYPE_NOT_SET;
          default: return null;
        }
      }
      public int getNumber() {
        return this.value;
      }
    };

    @java.lang.Override
    public TypeCase
    getTypeCase() {
      return TypeCase.forNumber(
          typeCase_);
    }

    private void clearType() {
      typeCase_ = 0;
      type_ = null;
    }

    public static final int DATA_FIELD_NUMBER = 1;
    /**
     * <pre>
     * Количество
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return Whether the data field is set.
     */
    @java.lang.Override
    public boolean hasData() {
      return typeCase_ == 1;
    }
    /**
     * <pre>
     * Количество
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @return The data.
     */
    @java.lang.Override
    public int getData() {
      if (typeCase_ == 1) {
        return (java.lang.Integer) type_;
      }
      return 0;
    }
    /**
     * <pre>
     * Количество
     * </pre>
     *
     * <code>int32 data = 1;</code>
     * @param value The data to set.
     */
    private void setData(int value) {
      typeCase_ = 1;
      type_ = value;
    }
    /**
     * <pre>
     * Количество
     * </pre>
     *
     * <code>int32 data = 1;</code>
     */
    private void clearData() {
      if (typeCase_ == 1) {
        typeCase_ = 0;
        type_ = null;
      }
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse parseFrom(
        java.nio.ByteBuffer data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse parseFrom(
        java.nio.ByteBuffer data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse parseFrom(
        com.google.protobuf.ByteString data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse parseFrom(
        com.google.protobuf.ByteString data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse parseFrom(byte[] data)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse parseFrom(
        byte[] data,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws com.google.protobuf.InvalidProtocolBufferException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, data, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse parseFrom(java.io.InputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse parseFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse parseDelimitedFrom(java.io.InputStream input)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse parseDelimitedFrom(
        java.io.InputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return parseDelimitedFrom(DEFAULT_INSTANCE, input, extensionRegistry);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse parseFrom(
        com.google.protobuf.CodedInputStream input)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input);
    }
    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse parseFrom(
        com.google.protobuf.CodedInputStream input,
        com.google.protobuf.ExtensionRegistryLite extensionRegistry)
        throws java.io.IOException {
      return com.google.protobuf.GeneratedMessageLite.parseFrom(
          DEFAULT_INSTANCE, input, extensionRegistry);
    }

    public static Builder newBuilder() {
      return (Builder) DEFAULT_INSTANCE.createBuilder();
    }
    public static Builder newBuilder(ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse prototype) {
      return (Builder) DEFAULT_INSTANCE.createBuilder(prototype);
    }

    /**
     * <pre>
     * Ответ на запрос получения количества платежей
     * </pre>
     *
     * Protobuf type {@code keyapis.invoice.v1.GetInvoiceCountResponse}
     */
    public static final class Builder extends
        com.google.protobuf.GeneratedMessageLite.Builder<
          ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse, Builder> implements
        // @@protoc_insertion_point(builder_implements:keyapis.invoice.v1.GetInvoiceCountResponse)
        ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponseOrBuilder {
      // Construct using ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse.newBuilder()
      private Builder() {
        super(DEFAULT_INSTANCE);
      }

      @java.lang.Override
      public TypeCase
          getTypeCase() {
        return instance.getTypeCase();
      }

      public Builder clearType() {
        copyOnWrite();
        instance.clearType();
        return this;
      }


      /**
       * <pre>
       * Количество
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return Whether the data field is set.
       */
      @java.lang.Override
      public boolean hasData() {
        return instance.hasData();
      }
      /**
       * <pre>
       * Количество
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return The data.
       */
      @java.lang.Override
      public int getData() {
        return instance.getData();
      }
      /**
       * <pre>
       * Количество
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @param value The data to set.
       * @return This builder for chaining.
       */
      public Builder setData(int value) {
        copyOnWrite();
        instance.setData(value);
        return this;
      }
      /**
       * <pre>
       * Количество
       * </pre>
       *
       * <code>int32 data = 1;</code>
       * @return This builder for chaining.
       */
      public Builder clearData() {
        copyOnWrite();
        instance.clearData();
        return this;
      }

      // @@protoc_insertion_point(builder_scope:keyapis.invoice.v1.GetInvoiceCountResponse)
    }
    @java.lang.Override
    @java.lang.SuppressWarnings({"unchecked", "fallthrough"})
    protected final java.lang.Object dynamicMethod(
        com.google.protobuf.GeneratedMessageLite.MethodToInvoke method,
        java.lang.Object arg0, java.lang.Object arg1) {
      switch (method) {
        case NEW_MUTABLE_INSTANCE: {
          return new ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse();
        }
        case NEW_BUILDER: {
          return new Builder();
        }
        case BUILD_MESSAGE_INFO: {
            java.lang.Object[] objects = new java.lang.Object[] {
              "type_",
              "typeCase_",
            };
            java.lang.String info =
                "\u0000\u0001\u0001\u0000\u0001\u0001\u0001\u0000\u0000\u0000\u00017\u0000";
            return newMessageInfo(DEFAULT_INSTANCE, info, objects);
        }
        // fall through
        case GET_DEFAULT_INSTANCE: {
          return DEFAULT_INSTANCE;
        }
        case GET_PARSER: {
          com.google.protobuf.Parser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse> parser = PARSER;
          if (parser == null) {
            synchronized (ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse.class) {
              parser = PARSER;
              if (parser == null) {
                parser =
                    new DefaultInstanceBasedParser<ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse>(
                        DEFAULT_INSTANCE);
                PARSER = parser;
              }
            }
          }
          return parser;
      }
      case GET_MEMOIZED_IS_INITIALIZED: {
        return (byte) 1;
      }
      case SET_MEMOIZED_IS_INITIALIZED: {
        return null;
      }
      }
      throw new UnsupportedOperationException();
    }


    // @@protoc_insertion_point(class_scope:keyapis.invoice.v1.GetInvoiceCountResponse)
    private static final ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse DEFAULT_INSTANCE;
    static {
      GetInvoiceCountResponse defaultInstance = new GetInvoiceCountResponse();
      // New instances are implicitly immutable so no need to make
      // immutable.
      DEFAULT_INSTANCE = defaultInstance;
      com.google.protobuf.GeneratedMessageLite.registerDefaultInstance(
        GetInvoiceCountResponse.class, defaultInstance);
    }

    public static ru.keyapis.invoice.v1.KeyapisInvoiceV1Proto.GetInvoiceCountResponse getDefaultInstance() {
      return DEFAULT_INSTANCE;
    }

    private static volatile com.google.protobuf.Parser<GetInvoiceCountResponse> PARSER;

    public static com.google.protobuf.Parser<GetInvoiceCountResponse> parser() {
      return DEFAULT_INSTANCE.getParserForType();
    }
  }


  static {
  }

  // @@protoc_insertion_point(outer_class_scope)
}
