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

import typing

from ..core import enum

T_Result = typing.TypeVar("T_Result")


class UserMetadataTenantRoleManagedBy(enum.StrEnum):
    MANUAL = "manual"
    GROUP = "group"
    INITIAL = "initial"

    def visit(
        self,
        manual: typing.Callable[[], T_Result],
        group: typing.Callable[[], T_Result],
        initial: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is UserMetadataTenantRoleManagedBy.MANUAL:
            return manual()
        if self is UserMetadataTenantRoleManagedBy.GROUP:
            return group()
        if self is UserMetadataTenantRoleManagedBy.INITIAL:
            return initial()
