/**
 * Education Domain Type Definitions
 *
 * @module education-types
 * @description Comprehensive types for K-12 and higher education including:
 * - Student information and records
 * - Academic performance (grades, assessments, transcripts)
 * - Attendance tracking
 * - Curriculum and course management
 * - Teacher and staff information
 * - Parent/guardian relationships
 * - Special education (IEPs, 504 plans)
 * - Extracurricular activities
 *
 * Designed for AI/debugging friendliness with clear naming and validation
 */
import type { Brand, DataClassification, FERPAEducationRecord, MonetaryAmount, Result } from './index';
/** Unique student identifier across the system */
export type StudentId = Brand<string, 'StudentId'>;
/** Unique teacher/instructor identifier */
export type TeacherId = Brand<string, 'TeacherId'>;
/** Unique parent/guardian identifier */
export type GuardianId = Brand<string, 'GuardianId'>;
/** Unique school identifier */
export type SchoolId = Brand<string, 'SchoolId'>;
/** Unique district identifier */
export type DistrictId = Brand<string, 'DistrictId'>;
/** Unique course identifier */
export type CourseId = Brand<string, 'CourseId'>;
/** Unique section/class identifier */
export type SectionId = Brand<string, 'SectionId'>;
/** Unique assignment identifier */
export type AssignmentId = Brand<string, 'AssignmentId'>;
/** Unique grade/assessment identifier */
export type GradeId = Brand<string, 'GradeId'>;
/**
 * Comprehensive student profile
 * Central record for all student information
 */
export interface StudentProfile {
    readonly studentId: StudentId;
    readonly personalInfo: StudentPersonalInfo;
    readonly enrollment: StudentEnrollment;
    readonly contacts: StudentContacts;
    readonly academicInfo: StudentAcademicInfo;
    readonly healthInfo?: StudentHealthInfo;
    readonly specialEducation?: SpecialEducationInfo;
    readonly transportation?: StudentTransportation;
    readonly mealProgram?: MealProgramEnrollment;
    readonly metadata: {
        readonly createdAt: string;
        readonly lastUpdated: string;
        readonly dataClassification: DataClassification;
        readonly ferpaRecord?: FERPAEducationRecord;
    };
}
/**
 * Student personal information
 * PII that requires FERPA protection
 */
export interface StudentPersonalInfo {
    readonly legalName: {
        readonly firstName: string;
        readonly middleName?: string;
        readonly lastName: string;
        readonly suffix?: string;
    };
    readonly preferredName?: string;
    readonly pronouns?: string;
    readonly dateOfBirth: string;
    readonly placeOfBirth?: {
        readonly city: string;
        readonly state?: string;
        readonly country: string;
    };
    readonly gender?: 'male' | 'female' | 'non-binary' | 'other' | 'prefer-not-to-say';
    readonly ethnicity?: string[];
    readonly primaryLanguage: string;
    readonly homeLanguage?: string;
    readonly citizenshipStatus?: 'citizen' | 'permanent-resident' | 'visa' | 'other';
    readonly ssn?: string;
}
/**
 * Student enrollment information
 */
export interface StudentEnrollment {
    readonly schoolId: SchoolId;
    readonly districtId: DistrictId;
    readonly gradeLevel: GradeLevel;
    readonly academicYear: string;
    readonly enrollmentDate: string;
    readonly withdrawalDate?: string;
    readonly status: EnrollmentStatus;
    readonly type: 'full-time' | 'part-time' | 'dual-enrollment';
    readonly previousSchools?: PreviousSchoolRecord[];
    readonly graduationDate?: string;
    readonly diplomaType?: 'standard' | 'honors' | 'IB' | 'vocational' | 'GED';
}
/**
 * Grade levels in education system
 */
export type GradeLevel = 'PK' | 'K' | '1' | '2' | '3' | '4' | '5' | '6' | '7' | '8' | '9' | '10' | '11' | '12' | 'PS' | 'UG' | 'GR';
/**
 * Student enrollment status
 */
export declare enum EnrollmentStatus {
    PreEnrolled = "PRE_ENROLLED",
    Active = "ACTIVE",
    Inactive = "INACTIVE",
    Withdrawn = "WITHDRAWN",
    Graduated = "GRADUATED",
    Expelled = "EXPELLED",
    Transferred = "TRANSFERRED",
    Deceased = "DECEASED"
}
/**
 * Previous school attendance record
 */
export interface PreviousSchoolRecord {
    readonly schoolName: string;
    readonly schoolId?: string;
    readonly city: string;
    readonly state?: string;
    readonly country: string;
    readonly startDate: string;
    readonly endDate: string;
    readonly gradeLevel: string;
    readonly reasonForLeaving?: string;
    readonly recordsReceived: boolean;
}
/**
 * Student contact information
 */
export interface StudentContacts {
    readonly primaryAddress: Address;
    readonly mailingAddress?: Address;
    readonly phone?: {
        readonly home?: string;
        readonly mobile?: string;
    };
    readonly email?: string;
    readonly emergencyContacts: EmergencyContact[];
    readonly guardians: GuardianRelationship[];
}
/**
 * Address structure
 */
export interface Address {
    readonly street1: string;
    readonly street2?: string;
    readonly city: string;
    readonly state?: string;
    readonly postalCode?: string;
    readonly country: string;
    readonly verifiedDate?: string;
    readonly isTemporary?: boolean;
    readonly effectiveDate?: string;
    readonly endDate?: string;
}
/**
 * Emergency contact information
 */
export interface EmergencyContact {
    readonly name: string;
    readonly relationship: string;
    readonly primaryPhone: string;
    readonly alternatePhone?: string;
    readonly email?: string;
    readonly isPrimaryContact: boolean;
    readonly hasPickupRights: boolean;
    readonly restrictions?: string;
}
/**
 * Guardian/parent relationship
 */
export interface GuardianRelationship {
    readonly guardianId: GuardianId;
    readonly relationship: GuardianType;
    readonly isPrimaryGuardian: boolean;
    readonly hasLegalCustody: boolean;
    readonly hasEducationalRights: boolean;
    readonly hasFinancialResponsibility: boolean;
    readonly courtOrders?: {
        readonly type: string;
        readonly description: string;
        readonly effectiveDate: string;
        readonly expirationDate?: string;
        readonly documentUrl?: string;
    }[];
}
/**
 * Types of guardian relationships
 */
export declare enum GuardianType {
    Mother = "MOTHER",
    Father = "FATHER",
    Stepmother = "STEPMOTHER",
    Stepfather = "STEPFATHER",
    Grandmother = "GRANDMOTHER",
    Grandfather = "GRANDFATHER",
    Aunt = "AUNT",
    Uncle = "UNCLE",
    LegalGuardian = "LEGAL_GUARDIAN",
    FosterParent = "FOSTER_PARENT",
    Other = "OTHER"
}
/**
 * Student academic information summary
 */
export interface StudentAcademicInfo {
    readonly cumulativeGPA?: number;
    readonly currentGPA?: number;
    readonly classRank?: {
        readonly rank: number;
        readonly totalStudents: number;
        readonly percentile: number;
    };
    readonly credits: {
        readonly earned: number;
        readonly attempted: number;
        readonly required: number;
        readonly transferCredits?: number;
    };
    readonly standardizedTests?: StandardizedTestScore[];
    readonly academicHonors?: AcademicHonor[];
    readonly disciplinaryActions?: DisciplinaryAction[];
}
/**
 * Standardized test score record
 */
export interface StandardizedTestScore {
    readonly testType: StandardizedTestType;
    readonly testDate: string;
    readonly scores: Record<string, number>;
    readonly percentiles?: Record<string, number>;
    readonly isOfficial: boolean;
    readonly verifiedBy?: string;
}
/**
 * Types of standardized tests
 */
export declare enum StandardizedTestType {
    SAT = "SAT",
    ACT = "ACT",
    PSAT = "PSAT",
    AP = "AP",// Advanced Placement
    IB = "IB",// International Baccalaureate
    StateAssessment = "STATE_ASSESSMENT",
    TOEFL = "TOEFL",
    IELTS = "IELTS",
    GRE = "GRE",
    GMAT = "GMAT"
}
/**
 * Academic honor/award record
 */
export interface AcademicHonor {
    readonly title: string;
    readonly type: 'honor-roll' | 'dean-list' | 'scholarship' | 'award' | 'recognition';
    readonly dateAwarded: string;
    readonly term?: string;
    readonly criteria?: string;
    readonly monetaryValue?: MonetaryAmount;
}
/**
 * Disciplinary action record
 */
export interface DisciplinaryAction {
    readonly incidentDate: string;
    readonly incidentType: string;
    readonly description: string;
    readonly action: string;
    readonly duration?: {
        readonly startDate: string;
        readonly endDate?: string;
    };
    readonly severity: 'minor' | 'moderate' | 'major' | 'severe';
    readonly reportedBy: string;
    readonly parentNotified: boolean;
    readonly resolutionNotes?: string;
}
/**
 * Course definition in curriculum
 */
export interface Course {
    readonly courseId: CourseId;
    readonly courseCode: string;
    readonly title: string;
    readonly description: string;
    readonly department: string;
    readonly subjectArea: SubjectArea;
    readonly creditHours: number;
    readonly prerequisites?: CourseId[];
    readonly corequisites?: CourseId[];
    readonly gradeLevel: GradeLevel[];
    readonly difficulty: 'regular' | 'honors' | 'AP' | 'IB' | 'remedial';
    readonly format: 'traditional' | 'online' | 'hybrid' | 'self-paced';
    readonly duration: {
        readonly type: 'semester' | 'trimester' | 'quarter' | 'year' | 'summer';
        readonly weeks: number;
    };
}
/**
 * Subject areas in curriculum
 */
export declare enum SubjectArea {
    EnglishLanguageArts = "ENGLISH_LANGUAGE_ARTS",
    Mathematics = "MATHEMATICS",
    Science = "SCIENCE",
    SocialStudies = "SOCIAL_STUDIES",
    ForeignLanguage = "FOREIGN_LANGUAGE",
    Arts = "ARTS",
    Music = "MUSIC",
    PhysicalEducation = "PHYSICAL_EDUCATION",
    Health = "HEALTH",
    Technology = "TECHNOLOGY",
    BusinessEducation = "BUSINESS_EDUCATION",
    CareerTechnical = "CAREER_TECHNICAL",
    SpecialEducation = "SPECIAL_EDUCATION",
    ESL = "ESL",
    Other = "OTHER"
}
/**
 * Course section (actual class instance)
 */
export interface CourseSection {
    readonly sectionId: SectionId;
    readonly courseId: CourseId;
    readonly term: AcademicTerm;
    readonly teacher: TeacherId;
    readonly assistants?: TeacherId[];
    readonly schedule: ClassSchedule;
    readonly location: {
        readonly building?: string;
        readonly room: string;
        readonly capacity: number;
    };
    readonly enrollment: {
        readonly current: number;
        readonly maximum: number;
        readonly waitlist: number;
    };
    readonly modality: 'in-person' | 'online' | 'hybrid';
}
/**
 * Academic term/semester
 */
export interface AcademicTerm {
    readonly year: string;
    readonly term: 'fall' | 'spring' | 'summer' | 'winter' | 'trimester-1' | 'trimester-2' | 'trimester-3';
    readonly startDate: string;
    readonly endDate: string;
    readonly instructionalDays: number;
    readonly holidays: Holiday[];
}
/**
 * Class schedule information
 */
export interface ClassSchedule {
    readonly pattern: SchedulePattern;
    readonly days: DayOfWeek[];
    readonly startTime: string;
    readonly endTime: string;
    readonly duration: number;
    readonly recurrence?: {
        readonly frequency: 'daily' | 'weekly' | 'biweekly' | 'monthly';
        readonly interval?: number;
    };
}
/**
 * Schedule patterns
 */
export declare enum SchedulePattern {
    Traditional = "TRADITIONAL",
    Block = "BLOCK",
    Rotating = "ROTATING",
    ModifiedBlock = "MODIFIED_BLOCK",
    Flexible = "FLEXIBLE"
}
/**
 * Days of the week
 */
export declare enum DayOfWeek {
    Monday = "MONDAY",
    Tuesday = "TUESDAY",
    Wednesday = "WEDNESDAY",
    Thursday = "THURSDAY",
    Friday = "FRIDAY",
    Saturday = "SATURDAY",
    Sunday = "SUNDAY"
}
/**
 * School holiday/break
 */
export interface Holiday {
    readonly name: string;
    readonly date: string;
    readonly type: 'federal' | 'state' | 'local' | 'religious' | 'break' | 'professional-development';
}
/**
 * Student enrollment in a course section
 */
export interface StudentEnrollmentRecord {
    readonly studentId: StudentId;
    readonly sectionId: SectionId;
    readonly enrollmentDate: string;
    readonly withdrawalDate?: string;
    readonly status: 'active' | 'withdrawn' | 'completed' | 'incomplete' | 'failed';
    readonly finalGrade?: Grade;
    readonly currentGrade?: Grade;
    readonly attendance: AttendanceSummary;
    readonly assignments: AssignmentSubmission[];
}
/**
 * Grade representation
 */
export interface Grade {
    readonly gradeId: GradeId;
    readonly value: GradeValue;
    readonly numeric?: number;
    readonly letter?: string;
    readonly points?: number;
    readonly weight?: number;
    readonly gradedBy: TeacherId;
    readonly gradedAt: string;
    readonly comments?: string;
    readonly rubric?: GradingRubric;
}
/**
 * Grade value types
 */
export type GradeValue = {
    type: 'numeric';
    value: number;
    scale: number;
} | {
    type: 'letter';
    value: string;
    plusMinus?: boolean;
} | {
    type: 'gpa';
    value: number;
    scale: number;
} | {
    type: 'pass-fail';
    value: 'pass' | 'fail';
} | {
    type: 'standards-based';
    value: number;
    scale: number;
} | {
    type: 'narrative';
    value: string;
};
/**
 * Grading rubric for consistent assessment
 */
export interface GradingRubric {
    readonly rubricId: Brand<string, 'RubricId'>;
    readonly name: string;
    readonly criteria: RubricCriterion[];
    readonly totalPoints: number;
}
/**
 * Individual criterion in a rubric
 */
export interface RubricCriterion {
    readonly name: string;
    readonly description: string;
    readonly maxPoints: number;
    readonly levels: {
        readonly level: number;
        readonly description: string;
        readonly points: number;
    }[];
}
/**
 * Assignment definition
 */
export interface Assignment {
    readonly assignmentId: AssignmentId;
    readonly sectionId: SectionId;
    readonly title: string;
    readonly description: string;
    readonly type: AssignmentType;
    readonly category: string;
    readonly points: number;
    readonly weight?: number;
    readonly assignedDate: string;
    readonly dueDate: string;
    readonly latePolicy?: {
        readonly allowed: boolean;
        readonly penaltyPerDay?: number;
        readonly maxLateDays?: number;
    };
    readonly resources?: string[];
    readonly rubric?: GradingRubric;
}
/**
 * Types of assignments
 */
export declare enum AssignmentType {
    Homework = "HOMEWORK",
    Quiz = "QUIZ",
    Test = "TEST",
    Essay = "ESSAY",
    Project = "PROJECT",
    Presentation = "PRESENTATION",
    Lab = "LAB",
    Participation = "PARTICIPATION",
    Other = "OTHER"
}
/**
 * Student assignment submission
 */
export interface AssignmentSubmission {
    readonly submissionId: Brand<string, 'SubmissionId'>;
    readonly assignmentId: AssignmentId;
    readonly studentId: StudentId;
    readonly submittedAt?: string;
    readonly status: SubmissionStatus;
    readonly files?: {
        readonly filename: string;
        readonly url: string;
        readonly size: number;
        readonly mimeType: string;
    }[];
    readonly text?: string;
    readonly grade?: Grade;
    readonly feedback?: string;
    readonly turnitinScore?: number;
}
/**
 * Assignment submission status
 */
export declare enum SubmissionStatus {
    NotStarted = "NOT_STARTED",
    InProgress = "IN_PROGRESS",
    Submitted = "SUBMITTED",
    Late = "LATE",
    Missing = "MISSING",
    Graded = "GRADED",
    Returned = "RETURNED",
    Resubmitted = "RESUBMITTED"
}
/**
 * Daily attendance record
 */
export interface AttendanceRecord {
    readonly studentId: StudentId;
    readonly date: string;
    readonly status: AttendanceStatus;
    readonly periods?: PeriodAttendance[];
    readonly minutesPresent?: number;
    readonly minutesAbsent?: number;
    readonly excused: boolean;
    readonly reason?: string;
    readonly verifiedBy?: string;
    readonly notes?: string;
}
/**
 * Attendance status
 */
export declare enum AttendanceStatus {
    Present = "PRESENT",
    Absent = "ABSENT",
    Tardy = "TARDY",
    EarlyDismissal = "EARLY_DISMISSAL",
    Excused = "EXCUSED",
    Unexcused = "UNEXCUSED",
    Suspended = "SUSPENDED",
    FieldTrip = "FIELD_TRIP",
    SchoolActivity = "SCHOOL_ACTIVITY"
}
/**
 * Period-by-period attendance
 */
export interface PeriodAttendance {
    readonly period: number;
    readonly sectionId: SectionId;
    readonly status: AttendanceStatus;
    readonly arrivalTime?: string;
    readonly departureTime?: string;
    readonly teacher: TeacherId;
}
/**
 * Attendance summary statistics
 */
export interface AttendanceSummary {
    readonly totalDays: number;
    readonly daysPresent: number;
    readonly daysAbsent: number;
    readonly daysExcused: number;
    readonly daysUnexcused: number;
    readonly daysTardy: number;
    readonly attendanceRate: number;
    readonly consecutiveAbsences: number;
    readonly pattern?: 'chronic' | 'improving' | 'declining' | 'stable';
}
/**
 * Special education information
 */
export interface SpecialEducationInfo {
    readonly hasIEP: boolean;
    readonly has504Plan: boolean;
    readonly iep?: IEP;
    readonly section504?: Section504Plan;
    readonly evaluations: SpecialEdEvaluation[];
    readonly services: SpecialEdService[];
}
/**
 * Individualized Education Program (IEP)
 */
export interface IEP {
    readonly iepId: Brand<string, 'IEPId'>;
    readonly studentId: StudentId;
    readonly effectiveDate: string;
    readonly reviewDate: string;
    readonly goals: IEPGoal[];
    readonly accommodations: Accommodation[];
    readonly modifications: Modification[];
    readonly services: SpecialEdService[];
    readonly placement: {
        readonly setting: string;
        readonly percentInGenEd: number;
    };
    readonly team: IEPTeamMember[];
}
/**
 * IEP goal
 */
export interface IEPGoal {
    readonly goalId: Brand<string, 'GoalId'>;
    readonly domain: string;
    readonly description: string;
    readonly measurable: boolean;
    readonly baseline: string;
    readonly target: string;
    readonly criteria: string;
    readonly progress: {
        readonly method: string;
        readonly frequency: string;
        readonly lastUpdate?: string;
        readonly status?: 'not-started' | 'in-progress' | 'achieved' | 'modified';
    };
}
/**
 * Educational accommodation
 */
export interface Accommodation {
    readonly type: AccommodationType;
    readonly description: string;
    readonly subject?: SubjectArea;
    readonly frequency: 'always' | 'as-needed' | 'testing-only';
    readonly implementedBy?: string;
}
/**
 * Types of accommodations
 */
export declare enum AccommodationType {
    ExtendedTime = "EXTENDED_TIME",
    ReducedAssignments = "REDUCED_ASSIGNMENTS",
    PreferentialSeating = "PREFERENTIAL_SEATING",
    BreaksAllowed = "BREAKS_ALLOWED",
    OralTesting = "ORAL_TESTING",
    LargeText = "LARGE_TEXT",
    AudioBooks = "AUDIO_BOOKS",
    Calculator = "CALCULATOR",
    SpeechToText = "SPEECH_TO_TEXT",
    Other = "OTHER"
}
/**
 * Educational modification
 */
export interface Modification {
    readonly type: string;
    readonly description: string;
    readonly subject?: SubjectArea;
    readonly impacts: 'curriculum' | 'standards' | 'grading' | 'other';
}
/**
 * Special education service
 */
export interface SpecialEdService {
    readonly serviceType: SpecialServiceType;
    readonly provider: string;
    readonly frequency: string;
    readonly duration: string;
    readonly location: 'general-ed' | 'resource-room' | 'separate-class' | 'therapy-room';
    readonly groupSize?: number;
}
/**
 * Types of special education services
 */
export declare enum SpecialServiceType {
    SpeechTherapy = "SPEECH_THERAPY",
    OccupationalTherapy = "OCCUPATIONAL_THERAPY",
    PhysicalTherapy = "PHYSICAL_THERAPY",
    Counseling = "COUNSELING",
    ResourceRoom = "RESOURCE_ROOM",
    ParaSupport = "PARA_SUPPORT",
    BehaviorSupport = "BEHAVIOR_SUPPORT",
    Other = "OTHER"
}
/**
 * Section 504 Plan
 */
export interface Section504Plan {
    readonly planId: Brand<string, 'Plan504Id'>;
    readonly studentId: StudentId;
    readonly disability: string;
    readonly effectiveDate: string;
    readonly reviewDate: string;
    readonly accommodations: Accommodation[];
    readonly coordinatorId: string;
}
/**
 * Special education evaluation
 */
export interface SpecialEdEvaluation {
    readonly evaluationId: Brand<string, 'EvaluationId'>;
    readonly type: string;
    readonly date: string;
    readonly evaluator: string;
    readonly results: Record<string, unknown>;
    readonly recommendations: string[];
    readonly nextEvaluationDue?: string;
}
/**
 * IEP team member
 */
export interface IEPTeamMember {
    readonly role: IEPTeamRole;
    readonly name: string;
    readonly title?: string;
    readonly participationDate: string;
    readonly signature?: string;
}
/**
 * IEP team roles
 */
export declare enum IEPTeamRole {
    Parent = "PARENT",
    Student = "STUDENT",
    GeneralEducationTeacher = "GENERAL_EDUCATION_TEACHER",
    SpecialEducationTeacher = "SPECIAL_EDUCATION_TEACHER",
    SchoolPsychologist = "SCHOOL_PSYCHOLOGIST",
    Administrator = "ADMINISTRATOR",
    RelatedServiceProvider = "RELATED_SERVICE_PROVIDER",
    Other = "OTHER"
}
/**
 * Student health information
 */
export interface StudentHealthInfo {
    readonly medicalConditions?: MedicalCondition[];
    readonly allergies?: Allergy[];
    readonly medications?: Medication[];
    readonly immunizations: Immunization[];
    readonly visionScreening?: HealthScreening;
    readonly hearingScreening?: HealthScreening;
    readonly dentalScreening?: HealthScreening;
    readonly physicalExam?: {
        readonly date: string;
        readonly provider: string;
        readonly clearedForSports: boolean;
        readonly restrictions?: string[];
    };
    readonly emergencyPlan?: string;
    readonly healthCarePlan?: string;
}
/**
 * Medical condition record
 */
export interface MedicalCondition {
    readonly condition: string;
    readonly severity: 'mild' | 'moderate' | 'severe';
    readonly diagnosisDate?: string;
    readonly treatment?: string;
    readonly restrictions?: string[];
    readonly emergencyProtocol?: string;
}
/**
 * Allergy information
 */
export interface Allergy {
    readonly allergen: string;
    readonly type: 'food' | 'drug' | 'environmental' | 'other';
    readonly severity: 'mild' | 'moderate' | 'severe' | 'life-threatening';
    readonly reaction: string;
    readonly treatment: string;
    readonly hasEpiPen: boolean;
    readonly actionPlan?: string;
}
/**
 * Medication administration record
 */
export interface Medication {
    readonly name: string;
    readonly dosage: string;
    readonly frequency: string;
    readonly administrationTime: string[];
    readonly startDate: string;
    readonly endDate?: string;
    readonly prescribedBy: string;
    readonly administeredBy: 'self' | 'nurse' | 'designated-staff';
    readonly storageLocation?: string;
    readonly sideEffects?: string[];
}
/**
 * Immunization record
 */
export interface Immunization {
    readonly vaccine: string;
    readonly dateAdministered: string;
    readonly provider?: string;
    readonly doseNumber?: number;
    readonly seriesComplete: boolean;
    readonly exemption?: {
        readonly type: 'medical' | 'religious' | 'philosophical';
        readonly documentation?: string;
    };
}
/**
 * Health screening result
 */
export interface HealthScreening {
    readonly type: 'vision' | 'hearing' | 'dental' | 'scoliosis' | 'other';
    readonly date: string;
    readonly result: 'pass' | 'fail' | 'refer';
    readonly notes?: string;
    readonly followUpRequired: boolean;
    readonly followUpDate?: string;
}
/**
 * Student transportation information
 */
export interface StudentTransportation {
    readonly busNumber?: string;
    readonly busRoute?: string;
    readonly pickupStop?: {
        readonly location: string;
        readonly time: string;
        readonly distance?: number;
    };
    readonly dropoffStop?: {
        readonly location: string;
        readonly time: string;
        readonly distance?: number;
    };
    readonly specialNeeds?: {
        readonly wheelchairAccessible: boolean;
        readonly aide: boolean;
        readonly other?: string;
    };
    readonly authorizedPickup: string[];
    readonly walkToSchool?: boolean;
    readonly parentTransport?: boolean;
}
/**
 * Meal program enrollment
 */
export interface MealProgramEnrollment {
    readonly eligibility: MealProgramEligibility;
    readonly startDate: string;
    readonly endDate?: string;
    readonly dietaryRestrictions?: DietaryRestriction[];
    readonly balance?: MonetaryAmount;
    readonly accountNumber?: string;
}
/**
 * Meal program eligibility levels
 */
export declare enum MealProgramEligibility {
    Free = "FREE",
    Reduced = "REDUCED",
    Paid = "PAID",
    NotEnrolled = "NOT_ENROLLED"
}
/**
 * Dietary restriction/preference
 */
export interface DietaryRestriction {
    readonly type: 'allergy' | 'intolerance' | 'religious' | 'ethical' | 'medical';
    readonly description: string;
    readonly severity?: 'mild' | 'moderate' | 'severe';
    readonly substitutions?: string[];
}
/**
 * Validate grade level progression
 */
export declare function isValidGradeProgression(current: GradeLevel, next: GradeLevel): boolean;
/**
 * Calculate age from date of birth
 */
export declare function calculateAge(dateOfBirth: string): number;
/**
 * Validate enrollment eligibility based on age
 */
export declare function validateEnrollmentAge(dateOfBirth: string, gradeLevel: GradeLevel, cutoffDate?: string): Result<boolean, string>;
export declare const educationTypes: {
    EnrollmentStatus: typeof EnrollmentStatus;
    GuardianType: typeof GuardianType;
    SubjectArea: typeof SubjectArea;
    StandardizedTestType: typeof StandardizedTestType;
    SchedulePattern: typeof SchedulePattern;
    DayOfWeek: typeof DayOfWeek;
    AssignmentType: typeof AssignmentType;
    SubmissionStatus: typeof SubmissionStatus;
    AttendanceStatus: typeof AttendanceStatus;
    AccommodationType: typeof AccommodationType;
    SpecialServiceType: typeof SpecialServiceType;
    IEPTeamRole: typeof IEPTeamRole;
    MealProgramEligibility: typeof MealProgramEligibility;
    isValidGradeProgression: typeof isValidGradeProgression;
    calculateAge: typeof calculateAge;
    validateEnrollmentAge: typeof validateEnrollmentAge;
};
//# sourceMappingURL=education-types.d.ts.map