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

from __future__ import annotations
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 ResidencyStatus(str, Enum, metaclass=utils.OpenEnumMeta):
    RESIDENCY_STATUS_UNSPECIFIED = "RESIDENCY_STATUS_UNSPECIFIED"
    US_PERMANENT_RESIDENT = "US_PERMANENT_RESIDENT"
    US_TEMPORARY_RESIDENT = "US_TEMPORARY_RESIDENT"
    US_NON_RESIDENT = "US_NON_RESIDENT"


class NonCitizenResidencyCreateTypedDict(TypedDict):
    r"""Non Citizenship Residency to facilitate non-Citizen lawful US residents to open domestic accounts."""

    residency_status: ResidencyStatus


class NonCitizenResidencyCreate(BaseModel):
    r"""Non Citizenship Residency to facilitate non-Citizen lawful US residents to open domestic accounts."""

    residency_status: Annotated[
        ResidencyStatus, PlainValidator(validate_open_enum(False))
    ]
