using DXPDAL.Common; namespace DXPBLL.Common; // Abstraction over the SignalR hub push (DXPHub lives in DXPSL — BLL must stay free of // ASP.NET/SignalR types per CLAUDE.md). Concrete implementation: DXPSL/Hubs/DXPHubNotifier.cs, // wrapping IHubContext. Registered as a Singleton in Program.cs/ // DXPModule.cs — mirrors IceImportBLL.Interfaces.IIceImportRunNotifier / // IceImportSL.Hubs.IceImportRunNotifier exactly. // // Must never throw — a push failure is non-fatal to the underlying save that triggered it; // the implementation logs and swallows (same contract as IIceImportRunNotifier's doc comment). public interface IDXPHubNotifier { Task NotifyAsync(DXPNotificationDTO notification, CancellationToken ct = default); }