"""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 IdentifierCreateType(str, Enum, metaclass=utils.OpenEnumMeta):
    r"""The type of identifier"""

    IDENTIFIER_TYPE_UNSPECIFIED = "IDENTIFIER_TYPE_UNSPECIFIED"
    ORIGINATING_ACCOUNT_ID = "ORIGINATING_ACCOUNT_ID"
    ORIGINATING_FDID = "ORIGINATING_FDID"
    ORIGINATING_CAT_REPORTER_CRD = "ORIGINATING_CAT_REPORTER_CRD"
    CLIENT_ACCOUNT_ID = "CLIENT_ACCOUNT_ID"


class IdentifierCreateTypedDict(TypedDict):
    r"""An identifier associated with an account"""

    type: IdentifierCreateType
    r"""The type of identifier"""
    value: str
    r"""The value of the identifier"""


class IdentifierCreate(BaseModel):
    r"""An identifier associated with an account"""

    type: Annotated[IdentifierCreateType, PlainValidator(validate_open_enum(False))]
    r"""The type of identifier"""

    value: str
    r"""The value of the identifier"""
