namespace ZB.MOM.WW.MxGateway.Server.Dashboard;

/// <summary>
/// Provides snapshots of the dashboard state for UI updates.
/// </summary>
public interface IDashboardSnapshotService
{
    /// <summary>
    /// Gets the current dashboard snapshot.
    /// </summary>
    /// <returns>The current dashboard snapshot.</returns>
    DashboardSnapshot GetSnapshot();

    /// <summary>
    /// Watches for changes to the dashboard state as an async enumerable.
    /// </summary>
    /// <param name="cancellationToken">Token to cancel the asynchronous operation.</param>
    /// <returns>An asynchronous stream of dashboard snapshots.</returns>
    IAsyncEnumerable<DashboardSnapshot> WatchSnapshotsAsync(CancellationToken cancellationToken);
}
