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

namespace PARR.Core.Services.UnitFilterService.Matchers.Interfaces
{
    /// <summary>
    /// Сопоставляет юниты с фильтрами по связям (родители/дети).
    /// </summary>
    internal interface IUnitRelationshipMatcher
    {
        /// <summary>
        /// Применяет фильтры по связям к набору юнитов.
        /// Возвращает контексты с валидными родительскими и дочерними связями.
        /// </summary>
        Task<List<UnitFilterMatchResult>> MatchAsync(
            IReadOnlyList<Guid> unitIds,
            IEnumerable<JobRelationshipFilter> relationshipFilters,
            CancellationToken ct = default);
    }
}
