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

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class VoiceCategory(str, enum.Enum):
    PREMADE = "premade"
    CLONED = "cloned"
    GENERATED = "generated"
    PROFESSIONAL = "professional"

    def visit(
        self,
        premade: typing.Callable[[], T_Result],
        cloned: typing.Callable[[], T_Result],
        generated: typing.Callable[[], T_Result],
        professional: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is VoiceCategory.PREMADE:
            return premade()
        if self is VoiceCategory.CLONED:
            return cloned()
        if self is VoiceCategory.GENERATED:
            return generated()
        if self is VoiceCategory.PROFESSIONAL:
            return professional()
