import type { BaseApiClient } from '../../types/api';
import type { SimulationsStudentsPage, SimulationsStudentsFilters, SimulationsListData, SimulationsListFilters, SimulationDetailData, NoteData } from '../../types/simulations';
/**
 * Hook return type for the teacher-facing Simulations feature.
 *
 * The hook exposes imperative fetchers (rather than holding everything in
 * state) because the UI loads data lazily across three nested levels:
 * students list -> a student's simulations -> a simulation's questions.
 */
export interface UseSimulationsReturn {
    fetchStudents: (filters?: SimulationsStudentsFilters) => Promise<SimulationsStudentsPage>;
    fetchStudentSimulations: (userInstitutionId: string, filters?: SimulationsListFilters) => Promise<SimulationsListData>;
    fetchSimulationDetail: (userInstitutionId: string, simulationId: string) => Promise<SimulationDetailData>;
    fetchNote: (userInstitutionId: string, simulationId: string) => Promise<NoteData | null>;
    saveNote: (userInstitutionId: string, simulationId: string, note: string) => Promise<NoteData | null>;
}
/**
 * Factory that binds an API client to the Simulations hook.
 *
 * @example
 * ```tsx
 * const useSimulations = createUseSimulations(api);
 * const { fetchStudents } = useSimulations();
 * ```
 */
export declare const createUseSimulations: (apiClient: BaseApiClient) => () => UseSimulationsReturn;
//# sourceMappingURL=useSimulations.d.ts.map