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);
}