using AyCode.Services.Nav.Ekaer.Models;

namespace AyCode.Services.Nav.Ekaer;

/// <summary>
/// Általános EKÁER beküldés-orchestráció: validál (a generált tradeCard-okat a NAV-szabályok ellen), és csak
/// hibátlan esetben küld. Nem ismer projekt-specifikus (pl. FruitBank) típust — a már leképzett műveleteket kapja.
/// </summary>
public interface IEkaerSubmitService
{
    /// <summary>
    /// Validálja, majd — ha hibátlan — elküldi a tradeCard műveleteket a NAV-nak.
    /// Validációs hiba esetén <see cref="EkaerSubmitResult.Invalid"/> (nem megy ki kérés);
    /// NAV-oldali hiba esetén <c>NavReportException</c> propagál.
    /// </summary>
    Task<EkaerSubmitResult> SubmitAsync(IReadOnlyList<TradeCardOperationType> operations, CancellationToken cancellationToken = default);
}
