# 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 PayoutErrorCode(
    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 payout. Only present for payouts in failed state. Possible values are [`insufficient_funds`, `transaction_denied`, `transaction_failed`, `transaction_returned`, `bank_transaction_error`, `fiat_account_limit_exceeded`, `invalid_bank_account_number`, `invalid_ach_rtn`, `invalid_wire_rtn`, `vendor_inactive`]'
    """


    class MetaOapg:
        enum_value_to_name = {
            "insufficient_funds": "INSUFFICIENT_FUNDS",
            "transaction_denied": "TRANSACTION_DENIED",
            "transaction_failed": "TRANSACTION_FAILED",
            "transaction_returned": "TRANSACTION_RETURNED",
            "bank_transaction_error": "BANK_TRANSACTION_ERROR",
            "fiat_account_limit_exceeded": "FIAT_ACCOUNT_LIMIT_EXCEEDED",
            "invalid_bank_account_number": "INVALID_BANK_ACCOUNT_NUMBER",
            "invalid_ach_rtn": "INVALID_ACH_RTN",
            "invalid_wire_rtn": "INVALID_WIRE_RTN",
            "vendor_inactive": "VENDOR_INACTIVE",
        }
    
    @schemas.classproperty
    def INSUFFICIENT_FUNDS(cls):
        return cls("insufficient_funds")
    
    @schemas.classproperty
    def TRANSACTION_DENIED(cls):
        return cls("transaction_denied")
    
    @schemas.classproperty
    def TRANSACTION_FAILED(cls):
        return cls("transaction_failed")
    
    @schemas.classproperty
    def TRANSACTION_RETURNED(cls):
        return cls("transaction_returned")
    
    @schemas.classproperty
    def BANK_TRANSACTION_ERROR(cls):
        return cls("bank_transaction_error")
    
    @schemas.classproperty
    def FIAT_ACCOUNT_LIMIT_EXCEEDED(cls):
        return cls("fiat_account_limit_exceeded")
    
    @schemas.classproperty
    def INVALID_BANK_ACCOUNT_NUMBER(cls):
        return cls("invalid_bank_account_number")
    
    @schemas.classproperty
    def INVALID_ACH_RTN(cls):
        return cls("invalid_ach_rtn")
    
    @schemas.classproperty
    def INVALID_WIRE_RTN(cls):
        return cls("invalid_wire_rtn")
    
    @schemas.classproperty
    def VENDOR_INACTIVE(cls):
        return cls("vendor_inactive")


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