from typing import Literal

from litellm._logging import verbose_logger
from litellm.integrations.custom_logger import CustomLogger
from litellm.types.guardrails import GuardrailEventHooks


class CustomGuardrail(CustomLogger):

    def __init__(self, guardrail_name: str, event_hook: GuardrailEventHooks, **kwargs):
        self.guardrail_name = guardrail_name
        self.event_hook: GuardrailEventHooks = event_hook
        super().__init__(**kwargs)

    def should_run_guardrail(self, data, event_type: GuardrailEventHooks) -> bool:
        verbose_logger.debug(
            "inside should_run_guardrail for guardrail=%s event_type= %s guardrail_supported_event_hooks= %s",
            self.guardrail_name,
            event_type,
            self.event_hook,
        )

        metadata = data.get("metadata") or {}
        requested_guardrails = metadata.get("guardrails") or []

        if self.guardrail_name not in requested_guardrails:
            return False

        if self.event_hook != event_type:
            return False

        return True
