namespace Meezi.Core.Interfaces;
///
/// Sends push notifications through the Pushe gateway (Iran-safe; FCM is
/// unreliable inside Iran). Topics are subscribed client-side via the native
/// Pushe SDK; this service triggers the actual sends from the backend.
///
public interface IPushSender
{
///
/// Broadcasts to every device subscribed to a Pushe topic.
/// Topics: city-{slug} (marketing / new cafés),
/// cafe-{slug} (saved-café alerts).
///
Task SendToTopicAsync(
string topic,
string title,
string body,
string? deepLink = null,
CancellationToken cancellationToken = default);
///
/// Sends to one or more specific device tokens — used for transactional
/// order / reservation updates.
///
Task SendToTokensAsync(
IReadOnlyCollection tokens,
string title,
string body,
string? deepLink = null,
CancellationToken cancellationToken = default);
}