# This file was auto-generated by Fern from our API Definition.

from __future__ import annotations

import typing

from .basic_vectorizer_intfloat_multilingual_e_5_large_request import BasicVectorizerIntfloatMultilingualE5LargeRequest
from .basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_cos_v_1_request import (
    BasicVectorizerSentenceTransformersMultiQaMpnetBaseCosV1Request,
)
from .basic_vectorizer_sentence_transformers_multi_qa_mpnet_base_dot_v_1_request import (
    BasicVectorizerSentenceTransformersMultiQaMpnetBaseDotV1Request,
)
from .hkunlp_instructor_xl_vectorizer_request import HkunlpInstructorXlVectorizerRequest
from .open_ai_vectorizer_text_embedding_3_large_request import OpenAiVectorizerTextEmbedding3LargeRequest
from .open_ai_vectorizer_text_embedding_3_small_request import OpenAiVectorizerTextEmbedding3SmallRequest
from .open_ai_vectorizer_text_embedding_ada_002_request import OpenAiVectorizerTextEmbeddingAda002Request


class IndexingConfigVectorizerRequest_TextEmbedding3Small(OpenAiVectorizerTextEmbedding3SmallRequest):
    model_name: typing.Literal["text-embedding-3-small"] = "text-embedding-3-small"

    class Config:
        frozen = True
        smart_union = True
        allow_population_by_field_name = True
        populate_by_name = True


class IndexingConfigVectorizerRequest_TextEmbedding3Large(OpenAiVectorizerTextEmbedding3LargeRequest):
    model_name: typing.Literal["text-embedding-3-large"] = "text-embedding-3-large"

    class Config:
        frozen = True
        smart_union = True
        allow_population_by_field_name = True
        populate_by_name = True


class IndexingConfigVectorizerRequest_TextEmbeddingAda002(OpenAiVectorizerTextEmbeddingAda002Request):
    model_name: typing.Literal["text-embedding-ada-002"] = "text-embedding-ada-002"

    class Config:
        frozen = True
        smart_union = True
        allow_population_by_field_name = True
        populate_by_name = True


class IndexingConfigVectorizerRequest_IntfloatMultilingualE5Large(BasicVectorizerIntfloatMultilingualE5LargeRequest):
    model_name: typing.Literal["intfloat/multilingual-e5-large"] = "intfloat/multilingual-e5-large"

    class Config:
        frozen = True
        smart_union = True
        allow_population_by_field_name = True
        populate_by_name = True


class IndexingConfigVectorizerRequest_SentenceTransformersMultiQaMpnetBaseCosV1(
    BasicVectorizerSentenceTransformersMultiQaMpnetBaseCosV1Request
):
    model_name: typing.Literal[
        "sentence-transformers/multi-qa-mpnet-base-cos-v1"
    ] = "sentence-transformers/multi-qa-mpnet-base-cos-v1"

    class Config:
        frozen = True
        smart_union = True
        allow_population_by_field_name = True
        populate_by_name = True


class IndexingConfigVectorizerRequest_SentenceTransformersMultiQaMpnetBaseDotV1(
    BasicVectorizerSentenceTransformersMultiQaMpnetBaseDotV1Request
):
    model_name: typing.Literal[
        "sentence-transformers/multi-qa-mpnet-base-dot-v1"
    ] = "sentence-transformers/multi-qa-mpnet-base-dot-v1"

    class Config:
        frozen = True
        smart_union = True
        allow_population_by_field_name = True
        populate_by_name = True


class IndexingConfigVectorizerRequest_HkunlpInstructorXl(HkunlpInstructorXlVectorizerRequest):
    model_name: typing.Literal["hkunlp/instructor-xl"] = "hkunlp/instructor-xl"

    class Config:
        frozen = True
        smart_union = True
        allow_population_by_field_name = True
        populate_by_name = True


IndexingConfigVectorizerRequest = typing.Union[
    IndexingConfigVectorizerRequest_TextEmbedding3Small,
    IndexingConfigVectorizerRequest_TextEmbedding3Large,
    IndexingConfigVectorizerRequest_TextEmbeddingAda002,
    IndexingConfigVectorizerRequest_IntfloatMultilingualE5Large,
    IndexingConfigVectorizerRequest_SentenceTransformersMultiQaMpnetBaseCosV1,
    IndexingConfigVectorizerRequest_SentenceTransformersMultiQaMpnetBaseDotV1,
    IndexingConfigVectorizerRequest_HkunlpInstructorXl,
]
