using PnvPanel.Domain.Configs; using PnvPanel.Domain.Nodes; namespace PnvPanel.Application.Common.Interfaces; /// /// Пуш событий через SignalR. Реализация (SignalRRealtimeNotifier) живёт в Api (не в Infrastructure) — /// ей нужен IHubContext<PanelHub>, а Hub, будучи транспортным механизмом, определён в Api; /// Infrastructure не может ссылаться на Api (обратное направление зависимостей). /// public interface IRealtimeNotifier { Task NotifyConfigTrafficUpdatedAsync( Guid userId, Guid configId, long usedUpBytes, long usedDownBytes, CancellationToken cancellationToken); Task NotifyConfigStatusChangedAsync(Guid userId, Guid configId, ConfigStatus status, CancellationToken cancellationToken); Task NotifyNodeStatusChangedAsync(Guid nodeId, NodeStatus status, DateTimeOffset? lastSyncAt, CancellationToken cancellationToken); Task NotifyActivationRequestedAsync( Guid requestId, Guid userId, string userName, string? comment, DateTimeOffset createdAt, CancellationToken cancellationToken); Task NotifyUserActivatedAsync(Guid userId, CancellationToken cancellationToken); }