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

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class ConfigurableTransformationNames(str, enum.Enum):
    """
    An enumeration.
    """

    CODE_NODE_PARSER = "CODE_NODE_PARSER"
    SENTENCE_AWARE_NODE_PARSER = "SENTENCE_AWARE_NODE_PARSER"
    TOKEN_AWARE_NODE_PARSER = "TOKEN_AWARE_NODE_PARSER"
    HTML_NODE_PARSER = "HTML_NODE_PARSER"
    MARKDOWN_NODE_PARSER = "MARKDOWN_NODE_PARSER"
    JSON_NODE_PARSER = "JSON_NODE_PARSER"
    SIMPLE_FILE_NODE_PARSER = "SIMPLE_FILE_NODE_PARSER"
    OPENAI_EMBEDDING = "OPENAI_EMBEDDING"
    AZURE_EMBEDDING = "AZURE_EMBEDDING"

    def visit(
        self,
        code_node_parser: typing.Callable[[], T_Result],
        sentence_aware_node_parser: typing.Callable[[], T_Result],
        token_aware_node_parser: typing.Callable[[], T_Result],
        html_node_parser: typing.Callable[[], T_Result],
        markdown_node_parser: typing.Callable[[], T_Result],
        json_node_parser: typing.Callable[[], T_Result],
        simple_file_node_parser: typing.Callable[[], T_Result],
        openai_embedding: typing.Callable[[], T_Result],
        azure_embedding: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is ConfigurableTransformationNames.CODE_NODE_PARSER:
            return code_node_parser()
        if self is ConfigurableTransformationNames.SENTENCE_AWARE_NODE_PARSER:
            return sentence_aware_node_parser()
        if self is ConfigurableTransformationNames.TOKEN_AWARE_NODE_PARSER:
            return token_aware_node_parser()
        if self is ConfigurableTransformationNames.HTML_NODE_PARSER:
            return html_node_parser()
        if self is ConfigurableTransformationNames.MARKDOWN_NODE_PARSER:
            return markdown_node_parser()
        if self is ConfigurableTransformationNames.JSON_NODE_PARSER:
            return json_node_parser()
        if self is ConfigurableTransformationNames.SIMPLE_FILE_NODE_PARSER:
            return simple_file_node_parser()
        if self is ConfigurableTransformationNames.OPENAI_EMBEDDING:
            return openai_embedding()
        if self is ConfigurableTransformationNames.AZURE_EMBEDDING:
            return azure_embedding()
