/*
 * 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.
 */

import { InputDetail } from './inputDetail';
import { PaymentMethodGroup } from './paymentMethodGroup';
import { PaymentMethodIssuer } from './paymentMethodIssuer';

export class PaymentMethod {
    /**
    * Brand for the selected gift card. For example: plastix, hmclub.
    */
    'brand'?: string;
    /**
    * List of possible brands. For example: visa, mc.
    */
    'brands'?: Array<string>;
    /**
    * The configuration of the payment method.
    */
    'configuration'?: { [key: string]: string; };
    /**
    * The funding source of the payment method.
    */
    'fundingSource'?: PaymentMethod.FundingSourceEnum;
    'group'?: PaymentMethodGroup;
    /**
    * All input details to be provided to complete the payment with this payment method.
    */
    'inputDetails'?: Array<InputDetail>;
    /**
    * A list of issuers for this payment method.
    */
    'issuers'?: Array<PaymentMethodIssuer>;
    /**
    * The displayable name of this payment method.
    */
    'name'?: string;
    /**
    * The unique payment method code.
    */
    'type'?: string;

    static discriminator: string | undefined = undefined;

    static attributeTypeMap: Array<{name: string, baseName: string, type: string}> = [
        {
            "name": "brand",
            "baseName": "brand",
            "type": "string"
        },
        {
            "name": "brands",
            "baseName": "brands",
            "type": "Array<string>"
        },
        {
            "name": "configuration",
            "baseName": "configuration",
            "type": "{ [key: string]: string; }"
        },
        {
            "name": "fundingSource",
            "baseName": "fundingSource",
            "type": "PaymentMethod.FundingSourceEnum"
        },
        {
            "name": "group",
            "baseName": "group",
            "type": "PaymentMethodGroup"
        },
        {
            "name": "inputDetails",
            "baseName": "inputDetails",
            "type": "Array<InputDetail>"
        },
        {
            "name": "issuers",
            "baseName": "issuers",
            "type": "Array<PaymentMethodIssuer>"
        },
        {
            "name": "name",
            "baseName": "name",
            "type": "string"
        },
        {
            "name": "type",
            "baseName": "type",
            "type": "string"
        }    ];

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

export namespace PaymentMethod {
    export enum FundingSourceEnum {
        Debit = <any> 'debit'
    }
}
