namespace ColaFlow.API.Services; public interface IRealtimeNotificationService { // Project-level notifications Task NotifyProjectCreated(Guid tenantId, Guid projectId, object project); Task NotifyProjectUpdated(Guid tenantId, Guid projectId, object project); Task NotifyProjectArchived(Guid tenantId, Guid projectId); Task NotifyProjectUpdate(Guid tenantId, Guid projectId, object data); // 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); // Issue notifications Task NotifyIssueCreated(Guid tenantId, Guid projectId, object issue); Task NotifyIssueUpdated(Guid tenantId, Guid projectId, object issue); Task NotifyIssueDeleted(Guid tenantId, Guid projectId, Guid issueId); Task NotifyIssueStatusChanged(Guid tenantId, Guid projectId, Guid issueId, string oldStatus, string newStatus); // Sprint notifications Task NotifySprintCreated(Guid tenantId, Guid projectId, Guid sprintId, string sprintName); Task NotifySprintUpdated(Guid tenantId, Guid projectId, Guid sprintId, string sprintName); Task NotifySprintStarted(Guid tenantId, Guid projectId, Guid sprintId, string sprintName); Task NotifySprintCompleted(Guid tenantId, Guid projectId, Guid sprintId, string sprintName); Task NotifySprintDeleted(Guid tenantId, Guid projectId, Guid sprintId, string sprintName); // User-level notifications Task NotifyUser(Guid userId, string message, string type = "info"); Task NotifyUsersInTenant(Guid tenantId, string message, string type = "info"); }