using Insight.Remote.Shared.Models;
using SkiaSharp;
using System.Drawing;

namespace Insight.Remote.Shared.Abstractions;

public interface IScreenProvider : IDisposable
{
    Rectangle CurrentScreenBounds { get; }
    string SelectedScreen { get; }

    Task InitAsync(CancellationToken cancellationToken);

    IEnumerable<string> GetDisplayNames();
    Task<SKRect> GetDiffAreaAsync(bool fullscreen, CancellationToken cancellationToken);
    Task<FrameResult> GetNextFrameAsync(CancellationToken cancellationToken);

    void SetSelectedScreen(string displayName);
    int GetScreenCount();
    int GetSelectedScreenIndex();
    Rectangle GetVirtualScreenBounds();
}