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

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

namespace C4IT_DataHistoryProvider_Base.DataSources
{
    public interface ISearchResultRelationProvider
    {
        HashSet<enumFasdInformationClass> GetSupportedInformationClasses();

        /// <summary>
        /// Find objects, which are somehow related to the given objects.
        /// </summary>
        /// <param name="ids">Identifies the objects for which relations should be searched</param>
        /// <param name="informationClass">Determines the information class the objects have, for which relations should be searched.</param>
        /// <param name="ageInDays">Specifies the time, in which the relations should be considered.</param>
        /// <returns></returns>
        Task<cF4sdStagedSearchResultRelations> GetRelationsAsync(IEnumerable<cF4sdConnectorIds> ids, enumFasdInformationClass informationClass, int ageInDays, CancellationToken token = default);
    }
}
