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

from __future__ import annotations
from .achcreditsamedaytransferpaymentmethod import (
    AchCreditSameDayTransferPaymentMethod,
    AchCreditSameDayTransferPaymentMethodTypedDict,
)
from .achcreditstandardtransferpaymentmethod import (
    AchCreditStandardTransferPaymentMethod,
    AchCreditStandardTransferPaymentMethodTypedDict,
)
from .achdebitcollecttransferpaymentmethod import (
    AchDebitCollectTransferPaymentMethod,
    AchDebitCollectTransferPaymentMethodTypedDict,
)
from .achdebitfundtransferpaymentmethod import (
    AchDebitFundTransferPaymentMethod,
    AchDebitFundTransferPaymentMethodTypedDict,
)
from .applepaytransferpaymentmethod import (
    ApplePayTransferPaymentMethod,
    ApplePayTransferPaymentMethodTypedDict,
)
from .cardpaymenttransferpaymentmethod import (
    CardPaymentTransferPaymentMethod,
    CardPaymentTransferPaymentMethodTypedDict,
)
from .cardpresentpaymenttransferpaymentmethod import (
    CardPresentPaymentTransferPaymentMethod,
    CardPresentPaymentTransferPaymentMethodTypedDict,
)
from .instantbankcredittransferpaymentmethod import (
    InstantBankCreditTransferPaymentMethod,
    InstantBankCreditTransferPaymentMethodTypedDict,
)
from .moovwallettransferpaymentmethod import (
    MoovWalletTransferPaymentMethod,
    MoovWalletTransferPaymentMethodTypedDict,
)
from .pullfromcardtransferpaymentmethod import (
    PullFromCardTransferPaymentMethod,
    PullFromCardTransferPaymentMethodTypedDict,
)
from .pushtocardtransferpaymentmethod import (
    PushToCardTransferPaymentMethod,
    PushToCardTransferPaymentMethodTypedDict,
)
from .rtpcredittransferpaymentmethod import (
    RtpCreditTransferPaymentMethod,
    RtpCreditTransferPaymentMethodTypedDict,
)
from moovio_sdk.utils import get_discriminator
from pydantic import Discriminator, Tag
from typing import Union
from typing_extensions import Annotated, TypeAliasType


TransferPaymentMethodTypedDict = TypeAliasType(
    "TransferPaymentMethodTypedDict",
    Union[
        MoovWalletTransferPaymentMethodTypedDict,
        AchDebitFundTransferPaymentMethodTypedDict,
        AchDebitCollectTransferPaymentMethodTypedDict,
        AchCreditStandardTransferPaymentMethodTypedDict,
        AchCreditSameDayTransferPaymentMethodTypedDict,
        RtpCreditTransferPaymentMethodTypedDict,
        CardPaymentTransferPaymentMethodTypedDict,
        PushToCardTransferPaymentMethodTypedDict,
        PullFromCardTransferPaymentMethodTypedDict,
        ApplePayTransferPaymentMethodTypedDict,
        CardPresentPaymentTransferPaymentMethodTypedDict,
        InstantBankCreditTransferPaymentMethodTypedDict,
    ],
)
r"""A method of moving money"""


TransferPaymentMethod = Annotated[
    Union[
        Annotated[MoovWalletTransferPaymentMethod, Tag("moov-wallet")],
        Annotated[AchDebitFundTransferPaymentMethod, Tag("ach-debit-fund")],
        Annotated[AchDebitCollectTransferPaymentMethod, Tag("ach-debit-collect")],
        Annotated[AchCreditStandardTransferPaymentMethod, Tag("ach-credit-standard")],
        Annotated[AchCreditSameDayTransferPaymentMethod, Tag("ach-credit-same-day")],
        Annotated[RtpCreditTransferPaymentMethod, Tag("rtp-credit")],
        Annotated[CardPaymentTransferPaymentMethod, Tag("card-payment")],
        Annotated[PushToCardTransferPaymentMethod, Tag("push-to-card")],
        Annotated[PullFromCardTransferPaymentMethod, Tag("pull-from-card")],
        Annotated[ApplePayTransferPaymentMethod, Tag("apple-pay")],
        Annotated[CardPresentPaymentTransferPaymentMethod, Tag("card-present-payment")],
        Annotated[InstantBankCreditTransferPaymentMethod, Tag("instant-bank-credit")],
    ],
    Discriminator(
        lambda m: get_discriminator(m, "payment_method_type", "paymentMethodType")
    ),
]
r"""A method of moving money"""
