namespace ytLive.Services;
///
/// Identifies which monitor holds a full-screen window (a game/app running
/// borderless or exclusive fullscreen). Seam so ScreenCaptureManager is
/// testable without Win32 interop.
///
public interface IFullScreenDetector
{
///
/// The index of the monitor a full-screen foreground window covers, or null
/// when the foreground window is windowed, missing, or one of our own.
///
int? GetForegroundFullScreenMonitorIndex();
/// Index of the primary (taskbar-hosting) monitor.
int PrimaryMonitorIndex();
/// All monitors in capture-key order (enumeration order).
IReadOnlyList GetDisplays();
///
/// Raised on the UI thread whenever the foreground window changes.
/// Payload is the full-screen monitor index, or null when the new
/// foreground window is not full-screen / is one of our own windows.
///
event Action? FullscreenMonitorChanged;
/// Hook EVENT_SYSTEM_FOREGROUND so fires.
void StartWatching();
/// Unhook the foreground listener.
void StopWatching();
}