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,366 @@
1
+ /**
2
+ * Level Export Types
3
+ *
4
+ * Types for exporting and importing rhythm game levels in a format compatible
5
+ * with the playlist-data-showcase app's import/export functionality.
6
+ *
7
+ * This format supports both:
8
+ * - Procedurally generated levels (from LevelGenerator)
9
+ * - Manually charted levels (from showcase app chart editor)
10
+ *
11
+ * Part of the Pitch Detection & Button Mapping pipeline - Phase 4.2
12
+ */
13
+ import type { SubdivisionType, BeatSource } from './BeatMap.js';
14
+ import type { Band } from '../generation/RhythmGenerator.js';
15
+ /**
16
+ * Chart style determining key layout
17
+ * - 'ddr': 4-key dance pad style (up, down, left, right)
18
+ * - 'guitar': 5-fret guitar hero style (1, 2, 3, 4, 5)
19
+ */
20
+ export type ChartStyle = 'ddr' | 'guitar' | 'tap';
21
+ /**
22
+ * A detected beat in the full beat map export format
23
+ */
24
+ export interface FullExportDetectedBeat {
25
+ /** Timestamp in seconds */
26
+ timestamp: number;
27
+ /** Position within the measure */
28
+ beatInMeasure: number;
29
+ /** Whether this is a downbeat */
30
+ isDownbeat: boolean;
31
+ /** Measure number */
32
+ measureNumber: number;
33
+ /** Onset intensity (0-1) */
34
+ intensity: number;
35
+ /** Detection confidence (0-1) */
36
+ confidence: number;
37
+ /** Optional required key for rhythm game */
38
+ requiredKey?: string;
39
+ }
40
+ /**
41
+ * A merged beat (detected or interpolated) in the full beat map export format
42
+ */
43
+ export interface FullExportMergedBeat {
44
+ /** Timestamp in seconds */
45
+ timestamp: number;
46
+ /** Position within the measure */
47
+ beatInMeasure: number;
48
+ /** Whether this is a downbeat */
49
+ isDownbeat: boolean;
50
+ /** Measure number */
51
+ measureNumber: number;
52
+ /** Onset intensity (0-1) */
53
+ intensity: number;
54
+ /** Detection confidence (0-1) */
55
+ confidence: number;
56
+ /** Optional required key for rhythm game */
57
+ requiredKey?: string;
58
+ /** Whether this beat was detected or interpolated */
59
+ source: BeatSource;
60
+ /** Distance to nearest detected beat (for interpolated beats) */
61
+ distanceToAnchor?: number;
62
+ /** Timestamp of nearest detected beat (for interpolated beats) */
63
+ nearestAnchorTimestamp?: number;
64
+ }
65
+ /**
66
+ * Metadata about the interpolation process
67
+ */
68
+ export interface InterpolatedMetadataJSON {
69
+ /** Quarter note interval in seconds */
70
+ quarterNoteInterval: number;
71
+ /** Quarter note BPM (60 / quarterNoteInterval) */
72
+ quarterNoteBpm: number;
73
+ /** Confidence of quarter note detection */
74
+ quarterNoteConfidence: number;
75
+ /** Total detected beats count */
76
+ detectedBeatCount: number;
77
+ /** Total merged beats count (detected + interpolated) */
78
+ mergedBeatCount: number;
79
+ }
80
+ /**
81
+ * Subdivision configuration in JSON-serializable format
82
+ */
83
+ export interface SubdivisionConfigJSON {
84
+ /** Subdivision assignments as array of [beatIndex, subdivisionType] tuples */
85
+ beatSubdivisions: [number, SubdivisionType][];
86
+ /** Default subdivision for beats not in the array */
87
+ defaultSubdivision: SubdivisionType;
88
+ }
89
+ /**
90
+ * Metadata about the subdivision process
91
+ */
92
+ export interface SubdivisionMetadataJSON {
93
+ /** Original beat count before subdivision */
94
+ originalBeatCount: number;
95
+ /** Beat count after subdivision */
96
+ subdividedBeatCount: number;
97
+ /** Average density multiplier */
98
+ averageDensityMultiplier: number;
99
+ /** Number of explicitly subdivided beats */
100
+ explicitBeatCount: number;
101
+ }
102
+ /**
103
+ * A subdivided beat in the full beat map export format
104
+ * Includes procedural extensions for procedurally generated levels
105
+ */
106
+ export interface FullExportSubdividedBeat {
107
+ /** Timestamp in seconds */
108
+ timestamp: number;
109
+ /** Position within the measure (decimal for subdivisions) */
110
+ beatInMeasure: number;
111
+ /** Whether this is a downbeat */
112
+ isDownbeat: boolean;
113
+ /** Measure number */
114
+ measureNumber: number;
115
+ /** Onset intensity (0-1) */
116
+ intensity: number;
117
+ /** Detection confidence (0-1) */
118
+ confidence: number;
119
+ /** Required key for this beat */
120
+ requiredKey?: string;
121
+ /** Whether this beat was originally detected */
122
+ isDetected: boolean;
123
+ /** Index of original beat in UnifiedBeatMap */
124
+ originalBeatIndex?: number;
125
+ /** The subdivision type that created this beat */
126
+ subdivisionType: SubdivisionType;
127
+ /** Index into the original quarter note (procedural only) */
128
+ quarterNoteIndex?: number;
129
+ /** Position within the quarter note (procedural only) */
130
+ subdivisionPosition?: number;
131
+ /** Which frequency band this beat originated from (procedural only) */
132
+ sourceBand?: Band;
133
+ /** Quantization error in milliseconds (procedural only) */
134
+ quantizationError?: number;
135
+ }
136
+ /**
137
+ * Complete subdivision data for export
138
+ */
139
+ export interface SubdivisionExportData {
140
+ /** Subdivision configuration */
141
+ config: SubdivisionConfigJSON;
142
+ /** Subdivided beats with keys assigned */
143
+ beats: FullExportSubdividedBeat[];
144
+ /** Subdivision metadata */
145
+ metadata: SubdivisionMetadataJSON;
146
+ }
147
+ /**
148
+ * Chart metadata for export
149
+ */
150
+ export interface ChartExportData {
151
+ /** Chart style (ddr or guitar) */
152
+ style: ChartStyle;
153
+ /** Number of keys/frets used */
154
+ keyCount: number;
155
+ /** Array of keys used in this chart */
156
+ usedKeys: string[];
157
+ }
158
+ /**
159
+ * Metadata specific to procedurally generated levels
160
+ * Only present when generationSource is 'procedural'
161
+ */
162
+ export interface ProceduralGenerationMetadata {
163
+ /** Difficulty preset used */
164
+ difficulty: string;
165
+ /** Weight given to pitch analysis (0-1) */
166
+ pitchInfluenceWeight: number;
167
+ /** Button patterns used in generation */
168
+ patternsUsed: string[];
169
+ /** Controller mode used */
170
+ controllerMode: 'ddr' | 'guitar_hero' | 'tap';
171
+ /** Seed used for reproducibility */
172
+ seed?: string;
173
+ /** Generation timestamp */
174
+ generatedAt: string;
175
+ /** Direction statistics from melody contour analysis */
176
+ directionStats?: {
177
+ up: number;
178
+ down: number;
179
+ stable: number;
180
+ none: number;
181
+ };
182
+ /** Interval statistics from melody contour analysis */
183
+ intervalStats?: {
184
+ unison: number;
185
+ small: number;
186
+ medium: number;
187
+ large: number;
188
+ very_large: number;
189
+ };
190
+ /** Rhythm metadata summary */
191
+ rhythmMetadata?: {
192
+ difficulty: string;
193
+ bandsAnalyzed: Band[];
194
+ transientsDetected: number;
195
+ averageDensity: number;
196
+ };
197
+ }
198
+ /**
199
+ * Complete beat map data for export/import
200
+ *
201
+ * This is the unified format that supports both:
202
+ * - Procedurally generated levels (from LevelGenerator)
203
+ * - Manually charted levels (from showcase app chart editor)
204
+ *
205
+ * The showcase app ignores extra fields, so procedural-specific fields
206
+ * can be safely added without breaking compatibility.
207
+ *
208
+ * @example
209
+ * ```typescript
210
+ * // Export a generated level
211
+ * const exportData = LevelSerializer.toExportData(generatedLevel);
212
+ * const json = JSON.stringify(exportData);
213
+ *
214
+ * // Import a level
215
+ * const data = JSON.parse(json) as FullBeatMapExportData;
216
+ * const level = LevelSerializer.fromExportData(data);
217
+ * ```
218
+ */
219
+ export interface FullBeatMapExportData {
220
+ /** Format version (always 1) */
221
+ version: 1;
222
+ /** Format identifier (always 'full-beatmap') */
223
+ format: 'full-beatmap';
224
+ /** Unique identifier for the audio source */
225
+ audioId: string;
226
+ /** Optional audio title for display purposes */
227
+ audioTitle?: string;
228
+ /** Unix timestamp when this level was exported */
229
+ exportedAt: number;
230
+ /** Duration of the audio in seconds */
231
+ duration: number;
232
+ /** Quarter note BPM (60 / quarterNoteInterval) */
233
+ quarterNoteBpm: number;
234
+ /** Confidence of quarter note detection (0-1) */
235
+ quarterNoteConfidence: number;
236
+ /** Original detected beats from audio analysis */
237
+ detectedBeats: FullExportDetectedBeat[];
238
+ /** Merged beats (detected + interpolated) */
239
+ mergedBeats: FullExportMergedBeat[];
240
+ /** Metadata about the interpolation process */
241
+ interpolatedMetadata: InterpolatedMetadataJSON;
242
+ /** Subdivision data (null if no subdivision applied) */
243
+ subdivision: SubdivisionExportData | null;
244
+ /** Chart style and key information (null if no chart) */
245
+ chart: ChartExportData | null;
246
+ /**
247
+ * Identifies the song this level was created for.
248
+ * Absent in v1 exports for backward compatibility.
249
+ */
250
+ trackReference?: TrackReference;
251
+ /** Source of this level (manual or procedural) */
252
+ generationSource?: 'manual' | 'procedural';
253
+ /** Additional metadata for procedurally generated levels */
254
+ generationMetadata?: ProceduralGenerationMetadata;
255
+ }
256
+ /**
257
+ * Result of attempting to import a beat map
258
+ */
259
+ export interface FullBeatMapImportResult {
260
+ /** Whether the import was successful */
261
+ success: boolean;
262
+ /** The imported data if successful */
263
+ data?: FullBeatMapExportData;
264
+ /** Error message if import failed */
265
+ error?: string;
266
+ /** Validation warnings (non-fatal issues) */
267
+ warnings?: string[];
268
+ }
269
+ /**
270
+ * Identifies the song that a level was created for.
271
+ * Embedded in exported level files so the UI can validate the correct song
272
+ * is selected on import and tell the user which playlist/track to switch to.
273
+ */
274
+ export interface TrackReference {
275
+ /** Arweave transaction ID of the playlist that contains this track */
276
+ playlistTxId?: string;
277
+ /** Display name of the playlist */
278
+ playlistName?: string;
279
+ /** Track ID (e.g. "ethereum-0xContract-1" or "AR-{tx_id}") */
280
+ trackId: string;
281
+ /** Unique instance ID for the game engine */
282
+ trackUuid: string;
283
+ /** 0-based index of the track within the playlist */
284
+ trackIndex: number;
285
+ /** Arweave transaction ID for the track's audio (only for AR tracks) */
286
+ txId?: string;
287
+ /** Track title */
288
+ title: string;
289
+ /** Track artist */
290
+ artist: string;
291
+ /** URL to the audio file */
292
+ audioUrl: string;
293
+ /** URL to the track's cover image (optional) */
294
+ imageUrl?: string;
295
+ /** Duration of the audio in seconds */
296
+ duration: number;
297
+ }
298
+ /**
299
+ * Result of validating whether the currently selected track matches the
300
+ * track referenced in an imported level file.
301
+ */
302
+ export interface TrackMatchResult {
303
+ /** True when the current track is the one the level was built for */
304
+ matches: boolean;
305
+ /** Human-readable details about any mismatch (empty when matches is true) */
306
+ mismatchDetails: string[];
307
+ /** When mismatched, describes the track the user needs to switch to */
308
+ requiredTrack?: {
309
+ title: string;
310
+ artist: string;
311
+ playlistName?: string;
312
+ trackIndex: number;
313
+ };
314
+ }
315
+ /**
316
+ * Validate whether the currently selected track matches the track reference
317
+ * embedded in a level file.
318
+ *
319
+ * Matching strategy:
320
+ * 1. Compare by `trackId` (exact)
321
+ * 2. Fall back to `title + artist` (case-insensitive)
322
+ *
323
+ * @param levelTrackRef - The track reference from the imported level file
324
+ * @param currentTrack - The track currently selected in the showcase app
325
+ * @returns Match result with details about any mismatch
326
+ */
327
+ export declare function validateTrackMatch(levelTrackRef: TrackReference, currentTrack: {
328
+ id: string;
329
+ title: string;
330
+ artist: string;
331
+ playlist_index: number;
332
+ tx_id?: string;
333
+ }): TrackMatchResult;
334
+ /**
335
+ * Check if an unknown value is a valid FullBeatMapExportData
336
+ */
337
+ export declare function isFullBeatMapExportData(value: unknown): value is FullBeatMapExportData;
338
+ /**
339
+ * A collection of difficulty levels for the same song, exported as a single file.
340
+ *
341
+ * Each difficulty is a full FullBeatMapExportData so it can be independently
342
+ * deserialized. The pack-level trackReference applies to all difficulties.
343
+ */
344
+ export interface LevelPackExport {
345
+ /** Format version (always 1) */
346
+ version: 1;
347
+ /** Format identifier (always 'level-pack') */
348
+ format: 'level-pack';
349
+ /** Unix timestamp when this pack was exported */
350
+ exportedAt: number;
351
+ /** Track reference identifying the song (shared across all difficulties) */
352
+ trackReference?: TrackReference;
353
+ /** Per-difficulty level data. Keys that exist have generated levels. */
354
+ difficulties: {
355
+ natural?: FullBeatMapExportData;
356
+ easy?: FullBeatMapExportData;
357
+ medium?: FullBeatMapExportData;
358
+ hard?: FullBeatMapExportData;
359
+ custom?: FullBeatMapExportData;
360
+ };
361
+ }
362
+ /**
363
+ * Check if an unknown value is a valid LevelPackExport.
364
+ */
365
+ export declare function isLevelPackExport(value: unknown): value is LevelPackExport;
366
+ //# sourceMappingURL=LevelExport.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"LevelExport.d.ts","sourceRoot":"","sources":["../../../src/core/types/LevelExport.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,70 @@
1
+ /**
2
+ * Playlist-related type definitions
3
+ * Based on specs/001-core-engine/SPEC.md
4
+ */
5
+ /**
6
+ * ServerlessPlaylist - The playlist container
7
+ * This is the structure of the JSON file fetched directly from Arweave
8
+ */
9
+ export interface ServerlessPlaylist {
10
+ name: string;
11
+ description?: string;
12
+ image: string;
13
+ creator: string;
14
+ genre?: string;
15
+ tags?: string[];
16
+ tracks: PlaylistTrack[];
17
+ }
18
+ /**
19
+ * PlaylistTrack - Single source of truth for a track
20
+ * Result of merging "Outer Shell" (Blockchain Data) with "Inner Core" (Parsed Metadata)
21
+ */
22
+ export interface PlaylistTrack {
23
+ id: string;
24
+ uuid: string;
25
+ playlist_index: number;
26
+ chain_name: string;
27
+ token_address?: string;
28
+ token_id?: string;
29
+ tx_id?: string;
30
+ platform: string;
31
+ title: string;
32
+ artist: string;
33
+ description?: string;
34
+ album?: string;
35
+ image_url: string;
36
+ /** Optional thumbnail URL extracted from image_thumb or image_thumb_url fields */
37
+ image_thumb_url?: string;
38
+ audio_url: string;
39
+ /** Optional uncompressed audio URL for high-fidelity playback */
40
+ audio_url_lossless?: string;
41
+ duration: number;
42
+ genre: string;
43
+ tags: string[];
44
+ bpm?: number;
45
+ key?: string;
46
+ attributes?: Record<string, string | number>;
47
+ }
48
+ /**
49
+ * RawArweavePlaylist - The raw input schema
50
+ * This is what the engine receives from Arweave before parsing
51
+ */
52
+ export interface RawArweavePlaylist {
53
+ name: string;
54
+ image: string;
55
+ creator: string;
56
+ description?: string;
57
+ genre?: string;
58
+ tags?: string[];
59
+ tracks: Array<{
60
+ chain_name: string;
61
+ token_address?: string;
62
+ token_id?: string;
63
+ tx_id?: string;
64
+ platform: string;
65
+ id?: string;
66
+ uuid?: string;
67
+ metadata: string;
68
+ }>;
69
+ }
70
+ //# sourceMappingURL=Playlist.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Playlist.d.ts","sourceRoot":"","sources":["../../../src/core/types/Playlist.ts"],"names":[],"mappings":"AAAA;;;GAGG;AAEH;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAE/B,IAAI,EAAE,MAAM,CAAC;IACb,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAGhB,MAAM,EAAE,aAAa,EAAE,CAAC;CAC3B;AAED;;;GAGG;AACH,MAAM,WAAW,aAAa;IAE1B,EAAE,EAAE,MAAM,CAAC;IACX,IAAI,EAAE,MAAM,CAAC;IACb,cAAc,EAAE,MAAM,CAAC;IAEvB,UAAU,EAAE,MAAM,CAAC;IACnB,aAAa,CAAC,EAAE,MAAM,CAAC;IACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;IAClB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,QAAQ,EAAE,MAAM,CAAC;IAGjB,KAAK,EAAE,MAAM,CAAC;IACd,MAAM,EAAE,MAAM,CAAC;IACf,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IAGf,SAAS,EAAE,MAAM,CAAC;IAClB,kFAAkF;IAClF,eAAe,CAAC,EAAE,MAAM,CAAC;IACzB,SAAS,EAAE,MAAM,CAAC;IAClB,iEAAiE;IACjE,kBAAkB,CAAC,EAAE,MAAM,CAAC;IAC5B,QAAQ,EAAE,MAAM,CAAC;IAGjB,KAAK,EAAE,MAAM,CAAC;IACd,IAAI,EAAE,MAAM,EAAE,CAAC;IACf,GAAG,CAAC,EAAE,MAAM,CAAC;IACb,GAAG,CAAC,EAAE,MAAM,CAAC;IAGb,UAAU,CAAC,EAAE,MAAM,CAAC,MAAM,EAAE,MAAM,GAAG,MAAM,CAAC,CAAC;CAChD;AAED;;;GAGG;AACH,MAAM,WAAW,kBAAkB;IAC/B,IAAI,EAAE,MAAM,CAAC;IACb,KAAK,EAAE,MAAM,CAAC;IACd,OAAO,EAAE,MAAM,CAAC;IAChB,WAAW,CAAC,EAAE,MAAM,CAAC;IACrB,KAAK,CAAC,EAAE,MAAM,CAAC;IACf,IAAI,CAAC,EAAE,MAAM,EAAE,CAAC;IAChB,MAAM,EAAE,KAAK,CAAC;QAEV,UAAU,EAAE,MAAM,CAAC;QACnB,aAAa,CAAC,EAAE,MAAM,CAAC;QACvB,QAAQ,CAAC,EAAE,MAAM,CAAC;QAClB,KAAK,CAAC,EAAE,MAAM,CAAC;QACf,QAAQ,EAAE,MAAM,CAAC;QACjB,EAAE,CAAC,EAAE,MAAM,CAAC;QACZ,IAAI,CAAC,EAAE,MAAM,CAAC;QAGd,QAAQ,EAAE,MAAM,CAAC;KACpB,CAAC,CAAC;CACN"}
@@ -0,0 +1,94 @@
1
+ /**
2
+ * Prestige System Types
3
+ *
4
+ * The Prestige System allows players to reset their character after mastering a track
5
+ * in exchange for a visual badge upgrade. Uses 1.5x scaling per prestige level for
6
+ * both plays AND XP requirements.
7
+ *
8
+ * Mastery Requirements (Dual System):
9
+ * - Must meet BOTH plays AND XP thresholds to unlock mastery
10
+ * - Base: 10 plays + 1,000 XP
11
+ * - 1.5x scaling per prestige level
12
+ * - Dual requirement prevents "cheesing" (play/pause spam) since XP requires actual engagement
13
+ */
14
+ /**
15
+ * Prestige level type (0-10, where 0 = no prestige, 1-10 = Roman numerals I-X)
16
+ */
17
+ export type PrestigeLevel = 0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 | 10;
18
+ /**
19
+ * Roman numeral representations for prestige levels
20
+ */
21
+ export declare const PRESTIGE_ROMAN_NUMERALS: Record<PrestigeLevel, string>;
22
+ /**
23
+ * Maximum prestige level achievable
24
+ */
25
+ export declare const MAX_PRESTIGE_LEVEL: 10;
26
+ /**
27
+ * Base number of plays required to master a track at prestige level 0
28
+ */
29
+ export declare const BASE_PLAYS_THRESHOLD: 10;
30
+ /**
31
+ * Base XP required to master a track at prestige level 0
32
+ */
33
+ export declare const BASE_XP_THRESHOLD: 1000;
34
+ /**
35
+ * Scaling factor per prestige level (1.5x)
36
+ */
37
+ export declare const PRESTIGE_SCALING_FACTOR: 1.5;
38
+ /**
39
+ * Custom thresholds for a prestige level (allows overriding defaults)
40
+ * null means use calculated value, undefined means no override set
41
+ */
42
+ export interface CustomThresholds {
43
+ /** Custom plays threshold, or null to use calculated value */
44
+ playsThreshold?: number | null;
45
+ /** Custom XP threshold, or null to use calculated value */
46
+ xpThreshold?: number | null;
47
+ }
48
+ /**
49
+ * Complete prestige information for a character/track combination
50
+ */
51
+ export interface PrestigeInfo {
52
+ /** Current prestige level (0-10) */
53
+ prestigeLevel: PrestigeLevel;
54
+ /** Current number of plays for this track */
55
+ currentPlays: number;
56
+ /** Current XP earned for this track */
57
+ currentXP: number;
58
+ /** Required plays to master at current prestige level */
59
+ playsThreshold: number;
60
+ /** Required XP to master at current prestige level */
61
+ xpThreshold: number;
62
+ /** Progress toward plays requirement (0-1) */
63
+ playsProgress: number;
64
+ /** Progress toward XP requirement (0-1) */
65
+ xpProgress: number;
66
+ /** Whether track is mastered (meets BOTH plays AND XP thresholds) */
67
+ isMastered: boolean;
68
+ /** Whether character can prestige (mastered AND not at max prestige) */
69
+ canPrestige: boolean;
70
+ /** Whether character is at max prestige level */
71
+ isMaxPrestige: boolean;
72
+ }
73
+ /**
74
+ * Result of a prestige operation
75
+ */
76
+ export interface PrestigeResult {
77
+ /** Whether the prestige operation succeeded */
78
+ success: boolean;
79
+ /** New prestige level after operation */
80
+ newPrestigeLevel: PrestigeLevel;
81
+ /** Previous prestige level before operation */
82
+ previousPrestigeLevel: PrestigeLevel;
83
+ /** Human-readable result message */
84
+ message: string;
85
+ }
86
+ /**
87
+ * Type guard to check if a value is a valid PrestigeLevel
88
+ */
89
+ export declare function isPrestigeLevel(value: unknown): value is PrestigeLevel;
90
+ /**
91
+ * Convert a number to a PrestigeLevel (clamped to valid range)
92
+ */
93
+ export declare function toPrestigeLevel(value: number): PrestigeLevel;
94
+ //# sourceMappingURL=Prestige.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"Prestige.d.ts","sourceRoot":"","sources":["../../../src/core/types/Prestige.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;GAYG;AAEH;;GAEG;AACH,MAAM,MAAM,aAAa,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,EAAE,CAAC;AAEvE;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAE,MAAM,CAAC,aAAa,EAAE,MAAM,CAYxD,CAAC;AAEX;;GAEG;AACH,eAAO,MAAM,kBAAkB,EAAG,EAAW,CAAC;AAE9C;;GAEG;AACH,eAAO,MAAM,oBAAoB,EAAG,EAAW,CAAC;AAEhD;;GAEG;AACH,eAAO,MAAM,iBAAiB,EAAG,IAAa,CAAC;AAE/C;;GAEG;AACH,eAAO,MAAM,uBAAuB,EAAG,GAAY,CAAC;AAEpD;;;GAGG;AACH,MAAM,WAAW,gBAAgB;IAC7B,8DAA8D;IAC9D,cAAc,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;IAC/B,2DAA2D;IAC3D,WAAW,CAAC,EAAE,MAAM,GAAG,IAAI,CAAC;CAC/B;AAED;;GAEG;AACH,MAAM,WAAW,YAAY;IACzB,oCAAoC;IACpC,aAAa,EAAE,aAAa,CAAC;IAC7B,6CAA6C;IAC7C,YAAY,EAAE,MAAM,CAAC;IACrB,uCAAuC;IACvC,SAAS,EAAE,MAAM,CAAC;IAClB,yDAAyD;IACzD,cAAc,EAAE,MAAM,CAAC;IACvB,sDAAsD;IACtD,WAAW,EAAE,MAAM,CAAC;IACpB,8CAA8C;IAC9C,aAAa,EAAE,MAAM,CAAC;IACtB,2CAA2C;IAC3C,UAAU,EAAE,MAAM,CAAC;IACnB,qEAAqE;IACrE,UAAU,EAAE,OAAO,CAAC;IACpB,wEAAwE;IACxE,WAAW,EAAE,OAAO,CAAC;IACrB,iDAAiD;IACjD,aAAa,EAAE,OAAO,CAAC;CAC1B;AAED;;GAEG;AACH,MAAM,WAAW,cAAc;IAC3B,+CAA+C;IAC/C,OAAO,EAAE,OAAO,CAAC;IACjB,yCAAyC;IACzC,gBAAgB,EAAE,aAAa,CAAC;IAChC,+CAA+C;IAC/C,qBAAqB,EAAE,aAAa,CAAC;IACrC,oCAAoC;IACpC,OAAO,EAAE,MAAM,CAAC;CACnB;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,OAAO,GAAG,KAAK,IAAI,aAAa,CAKtE;AAED;;GAEG;AACH,wBAAgB,eAAe,CAAC,KAAK,EAAE,MAAM,GAAG,aAAa,CAG5D"}