using Collaboration.Application.DTOs.Responses; namespace Collaboration.Hubs; /// /// Strongly-typed interface for messages the server sends to clients. /// Angular service will map each of these to an Observable. /// public interface ICollabHubClient { // Participant events Task ParticipantJoined(ParticipantResponse participant); Task ParticipantLeft(Guid userId, string displayName); // Control flow Task ControlGranted(Guid userId, string displayName); Task ControlRevoked(Guid userId); Task ControlRequested(Guid userId, string displayName); Task ControlConsentRequested(Guid fromUserId, string fromDisplayName); // Ask target user's consent // Co-browse sync Task RouteChanged(RouteSyncPayload payload); Task CursorMoved(CursorPayload payload); Task FormStateChanged(FormSyncPayload payload); // Chat Task ChatMessageReceived(ChatMessage message); // Annotations Task AnnotationReceived(AnnotationPayload annotation); // Session lifecycle Task SessionEnded(string reason); Task SessionPaused(); Task SessionResumed(); Task SessionModeChanged(string newMode); // Errors / notifications Task ErrorOccurred(string code, string message); }