import { z } from 'zod';
/**
 * Period filter options for questions data
 */
export type QuestionsDataPeriod = '7_DAYS' | '1_MONTH' | '3_MONTHS' | '6_MONTHS' | '1_YEAR';
/**
 * Trend direction for questions data
 */
export type QuestionsDataTrendDirection = 'up' | 'down' | 'stable';
/**
 * Filters for questions data API request
 */
export interface QuestionsDataFilters {
    period?: QuestionsDataPeriod;
    subjectId?: string;
    schoolYearId?: string;
    classId?: string;
    schoolId?: string;
}
/**
 * Trend information from API response
 */
export interface QuestionsDataTrend {
    totalQuestions: number;
    correctPercentage: number;
    direction: QuestionsDataTrendDirection;
}
/**
 * API response data structure
 */
export interface QuestionsDataApiData {
    totalQuestions: number;
    correctQuestions: number;
    incorrectQuestions: number;
    blankQuestions: number;
    correctPercentage: number;
    incorrectPercentage: number;
    blankPercentage: number;
    trend: QuestionsDataTrend | null;
}
/**
 * API response structure for questions data endpoint
 */
export interface QuestionsDataApiResponse {
    message: string;
    data: QuestionsDataApiData;
}
/**
 * Transformed data for UI display.
 * Extends the basic QuestionsDataItem from component with additional API fields.
 * Can be passed directly to QuestionsData component (extra fields are ignored).
 */
export interface QuestionsDataHookResult {
    /** Total number of questions answered */
    total: number;
    /** Number of correct answers */
    corretas: number;
    /** Number of incorrect answers */
    incorretas: number;
    /** Number of blank (unanswered) questions */
    emBranco: number;
    /** Percentage of correct answers */
    correctPercentage: number;
    /** Percentage of incorrect answers */
    incorrectPercentage: number;
    /** Percentage of blank answers */
    blankPercentage: number;
    /** Trend information */
    trend: QuestionsDataTrend | null;
}
/**
 * Zod schema for questions data API response validation
 */
export declare const questionsDataApiResponseSchema: z.ZodObject<{
    message: z.ZodString;
    data: z.ZodObject<{
        totalQuestions: z.ZodNumber;
        correctQuestions: z.ZodNumber;
        incorrectQuestions: z.ZodNumber;
        blankQuestions: z.ZodNumber;
        correctPercentage: z.ZodNumber;
        incorrectPercentage: z.ZodNumber;
        blankPercentage: z.ZodNumber;
        trend: z.ZodNullable<z.ZodObject<{
            totalQuestions: z.ZodNumber;
            correctPercentage: z.ZodNumber;
            direction: z.ZodEnum<{
                stable: "stable";
                up: "up";
                down: "down";
            }>;
        }, z.core.$strip>>;
    }, z.core.$strip>;
}, z.core.$strip>;
/**
 * Hook state interface
 */
export interface UseQuestionsDataState {
    data: QuestionsDataHookResult | null;
    loading: boolean;
    error: string | null;
}
/**
 * Hook return type
 */
export interface UseQuestionsDataReturn extends UseQuestionsDataState {
    fetchQuestionsData: (filters?: QuestionsDataFilters) => Promise<void>;
    reset: () => void;
}
/**
 * Transform API response data to component format
 * @param apiData - Data from API response
 * @returns Transformed data for QuestionsData component
 */
export declare const transformQuestionsData: (apiData: QuestionsDataApiData) => QuestionsDataHookResult;
/**
 * Handle errors during questions data fetch
 * @param error - Error object
 * @returns Error message for UI display
 */
export declare const handleQuestionsDataFetchError: (error: unknown) => string;
/**
 * Factory function to create useQuestionsData hook
 *
 * @param fetchQuestionsDataApi - Function to fetch questions data from API
 * @returns Hook for managing questions data
 *
 * @example
 * ```tsx
 * // In your app setup
 * const fetchQuestionsDataApi = async (filters) => {
 *   const response = await api.get('/performance/questions-data', { params: filters });
 *   return response.data;
 * };
 *
 * const useQuestionsData = createUseQuestionsData(fetchQuestionsDataApi);
 *
 * // In your component
 * const { data, loading, error, fetchQuestionsData } = useQuestionsData();
 *
 * useEffect(() => {
 *   fetchQuestionsData({ period: '1_MONTH' });
 * }, []);
 *
 * if (loading) return <Skeleton />;
 * if (!data) return null;
 *
 * return <QuestionsData data={data} />;
 * ```
 */
export declare const createUseQuestionsData: (fetchQuestionsDataApi: (filters?: QuestionsDataFilters) => Promise<QuestionsDataApiResponse>) => () => UseQuestionsDataReturn;
/**
 * Alias for createUseQuestionsData
 */
export declare const createQuestionsDataHook: (fetchQuestionsDataApi: (filters?: QuestionsDataFilters) => Promise<QuestionsDataApiResponse>) => () => UseQuestionsDataReturn;
//# sourceMappingURL=useQuestionsData.d.ts.map