/**
 * Education Management Module for BaoLife
 * Handles schools, colleges, majors, focuses, and extracurriculars.
 * Ported from Python education/education_manager.py
 */
import { Player } from '../../models/Player.js';
import { Person } from '../../models/Person.js';
export interface ElementarySchool {
    id: string;
    type: 'elementary_school';
    title: string;
    public_private: 'Public' | 'Private';
    student_count: number;
    teacher_student_ratio: number;
    description: string;
    energyModifier: number;
    image: string | null;
}
export interface HighSchool {
    id: string;
    type: 'high_school';
    title: string;
    public_private: 'Public' | 'Private';
    student_count: number;
    teacher_student_ratio: number;
    GPA_avg: number;
    description: string;
    energyModifier: number;
    image: string | null;
}
export interface College {
    id: string;
    type: 'college';
    title: string;
    public_private: 'Public' | 'Private';
    attendance: number;
    GPA_req: number;
    ACT_req: number;
    specialization: string;
    cost: number;
    description: string;
    energyModifier: number;
    image: string | null;
}
export interface CollegeMajor {
    id: string;
    title: string;
    related_jobs: string[];
    colleges: string[];
}
export interface Focus {
    id: number;
    focus_name: string;
    description: string;
    energyModifier: number;
}
export interface Extracurricular {
    id: string;
    title: string;
    type: 'extracurricular';
    focus: string;
    description: string;
    energyModifier: number;
    image: string | null;
}
export interface EducationRecord {
    id: string;
    educationLevel: string;
    locationId: string;
    locationType: string;
    date: string;
    gpa: number;
    focus: string;
}
export interface ActivityRecord {
    id: string;
    type: string;
    date: string;
    focus?: string;
    gpa?: number;
}
export type School = ElementarySchool | HighSchool | College;
export declare function createElementarySchool(schoolName: string, public_private: 'Public' | 'Private', student_count: number, teacher_student_ratio: number, image?: string | null): ElementarySchool;
export declare function createHighSchool(schoolName: string, public_private: 'Public' | 'Private', student_count: number, teacher_student_ratio: number, GPA_avg: number, image?: string | null): HighSchool;
export declare function createCollege(title: string, public_private: 'Public' | 'Private', attendance: number, GPA_req: number, ACT_req: number, specialization: string, cost: number, image?: string | null): College;
export declare function getElementarySchools(): ElementarySchool[];
export declare function getHighSchools(): HighSchool[];
export declare function getColleges(): College[];
export declare function getMajors(): CollegeMajor[];
export declare function getFocuses(): Focus[];
export declare function getFocus(focusName: string): Focus | undefined;
export declare function getRandomFocus(): Focus;
export declare function updateFocus(player: Player, activityId: string, newFocusName: string): boolean;
export declare function getExtracurriculars(): Extracurricular[];
export declare function getRandomExtracurricular(): Extracurricular;
/**
 * Assign an extracurricular activity to a person.
 * This is the low-level function that adds the activity and creates a record.
 * Use applyForExtracurricular for player-facing applications.
 *
 * @param person - Person to assign activity to
 * @param extracurricular - Extracurricular activity to assign
 * @param date - Date the activity was started
 */
export declare function setExtracurricular(person: Person, extracurricular: Extracurricular, date: string): void;
export declare function getExtracurricularByTitle(title: string): Extracurricular | undefined;
export declare function applyForExtracurricular(player: Player, extracurricularId: string): boolean;
export declare function quitExtracurricular(player: Player, extracurricularId: string): boolean;
export declare function getEducationLevelForAge(age: number): string | null;
/**
 * Weekly GPA update based on focus level.
 * Called during game loop to update student academic performance.
 *
 * Focus effects on GPA:
 * - Work Hard: GPA increases more often (+1 modifier)
 * - Slack Off: GPA decreases more often (-1 modifier)
 * - Balanced/Socialize: Neutral changes
 *
 * @param person - Person with current_education
 */
export declare function handleEducation(person: Person): void;
export declare function setEducation(player: Player, person: Person): Person;
export declare function getRandomElementarySchool(): ElementarySchool;
export declare function getRandomHighSchool(): HighSchool;
export declare function getRandomCollege(): College;
export declare function getRandomMajor(): CollegeMajor;
export declare function getMajorByTitle(title: string): CollegeMajor | undefined;
export declare function getCollegeById(id: string): College | undefined;
export declare function getSchoolById(id: string): School | undefined;
/**
 * Ensures a school-age character (5-17) has proper education set up.
 * This is used for migrating existing players who may be missing education data.
 *
 * @param player - The player object
 * @param person - The person to check/fix education for
 * @returns true if migration was needed and applied, false if already set up
 */
export declare function ensureEducationSetup(player: Player, person: Person): boolean;
export declare function clearEducationCaches(): void;
export declare const educationManager: {
    createElementarySchool: typeof createElementarySchool;
    createHighSchool: typeof createHighSchool;
    createCollege: typeof createCollege;
    getElementarySchools: typeof getElementarySchools;
    getHighSchools: typeof getHighSchools;
    getColleges: typeof getColleges;
    getMajors: typeof getMajors;
    getRandomElementarySchool: typeof getRandomElementarySchool;
    getRandomHighSchool: typeof getRandomHighSchool;
    getRandomCollege: typeof getRandomCollege;
    getRandomMajor: typeof getRandomMajor;
    getSchoolById: typeof getSchoolById;
    getCollegeById: typeof getCollegeById;
    getMajorByTitle: typeof getMajorByTitle;
    getFocuses: typeof getFocuses;
    getFocus: typeof getFocus;
    getRandomFocus: typeof getRandomFocus;
    updateFocus: typeof updateFocus;
    getExtracurriculars: typeof getExtracurriculars;
    getRandomExtracurricular: typeof getRandomExtracurricular;
    getExtracurricularByTitle: typeof getExtracurricularByTitle;
    setExtracurricular: typeof setExtracurricular;
    applyForExtracurricular: typeof applyForExtracurricular;
    quitExtracurricular: typeof quitExtracurricular;
    getEducationLevelForAge: typeof getEducationLevelForAge;
    handleEducation: typeof handleEducation;
    setEducation: typeof setEducation;
    ensureEducationSetup: typeof ensureEducationSetup;
    clearEducationCaches: typeof clearEducationCaches;
};
//# sourceMappingURL=education_manager.d.ts.map