# Copyright 2026, Jiri Eischmann <jiri@eischmann.cz> and the meshy contributors
# SPDX-License-Identifier: GPL-3.0-or-later

"""Base notification interface for platform abstraction."""

from abc import ABC, abstractmethod


class NotificationService(ABC):
    """Abstract base class for platform-specific notification services."""

    @abstractmethod
    def send_notification(self, title: str, body: str, notification_id: str) -> None:
        """Send a desktop notification.

        Args:
            title: Notification title
            body: Notification body text
            notification_id: Unique identifier for this notification
        """
        pass

    @abstractmethod
    def is_supported(self) -> bool:
        """Check if notifications are supported on this platform.

        Returns:
            True if notifications are available and can be sent
        """
        pass
