using System.Text.Json.Nodes;

namespace Eis.Application.Administration;

public interface IAdminResultService
{
    Task<AdminEndpointResult> GetSummaryAsync(string sessionToken, string examId, CancellationToken cancellationToken);
    Task<AdminEndpointResult> GetAsync(
        string sessionToken, string examId, int page, int pageSize, string query, string status,
        CancellationToken cancellationToken);
    Task<AdminEndpointResult> GetRosterAsync(
        string sessionToken, string examId, string subjectId, bool featureMode,
        int page, int pageSize, string query, string status, CancellationToken cancellationToken);
    Task<AdminEndpointResult> SaveAsync(string sessionToken, JsonObject body, CancellationToken cancellationToken);
    Task<AdminEndpointResult> SaveBulkAsync(string sessionToken, JsonObject body, CancellationToken cancellationToken);
    Task<AdminEndpointResult> ImportAsync(string sessionToken, JsonObject body, CancellationToken cancellationToken);
    Task<AdminEndpointResult> PreviewImportAsync(string sessionToken, JsonArray rows, CancellationToken cancellationToken);
    Task<AdminEndpointResult> SaveFeatureBulkAsync(string sessionToken, JsonObject body, CancellationToken cancellationToken);
    Task<AdminEndpointResult> SaveFeatureAsync(string sessionToken, string registrationId, JsonObject body, CancellationToken cancellationToken);
    Task<AdminEndpointResult> ReviewAppealAsync(string sessionToken, string resultId, JsonObject body, CancellationToken cancellationToken);
    Task<AdminEndpointResult> RefreshCacheAsync(string sessionToken, CancellationToken cancellationToken);
    Task<AdminDocumentResult> ExportAsync(string sessionToken, string examId, CancellationToken cancellationToken);
}
