using PARR.Domain.Entities.JobEntities;
using PARR.Domain.Entities.JobGroupEntities;
using PARR.TemplateMatcher.Models;

namespace PARR.TemplateMatcher.Services.GroupedSync;

public interface IGroupedTemplateBuilder
{
    /// <summary>
    /// Строит структуру групп для создания групповых шаблонов.
    /// Трансформирует связи в пары (UnitId, UnitFieldValueId), 
    /// выполняет внутреннюю группировку и разбиение на подгруппы.
    /// </summary>
    Task<List<GroupedTemplateGroup>> BuildAsync(
        Dictionary<Guid, List<Guid>> initialReverseMapping,
        JobGroup jobGroup,
        Job maxJob,
        CancellationToken ct = default);
}