import type { ActivityFilterOption } from '../types/activitiesHistory';
/**
 * Generic user institution data structure
 * Matches the structure from GET /user/me endpoint
 */
export interface UserInstitutionData {
    school?: {
        id: string;
        name: string;
    };
    schoolYear?: {
        id: string;
        name: string;
    };
    class?: {
        id: string;
        name: string;
    };
}
/**
 * Generic subject teacher topic class structure
 */
export interface SubTeacherTopicClassData {
    subject?: {
        id: string;
        name: string;
    };
    class?: {
        id: string;
        name: string;
    };
}
/**
 * Generic user data structure for filter extraction
 * Can be extended by consuming projects
 */
export interface UserFilterSourceData {
    userInstitutions?: UserInstitutionData[];
    subTeacherTopicClasses?: SubTeacherTopicClassData[];
}
/**
 * Extract unique school options from user data
 * Uses Map for deduplication to handle multiple institutions with same school
 *
 * @param userData - User data from /user/me endpoint
 * @returns Array of unique schools sorted by name
 *
 * @example
 * ```typescript
 * const userData = useUserStore(state => state.data);
 * const schools = getSchoolOptionsFromUserData(userData);
 * // Returns: [{ id: '1', name: 'Escola A' }, { id: '2', name: 'Escola B' }]
 * ```
 */
export declare const getSchoolOptionsFromUserData: (userData: UserFilterSourceData | null | undefined) => ActivityFilterOption[];
/**
 * Extract unique subject options from user data
 * Uses Map for deduplication
 *
 * @param userData - User data from /user/me endpoint
 * @returns Array of unique subjects sorted by name
 *
 * @example
 * ```typescript
 * const userData = useUserStore(state => state.data);
 * const subjects = getSubjectOptionsFromUserData(userData);
 * // Returns: [{ id: '1', name: 'Matemática' }, { id: '2', name: 'Português' }]
 * ```
 */
export declare const getSubjectOptionsFromUserData: (userData: UserFilterSourceData | null | undefined) => ActivityFilterOption[];
/**
 * Extract unique school year (série) options from user data
 *
 * @param userData - User data from /user/me endpoint
 * @returns Array of unique school years sorted by name
 */
export declare const getSchoolYearOptionsFromUserData: (userData: UserFilterSourceData | null | undefined) => ActivityFilterOption[];
/**
 * Extract unique class (turma) options from user data
 * Combines classes from userInstitutions and subTeacherTopicClasses
 *
 * @param userData - User data from /user/me endpoint
 * @returns Array of unique classes sorted by name
 */
export declare const getClassOptionsFromUserData: (userData: UserFilterSourceData | null | undefined) => ActivityFilterOption[];
/**
 * Build user filter data object from user data
 * Convenience function to create ActivityUserFilterData
 *
 * @param userData - User data from /user/me endpoint
 * @returns Object with schools and subjects arrays
 *
 * @example
 * ```typescript
 * const userData = useUserStore(state => state.data);
 * const userFilterData = buildUserFilterData(userData);
 * // Use with ActivitiesHistory component:
 * <ActivitiesHistory userFilterData={userFilterData} ... />
 * ```
 */
export declare const buildUserFilterData: (userData: UserFilterSourceData | null | undefined) => {
    schools: ActivityFilterOption[];
    subjects: ActivityFilterOption[];
};
/**
 * Merge two filter option arrays, deduplicating by ID.
 * Returns the base array unchanged if extra adds no new items.
 *
 * @param base - Base filter options array
 * @param extra - Additional filter options to merge
 * @returns Merged and sorted array of unique filter options
 *
 * @example
 * ```typescript
 * const userSubjects = getSubjectOptionsFromUserData(userData);
 * const apiSubjects = [{ id: '3', name: 'História' }];
 * const allSubjects = mergeFilterOptions(userSubjects, apiSubjects);
 * // Returns deduplicated and sorted array
 * ```
 */
export declare const mergeFilterOptions: (base: ActivityFilterOption[], extra: ActivityFilterOption[]) => ActivityFilterOption[];
//# sourceMappingURL=filterHelpers.d.ts.map