namespace WiSL.EndPoints.Hubs; // Strongly-typed SignalR client contract for WiHub, per CLAUDE.md's // "always Hub, never untyped Hub" rule. Every event is a "something changed, refetch" // ping, not a data carrier — the FE re-calls its normal GetLineDigitalTwin/GetPlantOverview/ // GetWorkstationConfig-backed load on receipt, so the push payload stays minimal and can never // drift out of sync with what a real reload would compute. public interface IWiHubClient { Task ReceiveExecutionStatusChanged(int workStationId, int wiExecutionId, byte execStatus); Task ReceiveStaffingChanged(int productionLineId, DateOnly shiftDate, int shiftId); Task ReceiveAllocationChanged(int productionLineId, DateOnly shiftDate, int shiftId); Task ReceiveWorkstationOutageChanged(int workStationId); }