# 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 ReversalReason(
    schemas.EnumBase,
    schemas.StrSchema
):
    """NOTE: This class is auto generated by OpenAPI Generator.
    Ref: https://openapi-generator.tech

    Do not edit the class manually.

    Enumerated reason for a returned payment. Providing this reason in the request is recommended (to improve risk evaluation) but not required.
    """


    class MetaOapg:
        enum_value_to_name = {
            "duplicate": "DUPLICATE",
            "fraudulent": "FRAUDULENT",
            "requested_by_customer": "REQUESTED_BY_CUSTOMER",
            "bank_transaction_error": "BANK_TRANSACTION_ERROR",
            "invalid_account_number": "INVALID_ACCOUNT_NUMBER",
            "insufficient_funds": "INSUFFICIENT_FUNDS",
            "payment_stopped_by_issuer": "PAYMENT_STOPPED_BY_ISSUER",
            "payment_returned": "PAYMENT_RETURNED",
            "bank_account_ineligible": "BANK_ACCOUNT_INELIGIBLE",
            "invalid_ach_rtn": "INVALID_ACH_RTN",
            "unauthorized_transaction": "UNAUTHORIZED_TRANSACTION",
            "payment_failed": "PAYMENT_FAILED",
        }
    
    @schemas.classproperty
    def DUPLICATE(cls):
        return cls("duplicate")
    
    @schemas.classproperty
    def FRAUDULENT(cls):
        return cls("fraudulent")
    
    @schemas.classproperty
    def REQUESTED_BY_CUSTOMER(cls):
        return cls("requested_by_customer")
    
    @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 INSUFFICIENT_FUNDS(cls):
        return cls("insufficient_funds")
    
    @schemas.classproperty
    def PAYMENT_STOPPED_BY_ISSUER(cls):
        return cls("payment_stopped_by_issuer")
    
    @schemas.classproperty
    def PAYMENT_RETURNED(cls):
        return cls("payment_returned")
    
    @schemas.classproperty
    def BANK_ACCOUNT_INELIGIBLE(cls):
        return cls("bank_account_ineligible")
    
    @schemas.classproperty
    def INVALID_ACH_RTN(cls):
        return cls("invalid_ach_rtn")
    
    @schemas.classproperty
    def UNAUTHORIZED_TRANSACTION(cls):
        return cls("unauthorized_transaction")
    
    @schemas.classproperty
    def PAYMENT_FAILED(cls):
        return cls("payment_failed")
