"""Code generated by Speakeasy (https://speakeasy.com). DO NOT EDIT."""

from __future__ import annotations
from .transferpaymentmethodsbankaccount import (
    TransferPaymentMethodsBankAccount,
    TransferPaymentMethodsBankAccountTypedDict,
)
from enum import Enum
from moovio_sdk.types import BaseModel
import pydantic
from typing_extensions import Annotated, TypedDict


class InstantBankCreditTransferPaymentMethodPaymentMethodType(str, Enum):
    INSTANT_BANK_CREDIT = "instant-bank-credit"


class InstantBankCreditTransferPaymentMethodTypedDict(TypedDict):
    r"""Instantly send funds to a bank account."""

    payment_method_id: str
    r"""ID of the payment method."""
    payment_method_type: InstantBankCreditTransferPaymentMethodPaymentMethodType
    bank_account: TransferPaymentMethodsBankAccountTypedDict
    r"""A bank account as contained within a payment method."""


class InstantBankCreditTransferPaymentMethod(BaseModel):
    r"""Instantly send funds to a bank account."""

    payment_method_id: Annotated[str, pydantic.Field(alias="paymentMethodID")]
    r"""ID of the payment method."""

    payment_method_type: Annotated[
        InstantBankCreditTransferPaymentMethodPaymentMethodType,
        pydantic.Field(alias="paymentMethodType"),
    ]

    bank_account: Annotated[
        TransferPaymentMethodsBankAccount, pydantic.Field(alias="bankAccount")
    ]
    r"""A bank account as contained within a payment method."""


try:
    InstantBankCreditTransferPaymentMethod.model_rebuild()
except NameError:
    pass
