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

import enum
import typing

T_Result = typing.TypeVar("T_Result")


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

    DRAFT = "Draft"
    TESTING = "Testing"
    LIVE = "Live"
    ARCHIVED = "Archived"

    def visit(
        self,
        draft: typing.Callable[[], T_Result],
        testing: typing.Callable[[], T_Result],
        live: typing.Callable[[], T_Result],
        archived: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is PromptVersionStatus.DRAFT:
            return draft()
        if self is PromptVersionStatus.TESTING:
            return testing()
        if self is PromptVersionStatus.LIVE:
            return live()
        if self is PromptVersionStatus.ARCHIVED:
            return archived()
