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

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class AttendeeResponseStatus(str, enum.Enum):
    """
    Attendee response status for calendar events
    """

    NEEDS_ACTION = "needsAction"
    DECLINED = "declined"
    TENTATIVE = "tentative"
    ACCEPTED = "accepted"

    def visit(
        self,
        needs_action: typing.Callable[[], T_Result],
        declined: typing.Callable[[], T_Result],
        tentative: typing.Callable[[], T_Result],
        accepted: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is AttendeeResponseStatus.NEEDS_ACTION:
            return needs_action()
        if self is AttendeeResponseStatus.DECLINED:
            return declined()
        if self is AttendeeResponseStatus.TENTATIVE:
            return tentative()
        if self is AttendeeResponseStatus.ACCEPTED:
            return accepted()
