using MemberCenter.Application.Models.Newsletter;

namespace MemberCenter.Application.Abstractions;

public interface INewsletterService
{
    Task<PendingSubscriptionResult?> SubscribeAsync(Guid listId, string email, Dictionary<string, object>? preferences);
    Task<SubscriptionDto?> ConfirmAsync(string token);
    Task<string?> IssueUnsubscribeTokenAsync(Guid listId, string email);
    Task<SubscriptionDto?> UnsubscribeAsync(string token);
    Task<SubscriptionDto?> GetPreferencesAsync(Guid listId, string email);
    Task<SubscriptionDto?> UpdatePreferencesAsync(Guid listId, string email, Dictionary<string, object> preferences);
}
