using ColaFlow.Modules.Mcp.Application.DTOs.Notifications;

namespace ColaFlow.Modules.Mcp.Application.Services;

/// <summary>
/// Service for sending real-time notifications to MCP clients via SignalR
/// </summary>
public interface IMcpNotificationService
{
    /// <summary>
    /// Notify that a new PendingChange was created
    /// </summary>
    Task NotifyPendingChangeCreatedAsync(
        PendingChangeCreatedNotification notification,
        CancellationToken cancellationToken = default);

    /// <summary>
    /// Notify that a PendingChange was approved
    /// </summary>
    Task NotifyPendingChangeApprovedAsync(
        PendingChangeApprovedNotification notification,
        CancellationToken cancellationToken = default);

    /// <summary>
    /// Notify that a PendingChange was rejected
    /// </summary>
    Task NotifyPendingChangeRejectedAsync(
        PendingChangeRejectedNotification notification,
        CancellationToken cancellationToken = default);

    /// <summary>
    /// Notify that a PendingChange was applied successfully
    /// </summary>
    Task NotifyPendingChangeAppliedAsync(
        PendingChangeAppliedNotification notification,
        CancellationToken cancellationToken = default);

    /// <summary>
    /// Notify that a PendingChange expired
    /// </summary>
    Task NotifyPendingChangeExpiredAsync(
        PendingChangeExpiredNotification notification,
        CancellationToken cancellationToken = default);
}
