namespace ColaFlow.Modules.ProjectManagement.Application.Services;

/// <summary>
/// Service for sending project-related notifications (abstraction for SignalR)
/// </summary>
public interface IProjectNotificationService
{
    // Project notifications
    Task NotifyProjectCreated(Guid tenantId, Guid projectId, object project);
    Task NotifyProjectUpdated(Guid tenantId, Guid projectId, object project);
    Task NotifyProjectArchived(Guid tenantId, Guid projectId);

    // Epic notifications
    Task NotifyEpicCreated(Guid tenantId, Guid projectId, Guid epicId, object epic);
    Task NotifyEpicUpdated(Guid tenantId, Guid projectId, Guid epicId, object epic);
    Task NotifyEpicDeleted(Guid tenantId, Guid projectId, Guid epicId);

    // Story notifications
    Task NotifyStoryCreated(Guid tenantId, Guid projectId, Guid epicId, Guid storyId, object story);
    Task NotifyStoryUpdated(Guid tenantId, Guid projectId, Guid epicId, Guid storyId, object story);
    Task NotifyStoryDeleted(Guid tenantId, Guid projectId, Guid epicId, Guid storyId);

    // Task notifications
    Task NotifyTaskCreated(Guid tenantId, Guid projectId, Guid storyId, Guid taskId, object task);
    Task NotifyTaskUpdated(Guid tenantId, Guid projectId, Guid storyId, Guid taskId, object task);
    Task NotifyTaskDeleted(Guid tenantId, Guid projectId, Guid storyId, Guid taskId);
    Task NotifyTaskAssigned(Guid tenantId, Guid projectId, Guid taskId, Guid assigneeId);
}
