using Meezi.API.Models.Public;

namespace Meezi.API.Services;

/// <summary>Persists push-device registrations for targeted (token) pushes.</summary>
public interface IPushDeviceService
{
    /// <summary>Upserts a device by token (idempotent — safe to call on every app open).</summary>
    Task RegisterAsync(RegisterPushDeviceRequest request, CancellationToken ct = default);

    /// <summary>Soft-deletes a device by token (e.g. on logout / uninstall signal).</summary>
    Task UnregisterAsync(string token, CancellationToken ct = default);

    /// <summary>Resolves device tokens for a consumer account — for order/reservation pushes.</summary>
    Task<IReadOnlyList<string>> GetTokensForConsumerAsync(string consumerAccountId, CancellationToken ct = default);
}
