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

from __future__ import annotations
from .assetcreate import AssetCreate, AssetCreateTypedDict
from .transferaccountcreate import TransferAccountCreate, TransferAccountCreateTypedDict
from ascend_sdk.types import BaseModel
from typing import List, Optional
from typing_extensions import NotRequired, TypedDict


class TransferCreateTypedDict(TypedDict):
    r"""An account transfer which contains the receiving and delivering party information, assets being transferred, NSCC status information, etc."""

    deliverer: TransferAccountCreateTypedDict
    r"""The delivering/receiving party information"""
    assets: NotRequired[List[AssetCreateTypedDict]]
    r"""The assets being transferred (Cash, Equities, etc.)"""
    comment: NotRequired[str]
    r"""User supplied comment"""
    original_control_number: NotRequired[str]
    r"""An associated NSCC transfer identifier, if applicable"""


class TransferCreate(BaseModel):
    r"""An account transfer which contains the receiving and delivering party information, assets being transferred, NSCC status information, etc."""

    deliverer: TransferAccountCreate
    r"""The delivering/receiving party information"""

    assets: Optional[List[AssetCreate]] = None
    r"""The assets being transferred (Cash, Equities, etc.)"""

    comment: Optional[str] = None
    r"""User supplied comment"""

    original_control_number: Optional[str] = None
    r"""An associated NSCC transfer identifier, if applicable"""
