# coding: utf-8

"""
    Generated by: https://openapi-generator.tech
"""

from datetime import date, datetime  # noqa: F401
import decimal  # noqa: F401
import functools  # noqa: F401
import io  # noqa: F401
import re  # noqa: F401
import typing  # noqa: F401
import typing_extensions  # noqa: F401
import uuid  # noqa: F401

import frozendict  # noqa: F401

from circle import schemas  # noqa: F401


class PaymentErrorCode(
    schemas.EnumBase,
    schemas.StrBase,
    schemas.NoneBase,
    schemas.Schema,
    schemas.NoneStrMixin
):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.

    Indicates the failure reason of a payment. Only present for payments in failed state. Possible values are [`payment_failed`, `payment_fraud_detected`, `payment_denied`, `payment_not_supported_by_issuer`, `payment_not_funded`, `payment_unprocessable`, `payment_stopped_by_issuer`, `payment_canceled`, `payment_returned`, `payment_failed_balance_check`, `card_failed`, `card_invalid`, `card_address_mismatch`, `card_zip_mismatch`, `card_cvv_invalid`, `card_expired`, `card_limit_violated`, `card_not_honored`, `card_cvv_required`, `credit_card_not_allowed`, `card_account_ineligible`, `card_network_unsupported`, `channel_invalid`, `unauthorized_transaction`, `bank_account_ineligible`, `bank_transaction_error`, `invalid_account_number`, `invalid_wire_rtn`, `invalid_ach_rtn`, `vendor_inactive`]'
    """


    class MetaOapg:
        enum_value_to_name = {
            "payment_failed": "PAYMENT_FAILED",
            "payment_fraud_detected": "PAYMENT_FRAUD_DETECTED",
            "payment_denied": "PAYMENT_DENIED",
            "payment_not_supported_by_issuer": "PAYMENT_NOT_SUPPORTED_BY_ISSUER",
            "payment_not_funded": "PAYMENT_NOT_FUNDED",
            "payment_unprocessable": "PAYMENT_UNPROCESSABLE",
            "payment_stopped_by_issuer": "PAYMENT_STOPPED_BY_ISSUER",
            "payment_canceled": "PAYMENT_CANCELED",
            "payment_returned": "PAYMENT_RETURNED",
            "payment_failed_balance_check": "PAYMENT_FAILED_BALANCE_CHECK",
            "card_failed": "CARD_FAILED",
            "card_invalid": "CARD_INVALID",
            "card_address_mismatch": "CARD_ADDRESS_MISMATCH",
            "card_zip_mismatch": "CARD_ZIP_MISMATCH",
            "card_cvv_invalid": "CARD_CVV_INVALID",
            "card_expired": "CARD_EXPIRED",
            "card_limit_violated": "CARD_LIMIT_VIOLATED",
            "card_not_honored": "CARD_NOT_HONORED",
            "card_cvv_required": "CARD_CVV_REQUIRED",
            "card_restricted,": "CARD_RESTRICTED",
            "card_account_ineligible": "CARD_ACCOUNT_INELIGIBLE",
            "card_network_unsupported": "CARD_NETWORK_UNSUPPORTED",
            "channel_invalid": "CHANNEL_INVALID",
            "unauthorized_transaction": "UNAUTHORIZED_TRANSACTION",
            "bank_account_ineligible": "BANK_ACCOUNT_INELIGIBLE",
            "bank_transaction_error": "BANK_TRANSACTION_ERROR",
            "invalid_account_number": "INVALID_ACCOUNT_NUMBER",
            "invalid_wire_rtn": "INVALID_WIRE_RTN",
            "invalid_ach_rtn": "INVALID_ACH_RTN",
            "ref_id_invalid": "REF_ID_INVALID",
            "account_name_mismatch": "ACCOUNT_NAME_MISMATCH",
            "account_number_mismatch": "ACCOUNT_NUMBER_MISMATCH",
            "account_ineligible": "ACCOUNT_INELIGIBLE",
            "wallet_address_mismatch": "WALLET_ADDRESS_MISMATCH",
            "customer_name_mismatch": "CUSTOMER_NAME_MISMATCH",
            "institution_name_mismatch": "INSTITUTION_NAME_MISMATCH",
            "vendor_inactive": "VENDOR_INACTIVE",
        }
    
    @schemas.classproperty
    def PAYMENT_FAILED(cls):
        return cls("payment_failed")
    
    @schemas.classproperty
    def PAYMENT_FRAUD_DETECTED(cls):
        return cls("payment_fraud_detected")
    
    @schemas.classproperty
    def PAYMENT_DENIED(cls):
        return cls("payment_denied")
    
    @schemas.classproperty
    def PAYMENT_NOT_SUPPORTED_BY_ISSUER(cls):
        return cls("payment_not_supported_by_issuer")
    
    @schemas.classproperty
    def PAYMENT_NOT_FUNDED(cls):
        return cls("payment_not_funded")
    
    @schemas.classproperty
    def PAYMENT_UNPROCESSABLE(cls):
        return cls("payment_unprocessable")
    
    @schemas.classproperty
    def PAYMENT_STOPPED_BY_ISSUER(cls):
        return cls("payment_stopped_by_issuer")
    
    @schemas.classproperty
    def PAYMENT_CANCELED(cls):
        return cls("payment_canceled")
    
    @schemas.classproperty
    def PAYMENT_RETURNED(cls):
        return cls("payment_returned")
    
    @schemas.classproperty
    def PAYMENT_FAILED_BALANCE_CHECK(cls):
        return cls("payment_failed_balance_check")
    
    @schemas.classproperty
    def CARD_FAILED(cls):
        return cls("card_failed")
    
    @schemas.classproperty
    def CARD_INVALID(cls):
        return cls("card_invalid")
    
    @schemas.classproperty
    def CARD_ADDRESS_MISMATCH(cls):
        return cls("card_address_mismatch")
    
    @schemas.classproperty
    def CARD_ZIP_MISMATCH(cls):
        return cls("card_zip_mismatch")
    
    @schemas.classproperty
    def CARD_CVV_INVALID(cls):
        return cls("card_cvv_invalid")
    
    @schemas.classproperty
    def CARD_EXPIRED(cls):
        return cls("card_expired")
    
    @schemas.classproperty
    def CARD_LIMIT_VIOLATED(cls):
        return cls("card_limit_violated")
    
    @schemas.classproperty
    def CARD_NOT_HONORED(cls):
        return cls("card_not_honored")
    
    @schemas.classproperty
    def CARD_CVV_REQUIRED(cls):
        return cls("card_cvv_required")
    
    @schemas.classproperty
    def CARD_RESTRICTED(cls):
        return cls("card_restricted,")
    
    @schemas.classproperty
    def CARD_ACCOUNT_INELIGIBLE(cls):
        return cls("card_account_ineligible")
    
    @schemas.classproperty
    def CARD_NETWORK_UNSUPPORTED(cls):
        return cls("card_network_unsupported")
    
    @schemas.classproperty
    def CHANNEL_INVALID(cls):
        return cls("channel_invalid")
    
    @schemas.classproperty
    def UNAUTHORIZED_TRANSACTION(cls):
        return cls("unauthorized_transaction")
    
    @schemas.classproperty
    def BANK_ACCOUNT_INELIGIBLE(cls):
        return cls("bank_account_ineligible")
    
    @schemas.classproperty
    def BANK_TRANSACTION_ERROR(cls):
        return cls("bank_transaction_error")
    
    @schemas.classproperty
    def INVALID_ACCOUNT_NUMBER(cls):
        return cls("invalid_account_number")
    
    @schemas.classproperty
    def INVALID_WIRE_RTN(cls):
        return cls("invalid_wire_rtn")
    
    @schemas.classproperty
    def INVALID_ACH_RTN(cls):
        return cls("invalid_ach_rtn")
    
    @schemas.classproperty
    def REF_ID_INVALID(cls):
        return cls("ref_id_invalid")
    
    @schemas.classproperty
    def ACCOUNT_NAME_MISMATCH(cls):
        return cls("account_name_mismatch")
    
    @schemas.classproperty
    def ACCOUNT_NUMBER_MISMATCH(cls):
        return cls("account_number_mismatch")
    
    @schemas.classproperty
    def ACCOUNT_INELIGIBLE(cls):
        return cls("account_ineligible")
    
    @schemas.classproperty
    def WALLET_ADDRESS_MISMATCH(cls):
        return cls("wallet_address_mismatch")
    
    @schemas.classproperty
    def CUSTOMER_NAME_MISMATCH(cls):
        return cls("customer_name_mismatch")
    
    @schemas.classproperty
    def INSTITUTION_NAME_MISMATCH(cls):
        return cls("institution_name_mismatch")
    
    @schemas.classproperty
    def VENDOR_INACTIVE(cls):
        return cls("vendor_inactive")


    def __new__(
        cls,
        *_args: typing.Union[None, str, ],
        _configuration: typing.Optional[schemas.Configuration] = None,
    ) -> 'PaymentErrorCode':
        return super().__new__(
            cls,
            *_args,
            _configuration=_configuration,
        )
