playlist-data-engine 1.1.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (345) hide show
  1. package/LICENSE +21 -0
  2. package/README.md +352 -0
  3. package/dist/__vite-browser-external-DYxpcVy9.js +4 -0
  4. package/dist/constants/DefaultClasses.d.ts +46 -0
  5. package/dist/constants/DefaultClasses.d.ts.map +1 -0
  6. package/dist/constants/DefaultEnchantments.d.ts +337 -0
  7. package/dist/constants/DefaultEnchantments.d.ts.map +1 -0
  8. package/dist/constants/DefaultEnemies.d.ts +83 -0
  9. package/dist/constants/DefaultEnemies.d.ts.map +1 -0
  10. package/dist/constants/DefaultEquipment.d.ts +23 -0
  11. package/dist/constants/DefaultEquipment.d.ts.map +1 -0
  12. package/dist/constants/DefaultFeatures.d.ts +22 -0
  13. package/dist/constants/DefaultFeatures.d.ts.map +1 -0
  14. package/dist/constants/DefaultRaces.d.ts +102 -0
  15. package/dist/constants/DefaultRaces.d.ts.map +1 -0
  16. package/dist/constants/DefaultSkills.d.ts +26 -0
  17. package/dist/constants/DefaultSkills.d.ts.map +1 -0
  18. package/dist/constants/DefaultSpells.d.ts +41 -0
  19. package/dist/constants/DefaultSpells.d.ts.map +1 -0
  20. package/dist/constants/EncounterBalance.d.ts +208 -0
  21. package/dist/constants/EncounterBalance.d.ts.map +1 -0
  22. package/dist/constants/EnemyEquipment.d.ts +71 -0
  23. package/dist/constants/EnemyEquipment.d.ts.map +1 -0
  24. package/dist/constants/EnemyRarity.d.ts +79 -0
  25. package/dist/constants/EnemyRarity.d.ts.map +1 -0
  26. package/dist/constants/EnemyTemplates/Construct.d.ts +63 -0
  27. package/dist/constants/EnemyTemplates/Construct.d.ts.map +1 -0
  28. package/dist/constants/EnemyTemplates/Dragon.d.ts +68 -0
  29. package/dist/constants/EnemyTemplates/Dragon.d.ts.map +1 -0
  30. package/dist/constants/EnemyTemplates/Elemental.d.ts +64 -0
  31. package/dist/constants/EnemyTemplates/Elemental.d.ts.map +1 -0
  32. package/dist/constants/EnemyTemplates/Fiend.d.ts +62 -0
  33. package/dist/constants/EnemyTemplates/Fiend.d.ts.map +1 -0
  34. package/dist/constants/EnemyTemplates/Monstrosity.d.ts +63 -0
  35. package/dist/constants/EnemyTemplates/Monstrosity.d.ts.map +1 -0
  36. package/dist/constants/EnemyTemplates/Undead.d.ts +61 -0
  37. package/dist/constants/EnemyTemplates/Undead.d.ts.map +1 -0
  38. package/dist/constants/ItemTemplates.d.ts +40 -0
  39. package/dist/constants/ItemTemplates.d.ts.map +1 -0
  40. package/dist/constants/MagicItems.d.ts +30 -0
  41. package/dist/constants/MagicItems.d.ts.map +1 -0
  42. package/dist/constants/SpellSlots.d.ts +30 -0
  43. package/dist/constants/SpellSlots.d.ts.map +1 -0
  44. package/dist/constants/StatScaling.d.ts +113 -0
  45. package/dist/constants/StatScaling.d.ts.map +1 -0
  46. package/dist/core/analysis/AudioAnalyzer.d.ts +599 -0
  47. package/dist/core/analysis/AudioAnalyzer.d.ts.map +1 -0
  48. package/dist/core/analysis/ColorExtractor.d.ts +64 -0
  49. package/dist/core/analysis/ColorExtractor.d.ts.map +1 -0
  50. package/dist/core/analysis/EssentiaPitchDetector.d.ts +282 -0
  51. package/dist/core/analysis/EssentiaPitchDetector.d.ts.map +1 -0
  52. package/dist/core/analysis/LevelSerializer.d.ts +265 -0
  53. package/dist/core/analysis/LevelSerializer.d.ts.map +1 -0
  54. package/dist/core/analysis/MelodyContourAnalyzer.d.ts +283 -0
  55. package/dist/core/analysis/MelodyContourAnalyzer.d.ts.map +1 -0
  56. package/dist/core/analysis/MultiBandAnalyzer.d.ts +214 -0
  57. package/dist/core/analysis/MultiBandAnalyzer.d.ts.map +1 -0
  58. package/dist/core/analysis/MusicClassifier.d.ts +524 -0
  59. package/dist/core/analysis/MusicClassifier.d.ts.map +1 -0
  60. package/dist/core/analysis/PitchAnalyzer.d.ts +266 -0
  61. package/dist/core/analysis/PitchAnalyzer.d.ts.map +1 -0
  62. package/dist/core/analysis/PitchDetector.d.ts +251 -0
  63. package/dist/core/analysis/PitchDetector.d.ts.map +1 -0
  64. package/dist/core/analysis/SpectrumScanner.d.ts +52 -0
  65. package/dist/core/analysis/SpectrumScanner.d.ts.map +1 -0
  66. package/dist/core/analysis/beat/BeatInterpolator.d.ts +477 -0
  67. package/dist/core/analysis/beat/BeatInterpolator.d.ts.map +1 -0
  68. package/dist/core/analysis/beat/BeatMapGenerator.d.ts +170 -0
  69. package/dist/core/analysis/beat/BeatMapGenerator.d.ts.map +1 -0
  70. package/dist/core/analysis/beat/BeatStream.d.ts +316 -0
  71. package/dist/core/analysis/beat/BeatStream.d.ts.map +1 -0
  72. package/dist/core/analysis/beat/BeatSubdivider.d.ts +205 -0
  73. package/dist/core/analysis/beat/BeatSubdivider.d.ts.map +1 -0
  74. package/dist/core/analysis/beat/BeatTracker.d.ts +137 -0
  75. package/dist/core/analysis/beat/BeatTracker.d.ts.map +1 -0
  76. package/dist/core/analysis/beat/CompositeStreamGenerator.d.ts +180 -0
  77. package/dist/core/analysis/beat/CompositeStreamGenerator.d.ts.map +1 -0
  78. package/dist/core/analysis/beat/DensityAnalyzer.d.ts +246 -0
  79. package/dist/core/analysis/beat/DensityAnalyzer.d.ts.map +1 -0
  80. package/dist/core/analysis/beat/DifficultyVariantGenerator.d.ts +1082 -0
  81. package/dist/core/analysis/beat/DifficultyVariantGenerator.d.ts.map +1 -0
  82. package/dist/core/analysis/beat/GrooveAnalyzer.d.ts +192 -0
  83. package/dist/core/analysis/beat/GrooveAnalyzer.d.ts.map +1 -0
  84. package/dist/core/analysis/beat/OnsetStrengthEnvelope.d.ts +133 -0
  85. package/dist/core/analysis/beat/OnsetStrengthEnvelope.d.ts.map +1 -0
  86. package/dist/core/analysis/beat/PhraseAnalyzer.d.ts +230 -0
  87. package/dist/core/analysis/beat/PhraseAnalyzer.d.ts.map +1 -0
  88. package/dist/core/analysis/beat/RhythmQuantizer.d.ts +399 -0
  89. package/dist/core/analysis/beat/RhythmQuantizer.d.ts.map +1 -0
  90. package/dist/core/analysis/beat/RhythmicBalancer.d.ts +262 -0
  91. package/dist/core/analysis/beat/RhythmicBalancer.d.ts.map +1 -0
  92. package/dist/core/analysis/beat/StreamScorer.d.ts +275 -0
  93. package/dist/core/analysis/beat/StreamScorer.d.ts.map +1 -0
  94. package/dist/core/analysis/beat/TempoAwareQuantizer.d.ts +256 -0
  95. package/dist/core/analysis/beat/TempoAwareQuantizer.d.ts.map +1 -0
  96. package/dist/core/analysis/beat/TempoDetector.d.ts +220 -0
  97. package/dist/core/analysis/beat/TempoDetector.d.ts.map +1 -0
  98. package/dist/core/analysis/beat/TransientDetector.d.ts +303 -0
  99. package/dist/core/analysis/beat/TransientDetector.d.ts.map +1 -0
  100. package/dist/core/analysis/beat/beatKeyHelpers.d.ts +180 -0
  101. package/dist/core/analysis/beat/beatKeyHelpers.d.ts.map +1 -0
  102. package/dist/core/analysis/beat/index.d.ts +41 -0
  103. package/dist/core/analysis/beat/index.d.ts.map +1 -0
  104. package/dist/core/analysis/beat/utils/audioUtils.d.ts +204 -0
  105. package/dist/core/analysis/beat/utils/audioUtils.d.ts.map +1 -0
  106. package/dist/core/analysis/beat/utils/beatInterpolationDebug.d.ts +404 -0
  107. package/dist/core/analysis/beat/utils/beatInterpolationDebug.d.ts.map +1 -0
  108. package/dist/core/analysis/beat/utils/subdivideBeatMap.d.ts +61 -0
  109. package/dist/core/analysis/beat/utils/subdivideBeatMap.d.ts.map +1 -0
  110. package/dist/core/analysis/beat/utils/unifyBeatMap.d.ts +33 -0
  111. package/dist/core/analysis/beat/utils/unifyBeatMap.d.ts.map +1 -0
  112. package/dist/core/analysis/index.d.ts +18 -0
  113. package/dist/core/analysis/index.d.ts.map +1 -0
  114. package/dist/core/combat/AI/AICombatRunner.d.ts +108 -0
  115. package/dist/core/combat/AI/AICombatRunner.d.ts.map +1 -0
  116. package/dist/core/combat/AI/CombatAI.d.ts +179 -0
  117. package/dist/core/combat/AI/CombatAI.d.ts.map +1 -0
  118. package/dist/core/combat/AI/CombatMetricsTracker.d.ts +30 -0
  119. package/dist/core/combat/AI/CombatMetricsTracker.d.ts.map +1 -0
  120. package/dist/core/combat/Analysis/BalanceValidator.d.ts +170 -0
  121. package/dist/core/combat/Analysis/BalanceValidator.d.ts.map +1 -0
  122. package/dist/core/combat/Analysis/ComparativeAnalyzer.d.ts +231 -0
  123. package/dist/core/combat/Analysis/ComparativeAnalyzer.d.ts.map +1 -0
  124. package/dist/core/combat/Analysis/DifficultyCalculator.d.ts +203 -0
  125. package/dist/core/combat/Analysis/DifficultyCalculator.d.ts.map +1 -0
  126. package/dist/core/combat/Analysis/ParameterSweep.d.ts +201 -0
  127. package/dist/core/combat/Analysis/ParameterSweep.d.ts.map +1 -0
  128. package/dist/core/combat/AttackResolver.d.ts +220 -0
  129. package/dist/core/combat/AttackResolver.d.ts.map +1 -0
  130. package/dist/core/combat/CombatEngine.d.ts +388 -0
  131. package/dist/core/combat/CombatEngine.d.ts.map +1 -0
  132. package/dist/core/combat/DiceRoller.d.ts +115 -0
  133. package/dist/core/combat/DiceRoller.d.ts.map +1 -0
  134. package/dist/core/combat/InitiativeRoller.d.ts +62 -0
  135. package/dist/core/combat/InitiativeRoller.d.ts.map +1 -0
  136. package/dist/core/combat/PartyAnalyzer.d.ts +215 -0
  137. package/dist/core/combat/PartyAnalyzer.d.ts.map +1 -0
  138. package/dist/core/combat/SeededDiceRoller.d.ts +120 -0
  139. package/dist/core/combat/SeededDiceRoller.d.ts.map +1 -0
  140. package/dist/core/combat/Simulation/CombatSimulator.d.ts +366 -0
  141. package/dist/core/combat/Simulation/CombatSimulator.d.ts.map +1 -0
  142. package/dist/core/combat/SpellCaster.d.ts +113 -0
  143. package/dist/core/combat/SpellCaster.d.ts.map +1 -0
  144. package/dist/core/config/index.d.ts +24 -0
  145. package/dist/core/config/index.d.ts.map +1 -0
  146. package/dist/core/config/progressionConfig.d.ts +73 -0
  147. package/dist/core/config/progressionConfig.d.ts.map +1 -0
  148. package/dist/core/config/sensorConfig.d.ts +134 -0
  149. package/dist/core/config/sensorConfig.d.ts.map +1 -0
  150. package/dist/core/equipment/BoxOpener.d.ts +175 -0
  151. package/dist/core/equipment/BoxOpener.d.ts.map +1 -0
  152. package/dist/core/equipment/EquipmentEffectApplier.d.ts +189 -0
  153. package/dist/core/equipment/EquipmentEffectApplier.d.ts.map +1 -0
  154. package/dist/core/equipment/EquipmentModifier.d.ts +327 -0
  155. package/dist/core/equipment/EquipmentModifier.d.ts.map +1 -0
  156. package/dist/core/equipment/EquipmentSpawnHelper.d.ts +246 -0
  157. package/dist/core/equipment/EquipmentSpawnHelper.d.ts.map +1 -0
  158. package/dist/core/equipment/EquipmentValidator.d.ts +173 -0
  159. package/dist/core/equipment/EquipmentValidator.d.ts.map +1 -0
  160. package/dist/core/extensions/ExtensionManager.d.ts +517 -0
  161. package/dist/core/extensions/ExtensionManager.d.ts.map +1 -0
  162. package/dist/core/extensions/WeightedSelector.d.ts +156 -0
  163. package/dist/core/extensions/WeightedSelector.d.ts.map +1 -0
  164. package/dist/core/extensions/index.d.ts +11 -0
  165. package/dist/core/extensions/index.d.ts.map +1 -0
  166. package/dist/core/extensions/initializeDefaults.d.ts +170 -0
  167. package/dist/core/extensions/initializeDefaults.d.ts.map +1 -0
  168. package/dist/core/features/FeatureEffectApplier.d.ts +102 -0
  169. package/dist/core/features/FeatureEffectApplier.d.ts.map +1 -0
  170. package/dist/core/features/FeatureQuery.d.ts +368 -0
  171. package/dist/core/features/FeatureQuery.d.ts.map +1 -0
  172. package/dist/core/features/FeatureTypes.d.ts +199 -0
  173. package/dist/core/features/FeatureTypes.d.ts.map +1 -0
  174. package/dist/core/features/FeatureValidator.d.ts +149 -0
  175. package/dist/core/features/FeatureValidator.d.ts.map +1 -0
  176. package/dist/core/features/index.d.ts +12 -0
  177. package/dist/core/features/index.d.ts.map +1 -0
  178. package/dist/core/generation/AbilityScoreCalculator.d.ts +83 -0
  179. package/dist/core/generation/AbilityScoreCalculator.d.ts.map +1 -0
  180. package/dist/core/generation/AppearanceGenerator.d.ts +32 -0
  181. package/dist/core/generation/AppearanceGenerator.d.ts.map +1 -0
  182. package/dist/core/generation/BeatConverter.d.ts +127 -0
  183. package/dist/core/generation/BeatConverter.d.ts.map +1 -0
  184. package/dist/core/generation/ButtonMapper.d.ts +346 -0
  185. package/dist/core/generation/ButtonMapper.d.ts.map +1 -0
  186. package/dist/core/generation/ButtonPatternLibrary.d.ts +92 -0
  187. package/dist/core/generation/ButtonPatternLibrary.d.ts.map +1 -0
  188. package/dist/core/generation/CRLevelConverter.d.ts +242 -0
  189. package/dist/core/generation/CRLevelConverter.d.ts.map +1 -0
  190. package/dist/core/generation/CharacterGenerator.d.ts +194 -0
  191. package/dist/core/generation/CharacterGenerator.d.ts.map +1 -0
  192. package/dist/core/generation/ClassSuggester.d.ts +184 -0
  193. package/dist/core/generation/ClassSuggester.d.ts.map +1 -0
  194. package/dist/core/generation/EnemyEquipmentGenerator.d.ts +151 -0
  195. package/dist/core/generation/EnemyEquipmentGenerator.d.ts.map +1 -0
  196. package/dist/core/generation/EnemyGenerator.d.ts +595 -0
  197. package/dist/core/generation/EnemyGenerator.d.ts.map +1 -0
  198. package/dist/core/generation/EquipmentGenerator.d.ts +204 -0
  199. package/dist/core/generation/EquipmentGenerator.d.ts.map +1 -0
  200. package/dist/core/generation/LegendaryGenerator.d.ts +213 -0
  201. package/dist/core/generation/LegendaryGenerator.d.ts.map +1 -0
  202. package/dist/core/generation/LevelGenerator.d.ts +390 -0
  203. package/dist/core/generation/LevelGenerator.d.ts.map +1 -0
  204. package/dist/core/generation/NamingEngine.d.ts +136 -0
  205. package/dist/core/generation/NamingEngine.d.ts.map +1 -0
  206. package/dist/core/generation/PitchBeatLinker.d.ts +150 -0
  207. package/dist/core/generation/PitchBeatLinker.d.ts.map +1 -0
  208. package/dist/core/generation/RaceSelector.d.ts +58 -0
  209. package/dist/core/generation/RaceSelector.d.ts.map +1 -0
  210. package/dist/core/generation/RhythmGenerator.d.ts +597 -0
  211. package/dist/core/generation/RhythmGenerator.d.ts.map +1 -0
  212. package/dist/core/generation/SkillAssigner.d.ts +78 -0
  213. package/dist/core/generation/SkillAssigner.d.ts.map +1 -0
  214. package/dist/core/generation/SpellManager.d.ts +132 -0
  215. package/dist/core/generation/SpellManager.d.ts.map +1 -0
  216. package/dist/core/generation/SpellcastingGenerator.d.ts +255 -0
  217. package/dist/core/generation/SpellcastingGenerator.d.ts.map +1 -0
  218. package/dist/core/generation/index.d.ts +41 -0
  219. package/dist/core/generation/index.d.ts.map +1 -0
  220. package/dist/core/parser/MetadataExtractor.d.ts +66 -0
  221. package/dist/core/parser/MetadataExtractor.d.ts.map +1 -0
  222. package/dist/core/parser/PlaylistParser.d.ts +45 -0
  223. package/dist/core/parser/PlaylistParser.d.ts.map +1 -0
  224. package/dist/core/playback/SubdivisionPlaybackController.d.ts +333 -0
  225. package/dist/core/playback/SubdivisionPlaybackController.d.ts.map +1 -0
  226. package/dist/core/playback/index.d.ts +5 -0
  227. package/dist/core/playback/index.d.ts.map +1 -0
  228. package/dist/core/progression/CharacterUpdater.d.ts +203 -0
  229. package/dist/core/progression/CharacterUpdater.d.ts.map +1 -0
  230. package/dist/core/progression/LevelUpProcessor.d.ts +234 -0
  231. package/dist/core/progression/LevelUpProcessor.d.ts.map +1 -0
  232. package/dist/core/progression/PrestigeSystem.d.ts +217 -0
  233. package/dist/core/progression/PrestigeSystem.d.ts.map +1 -0
  234. package/dist/core/progression/RhythmXPCalculator.d.ts +182 -0
  235. package/dist/core/progression/RhythmXPCalculator.d.ts.map +1 -0
  236. package/dist/core/progression/SessionTracker.d.ts +169 -0
  237. package/dist/core/progression/SessionTracker.d.ts.map +1 -0
  238. package/dist/core/progression/XPCalculator.d.ts +128 -0
  239. package/dist/core/progression/XPCalculator.d.ts.map +1 -0
  240. package/dist/core/progression/stat/StatIncreaseStrategy.d.ts +97 -0
  241. package/dist/core/progression/stat/StatIncreaseStrategy.d.ts.map +1 -0
  242. package/dist/core/progression/stat/StatManager.d.ts +179 -0
  243. package/dist/core/progression/stat/StatManager.d.ts.map +1 -0
  244. package/dist/core/sensors/EnvironmentalSensors.d.ts +301 -0
  245. package/dist/core/sensors/EnvironmentalSensors.d.ts.map +1 -0
  246. package/dist/core/sensors/GamingPlatformSensors.d.ts +162 -0
  247. package/dist/core/sensors/GamingPlatformSensors.d.ts.map +1 -0
  248. package/dist/core/sensors/GeolocationProvider.d.ts +156 -0
  249. package/dist/core/sensors/GeolocationProvider.d.ts.map +1 -0
  250. package/dist/core/sensors/MotionDetector.d.ts +58 -0
  251. package/dist/core/sensors/MotionDetector.d.ts.map +1 -0
  252. package/dist/core/sensors/SteamAPIClient.d.ts +108 -0
  253. package/dist/core/sensors/SteamAPIClient.d.ts.map +1 -0
  254. package/dist/core/sensors/WeatherAPIClient.d.ts +360 -0
  255. package/dist/core/sensors/WeatherAPIClient.d.ts.map +1 -0
  256. package/dist/core/sensors/schemas/weather.schema.d.ts +144 -0
  257. package/dist/core/sensors/schemas/weather.schema.d.ts.map +1 -0
  258. package/dist/core/skills/SkillQuery.d.ts +159 -0
  259. package/dist/core/skills/SkillQuery.d.ts.map +1 -0
  260. package/dist/core/skills/SkillTypes.d.ts +233 -0
  261. package/dist/core/skills/SkillTypes.d.ts.map +1 -0
  262. package/dist/core/skills/SkillValidator.d.ts +146 -0
  263. package/dist/core/skills/SkillValidator.d.ts.map +1 -0
  264. package/dist/core/skills/index.d.ts +11 -0
  265. package/dist/core/skills/index.d.ts.map +1 -0
  266. package/dist/core/spells/SpellQuery.d.ts +194 -0
  267. package/dist/core/spells/SpellQuery.d.ts.map +1 -0
  268. package/dist/core/spells/SpellTypes.d.ts +71 -0
  269. package/dist/core/spells/SpellTypes.d.ts.map +1 -0
  270. package/dist/core/spells/SpellValidator.d.ts +129 -0
  271. package/dist/core/spells/SpellValidator.d.ts.map +1 -0
  272. package/dist/core/spells/index.d.ts +11 -0
  273. package/dist/core/spells/index.d.ts.map +1 -0
  274. package/dist/core/types/AudioProfile.d.ts +143 -0
  275. package/dist/core/types/AudioProfile.d.ts.map +1 -0
  276. package/dist/core/types/BeatMap.d.ts +1825 -0
  277. package/dist/core/types/BeatMap.d.ts.map +1 -0
  278. package/dist/core/types/ButtonMapping.d.ts +345 -0
  279. package/dist/core/types/ButtonMapping.d.ts.map +1 -0
  280. package/dist/core/types/Character.d.ts +397 -0
  281. package/dist/core/types/Character.d.ts.map +1 -0
  282. package/dist/core/types/ChartedBeatMap.d.ts +169 -0
  283. package/dist/core/types/ChartedBeatMap.d.ts.map +1 -0
  284. package/dist/core/types/Combat.d.ts +268 -0
  285. package/dist/core/types/Combat.d.ts.map +1 -0
  286. package/dist/core/types/CombatAI.d.ts +143 -0
  287. package/dist/core/types/CombatAI.d.ts.map +1 -0
  288. package/dist/core/types/Enemy.d.ts +447 -0
  289. package/dist/core/types/Enemy.d.ts.map +1 -0
  290. package/dist/core/types/Environmental.d.ts +213 -0
  291. package/dist/core/types/Environmental.d.ts.map +1 -0
  292. package/dist/core/types/Equipment.d.ts +309 -0
  293. package/dist/core/types/Equipment.d.ts.map +1 -0
  294. package/dist/core/types/ISessionTracker.d.ts +48 -0
  295. package/dist/core/types/ISessionTracker.d.ts.map +1 -0
  296. package/dist/core/types/LevelExport.d.ts +366 -0
  297. package/dist/core/types/LevelExport.d.ts.map +1 -0
  298. package/dist/core/types/Playlist.d.ts +70 -0
  299. package/dist/core/types/Playlist.d.ts.map +1 -0
  300. package/dist/core/types/Prestige.d.ts +94 -0
  301. package/dist/core/types/Prestige.d.ts.map +1 -0
  302. package/dist/core/types/Progression.d.ts +214 -0
  303. package/dist/core/types/Progression.d.ts.map +1 -0
  304. package/dist/core/types/RhythmXP.d.ts +398 -0
  305. package/dist/core/types/RhythmXP.d.ts.map +1 -0
  306. package/dist/core/utils/AbilityConstants.d.ts +31 -0
  307. package/dist/core/utils/AbilityConstants.d.ts.map +1 -0
  308. package/dist/core/utils/EffectApplierUtils.d.ts +56 -0
  309. package/dist/core/utils/EffectApplierUtils.d.ts.map +1 -0
  310. package/dist/core/utils/ImageValidator.d.ts +66 -0
  311. package/dist/core/utils/ImageValidator.d.ts.map +1 -0
  312. package/dist/core/utils/PrerequisiteValidator.d.ts +88 -0
  313. package/dist/core/utils/PrerequisiteValidator.d.ts.map +1 -0
  314. package/dist/essentia-wasm.es-BUEnKUts.js +2990 -0
  315. package/dist/essentia.js-model.es-CGA0xotH.js +306 -0
  316. package/dist/index.d.ts +176 -0
  317. package/dist/index.d.ts.map +1 -0
  318. package/dist/playlist-data-engine.js +124 -0
  319. package/dist/playlist-data-engine.mjs +49251 -0
  320. package/dist/utils/EnchantmentLibrary.d.ts +378 -0
  321. package/dist/utils/EnchantmentLibrary.d.ts.map +1 -0
  322. package/dist/utils/arweaveGatewayManager.d.ts +485 -0
  323. package/dist/utils/arweaveGatewayManager.d.ts.map +1 -0
  324. package/dist/utils/arweaveUtils.d.ts +118 -0
  325. package/dist/utils/arweaveUtils.d.ts.map +1 -0
  326. package/dist/utils/constants.d.ts +439 -0
  327. package/dist/utils/constants.d.ts.map +1 -0
  328. package/dist/utils/equipmentConstants.d.ts +60 -0
  329. package/dist/utils/equipmentConstants.d.ts.map +1 -0
  330. package/dist/utils/hash.d.ts +33 -0
  331. package/dist/utils/hash.d.ts.map +1 -0
  332. package/dist/utils/logger.d.ts +192 -0
  333. package/dist/utils/logger.d.ts.map +1 -0
  334. package/dist/utils/magicItemExamples.d.ts +46 -0
  335. package/dist/utils/magicItemExamples.d.ts.map +1 -0
  336. package/dist/utils/playlistUtils.d.ts +149 -0
  337. package/dist/utils/playlistUtils.d.ts.map +1 -0
  338. package/dist/utils/random.d.ts +34 -0
  339. package/dist/utils/random.d.ts.map +1 -0
  340. package/dist/utils/sensorDashboard.d.ts +60 -0
  341. package/dist/utils/sensorDashboard.d.ts.map +1 -0
  342. package/dist/utils/validators.d.ts +189 -0
  343. package/dist/utils/validators.d.ts.map +1 -0
  344. package/dist/vite.svg +1 -0
  345. package/package.json +82 -0
@@ -0,0 +1,333 @@
1
+ /**
2
+ * Subdivision Playback Controller
3
+ *
4
+ * Real-time subdivision controller for practice mode. Enables instant
5
+ * switching between subdivision types during playback.
6
+ *
7
+ * Key features:
8
+ * - Real-time beat generation based on current subdivision type
9
+ * - Instant subdivision switching with configurable transition modes
10
+ * - Continuity across subdivision changes
11
+ * - Integration with Web Audio API for precise timing
12
+ *
13
+ * @example
14
+ * ```typescript
15
+ * const controller = new SubdivisionPlaybackController(unifiedMap, audioContext, {
16
+ * initialSubdivision: 'quarter',
17
+ * transitionMode: 'next-downbeat',
18
+ * onSubdivisionChange: (oldType, newType) => {
19
+ * console.log(`Switched from ${oldType} to ${newType}`);
20
+ * },
21
+ * });
22
+ *
23
+ * // Subscribe to beat events
24
+ * controller.subscribe((event) => {
25
+ * if (event.type === 'exact') {
26
+ * playBeatSound(event.beat);
27
+ * }
28
+ * });
29
+ *
30
+ * controller.play();
31
+ *
32
+ * // User clicks "Eighth Notes" button in practice mode
33
+ * controller.setSubdivision('eighth'); // Switches in real-time!
34
+ * ```
35
+ */
36
+ import type { UnifiedBeatMap, SubdividedBeat, SubdividedBeatMap, SubdivisionType, SubdivisionPlaybackOptions, SubdivisionTransitionMode, SubdivisionCallback, AccuracyThresholds, ButtonPressResult } from '../types/BeatMap.js';
37
+ /**
38
+ * Subdivision Playback Controller
39
+ *
40
+ * Provides real-time subdivision switching for practice mode.
41
+ * Wraps a UnifiedBeatMap and generates beats on-the-fly based on
42
+ * the current subdivision type.
43
+ */
44
+ export declare class SubdivisionPlaybackController {
45
+ private unifiedMap;
46
+ private audioContext;
47
+ private options;
48
+ private state;
49
+ private subscribers;
50
+ private subdivider;
51
+ /**
52
+ * Create a new SubdivisionPlaybackController
53
+ *
54
+ * @param unifiedMap - The unified beat map to use for subdivision
55
+ * @param audioContext - The Web Audio API AudioContext for timing
56
+ * @param options - Configuration options
57
+ *
58
+ * @example
59
+ * ```typescript
60
+ * const beatMap = await generator.generateBeatMap('song.mp3', 'track-1');
61
+ * const interpolatedMap = interpolator.interpolate(beatMap);
62
+ * const unifiedMap = unifyBeatMap(interpolatedMap);
63
+ *
64
+ * const controller = new SubdivisionPlaybackController(
65
+ * unifiedMap,
66
+ * audioContext,
67
+ * {
68
+ * initialSubdivision: 'quarter',
69
+ * transitionMode: 'next-downbeat',
70
+ * }
71
+ * );
72
+ * ```
73
+ */
74
+ constructor(unifiedMap: UnifiedBeatMap, audioContext: AudioContext, options?: SubdivisionPlaybackOptions);
75
+ /**
76
+ * Get the current subdivision type
77
+ */
78
+ get subdivision(): SubdivisionType;
79
+ /**
80
+ * Get the unified beat map
81
+ */
82
+ get beatMap(): UnifiedBeatMap;
83
+ /**
84
+ * Get the current playback options
85
+ */
86
+ getOptions(): Required<SubdivisionPlaybackOptions>;
87
+ /**
88
+ * Subscribe to beat events
89
+ *
90
+ * @param callback - Function to call when beat events occur
91
+ * @returns Unsubscribe function
92
+ *
93
+ * @example
94
+ * ```typescript
95
+ * const unsubscribe = controller.subscribe((event) => {
96
+ * if (event.type === 'upcoming') {
97
+ * // Pre-render beat visual
98
+ * } else if (event.type === 'exact') {
99
+ * // Beat is happening now
100
+ * }
101
+ * });
102
+ *
103
+ * // Later, to unsubscribe
104
+ * unsubscribe();
105
+ * ```
106
+ */
107
+ subscribe(callback: SubdivisionCallback): () => void;
108
+ /**
109
+ * Change subdivision type in real-time
110
+ *
111
+ * The transition behavior depends on the transitionMode option:
112
+ * - 'immediate': Switch instantly at the current position
113
+ * - 'next-downbeat': Wait for the next downbeat before switching
114
+ * - 'next-measure': Wait for the next measure before switching
115
+ *
116
+ * @param type - The new subdivision type
117
+ *
118
+ * @example
119
+ * ```typescript
120
+ * // Switch to eighth notes immediately
121
+ * controller.setSubdivision('eighth');
122
+ *
123
+ * // Switch to half notes
124
+ * controller.setSubdivision('half');
125
+ * ```
126
+ */
127
+ setSubdivision(type: SubdivisionType): void;
128
+ /**
129
+ * Set the transition mode for subdivision changes.
130
+ * Updates how pending subdivision changes are applied.
131
+ *
132
+ * @param mode - The transition mode ('immediate', 'next-downbeat', 'next-measure')
133
+ *
134
+ * @example
135
+ * ```typescript
136
+ * // Change to immediate mode during playback
137
+ * controller.setTransitionMode('immediate');
138
+ *
139
+ * // Any pending subdivision change will apply immediately
140
+ * controller.setSubdivision('eighth');
141
+ * ```
142
+ */
143
+ setTransitionMode(mode: SubdivisionTransitionMode): void;
144
+ /**
145
+ * Apply the subdivision change immediately
146
+ */
147
+ private applySubdivisionChange;
148
+ /**
149
+ * Regenerate beats for the current subdivision.
150
+ * When fromTimestamp is provided, only regenerates beats from that point onwards,
151
+ * preserving old beats before the transition point for smooth visual transitions.
152
+ *
153
+ * @param fromTimestamp - Optional timestamp to start regeneration from. Beats before this
154
+ * timestamp are preserved. Used for deferred transitions.
155
+ */
156
+ private regenerateBeats;
157
+ /**
158
+ * Get a unique key for a beat
159
+ */
160
+ private getBeatKey;
161
+ /**
162
+ * Start streaming beat events
163
+ *
164
+ * Begins emitting events synchronized with audio playback.
165
+ * Should be called when audio starts playing.
166
+ */
167
+ play(): void;
168
+ /**
169
+ * Stop streaming beat events
170
+ *
171
+ * Stops all event emission and resets state.
172
+ */
173
+ stop(): void;
174
+ /**
175
+ * Pause the playback
176
+ *
177
+ * Temporarily stops event emission but preserves position.
178
+ */
179
+ pause(): void;
180
+ /**
181
+ * Resume a paused playback
182
+ */
183
+ resume(): void;
184
+ /**
185
+ * Seek to a specific time position
186
+ *
187
+ * @param time - Time in seconds to seek to
188
+ */
189
+ seek(time: number): void;
190
+ /**
191
+ * Get beats for a time range (generated on-the-fly)
192
+ *
193
+ * This method generates beats based on the current subdivision type
194
+ * within the specified time range.
195
+ *
196
+ * @param startTime - Start time in seconds
197
+ * @param endTime - End time in seconds
198
+ * @returns Array of subdivided beats in the range
199
+ *
200
+ * @example
201
+ * ```typescript
202
+ * // Get beats for the next 5 seconds
203
+ * const beats = controller.getBeatsInRange(currentTime, currentTime + 5);
204
+ * ```
205
+ */
206
+ getBeatsInRange(startTime: number, endTime: number): SubdividedBeat[];
207
+ /**
208
+ * Get upcoming beats for pre-rendering
209
+ *
210
+ * Returns beats that will occur within the anticipation window.
211
+ *
212
+ * @param count - Maximum number of beats to return
213
+ * @returns Array of upcoming beats
214
+ */
215
+ getUpcomingBeats(count: number): SubdividedBeat[];
216
+ /**
217
+ * Get the beat at a specific time
218
+ *
219
+ * Returns the beat closest to the given time within the timing tolerance.
220
+ *
221
+ * @param time - Time in seconds
222
+ * @returns Beat at the time, or null if no beat is near
223
+ */
224
+ getBeatAtTime(time: number): SubdividedBeat | null;
225
+ /**
226
+ * Get the current beat (the beat that is currently playing or most recently passed)
227
+ *
228
+ * @returns Current beat, or null if before first beat
229
+ */
230
+ getCurrentBeat(): SubdividedBeat | null;
231
+ /**
232
+ * Get the next beat (the beat that will occur next)
233
+ *
234
+ * @returns Next beat, or null if after last beat
235
+ */
236
+ getNextBeat(): SubdividedBeat | null;
237
+ /**
238
+ * Get the current audio time with latency compensation
239
+ *
240
+ * @returns Current audio time in seconds
241
+ */
242
+ private getCurrentAudioTime;
243
+ /**
244
+ * Get total latency compensation in seconds
245
+ *
246
+ * Combines output latency, base latency, and user offset
247
+ */
248
+ private getTotalLatencyCompensation;
249
+ /**
250
+ * Schedule the next update frame
251
+ */
252
+ private scheduleUpdate;
253
+ /**
254
+ * Main update loop - checks for beat events to emit
255
+ */
256
+ private update;
257
+ /**
258
+ * Check for pending subdivision changes
259
+ */
260
+ private checkPendingSubdivisionChange;
261
+ /**
262
+ * Emit a beat event to all subscribers
263
+ */
264
+ private emitEvent;
265
+ /**
266
+ * Check if the controller is currently running
267
+ */
268
+ isRunning(): boolean;
269
+ /**
270
+ * Check if the controller is paused
271
+ */
272
+ isPaused(): boolean;
273
+ /**
274
+ * Get the current playback position
275
+ *
276
+ * @returns Current time in seconds
277
+ */
278
+ getCurrentTime(): number;
279
+ /**
280
+ * Get the beat map duration
281
+ */
282
+ getDuration(): number;
283
+ /**
284
+ * Check a button press against the current subdivision's beats.
285
+ *
286
+ * This method evaluates tap accuracy against the subdivided beat grid,
287
+ * not the original quarter notes. Use this when real-time subdivision
288
+ * is active to ensure tap feedback matches the visual beat positions.
289
+ *
290
+ * Note: Key matching is not supported in subdivision mode - all beats are
291
+ * treated as tap-only. This differs from BeatStream.checkButtonPress which
292
+ * supports key-matching beats.
293
+ *
294
+ * @param timestamp - The time of the button press (audio time in seconds)
295
+ * @param thresholds - Optional accuracy thresholds to override defaults
296
+ * @returns Button press result with accuracy level and matched beat
297
+ */
298
+ checkButtonPress(timestamp: number, thresholds?: AccuracyThresholds): ButtonPressResult;
299
+ /**
300
+ * Update the unified beat map (e.g., after re-analysis)
301
+ *
302
+ * @param unifiedMap - New unified beat map to use
303
+ */
304
+ setBeatMap(unifiedMap: UnifiedBeatMap): void;
305
+ /**
306
+ * Force an update cycle (primarily for testing).
307
+ *
308
+ * This manually triggers the update loop which checks for pending
309
+ * subdivision changes and emits beat events. Useful in tests where
310
+ * the animation frame loop doesn't run automatically.
311
+ */
312
+ forceUpdate(): void;
313
+ /**
314
+ * Get the current SubdividedBeatMap with partial regeneration applied.
315
+ *
316
+ * This returns a SubdividedBeatMap containing all beats from the
317
+ * scheduled beats map. When a deferred transition has occurred,
318
+ * this will include:
319
+ * - Beats before the transition point with the OLD subdivision
320
+ * - Beats from the transition point onwards with the NEW subdivision
321
+ *
322
+ * Use this for visualization when you need to show the actual beat
323
+ * grid that the player will encounter, including partial transitions.
324
+ *
325
+ * @returns A SubdividedBeatMap with all scheduled beats
326
+ */
327
+ getSubdividedBeatMap(): SubdividedBeatMap;
328
+ /**
329
+ * Clean up resources
330
+ */
331
+ dispose(): void;
332
+ }
333
+ //# sourceMappingURL=SubdivisionPlaybackController.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SubdivisionPlaybackController.d.ts","sourceRoot":"","sources":["../../../src/core/playback/SubdivisionPlaybackController.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ /**
2
+ * Playback module exports
3
+ */
4
+ export { SubdivisionPlaybackController, } from './SubdivisionPlaybackController.js';
5
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/core/playback/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAEH,OAAO,EACH,6BAA6B,GAChC,MAAM,oCAAoC,CAAC"}
@@ -0,0 +1,203 @@
1
+ import type { CharacterSheet, Ability } from '../types/Character.js';
2
+ import type { ListeningSession, LevelUpDetail, ApplyPendingStatIncreaseResult } from '../types/Progression.js';
3
+ import type { PlaylistTrack } from '../types/Playlist.js';
4
+ import type { PrestigeLevel, PrestigeResult } from '../types/Prestige.js';
5
+ import type { AudioProfile } from '../types/AudioProfile.js';
6
+ import type { ISessionTracker } from '../types/ISessionTracker.js';
7
+ import type { RhythmXPResult } from '../types/RhythmXP.js';
8
+ import { StatManager } from './stat/StatManager.js';
9
+ import { PrestigeSystem } from './PrestigeSystem.js';
10
+ export type { ApplyPendingStatIncreaseResult } from '../types/Progression.js';
11
+ export interface CharacterUpdateResult {
12
+ character: CharacterSheet;
13
+ xpEarned: number;
14
+ leveledUp: boolean;
15
+ newLevel?: number;
16
+ masteredTrack: boolean;
17
+ masteryBonusXP: number;
18
+ /** Detailed breakdown of each level-up (NEW) */
19
+ levelUpDetails?: LevelUpDetail[];
20
+ }
21
+ /**
22
+ * Result type for rhythm XP additions (excludes track mastery fields)
23
+ * Rhythm game XP doesn't involve track mastery mechanics
24
+ */
25
+ export type RhythmXPUpdateResult = Omit<CharacterUpdateResult, 'masteredTrack' | 'masteryBonusXP'>;
26
+ /**
27
+ * CharacterUpdater - Orchestrates character updates from listening sessions
28
+ */
29
+ export declare class CharacterUpdater {
30
+ private xpCalculator;
31
+ private statManager?;
32
+ constructor(statManager?: StatManager);
33
+ /**
34
+ * Add XP from any source (combat, quests, custom activities)
35
+ * Triggers level-up system with detailed breakdowns
36
+ *
37
+ * @param character - The character to update
38
+ * @param xpAmount - Amount of XP to add
39
+ * @param source - Source of the XP (for tracking)
40
+ * @returns Result object containing updated character and level-up details
41
+ *
42
+ * @example
43
+ * ```typescript
44
+ * // Combat victory XP
45
+ * const result = updater.addXP(character, 500, 'combat');
46
+ *
47
+ * // Quest completion XP
48
+ * const questResult = updater.addXP(character, 1000, 'quest');
49
+ *
50
+ * // Custom activity XP
51
+ * const customResult = updater.addXP(character, 250, 'exploration');
52
+ *
53
+ * if (result.leveledUp) {
54
+ * console.log(`🎉 LEVELED UP to ${result.newLevel}!`);
55
+ * for (const detail of result.levelUpDetails) {
56
+ * console.log(`HP: +${detail.hpIncrease}`);
57
+ * console.log(`Stats:`, detail.statIncreases);
58
+ * }
59
+ * }
60
+ * ```
61
+ */
62
+ addXP(character: CharacterSheet, xpAmount: number, _source?: string): Omit<CharacterUpdateResult, 'masteredTrack' | 'masteryBonusXP'>;
63
+ /**
64
+ * Add XP from rhythm game button presses.
65
+ * Triggers level-up system just like addXP() does.
66
+ *
67
+ * This method is designed to work with RhythmXPCalculator results.
68
+ * Rhythm XP doesn't involve track mastery mechanics.
69
+ *
70
+ * @param character - The character to update
71
+ * @param xpResult - Result from RhythmXPCalculator.calculateButtonPressXP()
72
+ * @param source - Source label for tracking (default: 'rhythm_game')
73
+ * @returns Result object containing updated character and level-up details
74
+ *
75
+ * @example
76
+ * ```typescript
77
+ * const calculator = new RhythmXPCalculator();
78
+ * const xpResult = calculator.calculateButtonPressXP('perfect', { comboLength: 50 });
79
+ *
80
+ * const updateResult = updater.addRhythmXP(character, xpResult);
81
+ *
82
+ * if (updateResult.leveledUp) {
83
+ * console.log(`LEVELED UP to ${updateResult.newLevel}!`);
84
+ * for (const detail of updateResult.levelUpDetails ?? []) {
85
+ * console.log(`HP: +${detail.hpIncrease}`);
86
+ * }
87
+ * }
88
+ * ```
89
+ */
90
+ addRhythmXP(character: CharacterSheet, xpResult: RhythmXPResult, source?: string): RhythmXPUpdateResult;
91
+ /**
92
+ * Helper method to check if a level grants stat increases
93
+ */
94
+ private isStatIncreaseLevel;
95
+ /**
96
+ * Updates a character based on a completed listening session
97
+ * Calculates XP, checks for level ups, and handles track mastery
98
+ *
99
+ * @param character - The character to update
100
+ * @param session - The completed listening session
101
+ * @param track - The track that was listened to (optional, but needed for mastery/completion bonus)
102
+ * @param options - Optional parameters for mastery calculation
103
+ * @param options.previousListenCount - Listen count before this session (defaults to 0)
104
+ * @param options.previousXP - Total track XP before this session (defaults to 0)
105
+ * @param options.prestigeLevel - Character's prestige level (defaults to character's prestige_level or 0)
106
+ * @returns Result object containing updated character and event details
107
+ */
108
+ updateCharacterFromSession(character: CharacterSheet, session: ListeningSession, track?: PlaylistTrack, options?: {
109
+ previousListenCount?: number;
110
+ previousXP?: number;
111
+ prestigeLevel?: PrestigeLevel;
112
+ }): CharacterUpdateResult;
113
+ /**
114
+ * Apply pending stat increase with user-selected stats
115
+ * Only works if pendingStatIncreases counter > 0
116
+ *
117
+ * @param character - Character with pending stat increases
118
+ * @param primaryStat - The stat to get +2 (or one of the +1s if using two stats)
119
+ * @param secondaryStats - Optional array of 1 additional stat for +1/+1 distribution
120
+ * @returns Result with updated character
121
+ *
122
+ * @example
123
+ * ```typescript
124
+ * // +2 to STR only
125
+ * const result = updater.applyPendingStatIncrease(character, 'STR');
126
+ *
127
+ * // +1 to STR and +1 to DEX
128
+ * const result = updater.applyPendingStatIncrease(character, 'STR', ['DEX']);
129
+ * ```
130
+ */
131
+ applyPendingStatIncrease(character: CharacterSheet, primaryStat: Ability, secondaryStats?: Ability[]): ApplyPendingStatIncreaseResult;
132
+ /**
133
+ * Check if character has pending stat increases
134
+ *
135
+ * @param character - Character to check
136
+ * @returns true if character has pending stat increases
137
+ */
138
+ hasPendingStatIncreases(character: CharacterSheet): boolean;
139
+ /**
140
+ * Get the count of pending stat increases
141
+ *
142
+ * @param character - Character to check
143
+ * @returns Number of pending stat increases
144
+ */
145
+ getPendingStatIncreaseCount(character: CharacterSheet): number;
146
+ /**
147
+ * Reset a character for prestige after mastering a track.
148
+ *
149
+ * This is the main prestige execution function that handles the full prestige operation:
150
+ * 1. Validates: Check can prestige (not at max, meets thresholds)
151
+ * 2. Preserves equipment
152
+ * 3. Clears track sessions (calls sessionTracker.clearTrackSessions(trackUuid))
153
+ * 4. Regenerates base level 1 character from seed
154
+ * 5. Restores equipment
155
+ * 6. Re-applies equipment effects
156
+ * 7. Increments prestige_level
157
+ * 8. Returns result with success/failure info
158
+ *
159
+ * @param character - The character to prestige
160
+ * @param sessionTracker - SessionTracker instance to clear track sessions
161
+ * @param trackUuid - UUID of the track being prestiged
162
+ * @param audioProfile - Audio profile for character regeneration
163
+ * @param track - Track metadata for character regeneration
164
+ * @returns PrestigeResult indicating success/failure and new prestige level
165
+ *
166
+ * @example
167
+ * ```typescript
168
+ * const result = updater.resetCharacterForPrestige(
169
+ * character,
170
+ * sessionTracker,
171
+ * trackUuid,
172
+ * audioProfile,
173
+ * track
174
+ * );
175
+ *
176
+ * if (result.success) {
177
+ * console.log(result.message); // "Successfully prestiged to level I! ..."
178
+ * } else {
179
+ * console.log(result.message); // "Prestige failed: ..."
180
+ * }
181
+ * ```
182
+ */
183
+ resetCharacterForPrestige(character: CharacterSheet, sessionTracker: ISessionTracker, trackUuid: string, audioProfile: AudioProfile, track: PlaylistTrack): PrestigeResult;
184
+ /**
185
+ * Check if a character can prestige for a specific track.
186
+ *
187
+ * @param character - The character to check
188
+ * @param sessionTracker - SessionTracker instance for getting track stats
189
+ * @param trackUuid - UUID of the track to check
190
+ * @returns True if the character can prestige
191
+ */
192
+ canPrestige(character: CharacterSheet, sessionTracker: ISessionTracker, trackUuid: string): boolean;
193
+ /**
194
+ * Get prestige info for a character and track combination.
195
+ *
196
+ * @param character - The character to get info for
197
+ * @param sessionTracker - SessionTracker instance for getting track stats
198
+ * @param trackUuid - UUID of the track
199
+ * @returns PrestigeInfo object with current progress
200
+ */
201
+ getPrestigeInfo(character: CharacterSheet, sessionTracker: ISessionTracker, trackUuid: string): ReturnType<typeof PrestigeSystem.getPrestigeInfo>;
202
+ }
203
+ //# sourceMappingURL=CharacterUpdater.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"CharacterUpdater.d.ts","sourceRoot":"","sources":["../../../src/core/progression/CharacterUpdater.ts"],"names":[],"mappings":"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"}