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

from __future__ import annotations
from .depositedfundscreate import DepositedFundsCreate, DepositedFundsCreateTypedDict
from .financialprofilecreate import (
    FinancialProfileCreate,
    FinancialProfileCreateTypedDict,
)
from .plannedactivitycreate import PlannedActivityCreate, PlannedActivityCreateTypedDict
from .relatedpepdetailscreate import (
    RelatedPepDetailsCreate,
    RelatedPepDetailsCreateTypedDict,
)
from ascend_sdk import utils
from ascend_sdk.types import BaseModel
from ascend_sdk.utils import validate_open_enum
from enum import Enum
from pydantic.functional_validators import PlainValidator
from typing_extensions import Annotated, TypedDict


class DeterminedAccountRiskRating(str, Enum, metaclass=utils.OpenEnumMeta):
    r"""The client determined account risk rating of the entity customer"""

    DETERMINED_ACCOUNT_RISK_RATING_UNSPECIFIED = (
        "DETERMINED_ACCOUNT_RISK_RATING_UNSPECIFIED"
    )
    LOW = "LOW"
    MEDIUM = "MEDIUM"
    HIGH = "HIGH"


class EddAccountEnrollmentMetadataCreateTypedDict(TypedDict):
    r"""Enrollment metadata for Entity Accounts"""

    deposited_funds: DepositedFundsCreateTypedDict
    r"""The initial amount of money placed into the account by the entity upon or after the account's establishment."""
    determined_account_risk_rating: DeterminedAccountRiskRating
    r"""The client determined account risk rating of the entity customer"""
    financial_profile: FinancialProfileCreateTypedDict
    r"""Disclosure of the entity account owner's financial relationships and source of brokerage funds; facilitates the creation of the overall customer risk profile"""
    planned_activity: PlannedActivityCreateTypedDict
    r"""Details the customer's intended trading and banking-related activities at the time of account application; informs risk checks and forms a baseline for anomalous activity detection"""
    related_pep_details: RelatedPepDetailsCreateTypedDict
    r"""Details surrounding the related politically exposed persons"""
    scope_of_business: str
    r"""The scope of the business for the entity customer"""


class EddAccountEnrollmentMetadataCreate(BaseModel):
    r"""Enrollment metadata for Entity Accounts"""

    deposited_funds: DepositedFundsCreate
    r"""The initial amount of money placed into the account by the entity upon or after the account's establishment."""

    determined_account_risk_rating: Annotated[
        DeterminedAccountRiskRating, PlainValidator(validate_open_enum(False))
    ]
    r"""The client determined account risk rating of the entity customer"""

    financial_profile: FinancialProfileCreate
    r"""Disclosure of the entity account owner's financial relationships and source of brokerage funds; facilitates the creation of the overall customer risk profile"""

    planned_activity: PlannedActivityCreate
    r"""Details the customer's intended trading and banking-related activities at the time of account application; informs risk checks and forms a baseline for anomalous activity detection"""

    related_pep_details: RelatedPepDetailsCreate
    r"""Details surrounding the related politically exposed persons"""

    scope_of_business: str
    r"""The scope of the business for the entity customer"""
