namespace SkillManagementBLL.Common; // Abstraction over the SignalR hub push (SkillHub lives in SkillManagementSL — BLL must stay // free of ASP.NET/SignalR types per CLAUDE.md). Concrete implementation: // SkillManagementSL/EndPoints/Hubs/SkillHubNotifier.cs, wrapping // IHubContext. Registered as a Singleton in // SkillManagementModule.cs — mirrors WiBLL.Common.IWiHubNotifier 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 IWiHubNotifier's doc comment). public interface ISkillHubNotifier { Task NotifyProfileChangedAsync(int employeeId, int skillId, int clientId, CancellationToken ct = default); }