using CollabDAL.DTO.CollabParticipant; namespace CollabSL.EndPoints.Hubs; /// /// Strongly-typed contract for server-to-client SignalR messages. /// Every method here maps to a client-side event handler. /// public interface ICollabHubClient { // ── Session lifecycle ───────────────────────────────────────────── Task SessionStarted(object sessionInfo); Task SessionPaused(object sessionInfo); Task SessionEnded(string reason); // ── Participant events ──────────────────────────────────────────── Task ParticipantJoined(CollabParticipantDTO participant); Task ParticipantLeft(string userId); Task ParticipantListUpdated(List participants); // ── Control events ──────────────────────────────────────────────── Task ControlGranted(string toUserId); Task ControlRevoked(string fromUserId); Task ControlRequested(string byUserId, string displayName); // ── Real-time sync ──────────────────────────────────────────────── Task ReceiveRouteSync(RouteSyncPayload payload); Task ReceiveCursorMove(CursorPayload payload); Task ReceiveFormSync(FormSyncPayload payload); Task ReceiveChatMessage(ChatMessagePayload payload); Task ReceiveAnnotation(AnnotationPayload payload); // ── Error ───────────────────────────────────────────────────────── Task ErrorOccurred(string code, string message); }