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

import typing

from ....core import enum

T_Result = typing.TypeVar("T_Result")


class AiGatewayGetGatewayConfigRequestType(enum.StrEnum):
    GATEWAY_RATE_LIMITING_CONFIG = "gateway-rate-limiting-config"
    GATEWAY_FALLBACK_CONFIG = "gateway-fallback-config"
    GATEWAY_LOAD_BALANCING_CONFIG = "gateway-load-balancing-config"
    GATEWAY_GUARDRAILS_CONFIG = "gateway-guardrails-config"
    GATEWAY_BUDGET_CONFIG = "gateway-budget-config"
    GATEWAY_OTEL_CONFIG = "gateway-otel-config"

    def visit(
        self,
        gateway_rate_limiting_config: typing.Callable[[], T_Result],
        gateway_fallback_config: typing.Callable[[], T_Result],
        gateway_load_balancing_config: typing.Callable[[], T_Result],
        gateway_guardrails_config: typing.Callable[[], T_Result],
        gateway_budget_config: typing.Callable[[], T_Result],
        gateway_otel_config: typing.Callable[[], T_Result],
    ) -> T_Result:
        if self is AiGatewayGetGatewayConfigRequestType.GATEWAY_RATE_LIMITING_CONFIG:
            return gateway_rate_limiting_config()
        if self is AiGatewayGetGatewayConfigRequestType.GATEWAY_FALLBACK_CONFIG:
            return gateway_fallback_config()
        if self is AiGatewayGetGatewayConfigRequestType.GATEWAY_LOAD_BALANCING_CONFIG:
            return gateway_load_balancing_config()
        if self is AiGatewayGetGatewayConfigRequestType.GATEWAY_GUARDRAILS_CONFIG:
            return gateway_guardrails_config()
        if self is AiGatewayGetGatewayConfigRequestType.GATEWAY_BUDGET_CONFIG:
            return gateway_budget_config()
        if self is AiGatewayGetGatewayConfigRequestType.GATEWAY_OTEL_CONFIG:
            return gateway_otel_config()
