import type { BaseApiClient } from '../types/api';
import type { ActivityDetailsData, ActivityDetailsQueryParams } from '../types/activityDetails';
import type { QuestionsAnswersByStudentResponse, SaveQuestionCorrectionPayload } from '../utils/studentActivityCorrection';
/**
 * Hook return type for activity details
 */
export interface StudentFeedbackResponse {
    teacherFeedback: string | null;
    attachment: string | null;
}
export interface UseActivityDetailsReturn {
    /**
     * Fetch activity details from API
     * @param id - Activity ID
     * @param params - Query parameters for pagination
     * @returns Activity details data
     */
    fetchActivityDetails: (id: string, params?: ActivityDetailsQueryParams) => Promise<ActivityDetailsData>;
    /**
     * Fetch student correction data from API
     * @param activityId - Activity ID
     * @param studentId - Student ID
     * @returns Student answers response data
     */
    fetchStudentCorrection: (activityId: string, studentId: string) => Promise<QuestionsAnswersByStudentResponse>;
    /**
     * Fetch teacher feedback for a student activity
     * @param activityId - Activity ID
     * @param studentId - Student ID
     * @returns Teacher feedback and attachment
     */
    fetchStudentFeedback: (activityId: string, studentId: string) => Promise<StudentFeedbackResponse>;
    /**
     * Fetch teacher feedback for a student activity, returning null on error
     * @param activityId - Activity ID
     * @param studentId - Student ID
     * @returns Teacher feedback and attachment, or null if fetch fails
     */
    safeFetchStudentFeedback: (activityId: string, studentId: string) => Promise<StudentFeedbackResponse | null>;
    /**
     * Submit observation for student activity
     * @param actId - Activity ID
     * @param studentId - Student ID
     * @param observation - Observation text
     * @param file - Attached file (optional)
     * @returns The attachment URL if a file was uploaded, null otherwise
     */
    submitObservation: (actId: string, studentId: string, observation: string, file: File | null, existingAttachment: string | null) => Promise<string | null>;
    /**
     * Submit question correction for student activity
     * @param activityId - Activity ID
     * @param studentId - Student ID
     * @param payload - Question correction payload
     */
    submitQuestionCorrection: (activityId: string, studentId: string, payload: SaveQuestionCorrectionPayload) => Promise<void>;
}
/**
 * Hook for managing activity details API calls
 * Provides functions to fetch activity details, student corrections, and submit observations/corrections
 *
 * @param apiClient - API client instance for making requests
 * @returns Hook return object with API functions
 *
 * @example
 * ```tsx
 * import { useActivityDetails } from 'analytica-frontend-lib';
 * import { useApi } from './services/apiService';
 *
 * function ActivityDetailsPage() {
 *   const api = useApi();
 *   const { fetchActivityDetails, fetchStudentCorrection } = useActivityDetails(api);
 *
 *   // Use functions...
 * }
 * ```
 */
export declare const useActivityDetails: (apiClient: BaseApiClient) => UseActivityDetailsReturn;
//# sourceMappingURL=useActivityDetails.d.ts.map