using System.Collections.Generic;
using System.Threading;
using System.Threading.Tasks;

using C4IT.DataHistoryProvider;
using C4IT.FASD.Base;

namespace C4IT_DataHistoryProvider_Base.DataSources
{
    /// <summary>
    /// Provider-neutral access to ticket-system activities used by search and overview.
    /// Provider-specific filter fields remain opaque configuration values.
    /// </summary>
    public interface ITicketActivityProvider
    {
        bool TicketAndServiceRequestsEnabled { get; }

        Task<List<cF4SDTicketSummary>> GetTicketsFromSid(
            cF4sdConnectorIds userId,
            CancellationToken token,
            cF4sdWebRequestInfo requestInfo);

        Task<Dictionary<string, int>> GetTicketOverviewCountsAsync(
            IEnumerable<string> keys,
            bool useRoleScope,
            cF4sdWebRequestInfo requestInfo,
            int logDeep,
            CancellationToken token);

        Task<List<cF4sdApiSearchResultRelation>> GetTicketOverviewRelationsAsync(
            string key,
            bool useRoleScope,
            int count,
            cF4sdWebRequestInfo requestInfo,
            int logDeep,
            CancellationToken token);
    }
}
