namespace Collaboration.Domain.Enums; public enum SessionType { AdHoc = 1, Scheduled = 2 } public enum SessionStatus { Pending = 1, // Scheduled but not yet started Active = 2, // Live and running Paused = 3, // Temporarily paused by host Ended = 4, // Completed normally Abandoned = 5, // Auto-ended due to inactivity/timeout Cancelled = 6 // Cancelled before it started } public enum SessionMode { CoBrowse = 1, ScreenShare = 2, Hybrid = 3 // Both simultaneously } public enum ParticipantRole { Host = 1, // Creator, full control, cannot be removed Presenter = 2, // Has screen share rights, can be granted control CoEditor = 3, // Can receive co-browse control Viewer = 4 // View-only, no control } public enum InviteStatus { Pending = 1, Accepted = 2, Declined = 3, Expired = 4, Revoked = 5 } public enum SessionEventType { // Lifecycle SessionCreated = 1, SessionStarted = 2, SessionPaused = 3, SessionResumed = 4, SessionEnded = 5, SessionAbandoned = 6, // Participation ParticipantJoined = 10, ParticipantLeft = 11, ParticipantRemoved = 12, RoleChanged = 13, // Control flow ControlGranted = 20, ControlRevoked = 21, ControlRequested = 22, ControlConsentGiven = 23, ControlConsentDenied = 24, // Co-browse RouteSync = 30, FormSync = 31, // Mode ModeChanged = 40, // Invite InviteSent = 50, InviteAccepted = 51, InviteDeclined = 52 } public enum ControlConsentMode { NotRequired = 1, // Org config: host can grant without asking Required = 2, // Org config: target user must explicitly consent RoleDependent = 3 // Required for Viewer, not required for CoEditor/Presenter }