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

from __future__ import annotations
from .accountdocumentuploadrequestcreate import (
    AccountDocumentUploadRequestCreate,
    AccountDocumentUploadRequestCreateTypedDict,
)
from .iddocumentuploadrequestcreate import (
    IDDocumentUploadRequestCreate,
    IDDocumentUploadRequestCreateTypedDict,
)
from ascend_sdk.types import BaseModel
from typing import Optional
from typing_extensions import NotRequired, TypedDict


class CreateUploadLinkRequestCreateTypedDict(TypedDict):
    r"""Document to be uploaded; These descriptions allow the document to be searched for after it is uploaded."""

    client_batch_source_id: str
    r"""User-provided identifier that relates this document with the signed link that will be generated for it; Required for all documents; Must be unique for each document in the request"""
    mime_type: str
    r"""Media type for the document to be uploaded; Required for all documents; Must be one of: application/json, application/pdf, image/jpeg, image/png, text/csv, or text/plain"""
    account_document_upload_request: NotRequired[
        AccountDocumentUploadRequestCreateTypedDict
    ]
    r"""Account document to be uploaded;"""
    id_document_upload_request: NotRequired[IDDocumentUploadRequestCreateTypedDict]
    r"""Identity document to be uploaded;"""


class CreateUploadLinkRequestCreate(BaseModel):
    r"""Document to be uploaded; These descriptions allow the document to be searched for after it is uploaded."""

    client_batch_source_id: str
    r"""User-provided identifier that relates this document with the signed link that will be generated for it; Required for all documents; Must be unique for each document in the request"""

    mime_type: str
    r"""Media type for the document to be uploaded; Required for all documents; Must be one of: application/json, application/pdf, image/jpeg, image/png, text/csv, or text/plain"""

    account_document_upload_request: Optional[AccountDocumentUploadRequestCreate] = None
    r"""Account document to be uploaded;"""

    id_document_upload_request: Optional[IDDocumentUploadRequestCreate] = None
    r"""Identity document to be uploaded;"""
