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