using GestionaDenuncias.Shared.Models;

namespace GestionaDenuncias.Shared.Services;

public interface IInboxTrackingService
{
    Task<InboxUserState> GetUserStateAsync(string username, CancellationToken cancellationToken = default);
    Task<IReadOnlyList<ReportDto>> RegisterSnapshotAsync(
        string username,
        IEnumerable<ReportDto> reports,
        CancellationToken cancellationToken = default);
    Task MarkReportImportedAsync(
        string username,
        ReportDto report,
        int? complaintId,
        CancellationToken cancellationToken = default);

    Task MarkReportHandledInGestionaAsync(
        string username,
        int denunciaId,
        DateTime uploadedAtUtc,
        CancellationToken cancellationToken = default);

    Task EnsureReportCanBeImportedByUserAsync(
        string username,
        ReportDto report,
        CancellationToken cancellationToken = default);
}
