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

from __future__ import annotations
from .institutioncreate import InstitutionCreate, InstitutionCreateTypedDict
from .travelruleentitypartycreate import (
    TravelRuleEntityPartyCreate,
    TravelRuleEntityPartyCreateTypedDict,
)
from .travelrulepartycreate import TravelRulePartyCreate, TravelRulePartyCreateTypedDict
from ascend_sdk.types import BaseModel
from typing import Optional
from typing_extensions import NotRequired, TypedDict


class IctDepositTravelRuleCreateTypedDict(TypedDict):
    r"""The travel rules associated with an ICT deposit"""

    originating_institution: InstitutionCreateTypedDict
    r"""Institution representing originator or recipient of funds from an Instant Cash Transfer"""
    entity_originating_party: NotRequired[TravelRuleEntityPartyCreateTypedDict]
    r"""Travel rule entity party"""
    entity_recipient_party: NotRequired[TravelRuleEntityPartyCreateTypedDict]
    r"""Travel rule entity party"""
    individual_originating_party: NotRequired[TravelRulePartyCreateTypedDict]
    r"""Travel rule party"""
    individual_recipient_party: NotRequired[TravelRulePartyCreateTypedDict]
    r"""Travel rule party"""


class IctDepositTravelRuleCreate(BaseModel):
    r"""The travel rules associated with an ICT deposit"""

    originating_institution: InstitutionCreate
    r"""Institution representing originator or recipient of funds from an Instant Cash Transfer"""

    entity_originating_party: Optional[TravelRuleEntityPartyCreate] = None
    r"""Travel rule entity party"""

    entity_recipient_party: Optional[TravelRuleEntityPartyCreate] = None
    r"""Travel rule entity party"""

    individual_originating_party: Optional[TravelRulePartyCreate] = None
    r"""Travel rule party"""

    individual_recipient_party: Optional[TravelRulePartyCreate] = None
    r"""Travel rule party"""
