namespace Extrudex.API.Hubs;
///
/// Strongly-typed client interface for the SignalR PrinterHub.
/// Defines the methods that the server can invoke on connected clients
/// to push real-time printer status updates.
///
public interface IPrinterClient
{
///
/// Pushes a full printer status update to all clients subscribed
/// to a specific printer's group. Fired whenever a printer's
/// operational status changes (e.g., Idle → Printing, Offline → Idle).
///
/// The unique identifier of the printer that changed.
/// The new status value (e.g., "Idle", "Printing", "Offline", "Error", "Paused").
/// Timestamp (UTC) of when this status was last observed.
/// A Task that completes when the client has processed the update.
Task PrinterStatusChanged(Guid printerId, string status, DateTime? lastSeenAt);
///
/// Pushes a lightweight heartbeat to confirm that a printer is still
/// reachable and its connection is alive. Useful for dashboards that
/// display online/offline indicators without requiring a full status payload.
///
/// The unique identifier of the printer.
/// Whether the printer is currently active and available for jobs.
/// Timestamp (UTC) of the last telemetry received from the printer.
/// A Task that completes when the client has processed the heartbeat.
Task PrinterHeartbeat(Guid printerId, bool isActive, DateTime? lastSeenAt);
}