using LittleShop.DTOs; using LittleShop.Models; namespace LittleShop.Services; public interface IPushNotificationService { Task SubscribeUserAsync(Guid userId, PushSubscriptionDto subscriptionDto, string? userAgent = null, string? ipAddress = null); Task SubscribeCustomerAsync(Guid customerId, PushSubscriptionDto subscriptionDto, string? userAgent = null, string? ipAddress = null); Task UnsubscribeAsync(string endpoint); Task SendNotificationToUserAsync(Guid userId, PushNotificationDto notification); Task SendNotificationToCustomerAsync(Guid customerId, PushNotificationDto notification); Task SendNotificationToAllUsersAsync(PushNotificationDto notification); Task SendNotificationToAllCustomersAsync(PushNotificationDto notification); Task SendOrderNotificationAsync(Guid orderId, string title, string body); Task SendTestNotificationAsync(string? userId = null, string title = "Test Notification", string body = "This is a test notification from LittleShop"); Task CleanupExpiredSubscriptionsAsync(); Task> GetActiveSubscriptionsAsync(); string GetVapidPublicKey(); }