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

import enum
import typing

T_Result = typing.TypeVar("T_Result")


class ClaimFrequencyTypeCode(str, enum.Enum):
    ORIGINAL = "1"
    CORRECTED = "6"
    REPLACEMENT = "7"
    VOID = "8"

    def visit(
        self,
        original: typing.Callable[[], T_Result],
        corrected: typing.Callable[[], T_Result],
        replacement: typing.Callable[[], T_Result],
        void: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is ClaimFrequencyTypeCode.ORIGINAL:
            return original()
        if self is ClaimFrequencyTypeCode.CORRECTED:
            return corrected()
        if self is ClaimFrequencyTypeCode.REPLACEMENT:
            return replacement()
        if self is ClaimFrequencyTypeCode.VOID:
            return void()
