import type { ComponentType } from "react";

type LazyImport = () => Promise<{ default: ComponentType<any> }>;

export const componentMap: Record<string, LazyImport> = {
  "binary-number-game": () => import("@/components/interactives/BinaryNumberGame"),
  "ternary-number-game": () => import("@/components/interactives/TernaryNumberGame"),
  "balanced-ternary-game": () => import("@/components/interactives/BalancedTernaryGame"),
  "zeckendorf-game": () => import("@/components/interactives/ZeckendorfGame"),
  "zeckendorf-search-trick": () => import("@/components/interactives/ZeckendorfSearchTrick"),
  "binary-search-trick": () => import("@/components/interactives/BinarySearchTrick"),
  "ternary-search-trick": () => import("@/components/interactives/TernarySearchTrick"),
  "game-of-sim": () => import("@/components/interactives/GameOfSim"),
  "northcotts-game": () => import("@/components/interactives/NorthcottsGame"),
  "nim-game": () => import("@/components/interactives/NimGame"),
  "assisted-nim-game": () => import("@/components/interactives/AssistedNimGame"),
  "gold-coin-game": () => import("@/components/interactives/GoldCoinGame"),
  "subtraction-game": () => import("@/components/interactives/SubtractionGame"),
  "craps-game": () => import("@/components/interactives/CrapsGame"),
  "bagchal-game": () => import("@/components/interactives/BagchalGame"),
  "guessing-game": () => import("@/components/interactives/GuessingGame"),
  "knights-puzzle": () => import("@/components/interactives/KnightsPuzzle"),
  "plate-swap-puzzle": () => import("@/components/interactives/PlateSwapPuzzle"),
  "chessboard-repaint-puzzle": () => import("@/components/interactives/ChessboardRepaintPuzzle"),
  "n-queens-puzzle": () => import("@/components/interactives/NQueensPuzzle"),
  "sikinia-parliament-puzzle": () => import("@/components/interactives/SikiniaParliamentPuzzle"),
  "bulgarian-solitaire": () => import("@/components/interactives/BulgarianSolitaire"),
  "pebble-placement-game": () => import("@/components/interactives/PebblePlacementGame"),
  "stacking-blocks": () => import("@/components/interactives/StackingBlocks"),
  "domino-retiling-puzzle": () => import("@/components/interactives/DominoRetilingPuzzle"),
  "asc-desc-grid-puzzle": () => import("@/components/interactives/AscDescGridPuzzle"),
  "ladybug-clock-puzzle": () => import("@/components/interactives/LadybugClockPuzzle"),
  "erdos-discrepancy-puzzle": () => import("@/components/interactives/ErdosDiscrepancyPuzzle"),
  "parity-bits-game": () => import("@/components/interactives/ParityBitsGame"),
  "rules-of-inference": () => import("@/components/interactives/RulesOfInferencePlayground"),
  "neighbor-sum-avoidance": () => import("@/components/interactives/NeighborSumAvoidance"),
  "burnsides-lemma": () => import("@/components/interactives/BurnsidesLemma"),
  "cube-coloring": () => import("@/components/interactives/CubeColoring"),
  "presents-puzzle": () => import("@/components/interactives/PresentsPuzzle"),
  "ferrers-rogers-ramanujan": () => import("@/components/interactives/FerrersRogersRamanujan"),
  "grid-tiling-puzzle": () => import("@/components/interactives/GridTilingPuzzle"),
  "sunny-lines-puzzle": () => import("@/components/interactives/SunnyLinesPuzzle"),
  "rent-division-puzzle": () => import("@/components/interactives/RentDivisionPuzzle"),
  "eternal-domination-game": () => import("@/components/interactives/EternalDominationGame"),
  "knights-and-knaves": () => import("@/components/interactives/KnightsAndKnavesI"),
  "three-bank-accounts": () => import("@/components/interactives/ThreeBankAccounts"),
  "computing-pi": () => import("@/components/interactives/ComputingPi"),
};
