namespace CopilotCoordinator.Models; public record CameraLock( int CameraId, CameraLockPriority Priority, string OwnerName, DateTime OwnedSince, DateTime ExpiresAt ); public enum CameraLockPriority { None, High, Low } public enum CameraLockNotificationType { Acquired, TakenOver, ConfirmTakeOver, Confirmed, Rejected, ExpireSoon, Unlocked } public record CameraLockResult(bool Acquired, CameraLock? Lock); public record CameraLockNotification( CameraLockNotificationType Type, int CameraId, string CopilotName ); public record LockRequest(int CameraId, string KeyboardId, string Priority = "low"); public record UnlockRequest(int CameraId, string KeyboardId); public record TakeoverRequest(int CameraId, string KeyboardId, string Priority = "low"); public record TakeoverConfirmRequest(int CameraId, string KeyboardId, bool Confirm); public record ResetExpirationRequest(int CameraId, string KeyboardId);