package com.adyen.model.nexo;

import io.swagger.v3.oas.annotations.media.Schema;

import javax.xml.bind.annotation.XmlAccessType;
import javax.xml.bind.annotation.XmlAccessorType;
import javax.xml.bind.annotation.XmlElement;
import javax.xml.bind.annotation.XmlType;


/**
 * Definition: Data related to the instrument of payment for the transaction. -- Usage: Sent in the result of the payment transaction. For a card, it could also be sent in the CardAcquisition response, to be processed by the Sale System. In this case, the card or type of card has to be configured to have this behaviour. It is
 *
 * <p>Java class for PaymentInstrumentData complex type.
 *
 * <p>The following schema fragment specifies the expected content contained within this class.
 *
 * <pre>
 * &lt;complexType name="PaymentInstrumentData"&gt;
 *   &lt;complexContent&gt;
 *     &lt;restriction base="{http://www.w3.org/2001/XMLSchema}anyType"&gt;
 *       &lt;sequence&gt;
 *         &lt;element name="CardData" type="{}CardData" minOccurs="0"/&gt;
 *         &lt;element name="CheckData" type="{}CheckData" minOccurs="0"/&gt;
 *         &lt;element name="MobileData" type="{}MobileData" minOccurs="0"/&gt;
 *       &lt;/sequence&gt;
 *       &lt;attribute name="PaymentInstrument" use="required" type="{}PaymentInstrumentType" /&gt;
 *     &lt;/restriction&gt;
 *   &lt;/complexContent&gt;
 * &lt;/complexType&gt;
 * </pre>
 */
@XmlAccessorType(XmlAccessType.FIELD)
@XmlType(name = "PaymentInstrumentData", propOrder = {
        "cardData",
        "checkData",
        "mobileData"
})
public class PaymentInstrumentData {

    /**
     * The Card data.
     */
    @XmlElement(name = "CardData")
    @Schema(description = "Information related to the payment card used for the transaction. --Rule: If PaymentInstrumentType is \"Card\"")
    protected CardData cardData;
    /**
     * The Check data.
     */
    @XmlElement(name = "CheckData")
    @Schema(description = "Information related to the paper check used for the transaction. --Rule: If PaymentInstrumentType is \"Check\"")
    protected CheckData checkData;
    /**
     * The Mobile data.
     */
    @XmlElement(name = "MobileData")
    @Schema(description = "Information related to the mobile for the payment transaction. --Rule: If PaymentInstrumentType is \"Mobile\"")
    protected MobileData mobileData;
    /**
     * The Payment instrument.
     */
    @XmlElement(name = "PaymentInstrumentType", required = true)
    @Schema(description = "Type of payment instrument.")
    protected PaymentInstrumentType paymentInstrumentType;
    /**
     * The Stored value account id.
     */
    @XmlElement(name = "StoredValueAccountID")
    protected StoredValueAccountID storedValueAccountID;
    /**
     * The Protected card data.
     */
    @XmlElement(name = "ProtectedCardData")
    protected ContentInformation protectedCardData;

    /**
     * Gets the value of the cardData property.
     *
     * @return possible      object is     {@link CardData }
     */
    public CardData getCardData() {
        return cardData;
    }

    /**
     * Sets the value of the cardData property.
     *
     * @param value allowed object is     {@link CardData }
     */
    public void setCardData(CardData value) {
        this.cardData = value;
    }

    /**
     * Gets the value of the checkData property.
     *
     * @return possible      object is     {@link CheckData }
     */
    public CheckData getCheckData() {
        return checkData;
    }

    /**
     * Sets the value of the checkData property.
     *
     * @param value allowed object is     {@link CheckData }
     */
    public void setCheckData(CheckData value) {
        this.checkData = value;
    }

    /**
     * Gets the value of the mobileData property.
     *
     * @return possible      object is     {@link MobileData }
     */
    public MobileData getMobileData() {
        return mobileData;
    }

    /**
     * Sets the value of the mobileData property.
     *
     * @param value allowed object is     {@link MobileData }
     */
    public void setMobileData(MobileData value) {
        this.mobileData = value;
    }

    /**
     * Gets the value of the paymentInstrumentType property.
     *
     * @return possible      object is     {@link PaymentInstrumentType }
     */
    public PaymentInstrumentType getPaymentInstrumentType() {
        return paymentInstrumentType;
    }

    /**
     * Sets the value of the paymentInstrumentType property.
     *
     * @param value allowed object is     {@link PaymentInstrumentType }
     */
    public void setPaymentInstrumentType(PaymentInstrumentType value) {
        this.paymentInstrumentType = value;
    }

    /**
     * Gets the value of the storedValueAccountID property.
     *
     * @return possible      object is     {@link StoredValueAccountID }
     */
    public StoredValueAccountID getStoredValueAccountID() {
        return storedValueAccountID;
    }

    /**
     * Sets the value of the storedValueAccountID property.
     *
     * @param value allowed object is     {@link StoredValueAccountID }
     */
    public void setStoredValueAccountID(StoredValueAccountID value) {
        this.storedValueAccountID = value;
    }

    /**
     * Gets the value of the protectedCardData property.
     *
     * @return possible      object is     {@link ContentInformation }
     */
    public ContentInformation getProtectedCardData() {
        return protectedCardData;
    }

    /**
     * Sets the value of the protectedCardData property.
     *
     * @param value allowed object is     {@link ContentInformation }
     */
    public void setProtectedCardData(ContentInformation value) {
        this.protectedCardData = value;
    }
}

@@ -2839,34 +2839,22 @@
 otected 
-ContentInformation
+String
  protect
@@ -5343,34 +5343,22 @@
  %7B@link 
-ContentInformation
+String
  %7D%0A     
@@ -5371,34 +5371,22 @@
  public 
-ContentInformation
+String
  getProt
@@ -5565,34 +5565,22 @@
  %7B@link 
-ContentInformation
+String
  %7D%0A     
@@ -5623,26 +5623,14 @@
 ata(
-ContentInformation
+String
  val

change ProtectedCardData type from ContentInformation to String due to terminal implementation