content: /*
   * Management API
   *
   * The version of the OpenAPI document: 3
   *
   *
   * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
   * https://openapi-generator.tech
   * Do not edit the class manually.
   */
  
  package com.adyen.model.management;
  
  import com.fasterxml.jackson.annotation.JsonCreator;
  import com.fasterxml.jackson.annotation.JsonInclude;
  import com.fasterxml.jackson.annotation.JsonProperty;
  import com.fasterxml.jackson.annotation.JsonPropertyOrder;
  import com.fasterxml.jackson.annotation.JsonValue;
  import com.fasterxml.jackson.core.JsonProcessingException;
  import java.util.*;
  import java.util.Arrays;
  import java.util.logging.Logger;
  
  /** UpdateSplitConfigurationLogicRequest */
  @JsonPropertyOrder({
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_ACQUIRING_FEES,
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_ADDITIONAL_COMMISSION,
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_ADYEN_COMMISSION,
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_ADYEN_FEES,
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_ADYEN_MARKUP,
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_CHARGEBACK,
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_CHARGEBACK_COST_ALLOCATION,
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_COMMISSION,
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_INTERCHANGE,
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_PAYMENT_FEE,
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_REFUND,
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_REFUND_COST_ALLOCATION,
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_REMAINDER,
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_SCHEME_FEE,
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_SPLIT_LOGIC_ID,
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_SURCHARGE,
    UpdateSplitConfigurationLogicRequest.JSON_PROPERTY_TIP
  })
  public class UpdateSplitConfigurationLogicRequest {
    /**
     * Deducts the acquiring fees (the aggregated amount of interchange and scheme fee) from the
     * specified balance account. Possible values: **deductFromLiableAccount**,
     * **deductFromOneBalanceAccount**.
     */
    public enum AcquiringFeesEnum {
      DEDUCTFROMLIABLEACCOUNT(String.valueOf("deductFromLiableAccount")),
  
      DEDUCTFROMONEBALANCEACCOUNT(String.valueOf("deductFromOneBalanceAccount"));
  
      private static final Logger LOG = Logger.getLogger(AcquiringFeesEnum.class.getName());
  
      private String value;
  
      AcquiringFeesEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static AcquiringFeesEnum fromValue(String value) {
        for (AcquiringFeesEnum b : AcquiringFeesEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "AcquiringFeesEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(AcquiringFeesEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_ACQUIRING_FEES = "acquiringFees";
    private AcquiringFeesEnum acquiringFees;
  
    public static final String JSON_PROPERTY_ADDITIONAL_COMMISSION = "additionalCommission";
    private AdditionalCommission additionalCommission;
  
    /**
     * Deducts the transaction fee due to Adyen under [blended
     * rates](https://www.adyen.com/knowledge-hub/guides/payments-training-guide/get-the-best-from-your-card-processing)
     * from the specified balance account. Possible values: **deductFromLiableAccount**,
     * **deductFromOneBalanceAccount**.
     */
    public enum AdyenCommissionEnum {
      DEDUCTFROMLIABLEACCOUNT(String.valueOf("deductFromLiableAccount")),
  
      DEDUCTFROMONEBALANCEACCOUNT(String.valueOf("deductFromOneBalanceAccount"));
  
      private static final Logger LOG = Logger.getLogger(AdyenCommissionEnum.class.getName());
  
      private String value;
  
      AdyenCommissionEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static AdyenCommissionEnum fromValue(String value) {
        for (AdyenCommissionEnum b : AdyenCommissionEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "AdyenCommissionEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(AdyenCommissionEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_ADYEN_COMMISSION = "adyenCommission";
    private AdyenCommissionEnum adyenCommission;
  
    /**
     * Deducts the fees due to Adyen (markup or commission) from the specified balance account.
     * Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     */
    public enum AdyenFeesEnum {
      DEDUCTFROMLIABLEACCOUNT(String.valueOf("deductFromLiableAccount")),
  
      DEDUCTFROMONEBALANCEACCOUNT(String.valueOf("deductFromOneBalanceAccount"));
  
      private static final Logger LOG = Logger.getLogger(AdyenFeesEnum.class.getName());
  
      private String value;
  
      AdyenFeesEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static AdyenFeesEnum fromValue(String value) {
        for (AdyenFeesEnum b : AdyenFeesEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "AdyenFeesEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(AdyenFeesEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_ADYEN_FEES = "adyenFees";
    private AdyenFeesEnum adyenFees;
  
    /**
     * Deducts the transaction fee due to Adyen under [Interchange ++
     * pricing](https://www.adyen.com/what-is-interchange) from the specified balance account.
     * Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     */
    public enum AdyenMarkupEnum {
      DEDUCTFROMLIABLEACCOUNT(String.valueOf("deductFromLiableAccount")),
  
      DEDUCTFROMONEBALANCEACCOUNT(String.valueOf("deductFromOneBalanceAccount"));
  
      private static final Logger LOG = Logger.getLogger(AdyenMarkupEnum.class.getName());
  
      private String value;
  
      AdyenMarkupEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static AdyenMarkupEnum fromValue(String value) {
        for (AdyenMarkupEnum b : AdyenMarkupEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "AdyenMarkupEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(AdyenMarkupEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_ADYEN_MARKUP = "adyenMarkup";
    private AdyenMarkupEnum adyenMarkup;
  
    /**
     * Specifies how and from which balance account(s) to deduct the chargeback amount. Possible
     * values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**,
     * **deductAccordingToSplitRatio**.
     */
    public enum ChargebackEnum {
      DEDUCTFROMLIABLEACCOUNT(String.valueOf("deductFromLiableAccount")),
  
      DEDUCTFROMONEBALANCEACCOUNT(String.valueOf("deductFromOneBalanceAccount")),
  
      DEDUCTACCORDINGTOSPLITRATIO(String.valueOf("deductAccordingToSplitRatio"));
  
      private static final Logger LOG = Logger.getLogger(ChargebackEnum.class.getName());
  
      private String value;
  
      ChargebackEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static ChargebackEnum fromValue(String value) {
        for (ChargebackEnum b : ChargebackEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "ChargebackEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(ChargebackEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_CHARGEBACK = "chargeback";
    private ChargebackEnum chargeback;
  
    /**
     * Deducts the chargeback costs from the specified balance account. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**
     */
    public enum ChargebackCostAllocationEnum {
      DEDUCTFROMLIABLEACCOUNT(String.valueOf("deductFromLiableAccount")),
  
      DEDUCTFROMONEBALANCEACCOUNT(String.valueOf("deductFromOneBalanceAccount"));
  
      private static final Logger LOG =
          Logger.getLogger(ChargebackCostAllocationEnum.class.getName());
  
      private String value;
  
      ChargebackCostAllocationEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static ChargebackCostAllocationEnum fromValue(String value) {
        for (ChargebackCostAllocationEnum b : ChargebackCostAllocationEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "ChargebackCostAllocationEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(ChargebackCostAllocationEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_CHARGEBACK_COST_ALLOCATION = "chargebackCostAllocation";
    private ChargebackCostAllocationEnum chargebackCostAllocation;
  
    public static final String JSON_PROPERTY_COMMISSION = "commission";
    private Commission commission;
  
    /**
     * Deducts the interchange fee from specified balance account. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     */
    public enum InterchangeEnum {
      DEDUCTFROMLIABLEACCOUNT(String.valueOf("deductFromLiableAccount")),
  
      DEDUCTFROMONEBALANCEACCOUNT(String.valueOf("deductFromOneBalanceAccount"));
  
      private static final Logger LOG = Logger.getLogger(InterchangeEnum.class.getName());
  
      private String value;
  
      InterchangeEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static InterchangeEnum fromValue(String value) {
        for (InterchangeEnum b : InterchangeEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "InterchangeEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(InterchangeEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_INTERCHANGE = "interchange";
    private InterchangeEnum interchange;
  
    /**
     * Deducts all transaction fees incurred by the payment from the specified balance account. The
     * transaction fees include the acquiring fees (interchange and scheme fee), and the fees due to
     * Adyen (markup or commission). You can book any and all these fees to different balance account
     * by specifying other transaction fee parameters in your split configuration profile: -
     * [&#x60;adyenCommission&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenCommission):
     * The transaction fee due to Adyen under [blended
     * rates](https://www.adyen.com/knowledge-hub/interchange-fees-explained#interchange-vs-blended).
     * -
     * [&#x60;adyenMarkup&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenMarkup):
     * The transaction fee due to Adyen under [Interchange ++
     * pricing](https://www.adyen.com/knowledge-hub/interchange-fees-explained#interchange-vs-blended).
     * -
     * [&#x60;schemeFee&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-schemeFee):
     * The fee paid to the card scheme for using their network. -
     * [&#x60;interchange&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-interchange):
     * The fee paid to the issuer for each payment transaction made with the card network. -
     * [&#x60;adyenFees&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenFees):
     * The aggregated amount of Adyen&#39;s commission and markup. -
     * [&#x60;acquiringFees&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-acquiringFees):
     * The aggregated amount of the interchange and scheme fees. If you don&#39;t include at least one
     * transaction fee type in the &#x60;splitLogic&#x60; object, Adyen updates the payment request
     * with the &#x60;paymentFee&#x60; parameter, booking all transaction fees to your platform&#39;s
     * liable balance account. Possible values: **deductFromLiableAccount**,
     * **deductFromOneBalanceAccount**.
     */
    public enum PaymentFeeEnum {
      DEDUCTFROMLIABLEACCOUNT(String.valueOf("deductFromLiableAccount")),
  
      DEDUCTFROMONEBALANCEACCOUNT(String.valueOf("deductFromOneBalanceAccount"));
  
      private static final Logger LOG = Logger.getLogger(PaymentFeeEnum.class.getName());
  
      private String value;
  
      PaymentFeeEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static PaymentFeeEnum fromValue(String value) {
        for (PaymentFeeEnum b : PaymentFeeEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "PaymentFeeEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(PaymentFeeEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_PAYMENT_FEE = "paymentFee";
    private PaymentFeeEnum paymentFee;
  
    /**
     * Specifies how and from which balance account(s) to deduct the refund amount. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**, **deductAccordingToSplitRatio**
     */
    public enum RefundEnum {
      DEDUCTFROMLIABLEACCOUNT(String.valueOf("deductFromLiableAccount")),
  
      DEDUCTFROMONEBALANCEACCOUNT(String.valueOf("deductFromOneBalanceAccount")),
  
      DEDUCTACCORDINGTOSPLITRATIO(String.valueOf("deductAccordingToSplitRatio"));
  
      private static final Logger LOG = Logger.getLogger(RefundEnum.class.getName());
  
      private String value;
  
      RefundEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static RefundEnum fromValue(String value) {
        for (RefundEnum b : RefundEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "RefundEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(RefundEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_REFUND = "refund";
    private RefundEnum refund;
  
    /**
     * Deducts the refund costs from the specified balance account. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**
     */
    public enum RefundCostAllocationEnum {
      DEDUCTFROMLIABLEACCOUNT(String.valueOf("deductFromLiableAccount")),
  
      DEDUCTFROMONEBALANCEACCOUNT(String.valueOf("deductFromOneBalanceAccount"));
  
      private static final Logger LOG = Logger.getLogger(RefundCostAllocationEnum.class.getName());
  
      private String value;
  
      RefundCostAllocationEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static RefundCostAllocationEnum fromValue(String value) {
        for (RefundCostAllocationEnum b : RefundCostAllocationEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "RefundCostAllocationEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(RefundCostAllocationEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_REFUND_COST_ALLOCATION = "refundCostAllocation";
    private RefundCostAllocationEnum refundCostAllocation;
  
    /**
     * Books the amount left over after currency conversion to the specified balance account. Possible
     * values: **addToLiableAccount**, **addToOneBalanceAccount**.
     */
    public enum RemainderEnum {
      ADDTOLIABLEACCOUNT(String.valueOf("addToLiableAccount")),
  
      ADDTOONEBALANCEACCOUNT(String.valueOf("addToOneBalanceAccount"));
  
      private static final Logger LOG = Logger.getLogger(RemainderEnum.class.getName());
  
      private String value;
  
      RemainderEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static RemainderEnum fromValue(String value) {
        for (RemainderEnum b : RemainderEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "RemainderEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(RemainderEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_REMAINDER = "remainder";
    private RemainderEnum remainder;
  
    /**
     * Deducts the scheme fee from the specified balance account. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     */
    public enum SchemeFeeEnum {
      DEDUCTFROMLIABLEACCOUNT(String.valueOf("deductFromLiableAccount")),
  
      DEDUCTFROMONEBALANCEACCOUNT(String.valueOf("deductFromOneBalanceAccount"));
  
      private static final Logger LOG = Logger.getLogger(SchemeFeeEnum.class.getName());
  
      private String value;
  
      SchemeFeeEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static SchemeFeeEnum fromValue(String value) {
        for (SchemeFeeEnum b : SchemeFeeEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "SchemeFeeEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(SchemeFeeEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_SCHEME_FEE = "schemeFee";
    private SchemeFeeEnum schemeFee;
  
    public static final String JSON_PROPERTY_SPLIT_LOGIC_ID = "splitLogicId";
    private String splitLogicId;
  
    /**
     * Books the surcharge amount to the specified balance account. Possible values:
     * **addToLiableAccount**, **addToOneBalanceAccount**
     */
    public enum SurchargeEnum {
      ADDTOLIABLEACCOUNT(String.valueOf("addToLiableAccount")),
  
      ADDTOONEBALANCEACCOUNT(String.valueOf("addToOneBalanceAccount"));
  
      private static final Logger LOG = Logger.getLogger(SurchargeEnum.class.getName());
  
      private String value;
  
      SurchargeEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static SurchargeEnum fromValue(String value) {
        for (SurchargeEnum b : SurchargeEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "SurchargeEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(SurchargeEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_SURCHARGE = "surcharge";
    private SurchargeEnum surcharge;
  
    /**
     * Books the tips (gratuity) to the specified balance account. Possible values:
     * **addToLiableAccount**, **addToOneBalanceAccount**.
     */
    public enum TipEnum {
      ADDTOLIABLEACCOUNT(String.valueOf("addToLiableAccount")),
  
      ADDTOONEBALANCEACCOUNT(String.valueOf("addToOneBalanceAccount"));
  
      private static final Logger LOG = Logger.getLogger(TipEnum.class.getName());
  
      private String value;
  
      TipEnum(String value) {
        this.value = value;
      }
  
      @JsonValue
      public String getValue() {
        return value;
      }
  
      @Override
      public String toString() {
        return String.valueOf(value);
      }
  
      @JsonCreator
      public static TipEnum fromValue(String value) {
        for (TipEnum b : TipEnum.values()) {
          if (b.value.equals(value)) {
            return b;
          }
        }
        // handling unexpected value
        LOG.warning(
            "TipEnum: unexpected enum value '"
                + value
                + "' - Supported values are "
                + Arrays.toString(TipEnum.values()));
        return null;
      }
    }
  
    public static final String JSON_PROPERTY_TIP = "tip";
    private TipEnum tip;
  
    public UpdateSplitConfigurationLogicRequest() {}
  
    @JsonCreator
    public UpdateSplitConfigurationLogicRequest(
        @JsonProperty(JSON_PROPERTY_SPLIT_LOGIC_ID) String splitLogicId) {
      this();
      this.splitLogicId = splitLogicId;
    }
  
    /**
     * Deducts the acquiring fees (the aggregated amount of interchange and scheme fee) from the
     * specified balance account. Possible values: **deductFromLiableAccount**,
     * **deductFromOneBalanceAccount**.
     *
     * @param acquiringFees Deducts the acquiring fees (the aggregated amount of interchange and
     *     scheme fee) from the specified balance account. Possible values:
     *     **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     * @return the current {@code UpdateSplitConfigurationLogicRequest} instance, allowing for method
     *     chaining
     */
    public UpdateSplitConfigurationLogicRequest acquiringFees(AcquiringFeesEnum acquiringFees) {
      this.acquiringFees = acquiringFees;
      return this;
    }
  
    /**
     * Deducts the acquiring fees (the aggregated amount of interchange and scheme fee) from the
     * specified balance account. Possible values: **deductFromLiableAccount**,
     * **deductFromOneBalanceAccount**.
     *
     * @return acquiringFees Deducts the acquiring fees (the aggregated amount of interchange and
     *     scheme fee) from the specified balance account. Possible values:
     *     **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_ACQUIRING_FEES)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public AcquiringFeesEnum getAcquiringFees() {
      return acquiringFees;
    }
  
    /**
     * Deducts the acquiring fees (the aggregated amount of interchange and scheme fee) from the
     * specified balance account. Possible values: **deductFromLiableAccount**,
     * **deductFromOneBalanceAccount**.
     *
     * @param acquiringFees Deducts the acquiring fees (the aggregated amount of interchange and
     *     scheme fee) from the specified balance account. Possible values:
     *     **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_ACQUIRING_FEES)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setAcquiringFees(AcquiringFeesEnum acquiringFees) {
      this.acquiringFees = acquiringFees;
    }
  
    /**
     * additionalCommission
     *
     * @param additionalCommission
     * @return the current {@code UpdateSplitConfigurationLogicRequest} instance, allowing for method
     *     chaining
     */
    public UpdateSplitConfigurationLogicRequest additionalCommission(
        AdditionalCommission additionalCommission) {
      this.additionalCommission = additionalCommission;
      return this;
    }
  
    /**
     * Get additionalCommission
     *
     * @return additionalCommission
     */
    @JsonProperty(JSON_PROPERTY_ADDITIONAL_COMMISSION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public AdditionalCommission getAdditionalCommission() {
      return additionalCommission;
    }
  
    /**
     * additionalCommission
     *
     * @param additionalCommission
     */
    @JsonProperty(JSON_PROPERTY_ADDITIONAL_COMMISSION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setAdditionalCommission(AdditionalCommission additionalCommission) {
      this.additionalCommission = additionalCommission;
    }
  
    /**
     * Deducts the transaction fee due to Adyen under [blended
     * rates](https://www.adyen.com/knowledge-hub/guides/payments-training-guide/get-the-best-from-your-card-processing)
     * from the specified balance account. Possible values: **deductFromLiableAccount**,
     * **deductFromOneBalanceAccount**.
     *
     * @param adyenCommission Deducts the transaction fee due to Adyen under [blended
     *     rates](https://www.adyen.com/knowledge-hub/guides/payments-training-guide/get-the-best-from-your-card-processing)
     *     from the specified balance account. Possible values: **deductFromLiableAccount**,
     *     **deductFromOneBalanceAccount**.
     * @return the current {@code UpdateSplitConfigurationLogicRequest} instance, allowing for method
     *     chaining
     */
    public UpdateSplitConfigurationLogicRequest adyenCommission(AdyenCommissionEnum adyenCommission) {
      this.adyenCommission = adyenCommission;
      return this;
    }
  
    /**
     * Deducts the transaction fee due to Adyen under [blended
     * rates](https://www.adyen.com/knowledge-hub/guides/payments-training-guide/get-the-best-from-your-card-processing)
     * from the specified balance account. Possible values: **deductFromLiableAccount**,
     * **deductFromOneBalanceAccount**.
     *
     * @return adyenCommission Deducts the transaction fee due to Adyen under [blended
     *     rates](https://www.adyen.com/knowledge-hub/guides/payments-training-guide/get-the-best-from-your-card-processing)
     *     from the specified balance account. Possible values: **deductFromLiableAccount**,
     *     **deductFromOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_ADYEN_COMMISSION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public AdyenCommissionEnum getAdyenCommission() {
      return adyenCommission;
    }
  
    /**
     * Deducts the transaction fee due to Adyen under [blended
     * rates](https://www.adyen.com/knowledge-hub/guides/payments-training-guide/get-the-best-from-your-card-processing)
     * from the specified balance account. Possible values: **deductFromLiableAccount**,
     * **deductFromOneBalanceAccount**.
     *
     * @param adyenCommission Deducts the transaction fee due to Adyen under [blended
     *     rates](https://www.adyen.com/knowledge-hub/guides/payments-training-guide/get-the-best-from-your-card-processing)
     *     from the specified balance account. Possible values: **deductFromLiableAccount**,
     *     **deductFromOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_ADYEN_COMMISSION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setAdyenCommission(AdyenCommissionEnum adyenCommission) {
      this.adyenCommission = adyenCommission;
    }
  
    /**
     * Deducts the fees due to Adyen (markup or commission) from the specified balance account.
     * Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     *
     * @param adyenFees Deducts the fees due to Adyen (markup or commission) from the specified
     *     balance account. Possible values: **deductFromLiableAccount**,
     *     **deductFromOneBalanceAccount**.
     * @return the current {@code UpdateSplitConfigurationLogicRequest} instance, allowing for method
     *     chaining
     */
    public UpdateSplitConfigurationLogicRequest adyenFees(AdyenFeesEnum adyenFees) {
      this.adyenFees = adyenFees;
      return this;
    }
  
    /**
     * Deducts the fees due to Adyen (markup or commission) from the specified balance account.
     * Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     *
     * @return adyenFees Deducts the fees due to Adyen (markup or commission) from the specified
     *     balance account. Possible values: **deductFromLiableAccount**,
     *     **deductFromOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_ADYEN_FEES)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public AdyenFeesEnum getAdyenFees() {
      return adyenFees;
    }
  
    /**
     * Deducts the fees due to Adyen (markup or commission) from the specified balance account.
     * Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     *
     * @param adyenFees Deducts the fees due to Adyen (markup or commission) from the specified
     *     balance account. Possible values: **deductFromLiableAccount**,
     *     **deductFromOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_ADYEN_FEES)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setAdyenFees(AdyenFeesEnum adyenFees) {
      this.adyenFees = adyenFees;
    }
  
    /**
     * Deducts the transaction fee due to Adyen under [Interchange ++
     * pricing](https://www.adyen.com/what-is-interchange) from the specified balance account.
     * Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     *
     * @param adyenMarkup Deducts the transaction fee due to Adyen under [Interchange ++
     *     pricing](https://www.adyen.com/what-is-interchange) from the specified balance account.
     *     Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     * @return the current {@code UpdateSplitConfigurationLogicRequest} instance, allowing for method
     *     chaining
     */
    public UpdateSplitConfigurationLogicRequest adyenMarkup(AdyenMarkupEnum adyenMarkup) {
      this.adyenMarkup = adyenMarkup;
      return this;
    }
  
    /**
     * Deducts the transaction fee due to Adyen under [Interchange ++
     * pricing](https://www.adyen.com/what-is-interchange) from the specified balance account.
     * Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     *
     * @return adyenMarkup Deducts the transaction fee due to Adyen under [Interchange ++
     *     pricing](https://www.adyen.com/what-is-interchange) from the specified balance account.
     *     Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_ADYEN_MARKUP)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public AdyenMarkupEnum getAdyenMarkup() {
      return adyenMarkup;
    }
  
    /**
     * Deducts the transaction fee due to Adyen under [Interchange ++
     * pricing](https://www.adyen.com/what-is-interchange) from the specified balance account.
     * Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     *
     * @param adyenMarkup Deducts the transaction fee due to Adyen under [Interchange ++
     *     pricing](https://www.adyen.com/what-is-interchange) from the specified balance account.
     *     Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_ADYEN_MARKUP)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setAdyenMarkup(AdyenMarkupEnum adyenMarkup) {
      this.adyenMarkup = adyenMarkup;
    }
  
    /**
     * Specifies how and from which balance account(s) to deduct the chargeback amount. Possible
     * values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**,
     * **deductAccordingToSplitRatio**.
     *
     * @param chargeback Specifies how and from which balance account(s) to deduct the chargeback
     *     amount. Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**,
     *     **deductAccordingToSplitRatio**.
     * @return the current {@code UpdateSplitConfigurationLogicRequest} instance, allowing for method
     *     chaining
     */
    public UpdateSplitConfigurationLogicRequest chargeback(ChargebackEnum chargeback) {
      this.chargeback = chargeback;
      return this;
    }
  
    /**
     * Specifies how and from which balance account(s) to deduct the chargeback amount. Possible
     * values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**,
     * **deductAccordingToSplitRatio**.
     *
     * @return chargeback Specifies how and from which balance account(s) to deduct the chargeback
     *     amount. Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**,
     *     **deductAccordingToSplitRatio**.
     */
    @JsonProperty(JSON_PROPERTY_CHARGEBACK)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public ChargebackEnum getChargeback() {
      return chargeback;
    }
  
    /**
     * Specifies how and from which balance account(s) to deduct the chargeback amount. Possible
     * values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**,
     * **deductAccordingToSplitRatio**.
     *
     * @param chargeback Specifies how and from which balance account(s) to deduct the chargeback
     *     amount. Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**,
     *     **deductAccordingToSplitRatio**.
     */
    @JsonProperty(JSON_PROPERTY_CHARGEBACK)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setChargeback(ChargebackEnum chargeback) {
      this.chargeback = chargeback;
    }
  
    /**
     * Deducts the chargeback costs from the specified balance account. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**
     *
     * @param chargebackCostAllocation Deducts the chargeback costs from the specified balance
     *     account. Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**
     * @return the current {@code UpdateSplitConfigurationLogicRequest} instance, allowing for method
     *     chaining
     */
    public UpdateSplitConfigurationLogicRequest chargebackCostAllocation(
        ChargebackCostAllocationEnum chargebackCostAllocation) {
      this.chargebackCostAllocation = chargebackCostAllocation;
      return this;
    }
  
    /**
     * Deducts the chargeback costs from the specified balance account. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**
     *
     * @return chargebackCostAllocation Deducts the chargeback costs from the specified balance
     *     account. Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**
     */
    @JsonProperty(JSON_PROPERTY_CHARGEBACK_COST_ALLOCATION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public ChargebackCostAllocationEnum getChargebackCostAllocation() {
      return chargebackCostAllocation;
    }
  
    /**
     * Deducts the chargeback costs from the specified balance account. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**
     *
     * @param chargebackCostAllocation Deducts the chargeback costs from the specified balance
     *     account. Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**
     */
    @JsonProperty(JSON_PROPERTY_CHARGEBACK_COST_ALLOCATION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setChargebackCostAllocation(ChargebackCostAllocationEnum chargebackCostAllocation) {
      this.chargebackCostAllocation = chargebackCostAllocation;
    }
  
    /**
     * commission
     *
     * @param commission
     * @return the current {@code UpdateSplitConfigurationLogicRequest} instance, allowing for method
     *     chaining
     */
    public UpdateSplitConfigurationLogicRequest commission(Commission commission) {
      this.commission = commission;
      return this;
    }
  
    /**
     * Get commission
     *
     * @return commission
     */
    @JsonProperty(JSON_PROPERTY_COMMISSION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public Commission getCommission() {
      return commission;
    }
  
    /**
     * commission
     *
     * @param commission
     */
    @JsonProperty(JSON_PROPERTY_COMMISSION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setCommission(Commission commission) {
      this.commission = commission;
    }
  
    /**
     * Deducts the interchange fee from specified balance account. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     *
     * @param interchange Deducts the interchange fee from specified balance account. Possible values:
     *     **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     * @return the current {@code UpdateSplitConfigurationLogicRequest} instance, allowing for method
     *     chaining
     */
    public UpdateSplitConfigurationLogicRequest interchange(InterchangeEnum interchange) {
      this.interchange = interchange;
      return this;
    }
  
    /**
     * Deducts the interchange fee from specified balance account. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     *
     * @return interchange Deducts the interchange fee from specified balance account. Possible
     *     values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_INTERCHANGE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public InterchangeEnum getInterchange() {
      return interchange;
    }
  
    /**
     * Deducts the interchange fee from specified balance account. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     *
     * @param interchange Deducts the interchange fee from specified balance account. Possible values:
     *     **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_INTERCHANGE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setInterchange(InterchangeEnum interchange) {
      this.interchange = interchange;
    }
  
    /**
     * Deducts all transaction fees incurred by the payment from the specified balance account. The
     * transaction fees include the acquiring fees (interchange and scheme fee), and the fees due to
     * Adyen (markup or commission). You can book any and all these fees to different balance account
     * by specifying other transaction fee parameters in your split configuration profile: -
     * [&#x60;adyenCommission&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenCommission):
     * The transaction fee due to Adyen under [blended
     * rates](https://www.adyen.com/knowledge-hub/interchange-fees-explained#interchange-vs-blended).
     * -
     * [&#x60;adyenMarkup&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenMarkup):
     * The transaction fee due to Adyen under [Interchange ++
     * pricing](https://www.adyen.com/knowledge-hub/interchange-fees-explained#interchange-vs-blended).
     * -
     * [&#x60;schemeFee&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-schemeFee):
     * The fee paid to the card scheme for using their network. -
     * [&#x60;interchange&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-interchange):
     * The fee paid to the issuer for each payment transaction made with the card network. -
     * [&#x60;adyenFees&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenFees):
     * The aggregated amount of Adyen&#39;s commission and markup. -
     * [&#x60;acquiringFees&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-acquiringFees):
     * The aggregated amount of the interchange and scheme fees. If you don&#39;t include at least one
     * transaction fee type in the &#x60;splitLogic&#x60; object, Adyen updates the payment request
     * with the &#x60;paymentFee&#x60; parameter, booking all transaction fees to your platform&#39;s
     * liable balance account. Possible values: **deductFromLiableAccount**,
     * **deductFromOneBalanceAccount**.
     *
     * @param paymentFee Deducts all transaction fees incurred by the payment from the specified
     *     balance account. The transaction fees include the acquiring fees (interchange and scheme
     *     fee), and the fees due to Adyen (markup or commission). You can book any and all these fees
     *     to different balance account by specifying other transaction fee parameters in your split
     *     configuration profile: -
     *     [&#x60;adyenCommission&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenCommission):
     *     The transaction fee due to Adyen under [blended
     *     rates](https://www.adyen.com/knowledge-hub/interchange-fees-explained#interchange-vs-blended).
     *     -
     *     [&#x60;adyenMarkup&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenMarkup):
     *     The transaction fee due to Adyen under [Interchange ++
     *     pricing](https://www.adyen.com/knowledge-hub/interchange-fees-explained#interchange-vs-blended).
     *     -
     *     [&#x60;schemeFee&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-schemeFee):
     *     The fee paid to the card scheme for using their network. -
     *     [&#x60;interchange&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-interchange):
     *     The fee paid to the issuer for each payment transaction made with the card network. -
     *     [&#x60;adyenFees&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenFees):
     *     The aggregated amount of Adyen&#39;s commission and markup. -
     *     [&#x60;acquiringFees&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-acquiringFees):
     *     The aggregated amount of the interchange and scheme fees. If you don&#39;t include at least
     *     one transaction fee type in the &#x60;splitLogic&#x60; object, Adyen updates the payment
     *     request with the &#x60;paymentFee&#x60; parameter, booking all transaction fees to your
     *     platform&#39;s liable balance account. Possible values: **deductFromLiableAccount**,
     *     **deductFromOneBalanceAccount**.
     * @return the current {@code UpdateSplitConfigurationLogicRequest} instance, allowing for method
     *     chaining
     */
    public UpdateSplitConfigurationLogicRequest paymentFee(PaymentFeeEnum paymentFee) {
      this.paymentFee = paymentFee;
      return this;
    }
  
    /**
     * Deducts all transaction fees incurred by the payment from the specified balance account. The
     * transaction fees include the acquiring fees (interchange and scheme fee), and the fees due to
     * Adyen (markup or commission). You can book any and all these fees to different balance account
     * by specifying other transaction fee parameters in your split configuration profile: -
     * [&#x60;adyenCommission&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenCommission):
     * The transaction fee due to Adyen under [blended
     * rates](https://www.adyen.com/knowledge-hub/interchange-fees-explained#interchange-vs-blended).
     * -
     * [&#x60;adyenMarkup&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenMarkup):
     * The transaction fee due to Adyen under [Interchange ++
     * pricing](https://www.adyen.com/knowledge-hub/interchange-fees-explained#interchange-vs-blended).
     * -
     * [&#x60;schemeFee&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-schemeFee):
     * The fee paid to the card scheme for using their network. -
     * [&#x60;interchange&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-interchange):
     * The fee paid to the issuer for each payment transaction made with the card network. -
     * [&#x60;adyenFees&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenFees):
     * The aggregated amount of Adyen&#39;s commission and markup. -
     * [&#x60;acquiringFees&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-acquiringFees):
     * The aggregated amount of the interchange and scheme fees. If you don&#39;t include at least one
     * transaction fee type in the &#x60;splitLogic&#x60; object, Adyen updates the payment request
     * with the &#x60;paymentFee&#x60; parameter, booking all transaction fees to your platform&#39;s
     * liable balance account. Possible values: **deductFromLiableAccount**,
     * **deductFromOneBalanceAccount**.
     *
     * @return paymentFee Deducts all transaction fees incurred by the payment from the specified
     *     balance account. The transaction fees include the acquiring fees (interchange and scheme
     *     fee), and the fees due to Adyen (markup or commission). You can book any and all these fees
     *     to different balance account by specifying other transaction fee parameters in your split
     *     configuration profile: -
     *     [&#x60;adyenCommission&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenCommission):
     *     The transaction fee due to Adyen under [blended
     *     rates](https://www.adyen.com/knowledge-hub/interchange-fees-explained#interchange-vs-blended).
     *     -
     *     [&#x60;adyenMarkup&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenMarkup):
     *     The transaction fee due to Adyen under [Interchange ++
     *     pricing](https://www.adyen.com/knowledge-hub/interchange-fees-explained#interchange-vs-blended).
     *     -
     *     [&#x60;schemeFee&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-schemeFee):
     *     The fee paid to the card scheme for using their network. -
     *     [&#x60;interchange&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-interchange):
     *     The fee paid to the issuer for each payment transaction made with the card network. -
     *     [&#x60;adyenFees&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenFees):
     *     The aggregated amount of Adyen&#39;s commission and markup. -
     *     [&#x60;acquiringFees&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-acquiringFees):
     *     The aggregated amount of the interchange and scheme fees. If you don&#39;t include at least
     *     one transaction fee type in the &#x60;splitLogic&#x60; object, Adyen updates the payment
     *     request with the &#x60;paymentFee&#x60; parameter, booking all transaction fees to your
     *     platform&#39;s liable balance account. Possible values: **deductFromLiableAccount**,
     *     **deductFromOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_PAYMENT_FEE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public PaymentFeeEnum getPaymentFee() {
      return paymentFee;
    }
  
    /**
     * Deducts all transaction fees incurred by the payment from the specified balance account. The
     * transaction fees include the acquiring fees (interchange and scheme fee), and the fees due to
     * Adyen (markup or commission). You can book any and all these fees to different balance account
     * by specifying other transaction fee parameters in your split configuration profile: -
     * [&#x60;adyenCommission&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenCommission):
     * The transaction fee due to Adyen under [blended
     * rates](https://www.adyen.com/knowledge-hub/interchange-fees-explained#interchange-vs-blended).
     * -
     * [&#x60;adyenMarkup&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenMarkup):
     * The transaction fee due to Adyen under [Interchange ++
     * pricing](https://www.adyen.com/knowledge-hub/interchange-fees-explained#interchange-vs-blended).
     * -
     * [&#x60;schemeFee&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-schemeFee):
     * The fee paid to the card scheme for using their network. -
     * [&#x60;interchange&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-interchange):
     * The fee paid to the issuer for each payment transaction made with the card network. -
     * [&#x60;adyenFees&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenFees):
     * The aggregated amount of Adyen&#39;s commission and markup. -
     * [&#x60;acquiringFees&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-acquiringFees):
     * The aggregated amount of the interchange and scheme fees. If you don&#39;t include at least one
     * transaction fee type in the &#x60;splitLogic&#x60; object, Adyen updates the payment request
     * with the &#x60;paymentFee&#x60; parameter, booking all transaction fees to your platform&#39;s
     * liable balance account. Possible values: **deductFromLiableAccount**,
     * **deductFromOneBalanceAccount**.
     *
     * @param paymentFee Deducts all transaction fees incurred by the payment from the specified
     *     balance account. The transaction fees include the acquiring fees (interchange and scheme
     *     fee), and the fees due to Adyen (markup or commission). You can book any and all these fees
     *     to different balance account by specifying other transaction fee parameters in your split
     *     configuration profile: -
     *     [&#x60;adyenCommission&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenCommission):
     *     The transaction fee due to Adyen under [blended
     *     rates](https://www.adyen.com/knowledge-hub/interchange-fees-explained#interchange-vs-blended).
     *     -
     *     [&#x60;adyenMarkup&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenMarkup):
     *     The transaction fee due to Adyen under [Interchange ++
     *     pricing](https://www.adyen.com/knowledge-hub/interchange-fees-explained#interchange-vs-blended).
     *     -
     *     [&#x60;schemeFee&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-schemeFee):
     *     The fee paid to the card scheme for using their network. -
     *     [&#x60;interchange&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-interchange):
     *     The fee paid to the issuer for each payment transaction made with the card network. -
     *     [&#x60;adyenFees&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-adyenFees):
     *     The aggregated amount of Adyen&#39;s commission and markup. -
     *     [&#x60;acquiringFees&#x60;](https://docs.adyen.com/api-explorer/Management/latest/post/merchants/(merchantId)/splitConfigurations#request-rules-splitLogic-acquiringFees):
     *     The aggregated amount of the interchange and scheme fees. If you don&#39;t include at least
     *     one transaction fee type in the &#x60;splitLogic&#x60; object, Adyen updates the payment
     *     request with the &#x60;paymentFee&#x60; parameter, booking all transaction fees to your
     *     platform&#39;s liable balance account. Possible values: **deductFromLiableAccount**,
     *     **deductFromOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_PAYMENT_FEE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setPaymentFee(PaymentFeeEnum paymentFee) {
      this.paymentFee = paymentFee;
    }
  
    /**
     * Specifies how and from which balance account(s) to deduct the refund amount. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**, **deductAccordingToSplitRatio**
     *
     * @param refund Specifies how and from which balance account(s) to deduct the refund amount.
     *     Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**,
     *     **deductAccordingToSplitRatio**
     * @return the current {@code UpdateSplitConfigurationLogicRequest} instance, allowing for method
     *     chaining
     */
    public UpdateSplitConfigurationLogicRequest refund(RefundEnum refund) {
      this.refund = refund;
      return this;
    }
  
    /**
     * Specifies how and from which balance account(s) to deduct the refund amount. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**, **deductAccordingToSplitRatio**
     *
     * @return refund Specifies how and from which balance account(s) to deduct the refund amount.
     *     Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**,
     *     **deductAccordingToSplitRatio**
     */
    @JsonProperty(JSON_PROPERTY_REFUND)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public RefundEnum getRefund() {
      return refund;
    }
  
    /**
     * Specifies how and from which balance account(s) to deduct the refund amount. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**, **deductAccordingToSplitRatio**
     *
     * @param refund Specifies how and from which balance account(s) to deduct the refund amount.
     *     Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**,
     *     **deductAccordingToSplitRatio**
     */
    @JsonProperty(JSON_PROPERTY_REFUND)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setRefund(RefundEnum refund) {
      this.refund = refund;
    }
  
    /**
     * Deducts the refund costs from the specified balance account. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**
     *
     * @param refundCostAllocation Deducts the refund costs from the specified balance account.
     *     Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**
     * @return the current {@code UpdateSplitConfigurationLogicRequest} instance, allowing for method
     *     chaining
     */
    public UpdateSplitConfigurationLogicRequest refundCostAllocation(
        RefundCostAllocationEnum refundCostAllocation) {
      this.refundCostAllocation = refundCostAllocation;
      return this;
    }
  
    /**
     * Deducts the refund costs from the specified balance account. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**
     *
     * @return refundCostAllocation Deducts the refund costs from the specified balance account.
     *     Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**
     */
    @JsonProperty(JSON_PROPERTY_REFUND_COST_ALLOCATION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public RefundCostAllocationEnum getRefundCostAllocation() {
      return refundCostAllocation;
    }
  
    /**
     * Deducts the refund costs from the specified balance account. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**
     *
     * @param refundCostAllocation Deducts the refund costs from the specified balance account.
     *     Possible values: **deductFromLiableAccount**, **deductFromOneBalanceAccount**
     */
    @JsonProperty(JSON_PROPERTY_REFUND_COST_ALLOCATION)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setRefundCostAllocation(RefundCostAllocationEnum refundCostAllocation) {
      this.refundCostAllocation = refundCostAllocation;
    }
  
    /**
     * Books the amount left over after currency conversion to the specified balance account. Possible
     * values: **addToLiableAccount**, **addToOneBalanceAccount**.
     *
     * @param remainder Books the amount left over after currency conversion to the specified balance
     *     account. Possible values: **addToLiableAccount**, **addToOneBalanceAccount**.
     * @return the current {@code UpdateSplitConfigurationLogicRequest} instance, allowing for method
     *     chaining
     */
    public UpdateSplitConfigurationLogicRequest remainder(RemainderEnum remainder) {
      this.remainder = remainder;
      return this;
    }
  
    /**
     * Books the amount left over after currency conversion to the specified balance account. Possible
     * values: **addToLiableAccount**, **addToOneBalanceAccount**.
     *
     * @return remainder Books the amount left over after currency conversion to the specified balance
     *     account. Possible values: **addToLiableAccount**, **addToOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_REMAINDER)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public RemainderEnum getRemainder() {
      return remainder;
    }
  
    /**
     * Books the amount left over after currency conversion to the specified balance account. Possible
     * values: **addToLiableAccount**, **addToOneBalanceAccount**.
     *
     * @param remainder Books the amount left over after currency conversion to the specified balance
     *     account. Possible values: **addToLiableAccount**, **addToOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_REMAINDER)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setRemainder(RemainderEnum remainder) {
      this.remainder = remainder;
    }
  
    /**
     * Deducts the scheme fee from the specified balance account. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     *
     * @param schemeFee Deducts the scheme fee from the specified balance account. Possible values:
     *     **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     * @return the current {@code UpdateSplitConfigurationLogicRequest} instance, allowing for method
     *     chaining
     */
    public UpdateSplitConfigurationLogicRequest schemeFee(SchemeFeeEnum schemeFee) {
      this.schemeFee = schemeFee;
      return this;
    }
  
    /**
     * Deducts the scheme fee from the specified balance account. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     *
     * @return schemeFee Deducts the scheme fee from the specified balance account. Possible values:
     *     **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_SCHEME_FEE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public SchemeFeeEnum getSchemeFee() {
      return schemeFee;
    }
  
    /**
     * Deducts the scheme fee from the specified balance account. Possible values:
     * **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     *
     * @param schemeFee Deducts the scheme fee from the specified balance account. Possible values:
     *     **deductFromLiableAccount**, **deductFromOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_SCHEME_FEE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setSchemeFee(SchemeFeeEnum schemeFee) {
      this.schemeFee = schemeFee;
    }
  
    /**
     * Unique identifier of the collection of split instructions that are applied when the rule
     * conditions are met.
     *
     * @return splitLogicId Unique identifier of the collection of split instructions that are applied
     *     when the rule conditions are met.
     */
    @JsonProperty(JSON_PROPERTY_SPLIT_LOGIC_ID)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public String getSplitLogicId() {
      return splitLogicId;
    }
  
    /**
     * Books the surcharge amount to the specified balance account. Possible values:
     * **addToLiableAccount**, **addToOneBalanceAccount**
     *
     * @param surcharge Books the surcharge amount to the specified balance account. Possible values:
     *     **addToLiableAccount**, **addToOneBalanceAccount**
     * @return the current {@code UpdateSplitConfigurationLogicRequest} instance, allowing for method
     *     chaining
     */
    public UpdateSplitConfigurationLogicRequest surcharge(SurchargeEnum surcharge) {
      this.surcharge = surcharge;
      return this;
    }
  
    /**
     * Books the surcharge amount to the specified balance account. Possible values:
     * **addToLiableAccount**, **addToOneBalanceAccount**
     *
     * @return surcharge Books the surcharge amount to the specified balance account. Possible values:
     *     **addToLiableAccount**, **addToOneBalanceAccount**
     */
    @JsonProperty(JSON_PROPERTY_SURCHARGE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public SurchargeEnum getSurcharge() {
      return surcharge;
    }
  
    /**
     * Books the surcharge amount to the specified balance account. Possible values:
     * **addToLiableAccount**, **addToOneBalanceAccount**
     *
     * @param surcharge Books the surcharge amount to the specified balance account. Possible values:
     *     **addToLiableAccount**, **addToOneBalanceAccount**
     */
    @JsonProperty(JSON_PROPERTY_SURCHARGE)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setSurcharge(SurchargeEnum surcharge) {
      this.surcharge = surcharge;
    }
  
    /**
     * Books the tips (gratuity) to the specified balance account. Possible values:
     * **addToLiableAccount**, **addToOneBalanceAccount**.
     *
     * @param tip Books the tips (gratuity) to the specified balance account. Possible values:
     *     **addToLiableAccount**, **addToOneBalanceAccount**.
     * @return the current {@code UpdateSplitConfigurationLogicRequest} instance, allowing for method
     *     chaining
     */
    public UpdateSplitConfigurationLogicRequest tip(TipEnum tip) {
      this.tip = tip;
      return this;
    }
  
    /**
     * Books the tips (gratuity) to the specified balance account. Possible values:
     * **addToLiableAccount**, **addToOneBalanceAccount**.
     *
     * @return tip Books the tips (gratuity) to the specified balance account. Possible values:
     *     **addToLiableAccount**, **addToOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_TIP)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public TipEnum getTip() {
      return tip;
    }
  
    /**
     * Books the tips (gratuity) to the specified balance account. Possible values:
     * **addToLiableAccount**, **addToOneBalanceAccount**.
     *
     * @param tip Books the tips (gratuity) to the specified balance account. Possible values:
     *     **addToLiableAccount**, **addToOneBalanceAccount**.
     */
    @JsonProperty(JSON_PROPERTY_TIP)
    @JsonInclude(value = JsonInclude.Include.USE_DEFAULTS)
    public void setTip(TipEnum tip) {
      this.tip = tip;
    }
  
    /** Return true if this UpdateSplitConfigurationLogicRequest object is equal to o. */
    @Override
    public boolean equals(Object o) {
      if (this == o) {
        return true;
      }
      if (o == null || getClass() != o.getClass()) {
        return false;
      }
      UpdateSplitConfigurationLogicRequest updateSplitConfigurationLogicRequest =
          (UpdateSplitConfigurationLogicRequest) o;
      return Objects.equals(this.acquiringFees, updateSplitConfigurationLogicRequest.acquiringFees)
          && Objects.equals(
              this.additionalCommission, updateSplitConfigurationLogicRequest.additionalCommission)
          && Objects.equals(
              this.adyenCommission, updateSplitConfigurationLogicRequest.adyenCommission)
          && Objects.equals(this.adyenFees, updateSplitConfigurationLogicRequest.adyenFees)
          && Objects.equals(this.adyenMarkup, updateSplitConfigurationLogicRequest.adyenMarkup)
          && Objects.equals(this.chargeback, updateSplitConfigurationLogicRequest.chargeback)
          && Objects.equals(
              this.chargebackCostAllocation,
              updateSplitConfigurationLogicRequest.chargebackCostAllocation)
          && Objects.equals(this.commission, updateSplitConfigurationLogicRequest.commission)
          && Objects.equals(this.interchange, updateSplitConfigurationLogicRequest.interchange)
          && Objects.equals(this.paymentFee, updateSplitConfigurationLogicRequest.paymentFee)
          && Objects.equals(this.refund, updateSplitConfigurationLogicRequest.refund)
          && Objects.equals(
              this.refundCostAllocation, updateSplitConfigurationLogicRequest.refundCostAllocation)
          && Objects.equals(this.remainder, updateSplitConfigurationLogicRequest.remainder)
          && Objects.equals(this.schemeFee, updateSplitConfigurationLogicRequest.schemeFee)
          && Objects.equals(this.splitLogicId, updateSplitConfigurationLogicRequest.splitLogicId)
          && Objects.equals(this.surcharge, updateSplitConfigurationLogicRequest.surcharge)
          && Objects.equals(this.tip, updateSplitConfigurationLogicRequest.tip);
    }
  
    @Override
    public int hashCode() {
      return Objects.hash(
          acquiringFees,
          additionalCommission,
          adyenCommission,
          adyenFees,
          adyenMarkup,
          chargeback,
          chargebackCostAllocation,
          commission,
          interchange,
          paymentFee,
          refund,
          refundCostAllocation,
          remainder,
          schemeFee,
          splitLogicId,
          surcharge,
          tip);
    }
  
    @Override
    public String toString() {
      StringBuilder sb = new StringBuilder();
      sb.append("class UpdateSplitConfigurationLogicRequest {\n");
      sb.append("    acquiringFees: ").append(toIndentedString(acquiringFees)).append("\n");
      sb.append("    additionalCommission: ")
          .append(toIndentedString(additionalCommission))
          .append("\n");
      sb.append("    adyenCommission: ").append(toIndentedString(adyenCommission)).append("\n");
      sb.append("    adyenFees: ").append(toIndentedString(adyenFees)).append("\n");
      sb.append("    adyenMarkup: ").append(toIndentedString(adyenMarkup)).append("\n");
      sb.append("    chargeback: ").append(toIndentedString(chargeback)).append("\n");
      sb.append("    chargebackCostAllocation: ")
          .append(toIndentedString(chargebackCostAllocation))
          .append("\n");
      sb.append("    commission: ").append(toIndentedString(commission)).append("\n");
      sb.append("    interchange: ").append(toIndentedString(interchange)).append("\n");
      sb.append("    paymentFee: ").append(toIndentedString(paymentFee)).append("\n");
      sb.append("    refund: ").append(toIndentedString(refund)).append("\n");
      sb.append("    refundCostAllocation: ")
          .append(toIndentedString(refundCostAllocation))
          .append("\n");
      sb.append("    remainder: ").append(toIndentedString(remainder)).append("\n");
      sb.append("    schemeFee: ").append(toIndentedString(schemeFee)).append("\n");
      sb.append("    splitLogicId: ").append(toIndentedString(splitLogicId)).append("\n");
      sb.append("    surcharge: ").append(toIndentedString(surcharge)).append("\n");
      sb.append("    tip: ").append(toIndentedString(tip)).append("\n");
      sb.append("}");
      return sb.toString();
    }
  
    /**
     * Convert the given object to string with each line indented by 4 spaces (except the first line).
     */
    private String toIndentedString(Object o) {
      if (o == null) {
        return "null";
      }
      return o.toString().replace("\n", "\n    ");
    }
  
    /**
     * Create an instance of UpdateSplitConfigurationLogicRequest given an JSON string
     *
     * @param jsonString JSON string
     * @return An instance of UpdateSplitConfigurationLogicRequest
     * @throws JsonProcessingException if the JSON string is invalid with respect to
     *     UpdateSplitConfigurationLogicRequest
     */
    public static UpdateSplitConfigurationLogicRequest fromJson(String jsonString)
        throws JsonProcessingException {
      return JSON.getMapper().readValue(jsonString, UpdateSplitConfigurationLogicRequest.class);
    }
  
    /**
     * Convert an instance of UpdateSplitConfigurationLogicRequest to an JSON string
     *
     * @return JSON string
     */
    public String toJson() throws JsonProcessingException {
      return JSON.getMapper().writeValueAsString(this);
    }
  }
  