using PARR.Core.Services.UnitFilterService.Models;
using PARR.Domain.Entities.JobEntities;

namespace PARR.Core.Services.UnitFilterService.Matchers.Interfaces
{
    /// <summary>
    /// Применяет Umbrella-фильтр по количеству связей в памяти.
    /// </summary>
    internal interface IUmbrellaFilter
    {
        /// <summary>
        /// Фильтрует контексты по min/max количеству родительских или дочерних связей.
        /// </summary>
        /// <param name="contexts">Входящие контексты юнитов.</param>
        /// <param name="job">Job с параметрами Umbrella-фильтра.</param>
        /// <returns>Отфильтрованный список контекстов.</returns>
        List<UnitFilterMatchResult> Apply(
            List<UnitFilterMatchResult> contexts,
            Job job);
    }
}
