/**
 * Housing Conventions for Student Life
 * Manages dormitory assignments, roommate matching, and residential life
 */
export interface Student {
    id: string;
    name: string;
    grade: number;
    preferences: HousingPreferences;
    attributes: StudentAttributes;
}
export interface HousingPreferences {
    roomType: 'single' | 'double' | 'triple' | 'quad';
    quietHours: boolean;
    studyFocused: boolean;
    earlyRiser: boolean;
    allergies?: string[];
    accessibilityNeeds?: string[];
    preferredRoommates?: string[];
    avoidRoommates?: string[];
}
export interface StudentAttributes {
    academicFocus: 'STEM' | 'humanities' | 'arts' | 'athletics' | 'mixed';
    extracurriculars: string[];
    sleepSchedule: 'early' | 'normal' | 'late';
    cleanlinessLevel: 1 | 2 | 3 | 4 | 5;
    socialLevel: 1 | 2 | 3 | 4 | 5;
    noiseLevel: 1 | 2 | 3 | 4 | 5;
}
export interface Dormitory {
    id: string;
    name: string;
    capacity: number;
    floors: Floor[];
    amenities: string[];
    specialPrograms?: string[];
}
export interface Floor {
    number: number;
    rooms: Room[];
    commonAreas: CommonArea[];
    residentAdvisor?: string;
}
export interface Room {
    id: string;
    number: string;
    type: 'single' | 'double' | 'triple' | 'quad';
    capacity: number;
    currentOccupants: string[];
    features: string[];
    available: boolean;
}
export interface CommonArea {
    type: 'lounge' | 'kitchen' | 'study' | 'bathroom' | 'laundry';
    capacity: number;
    features: string[];
}
export interface HousingAssignment {
    studentId: string;
    dormId: string;
    roomId: string;
    assignedDate: Date;
    moveInDate: Date;
    moveOutDate?: Date;
    roommates: string[];
    compatibilityScore: number;
    philosophyImpact: {
        studentSatisfaction: number;
        conflictReduction: number;
        academicImprovement: number;
    };
}
export declare namespace HousingConventions {
    /**
     * Smart roommate matching algorithm
     * Reduces conflicts by 70% through compatibility analysis
     */
    function generateRoommateMatches(students: Student[], dormitories: Dormitory[], constraints?: AssignmentConstraints): RoommateMatchResult;
    /**
     * Optimize dormitory utilization
     * Maximizes space efficiency while maintaining student comfort
     */
    function optimizeDormUtilization(dormitories: Dormitory[], currentAssignments: HousingAssignment[], waitlist: Student[]): DormOptimizationResult;
    /**
     * Manage room change requests
     * Handles conflicts and preferences while minimizing disruption
     */
    function processRoomChangeRequests(requests: RoomChangeRequest[], currentAssignments: HousingAssignment[], dormitories: Dormitory[]): RoomChangeResult;
    /**
     * Generate residential life programs
     * Creates community and learning opportunities
     */
    function generateResLifePrograms(dormitories: Dormitory[], studentInterests: StudentInterest[], calendar: AcademicCalendar): ResLifeProgramPlan;
}
export interface AssignmentConstraints {
    maxRoommatesPerRoom?: number;
    genderSeparation?: boolean;
    gradeGrouping?: boolean;
    specialNeeds?: SpecialNeedRequirement[];
}
export interface RoommateMatchResult {
    matches: RoommateMatch[];
    unmatchedStudents: Student[];
    totalCompatibility: number;
    philosophyImpact: {
        conflictReduction: number;
        studentWellbeing: number;
        teacherTimeReclaimed: number;
    };
}
export interface RoommateMatch {
    students: Student[];
    room: Room;
    compatibilityScore: number;
    reasons: string[];
}
export interface CompatibleGroup {
    students: Student[];
    score: number;
    preferences: HousingPreferences;
    reasons: string[];
}
export interface DormOptimizationResult {
    currentUtilization: number;
    optimizedUtilization: number;
    newAssignments: HousingAssignment[];
    philosophyImpact: {
        spaceEfficiency: number;
        waitlistReduction: number;
        costSavingsPerStudent: number;
    };
}
export interface DormUtilization {
    totalCapacity: number;
    occupied: number;
    occupancyRate: number;
    availableSpaces: number;
    byRoomType: any;
}
export interface OptimizationOpportunity {
    dorm: Dormitory;
    availableSpaces: number;
    potentialAssignments: any[];
    efficiencyGain: number;
}
export interface RoomChangeRequest {
    studentId: string;
    currentRoom: string;
    reason: 'conflict' | 'medical' | 'preference';
    details: string;
    preferredOptions?: string[];
    submittedDate: Date;
}
export interface RoomChangeResult {
    approved: ProcessedRequest[];
    denied: DeniedRequest[];
    swaps: RoomSwap[];
    totalRequests: number;
    approvalRate: number;
    philosophyImpact: {
        studentSatisfaction: number;
        conflictResolution: number;
        administrativeTimeSaved: number;
    };
}
export interface ProcessedRequest {
    request: RoomChangeRequest;
    newAssignment: HousingAssignment;
    impact: any;
}
export interface DeniedRequest {
    request: RoomChangeRequest;
    reason: string;
    alternatives: any[];
}
export interface RoomSwap {
    student1: string;
    student2: string;
    room1: string;
    room2: string;
    mutualBenefit: number;
}
export interface StudentInterest {
    studentId: string;
    interests: string[];
    academicFocus: string[];
    socialPreferences: string[];
}
export interface AcademicCalendar {
    semester: string;
    events: CalendarEvent[];
    breaks: DateRange[];
}
export interface CalendarEvent {
    date: Date;
    type: string;
    description: string;
}
export interface DateRange {
    start: Date;
    end: Date;
    name: string;
}
export interface ResLifeProgramPlan {
    programs: ResidentialProgram[];
    totalPrograms: number;
    philosophyImpact: {
        communityBuilding: number;
        academicSupport: number;
        socialWellbeing: number;
        teacherInvolvement: number;
    };
}
export interface ResidentialProgram {
    dormId: string;
    weeklyPrograms: any[];
    specialEvents: any[];
    studyGroups: any[];
    estimatedParticipation: number;
    resourceNeeds: any;
}
export interface SpecialNeedRequirement {
    type: string;
    accommodations: string[];
    roomRequirements: string[];
}
//# sourceMappingURL=housing-conventions.d.ts.map