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

import typing

from ..core import enum

T_Result = typing.TypeVar("T_Result")


class CustomGuardrailConfigTarget(enum.StrEnum):
    """
    Specify whether the guardrail should be applied to the request or response. Guardrails with target "Request" can be only used in input guardrails and guardrails with target "Response" can only be used in output guardrails.
    """

    REQUEST = "request"
    RESPONSE = "response"
    _UNKNOWN = "__CUSTOMGUARDRAILCONFIGTARGET_UNKNOWN__"
    """
    This member is used for forward compatibility. If the value is not recognized by the enum, it will be stored here, and the raw value is accessible through `.value`.
    """

    @classmethod
    def _missing_(cls, value: typing.Any) -> "CustomGuardrailConfigTarget":
        unknown = cls._UNKNOWN
        unknown._value_ = value
        return unknown

    def visit(
        self,
        request: typing.Callable[[], T_Result],
        response: typing.Callable[[], T_Result],
        _unknown_member: typing.Callable[[str], T_Result],
    ) -> T_Result:
        if self is CustomGuardrailConfigTarget.REQUEST:
            return request()
        if self is CustomGuardrailConfigTarget.RESPONSE:
            return response()
        return _unknown_member(self._value_)
