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

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class ClaimAdjustmentGroupCodes(str, enum.Enum):
    CO = "CO"
    CR = "CR"
    DE = "DE"
    MA = "MA"
    OA = "OA"
    PI = "PI"
    PR = "PR"
    RR = "RR"
    NC = "NC"
    UNKNOWN = "UNKNOWN"

    def visit(
        self,
        co: typing.Callable[[], T_Result],
        cr: typing.Callable[[], T_Result],
        de: typing.Callable[[], T_Result],
        ma: typing.Callable[[], T_Result],
        oa: typing.Callable[[], T_Result],
        pi: typing.Callable[[], T_Result],
        pr: typing.Callable[[], T_Result],
        rr: typing.Callable[[], T_Result],
        nc: typing.Callable[[], T_Result],
        unknown: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is ClaimAdjustmentGroupCodes.CO:
            return co()
        if self is ClaimAdjustmentGroupCodes.CR:
            return cr()
        if self is ClaimAdjustmentGroupCodes.DE:
            return de()
        if self is ClaimAdjustmentGroupCodes.MA:
            return ma()
        if self is ClaimAdjustmentGroupCodes.OA:
            return oa()
        if self is ClaimAdjustmentGroupCodes.PI:
            return pi()
        if self is ClaimAdjustmentGroupCodes.PR:
            return pr()
        if self is ClaimAdjustmentGroupCodes.RR:
            return rr()
        if self is ClaimAdjustmentGroupCodes.NC:
            return nc()
        if self is ClaimAdjustmentGroupCodes.UNKNOWN:
            return unknown()
