# apeex/logger.py
from abc import ABC, abstractmethod
from typing import Any, Dict


class LoggerInterface(ABC):
    """Logger Interface defining all logging levels."""

    @abstractmethod
    def emergency(self, message: str, context: Dict[str, Any] = None): ...
    @abstractmethod
    def alert(self, message: str, context: Dict[str, Any] = None): ...
    @abstractmethod
    def critical(self, message: str, context: Dict[str, Any] = None): ...
    @abstractmethod
    def error(self, message: str, context: Dict[str, Any] = None): ...
    @abstractmethod
    def warning(self, message: str, context: Dict[str, Any] = None): ...
    @abstractmethod
    def notice(self, message: str, context: Dict[str, Any] = None): ...
    @abstractmethod
    def info(self, message: str, context: Dict[str, Any] = None): ...
    @abstractmethod
    def debug(self, message: str, context: Dict[str, Any] = None): ...
    @abstractmethod
    def log(self, level: str, message: str, context: Dict[str, Any] = None): ...
