namespace CMSMicroservice.Application.Common.Interfaces;

/// <summary>
/// Interface for sending token-related notifications via SignalR
/// </summary>
public interface ITokenNotificationService
{
    /// <summary>
    /// Notify that a user's token has been revoked and they should refresh their token
    /// </summary>
    /// <param name="userId">The user ID whose token was revoked</param>
    /// <param name="reason">The reason for revocation</param>
    Task NotifyTokenRevokedAsync(long userId, string reason);

    /// <summary>
    /// Notify that a user should refresh their token due to profile changes
    /// </summary>
    /// <param name="userId">The user ID whose profile changed</param>
    Task NotifyForceRefreshAsync(long userId);

    /// <summary>
    /// Broadcast a message to all connected clients
    /// </summary>
    /// <param name="message">The message to broadcast</param>
    Task BroadcastMessageAsync(string message);
}
