UNPKG

analytica-frontend-lib

Version:

Repositório público dos componentes utilizados nas plataformas da Analytica Ensino

86 lines 3.59 kB
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