/*
 * The version of the OpenAPI document: v69
 * Contact: developer-experience@adyen.com
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit this class manually.
 */


export class CardDetails {
    /**
    * Secondary brand of the card. For example: **plastix**, **hmclub**.
    */
    'brand'?: string;
    'cupsecureplusSmscode'?: string;
    /**
    * The card verification code. Only collect raw card data if you are [fully PCI compliant](https://docs.adyen.com/development-resources/pci-dss-compliance-guide).
    */
    'cvc'?: string;
    /**
    * The encrypted card number.
    */
    'encryptedCardNumber': string;
    /**
    * The encrypted card expiry month.
    */
    'encryptedExpiryMonth': string;
    /**
    * The encrypted card expiry year.
    */
    'encryptedExpiryYear': string;
    /**
    * The encrypted card verification code.
    */
    'encryptedSecurityCode'?: string;
    /**
    * The card expiry month. Only collect raw card data if you are [fully PCI compliant](https://docs.adyen.com/development-resources/pci-dss-compliance-guide).
    */
    'expiryMonth'?: string;
    /**
    * The card expiry year. Only collect raw card data if you are [fully PCI compliant](https://docs.adyen.com/development-resources/pci-dss-compliance-guide).
    */
    'expiryYear'?: string;
    /**
    * The funding source that should be used when multiple sources are available. For Brazilian combo cards, by default the funding source is credit. To use debit, set this value to **debit**.
    */
    'fundingSource'?: CardDetails.FundingSourceEnum;
    /**
    * The name of the card holder.
    */
    'holderName'?: string;
    /**
    * The network token reference. This is the [`networkTxReference`](https://docs.adyen.com/api-explorer/#/CheckoutService/latest/post/payments__resParam_additionalData-ResponseAdditionalDataCommon-networkTxReference) from the response to the first payment.
    */
    'networkPaymentReference'?: string;
    /**
    * The card number. Only collect raw card data if you are [fully PCI compliant](https://docs.adyen.com/development-resources/pci-dss-compliance-guide).
    */
    'number'?: string;
    /**
    * This is the `recurringDetailReference` returned in the response when you created the token.
    */
    'recurringDetailReference'?: string;
    /**
    * The `shopperNotificationReference` returned in the response when you requested to notify the shopper. Used only for recurring payments in India.
    */
    'shopperNotificationReference'?: string;
    /**
    * This is the `recurringDetailReference` returned in the response when you created the token.
    */
    'storedPaymentMethodId'?: string;
    /**
    * Version of the 3D Secure 2 mobile SDK.
    */
    'threeDS2SdkVersion'?: string;
    /**
    * Default payment method details. Common for scheme payment methods, and for simple payment method details.
    */
    'type'?: CardDetails.TypeEnum;

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "brand",
            "baseName": "brand",
            "type": "string"
        },
        {
            "name": "cupsecureplusSmscode",
            "baseName": "cupsecureplus.smscode",
            "type": "string"
        },
        {
            "name": "cvc",
            "baseName": "cvc",
            "type": "string"
        },
        {
            "name": "encryptedCardNumber",
            "baseName": "encryptedCardNumber",
            "type": "string"
        },
        {
            "name": "encryptedExpiryMonth",
            "baseName": "encryptedExpiryMonth",
            "type": "string"
        },
        {
            "name": "encryptedExpiryYear",
            "baseName": "encryptedExpiryYear",
            "type": "string"
        },
        {
            "name": "encryptedSecurityCode",
            "baseName": "encryptedSecurityCode",
            "type": "string"
        },
        {
            "name": "expiryMonth",
            "baseName": "expiryMonth",
            "type": "string"
        },
        {
            "name": "expiryYear",
            "baseName": "expiryYear",
            "type": "string"
        },
        {
            "name": "fundingSource",
            "baseName": "fundingSource",
            "type": "CardDetails.FundingSourceEnum"
        },
        {
            "name": "holderName",
            "baseName": "holderName",
            "type": "string"
        },
        {
            "name": "networkPaymentReference",
            "baseName": "networkPaymentReference",
            "type": "string"
        },
        {
            "name": "number",
            "baseName": "number",
            "type": "string"
        },
        {
            "name": "recurringDetailReference",
            "baseName": "recurringDetailReference",
            "type": "string"
        },
        {
            "name": "shopperNotificationReference",
            "baseName": "shopperNotificationReference",
            "type": "string"
        },
        {
            "name": "storedPaymentMethodId",
            "baseName": "storedPaymentMethodId",
            "type": "string"
        },
        {
            "name": "threeDS2SdkVersion",
            "baseName": "threeDS2SdkVersion",
            "type": "string"
        },
        {
            "name": "type",
            "baseName": "type",
            "type": "CardDetails.TypeEnum"
        }    ];

    static getAttributeTypeMap() {
        return CardDetails.attributeTypeMap;
    }
}

export namespace CardDetails {
    export enum FundingSourceEnum {
        Debit = <any> 'debit'
    }
    export enum TypeEnum {
        Scheme = <any> 'scheme',
        NetworkToken = <any> 'networkToken',
        Giftcard = <any> 'giftcard',
        Alliancedata = <any> 'alliancedata',
        Card = <any> 'card',
        Qiwiwallet = <any> 'qiwiwallet',
        LianlianpayEbankingEnterprise = <any> 'lianlianpay_ebanking_enterprise',
        LianlianpayEbankingCredit = <any> 'lianlianpay_ebanking_credit',
        LianlianpayEbankingDebit = <any> 'lianlianpay_ebanking_debit',
        Entercash = <any> 'entercash'
    }
}
