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

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class WorkQueueCategoryType(str, enum.Enum):
    PRE_SUBMISSION = "PRE_SUBMISSION"
    REJECTIONS = "REJECTIONS"
    DENIALS = "DENIALS"
    POST_SUBMISSION = "POST_SUBMISSION"
    STALE_CLAIMS = "STALE_CLAIMS"
    CUSTOM = "CUSTOM"

    def visit(
        self,
        pre_submission: typing.Callable[[], T_Result],
        rejections: typing.Callable[[], T_Result],
        denials: typing.Callable[[], T_Result],
        post_submission: typing.Callable[[], T_Result],
        stale_claims: typing.Callable[[], T_Result],
        custom: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is WorkQueueCategoryType.PRE_SUBMISSION:
            return pre_submission()
        if self is WorkQueueCategoryType.REJECTIONS:
            return rejections()
        if self is WorkQueueCategoryType.DENIALS:
            return denials()
        if self is WorkQueueCategoryType.POST_SUBMISSION:
            return post_submission()
        if self is WorkQueueCategoryType.STALE_CLAIMS:
            return stale_claims()
        if self is WorkQueueCategoryType.CUSTOM:
            return custom()
