using SolutionErp.Domain.Notifications;

namespace SolutionErp.Application.Notifications;

// Abstraction for emitting notifications from domain handlers.
// Implementation lives in Infrastructure and writes to DbContext (eventual SignalR
// push + email will layer on the same method without changing callers).
public interface INotificationService
{
    Task NotifyAsync(
        Guid userId,
        NotificationType type,
        string title,
        string? description = null,
        string? href = null,
        Guid? refId = null,
        CancellationToken ct = default);

    Task NotifyManyAsync(
        IEnumerable<Guid> userIds,
        NotificationType type,
        string title,
        string? description = null,
        string? href = null,
        Guid? refId = null,
        CancellationToken ct = default);
}
