/**
 * Family Events Package
 * Comprehensive family-related events for all life stages
 *
 * Modules:
 * - activities: Family bonding and interaction activities (game night, vacation, photos)
 * - conflicts: Negative family events (divorce, estrangement, debt) - INTERNAL USE ONLY
 * - lifeTransitions: Life changes affecting family dynamics (extended family, college homesickness)
 *
 * This package provides a centralized location for all family-related events.
 * Events are organized by their nature:
 * - Activity events are positive/neutral choices about family time
 * - Conflict events are negative life events affecting family relationships (already exported in negative/family.ts)
 * - Life transition events handle changes in family structure and dynamics
 *
 * NOTE: Some events (like parentDivorce, familyDebt, etc.) already exist in negative/family.ts
 * and agingParent exists in adulthood/lifeEvents.ts. This module provides additional
 * family events and helper functions, avoiding duplicate exports.
 */

// ============================================================================
// Activity Events - Family bonding and interaction
// ============================================================================

export {
  // Helper functions (re-exported for use by other modules)
  getAllFamily,
  getParent,
  getRelationship,
  getYoungerSiblings,
  getPerson,
  // Event functions
  familyGameNight,
  familyGameNightAnswer,
  familyVacation,
  familyVacationAnswer,
  teachSiblingSkill,
  teachSiblingSkillAnswer,
  helpParentProject,
  helpParentProjectAnswer,
  familyPhoto,
  familyPhotoAnswer,
} from './activities.js';

// ============================================================================
// Life Transition Events - Changes in family dynamics
// These are new events not duplicated elsewhere
// ============================================================================

export {
  extendedFamily,
  extendedFamilyAnswer,
  collegeMissHome,
  adultMissFriends,
} from './lifeTransitions.js';

// ============================================================================
// Family Dynamics Events (Sprint 3) - Makes family members feel alive
// ============================================================================

export { familyDynamicsEvents } from './familyDynamics.js';

// ============================================================================
// Family Milestone Class Events (Sprint 3) - Multi-stage family arcs
// ============================================================================

export { familyMilestoneClassEvents } from './familyMilestones.js';

// ============================================================================
// Aggregated Event Collections
// ============================================================================

import {
  familyGameNight,
  familyVacation,
  teachSiblingSkill,
  helpParentProject,
  familyPhoto,
} from './activities.js';

import {
  extendedFamily,
  collegeMissHome,
  adultMissFriends,
} from './lifeTransitions.js';

import { familyDynamicsEvents } from './familyDynamics.js';

/**
 * All family activity events (positive/neutral choices)
 */
export const familyActivityEvents = {
  familyGameNight,
  familyVacation,
  teachSiblingSkill,
  helpParentProject,
  familyPhoto,
};

/**
 * All family life transition events (new events unique to this module)
 */
export const familyTransitionEvents = {
  extendedFamily,
  collegeMissHome,
  adultMissFriends,
};

/**
 * All family events from this module (excluding those already in negative/family.ts)
 */
export const familyEvents = {
  ...familyActivityEvents,
  ...familyTransitionEvents,
  ...familyDynamicsEvents,
};

/**
 * Event handler registry for processing answers
 * Maps event IDs to their answer processing functions
 */
export const familyEventAnswerHandlers = {
  familyGameNight: 'familyGameNightAnswer',
  familyVacation: 'familyVacationAnswer',
  teachSiblingSkill: 'teachSiblingSkillAnswer',
  helpParentProject: 'helpParentProjectAnswer',
  familyPhoto: 'familyPhotoAnswer',
  extendedFamily: 'extendedFamilyAnswer',
} as const;
