import type { BaseApiClient } from '../types/api';
import { StudentAnswerStatus, type ExamDetailsData, type ExamStudentResult, type ExamDetailsPagination, type ExamDetailsFilters } from '../types/examDetails';
/**
 * Student activity status from backend
 */
declare enum StudentActivityStatus {
    AGUARDANDO_RESPOSTA = "AGUARDANDO_RESPOSTA",
    NAO_ENTREGUE = "NAO_ENTREGUE",
    CONCLUIDO = "CONCLUIDO",
    AGUARDANDO_CORRECAO = "AGUARDANDO_CORRECAO"
}
/**
 * API student type
 */
interface ApiExamStudent {
    studentId: string;
    studentName: string;
    answeredAt: string | null;
    timeSpent: number;
    score: number | null;
    status: StudentActivityStatus;
}
/**
 * API breakdown item type
 */
interface ApiBreakdownItem {
    school: {
        id: string;
        name: string;
    } | null;
    schoolYear: {
        id: string;
        name: string;
    } | null;
    class: {
        id: string;
        name: string;
    } | null;
    totalStudents: number;
    answeredStudents: number;
    completionPercentage: number;
}
/**
 * Exam details API response type
 */
export interface ExamDetailsApiResponse {
    message: string;
    data: {
        students: ApiExamStudent[];
        pagination: {
            total: number;
            page: number;
            limit: number;
            totalPages: number;
        };
        generalStats: {
            averageScore: number;
            completionPercentage: number;
        };
        questionStats: {
            mostCorrect: number[];
            mostIncorrect: number[];
            notAnswered: number[];
        };
        breakdown: ApiBreakdownItem[];
    };
}
/**
 * Exam info API response type
 */
export interface ExamInfoApiResponse {
    message: string;
    data: {
        id: string;
        title: string;
        startDate: string | null;
        createdAt: string;
        [key: string]: unknown;
    };
}
/**
 * Hook state interface
 */
export interface UseExamDetailsState {
    examData: ExamDetailsData | null;
    loading: boolean;
    error: string | null;
    pagination: ExamDetailsPagination;
}
/**
 * Hook return type
 */
export interface UseExamDetailsReturn extends UseExamDetailsState {
    fetchExamDetails: (examId: string, filters?: ExamDetailsFilters) => Promise<void>;
}
/**
 * Default pagination values
 */
export declare const DEFAULT_EXAM_DETAILS_PAGINATION: ExamDetailsPagination;
/**
 * Map backend status to frontend status
 */
export declare const mapBackendStatusToFrontend: (status: StudentActivityStatus) => StudentAnswerStatus;
/**
 * Transform API student to frontend format
 */
export declare const transformStudent: (student: ApiExamStudent) => ExamStudentResult;
/**
 * Handle errors during exam fetch
 */
export declare const handleExamDetailsFetchError: (error: unknown) => string;
/**
 * Factory function to create useExamDetails hook
 *
 * @param apiClient - API client instance (axios, fetch wrapper, etc.)
 * @returns Hook for managing exam details
 *
 * @example
 * ```tsx
 * // In your app setup
 * import { createUseExamDetails } from 'analytica-frontend-lib';
 * import api from '@/services/apiService';
 *
 * export const useExamDetails = createUseExamDetails(api);
 *
 * // In your component
 * const { examData, loading, error, pagination, fetchExamDetails } = useExamDetails();
 *
 * useEffect(() => {
 *   if (examId) {
 *     fetchExamDetails(examId, { page: 1, limit: 10 });
 *   }
 * }, [examId]);
 * ```
 */
export declare const createUseExamDetails: (apiClient: BaseApiClient) => () => UseExamDetailsReturn;
/**
 * Alias for createUseExamDetails
 */
export declare const createExamDetailsHook: (apiClient: BaseApiClient) => () => UseExamDetailsReturn;
export {};
//# sourceMappingURL=useExamDetails.d.ts.map