using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;
using MarcusLaw.OutlookAddin.Core.Models;

namespace MarcusLaw.OutlookAddin.Core.Services
{
    public interface IRetryQueue
    {
        Task<string> EnqueueAsync(RetryQueueItem item, CancellationToken cancellationToken = default);

        Task<IReadOnlyList<RetryQueueItem>> ListAllAsync(CancellationToken cancellationToken = default);

        Task RemoveAsync(string id, CancellationToken cancellationToken = default);
    }
}
