import type { BaseApiClient } from '../types/api';
import type { CategoryConfig } from '../CheckBoxGroup/index';
/**
 * School type for categories data
 */
export interface School {
    id: string;
    companyName: string;
}
/**
 * SchoolYear type for categories data
 */
export interface SchoolYear {
    id: string;
    name: string;
    schoolId: string;
}
/**
 * Class type for categories data
 */
export interface Class {
    id: string;
    name: string;
    schoolYearId: string;
}
/**
 * Student type for categories data with nested school/schoolYear/class
 */
export interface Student {
    id: string;
    email: string;
    name: string;
    active: boolean;
    createdAt: string;
    updatedAt: string;
    userInstitutionId: string;
    institutionId: string;
    profileId: string;
    school: {
        id: string;
        name: string;
    };
    schoolYear: {
        id: string;
        name: string;
    };
    class: {
        id: string;
        name: string;
    };
}
/**
 * Fetch students using POST /students/filters based on selected schools, schoolYears, and classes
 *
 * @param apiClient - API client instance
 * @param filters - Object with schoolIds, schoolYearIds, and classIds arrays
 * @returns Promise resolving to array of students
 *
 * @example
 * ```ts
 * const students = await fetchStudentsByFilters(apiClient, {
 *   schoolIds: ['school-1'],
 *   schoolYearIds: ['year-1'],
 *   classIds: ['class-1']
 * });
 * ```
 */
export declare function fetchStudentsByFilters(apiClient: BaseApiClient, filters: {
    schoolIds?: string[];
    schoolYearIds?: string[];
    classIds?: string[];
}): Promise<Student[]>;
/**
 * Fetch classes filtered by selected schools/schoolYears via GET /classes.
 * Wire format is comma-joined strings (NOT arrays): axios serializes an array
 * param with brackets (`schoolId[]=a`) which the backend's default querystring
 * parser does not fold into `schoolId`; a comma-joined string (`schoolId=a,b`)
 * is serializer-agnostic and the backend splits it. A UUID never contains a comma.
 *
 * @param apiClient - API client instance
 * @param filters - Object with schoolIds and/or schoolYearIds arrays
 * @returns Promise resolving to array of classes
 *
 * @example
 * ```ts
 * const classes = await fetchClassesByFilters(apiClient, {
 *   schoolIds: ['school-1'],
 *   schoolYearIds: ['year-1'],
 * });
 * ```
 */
export declare function fetchClassesByFilters(apiClient: BaseApiClient, filters: {
    schoolIds?: string[];
    schoolYearIds?: string[];
}): Promise<Class[]>;
/**
 * Load categories data from API and transform to CategoryConfig format
 *
 * @param apiClient - API client instance
 * @param existingCategories - Current categories array to check if already loaded
 * @returns Promise resolving to array of CategoryConfig
 *
 * @example
 * ```ts
 * const categories = await loadCategoriesData(apiClient, []);
 * ```
 */
export declare function loadCategoriesData(apiClient: BaseApiClient, existingCategories: CategoryConfig[]): Promise<CategoryConfig[]>;
/**
 * Format time for display (HH:mm format)
 *
 * @param date - Date object to format
 * @returns Formatted time string in HH:mm format
 *
 * @example
 * ```ts
 * const time = formatTime(new Date('2025-01-01T14:30:00'));
 * // Returns: '14:30'
 * ```
 */
export declare function formatTime(date: Date): string;
//# sourceMappingURL=categoryDataUtils.d.ts.map