using Domain.Entities.Notifications.ValueObject;

namespace Application.Abstractions.Notification;

public interface INotificationService
{
    Task SendAsync(
        int memberID,
        NotificationType type,
        string title,
        string message,
        string? actionUrl = null,
        string? relatedType = null,
        int? relatedID = null,
        string? imageUrl = null,
        CancellationToken ct = default
    );

    Task SendToManyAsync(
        IEnumerable<int> memberIDs,
        NotificationType type,
        string title,
        string message,
        string? actionUrl = null,
        string? relatedType = null,
        int? relatedID = null,
        string? imageUrl = null,
        CancellationToken ct = default
    );
}