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

from __future__ import annotations
from .retirementdistributioncreate import (
    RetirementDistributionCreate,
    RetirementDistributionCreateTypedDict,
)
from .wirewithdrawal_beneficiarycreate import (
    WireWithdrawalBeneficiaryCreate,
    WireWithdrawalBeneficiaryCreateTypedDict,
)
from .wirewithdrawal_intermediarycreate import (
    WireWithdrawalIntermediaryCreate,
    WireWithdrawalIntermediaryCreateTypedDict,
)
from .wirewithdrawal_recipientbankcreate import (
    WireWithdrawalRecipientBankCreate,
    WireWithdrawalRecipientBankCreateTypedDict,
)
from .withdrawalscheduledetailscreate import (
    WithdrawalScheduleDetailsCreate,
    WithdrawalScheduleDetailsCreateTypedDict,
)
from ascend_sdk.types import BaseModel
from typing import Optional
from typing_extensions import NotRequired, TypedDict


class WireWithdrawalScheduleCreateTypedDict(TypedDict):
    r"""A withdrawal transfer schedule using the Wire mechanism"""

    beneficiary: WireWithdrawalBeneficiaryCreateTypedDict
    r"""The person or entity taking receipt of the wired funds"""
    recipient_bank: WireWithdrawalRecipientBankCreateTypedDict
    r"""A recipient bank / financial institution"""
    schedule_details: WithdrawalScheduleDetailsCreateTypedDict
    r"""Details of withdrawal schedule transfers"""
    intermediary: NotRequired[WireWithdrawalIntermediaryCreateTypedDict]
    r"""An intermediary party"""
    retirement_distribution: NotRequired[RetirementDistributionCreateTypedDict]
    r"""A distribution from a retirement account."""


class WireWithdrawalScheduleCreate(BaseModel):
    r"""A withdrawal transfer schedule using the Wire mechanism"""

    beneficiary: WireWithdrawalBeneficiaryCreate
    r"""The person or entity taking receipt of the wired funds"""

    recipient_bank: WireWithdrawalRecipientBankCreate
    r"""A recipient bank / financial institution"""

    schedule_details: WithdrawalScheduleDetailsCreate
    r"""Details of withdrawal schedule transfers"""

    intermediary: Optional[WireWithdrawalIntermediaryCreate] = None
    r"""An intermediary party"""

    retirement_distribution: Optional[RetirementDistributionCreate] = None
    r"""A distribution from a retirement account."""
