namespace ROLAC.API.Services.Notifications;
/// The three fields a browser hands over when it creates a push subscription.
public sealed record WebPushTarget(string Endpoint, string P256dh, string Auth);
///
/// Outcome of pushing to one subscription. is true when the push service
/// reported the subscription is gone (HTTP 404/410) so the caller can prune it.
///
public sealed record WebPushSendResult(bool Success, bool IsExpired, string? Error);
///
/// Thin wrapper over the WebPush library's encrypt-and-POST so that 's
/// recipient resolution, pruning, and logging can be unit-tested without a real push service.
///
public interface IWebPushSender
{
Task SendAsync(WebPushTarget target, string payloadJson, CancellationToken ct = default);
}