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

import enum
import typing

T_Result = typing.TypeVar("T_Result")


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

    METADATA_EXTRACTOR = "METADATA_EXTRACTOR"
    NODE_PARSER = "NODE_PARSER"
    EMBEDDING = "EMBEDDING"

    def visit(
        self,
        metadata_extractor: typing.Callable[[], T_Result],
        node_parser: typing.Callable[[], T_Result],
        embedding: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is TransformationCategoryNames.METADATA_EXTRACTOR:
            return metadata_extractor()
        if self is TransformationCategoryNames.NODE_PARSER:
            return node_parser()
        if self is TransformationCategoryNames.EMBEDDING:
            return embedding()
