/**
 * Ranking Module
 *
 * Exports all ranking, scoring, and badge functionality.
 * Provides anonymous ranking system with comprehensive badge/achievement tracking.
 */

// Services
export { RankingService } from './ranking.service';

// Controllers
export { RankingController } from './ranking.controller';

// Routes
export { rankingRoutes } from './ranking.routes';

// Calculators
export { ScoreCalculator } from './calculators/score.calculator';
export { PositionCalculator } from './calculators/position.calculator';
export { BadgeAwarder } from './calculators/badge.awarder';

// Definitions
export {
  BADGE_DEFINITIONS,
  getBadgesByCategory,
  getBadgeByCode,
  getBadgesByRarity,
  getBadgesByRequirementType,
  getTotalBadgePoints,
  countBadgesByCategory,
  BADGE_RARITY_COLORS,
  BADGE_RARITY_ORDER,
} from './definitions/badge-definitions';

// Types
export type {
  ScoreCalculationParams,
  ScoreCalculationResult,
  StreakInfo,
} from './calculators/score.calculator';

export type {
  RankingPosition,
  GlobalRankingEntry,
  ModuleRankingEntry,
  UserRankingInfo,
} from './calculators/position.calculator';

export type {
  BadgeAwardResult,
  AwardedBadge,
  UserBadgeProgress,
} from './calculators/badge.awarder';

export type {
  RankingServiceOptions,
  ExerciseSubmissionData,
  ExerciseSubmissionResult,
} from './ranking.service';

export type {
  BadgeDefinition,
  BadgeGroup,
} from './definitions/badge-definitions';
