using PARR.Core.Services.UnitFilterService.Models;

namespace PARR.Core.Services.UnitFilterService.Matchers.Interfaces
{
    /// <summary>
    /// Загружает полные данные юнитов для формирования итогового результата фильтрации.
    /// </summary>
    internal interface IUnitFilterResultLoader
    {
        /// <summary>
        /// Загружает юниты, их родителей и детей из кэша и формирует DTO.
        /// </summary>
        /// <param name="contexts">Контексты юнитов с валидными связями.</param>
        /// <param name="ct">Токен отмены.</param>
        /// <returns>Список DTO с полными данными.</returns>
        Task<List<UnitFilterResultDto>> LoadAsync(
            List<UnitFilterMatchResult> contexts,
            CancellationToken ct = default);
    }
}
