import { z } from 'zod';
import { RecommendedClassDraftType } from '../types/recommendedLessons';
import type { RecommendedClassModelResponse, RecommendedClassModelTableItem, RecommendedClassModelFilters, RecommendedClassModelPagination } from '../types/recommendedLessons';
import type { BaseApiClient } from '../types/api';
/**
 * Zod schema for recommendedClass models API response validation
 */
export declare const recommendedClassModelsApiResponseSchema: z.ZodObject<{
    message: z.ZodString;
    data: z.ZodObject<{
        drafts: z.ZodArray<z.ZodObject<{
            id: z.ZodString;
            type: z.ZodEnum<typeof RecommendedClassDraftType>;
            title: z.ZodString;
            description: z.ZodNullable<z.ZodString>;
            creatorUserInstitutionId: z.ZodString;
            subjectId: z.ZodNullable<z.ZodString>;
            subject: z.ZodOptional<z.ZodNullable<z.ZodObject<{
                id: z.ZodString;
                name: z.ZodString;
            }, z.core.$strip>>>;
            startDate: z.ZodNullable<z.ZodString>;
            finalDate: z.ZodNullable<z.ZodString>;
            createdAt: z.ZodString;
            updatedAt: z.ZodString;
            activityDrafts: z.ZodDefault<z.ZodOptional<z.ZodArray<z.ZodObject<{
                activityDraftId: z.ZodUUID;
                sequence: z.ZodNumber;
                title: z.ZodOptional<z.ZodNullable<z.ZodString>>;
            }, z.core.$strip>>>>;
        }, z.core.$strip>>;
        total: z.ZodNumber;
    }, z.core.$strip>;
}, z.core.$strip>;
/**
 * Hook state interface
 */
export interface UseRecommendedClassModelsState {
    models: RecommendedClassModelTableItem[];
    loading: boolean;
    error: string | null;
    pagination: RecommendedClassModelPagination;
}
/**
 * Hook return type
 */
export interface UseRecommendedClassModelsReturn extends UseRecommendedClassModelsState {
    fetchModels: (filters?: RecommendedClassModelFilters, subjectsMap?: Map<string, string>) => Promise<void>;
    deleteModel: (id: string) => Promise<boolean>;
}
/**
 * Default pagination values
 */
export declare const DEFAULT_RECOMMENDED_CLASS_MODELS_PAGINATION: RecommendedClassModelPagination;
/**
 * Transform API response to table item format
 * @param model - RecommendedClass model from API response
 * @param subjectsMap - Map of subject IDs to subject names
 * @returns Formatted model for table display
 */
export declare const transformRecommendedClassModelToTableItem: (model: RecommendedClassModelResponse, subjectsMap?: Map<string, string>) => RecommendedClassModelTableItem;
/**
 * Handle errors during model fetch
 * Uses the generic error handler factory to reduce code duplication
 */
export declare const handleRecommendedClassModelFetchError: (error: unknown) => string;
/**
 * Factory function to create useRecommendedClassModels hook
 *
 * @param apiClient - API client adapter with get and delete methods
 * @returns Hook for managing recommendedClass models
 *
 * @example
 * ```tsx
 * const useRecommendedClassModels = createUseRecommendedClassModels(apiClientAdapter);
 *
 * // In your component
 * const { models, loading, error, pagination, fetchModels, deleteModel } = useRecommendedClassModels();
 * ```
 */
export declare const createUseRecommendedClassModels: (apiClient: BaseApiClient) => () => UseRecommendedClassModelsReturn;
/**
 * Alias for createUseRecommendedClassModels
 */
export declare const createRecommendedClassModelsHook: (apiClient: BaseApiClient) => () => UseRecommendedClassModelsReturn;
//# sourceMappingURL=useRecommendedClassModels.d.ts.map