@archivist-gg/dnd5e 0.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 (322) hide show
  1. package/LICENSE +21 -0
  2. package/LICENSES/SRD.md +37 -0
  3. package/README.md +65 -0
  4. package/dist/armor/armor.codec.d.ts +10 -0
  5. package/dist/armor/armor.codec.js +8 -0
  6. package/dist/armor/armor.entity-type.d.ts +2 -0
  7. package/dist/armor/armor.parser.d.ts +3 -0
  8. package/dist/armor/armor.parser.js +7 -0
  9. package/dist/armor/armor.schema.d.ts +25 -0
  10. package/dist/armor/armor.schema.js +6 -0
  11. package/dist/armor/armor.types.d.ts +26 -0
  12. package/dist/armor/armor.types.js +0 -0
  13. package/dist/background/background.codec.d.ts +9 -0
  14. package/dist/background/background.codec.js +11 -0
  15. package/dist/background/background.entity-type.d.ts +2 -0
  16. package/dist/background/background.parser.d.ts +3 -0
  17. package/dist/background/background.parser.js +10 -0
  18. package/dist/background/background.schema.d.ts +74 -0
  19. package/dist/background/background.schema.js +9 -0
  20. package/dist/background/background.types.d.ts +52 -0
  21. package/dist/background/background.types.js +0 -0
  22. package/dist/chunk-24GFQU7T.js +18 -0
  23. package/dist/chunk-3DZ74AKK.js +28 -0
  24. package/dist/chunk-3TM34RSJ.js +23 -0
  25. package/dist/chunk-3TRGRSCH.js +8 -0
  26. package/dist/chunk-4C2KOKLF.js +185 -0
  27. package/dist/chunk-4F6AIZ36.js +19 -0
  28. package/dist/chunk-4SSDYJS2.js +86 -0
  29. package/dist/chunk-4TIJKN6O.js +37 -0
  30. package/dist/chunk-537BHVSH.js +18 -0
  31. package/dist/chunk-5INR4NSL.js +18 -0
  32. package/dist/chunk-5XUXXAQJ.js +30 -0
  33. package/dist/chunk-656QCX4U.js +22 -0
  34. package/dist/chunk-66XXW2Z2.js +133 -0
  35. package/dist/chunk-6NK2MUD3.js +114 -0
  36. package/dist/chunk-6PXE7T7C.js +79 -0
  37. package/dist/chunk-7P65Q426.js +158 -0
  38. package/dist/chunk-A7T5L7SS.js +83 -0
  39. package/dist/chunk-AFKTJXRA.js +39 -0
  40. package/dist/chunk-B7UXKNLD.js +46 -0
  41. package/dist/chunk-BAXWWGFJ.js +45 -0
  42. package/dist/chunk-BH6AMZVY.js +25 -0
  43. package/dist/chunk-CDW7R2QT.js +62 -0
  44. package/dist/chunk-DABBCYTT.js +68 -0
  45. package/dist/chunk-DC74TZNA.js +46 -0
  46. package/dist/chunk-DNAJRMNN.js +68 -0
  47. package/dist/chunk-DRNZJNJP.js +19 -0
  48. package/dist/chunk-FEOB24KP.js +18 -0
  49. package/dist/chunk-FFULAF2P.js +63 -0
  50. package/dist/chunk-FUK7QSN5.js +19 -0
  51. package/dist/chunk-GIOH5JB5.js +19 -0
  52. package/dist/chunk-GJOI2GHP.js +25 -0
  53. package/dist/chunk-GZ46OVGZ.js +31 -0
  54. package/dist/chunk-HCP3GMHS.js +44 -0
  55. package/dist/chunk-IDTDACM6.js +19 -0
  56. package/dist/chunk-IKSMX4TN.js +0 -0
  57. package/dist/chunk-IXZXFFFW.js +269 -0
  58. package/dist/chunk-J2RYSZMQ.js +16 -0
  59. package/dist/chunk-JEYQU3JT.js +36 -0
  60. package/dist/chunk-LSLSG67V.js +31 -0
  61. package/dist/chunk-LWFTHJIE.js +24 -0
  62. package/dist/chunk-MDEJHMKK.js +52 -0
  63. package/dist/chunk-N2JE7BWL.js +81 -0
  64. package/dist/chunk-NAEPSZAM.js +88 -0
  65. package/dist/chunk-NXR3BD2V.js +90 -0
  66. package/dist/chunk-PKC77VZP.js +18 -0
  67. package/dist/chunk-PMADYMUI.js +19 -0
  68. package/dist/chunk-PTXBIDG7.js +63 -0
  69. package/dist/chunk-PZOWBI3B.js +49 -0
  70. package/dist/chunk-QQ5W2AZP.js +515 -0
  71. package/dist/chunk-QS5L5YTJ.js +24 -0
  72. package/dist/chunk-QYZV2MQA.js +97 -0
  73. package/dist/chunk-R2ZV233X.js +233 -0
  74. package/dist/chunk-RAWJTA45.js +271 -0
  75. package/dist/chunk-RSDRMH54.js +18 -0
  76. package/dist/chunk-RVYYKYFL.js +18 -0
  77. package/dist/chunk-SSXBYF3P.js +18 -0
  78. package/dist/chunk-TJCNX6UZ.js +521 -0
  79. package/dist/chunk-TZK36BU7.js +38 -0
  80. package/dist/chunk-UC4FE5X3.js +65 -0
  81. package/dist/chunk-WP2CX2JO.js +235 -0
  82. package/dist/chunk-WYGD2UGN.js +14 -0
  83. package/dist/chunk-XJNECUPT.js +31 -0
  84. package/dist/chunk-XURS6Q6Q.js +127 -0
  85. package/dist/chunk-Y4I74YEG.js +33 -0
  86. package/dist/chunk-Z4TL2V7S.js +18 -0
  87. package/dist/chunk-Z6GXV2GO.js +121 -0
  88. package/dist/chunk-ZLG6FQFB.js +237 -0
  89. package/dist/chunk-ZMR77DDL.js +18 -0
  90. package/dist/class/class.codec.d.ts +10 -0
  91. package/dist/class/class.codec.js +15 -0
  92. package/dist/class/class.entity-type.d.ts +2 -0
  93. package/dist/class/class.parser.d.ts +3 -0
  94. package/dist/class/class.parser.js +14 -0
  95. package/dist/class/class.schema.d.ts +202 -0
  96. package/dist/class/class.schema.js +13 -0
  97. package/dist/class/class.slug.d.ts +11 -0
  98. package/dist/class/class.slug.js +8 -0
  99. package/dist/class/class.types.d.ts +74 -0
  100. package/dist/class/class.types.js +0 -0
  101. package/dist/data-srd/index.generated.d.ts +7 -0
  102. package/dist/data-srd/index.generated.js +146 -0
  103. package/dist/dnd/constants.d.ts +16 -0
  104. package/dist/dnd/constants.js +36 -0
  105. package/dist/dnd/formula-tags.d.ts +16 -0
  106. package/dist/dnd/formula-tags.js +119 -0
  107. package/dist/dnd/math.d.ts +24 -0
  108. package/dist/dnd/math.js +35 -0
  109. package/dist/dnd/prose-tags.d.ts +16 -0
  110. package/dist/dnd/prose-tags.js +18 -0
  111. package/dist/dnd/resource-die.d.ts +6 -0
  112. package/dist/dnd/resource-die.js +17 -0
  113. package/dist/dnd/resource-formula.d.ts +41 -0
  114. package/dist/dnd/resource-formula.js +159 -0
  115. package/dist/dnd/srd-tag-converter.d.ts +44 -0
  116. package/dist/dnd/srd-tag-converter.js +12 -0
  117. package/dist/dnd/tag-grammar.d.ts +19 -0
  118. package/dist/dnd/tag-grammar.js +12 -0
  119. package/dist/encounter/encounter.ai-schema.d.ts +29 -0
  120. package/dist/encounter/encounter.ai-schema.js +8 -0
  121. package/dist/encounter/encounter.entity-type.d.ts +2 -0
  122. package/dist/encounter/encounter.generatable.d.ts +2 -0
  123. package/dist/entities/base-item-resolver.d.ts +21 -0
  124. package/dist/entities/base-item-resolver.js +9 -0
  125. package/dist/entities/slug.d.ts +5 -0
  126. package/dist/entities/slug.js +6 -0
  127. package/dist/feat/feat.codec.d.ts +9 -0
  128. package/dist/feat/feat.codec.js +10 -0
  129. package/dist/feat/feat.entity-type.d.ts +2 -0
  130. package/dist/feat/feat.parser.d.ts +3 -0
  131. package/dist/feat/feat.parser.js +9 -0
  132. package/dist/feat/feat.schema.d.ts +194 -0
  133. package/dist/feat/feat.schema.js +8 -0
  134. package/dist/feat/feat.types.d.ts +42 -0
  135. package/dist/feat/feat.types.js +0 -0
  136. package/dist/index.d.ts +12 -0
  137. package/dist/index.js +139149 -0
  138. package/dist/inline-tag-parser.d.ts +11 -0
  139. package/dist/inline-tag-parser.js +6 -0
  140. package/dist/item/item.actions-map.d.ts +41 -0
  141. package/dist/item/item.actions-map.js +85 -0
  142. package/dist/item/item.ai-schema.d.ts +35 -0
  143. package/dist/item/item.ai-schema.js +6 -0
  144. package/dist/item/item.attunement.d.ts +18 -0
  145. package/dist/item/item.attunement.js +12 -0
  146. package/dist/item/item.bonuses.d.ts +2 -0
  147. package/dist/item/item.bonuses.js +7 -0
  148. package/dist/item/item.codec.d.ts +3 -0
  149. package/dist/item/item.codec.js +8 -0
  150. package/dist/item/item.conditions.d.ts +10 -0
  151. package/dist/item/item.conditions.js +8 -0
  152. package/dist/item/item.conditions.types.d.ts +28 -0
  153. package/dist/item/item.conditions.types.js +0 -0
  154. package/dist/item/item.enrichment.d.ts +4 -0
  155. package/dist/item/item.enrichment.js +9 -0
  156. package/dist/item/item.entity-type.d.ts +2 -0
  157. package/dist/item/item.generatable.d.ts +2 -0
  158. package/dist/item/item.parser.d.ts +3 -0
  159. package/dist/item/item.parser.js +7 -0
  160. package/dist/item/item.schema.d.ts +174 -0
  161. package/dist/item/item.schema.js +8 -0
  162. package/dist/item/item.types.d.ts +108 -0
  163. package/dist/item/item.types.js +0 -0
  164. package/dist/monster/monster.ai-schema.d.ts +67 -0
  165. package/dist/monster/monster.ai-schema.js +6 -0
  166. package/dist/monster/monster.codec.d.ts +13 -0
  167. package/dist/monster/monster.enrichment.d.ts +10 -0
  168. package/dist/monster/monster.enrichment.js +19 -0
  169. package/dist/monster/monster.entity-type.d.ts +2 -0
  170. package/dist/monster/monster.generatable.d.ts +2 -0
  171. package/dist/monster/monster.parser.d.ts +3 -0
  172. package/dist/monster/monster.parser.js +6 -0
  173. package/dist/monster/monster.resolve.d.ts +10 -0
  174. package/dist/monster/monster.types.d.ts +29 -0
  175. package/dist/monster/monster.types.js +1 -0
  176. package/dist/npc/npc.ai-schema.d.ts +6 -0
  177. package/dist/npc/npc.entity-type.d.ts +2 -0
  178. package/dist/npc/npc.generatable.d.ts +2 -0
  179. package/dist/optional-feature/optional-feature.codec.d.ts +14 -0
  180. package/dist/optional-feature/optional-feature.codec.js +11 -0
  181. package/dist/optional-feature/optional-feature.entity-type.d.ts +2 -0
  182. package/dist/optional-feature/optional-feature.parser.d.ts +3 -0
  183. package/dist/optional-feature/optional-feature.parser.js +10 -0
  184. package/dist/optional-feature/optional-feature.schema.d.ts +236 -0
  185. package/dist/optional-feature/optional-feature.schema.js +9 -0
  186. package/dist/pack.d.ts +11 -0
  187. package/dist/pc/conditions.constants.d.ts +3 -0
  188. package/dist/pc/conditions.constants.js +8 -0
  189. package/dist/pc/decision-recognizer.d.ts +4 -0
  190. package/dist/pc/decision-recognizer.js +8 -0
  191. package/dist/pc/pc.conditions.d.ts +3 -0
  192. package/dist/pc/pc.conditions.js +6 -0
  193. package/dist/pc/pc.decision-engine.d.ts +97 -0
  194. package/dist/pc/pc.decision-engine.js +19 -0
  195. package/dist/pc/pc.equipment.d.ts +12 -0
  196. package/dist/pc/pc.equipment.js +15 -0
  197. package/dist/pc/pc.feature-effects.d.ts +95 -0
  198. package/dist/pc/pc.feature-effects.js +9 -0
  199. package/dist/pc/pc.formula-context.d.ts +4 -0
  200. package/dist/pc/pc.formula-context.js +11 -0
  201. package/dist/pc/pc.parser.d.ts +3 -0
  202. package/dist/pc/pc.parser.js +41 -0
  203. package/dist/pc/pc.pools.d.ts +12 -0
  204. package/dist/pc/pc.pools.js +15 -0
  205. package/dist/pc/pc.proficiencies.d.ts +8 -0
  206. package/dist/pc/pc.proficiencies.js +47 -0
  207. package/dist/pc/pc.proficiency-query.d.ts +11 -0
  208. package/dist/pc/pc.proficiency-query.js +17 -0
  209. package/dist/pc/pc.recalc.d.ts +105 -0
  210. package/dist/pc/pc.recalc.js +662 -0
  211. package/dist/pc/pc.resolver.d.ts +34 -0
  212. package/dist/pc/pc.resolver.js +267 -0
  213. package/dist/pc/pc.resource-seed.d.ts +10 -0
  214. package/dist/pc/pc.resource-seed.js +40 -0
  215. package/dist/pc/pc.rest.d.ts +23 -0
  216. package/dist/pc/pc.rest.js +128 -0
  217. package/dist/pc/pc.schema.d.ts +294 -0
  218. package/dist/pc/pc.schema.js +7 -0
  219. package/dist/pc/pc.slotting.d.ts +22 -0
  220. package/dist/pc/pc.slotting.js +20 -0
  221. package/dist/pc/pc.spellcasting.d.ts +56 -0
  222. package/dist/pc/pc.spellcasting.js +16 -0
  223. package/dist/pc/pc.table-column.d.ts +12 -0
  224. package/dist/pc/pc.table-column.js +8 -0
  225. package/dist/pc/pc.types.d.ts +514 -0
  226. package/dist/pc/pc.types.js +0 -0
  227. package/dist/race/race.codec.d.ts +9 -0
  228. package/dist/race/race.codec.js +13 -0
  229. package/dist/race/race.entity-type.d.ts +2 -0
  230. package/dist/race/race.parser.d.ts +3 -0
  231. package/dist/race/race.parser.js +12 -0
  232. package/dist/race/race.schema.d.ts +67 -0
  233. package/dist/race/race.schema.js +11 -0
  234. package/dist/race/race.types.d.ts +44 -0
  235. package/dist/race/race.types.js +0 -0
  236. package/dist/schemas/attack-schema.d.ts +38 -0
  237. package/dist/schemas/choice-schema.d.ts +5 -0
  238. package/dist/schemas/choice-schema.js +7 -0
  239. package/dist/schemas/duration-schema.d.ts +13 -0
  240. package/dist/schemas/duration-schema.js +6 -0
  241. package/dist/schemas/equipment-grant-schema.d.ts +6 -0
  242. package/dist/schemas/equipment-grant-schema.js +12 -0
  243. package/dist/schemas/feature-effect-schema.d.ts +131 -0
  244. package/dist/schemas/feature-effect-schema.js +6 -0
  245. package/dist/schemas/feature-schema.d.ts +2 -0
  246. package/dist/schemas/feature-schema.js +10 -0
  247. package/dist/schemas/index.d.ts +6 -0
  248. package/dist/schemas/resource-schema.d.ts +95 -0
  249. package/dist/schemas/resource-schema.js +12 -0
  250. package/dist/schemas/selection-pool-schema.d.ts +34 -0
  251. package/dist/schemas/selection-pool-schema.js +10 -0
  252. package/dist/spell/spell.access.d.ts +15 -0
  253. package/dist/spell/spell.access.js +25 -0
  254. package/dist/spell/spell.ai-schema.d.ts +24 -0
  255. package/dist/spell/spell.ai-schema.js +6 -0
  256. package/dist/spell/spell.codec.d.ts +3 -0
  257. package/dist/spell/spell.codec.js +8 -0
  258. package/dist/spell/spell.enrichment.d.ts +2 -0
  259. package/dist/spell/spell.enrichment.js +9 -0
  260. package/dist/spell/spell.entity-type.d.ts +2 -0
  261. package/dist/spell/spell.filter.d.ts +15 -0
  262. package/dist/spell/spell.filter.js +87 -0
  263. package/dist/spell/spell.generatable.d.ts +2 -0
  264. package/dist/spell/spell.parser.d.ts +3 -0
  265. package/dist/spell/spell.parser.js +7 -0
  266. package/dist/spell/spell.scaling.d.ts +14 -0
  267. package/dist/spell/spell.scaling.js +28 -0
  268. package/dist/spell/spell.schema.d.ts +31 -0
  269. package/dist/spell/spell.schema.js +6 -0
  270. package/dist/spell/spell.types.d.ts +25 -0
  271. package/dist/spell/spell.types.js +0 -0
  272. package/dist/srd-store.d.ts +53 -0
  273. package/dist/subclass/subclass.codec.d.ts +11 -0
  274. package/dist/subclass/subclass.codec.js +14 -0
  275. package/dist/subclass/subclass.entity-type.d.ts +2 -0
  276. package/dist/subclass/subclass.parser.d.ts +3 -0
  277. package/dist/subclass/subclass.parser.js +13 -0
  278. package/dist/subclass/subclass.schema.d.ts +118 -0
  279. package/dist/subclass/subclass.schema.js +12 -0
  280. package/dist/subclass/subclass.types.d.ts +20 -0
  281. package/dist/subclass/subclass.types.js +0 -0
  282. package/dist/types/abilities.d.ts +8 -0
  283. package/dist/types/abilities.js +0 -0
  284. package/dist/types/ac.d.ts +5 -0
  285. package/dist/types/attack.d.ts +22 -0
  286. package/dist/types/attack.js +0 -0
  287. package/dist/types/casting-option.d.ts +14 -0
  288. package/dist/types/casting-option.js +0 -0
  289. package/dist/types/choice.d.ts +66 -0
  290. package/dist/types/choice.js +6 -0
  291. package/dist/types/edition.d.ts +4 -0
  292. package/dist/types/edition.js +0 -0
  293. package/dist/types/equipment-grant.d.ts +41 -0
  294. package/dist/types/equipment-grant.js +0 -0
  295. package/dist/types/feature-effect.d.ts +79 -0
  296. package/dist/types/feature-effect.js +0 -0
  297. package/dist/types/feature.d.ts +41 -0
  298. package/dist/types/feature.js +0 -0
  299. package/dist/types/formula-context.d.ts +7 -0
  300. package/dist/types/formula-context.js +0 -0
  301. package/dist/types/hp.d.ts +4 -0
  302. package/dist/types/index.d.ts +10 -0
  303. package/dist/types/item-conditions.types.d.ts +63 -0
  304. package/dist/types/item-conditions.types.js +0 -0
  305. package/dist/types/optional-feature.types.d.ts +60 -0
  306. package/dist/types/optional-feature.types.js +0 -0
  307. package/dist/types/resource.d.ts +44 -0
  308. package/dist/types/resource.js +0 -0
  309. package/dist/types/selection-pool.d.ts +37 -0
  310. package/dist/types/selection-pool.js +0 -0
  311. package/dist/types/speed.d.ts +8 -0
  312. package/dist/weapon/weapon.codec.d.ts +12 -0
  313. package/dist/weapon/weapon.codec.js +8 -0
  314. package/dist/weapon/weapon.entity-type.d.ts +2 -0
  315. package/dist/weapon/weapon.parser.d.ts +3 -0
  316. package/dist/weapon/weapon.parser.js +7 -0
  317. package/dist/weapon/weapon.schema.d.ts +34 -0
  318. package/dist/weapon/weapon.schema.js +6 -0
  319. package/dist/weapon/weapon.types.d.ts +36 -0
  320. package/dist/weapon/weapon.types.js +0 -0
  321. package/package.json +32 -0
  322. package/src/data-srd/ATTRIBUTION.md +2 -0
@@ -0,0 +1,38 @@
1
+ import { z } from "zod";
2
+ export declare const attackSchema: z.ZodObject<{
3
+ name: z.ZodString;
4
+ type: z.ZodEnum<{
5
+ spell: "spell";
6
+ melee: "melee";
7
+ ranged: "ranged";
8
+ }>;
9
+ ability: z.ZodOptional<z.ZodUnion<readonly [z.ZodEnum<{
10
+ str: "str";
11
+ dex: "dex";
12
+ con: "con";
13
+ int: "int";
14
+ wis: "wis";
15
+ cha: "cha";
16
+ }>, z.ZodArray<z.ZodEnum<{
17
+ str: "str";
18
+ dex: "dex";
19
+ con: "con";
20
+ int: "int";
21
+ wis: "wis";
22
+ cha: "cha";
23
+ }>>]>>;
24
+ damage: z.ZodOptional<z.ZodString>;
25
+ damage_type: z.ZodOptional<z.ZodString>;
26
+ action: z.ZodOptional<z.ZodEnum<{
27
+ action: "action";
28
+ "bonus-action": "bonus-action";
29
+ reaction: "reaction";
30
+ }>>;
31
+ properties: z.ZodOptional<z.ZodArray<z.ZodString>>;
32
+ range: z.ZodOptional<z.ZodObject<{
33
+ normal: z.ZodOptional<z.ZodNumber>;
34
+ long: z.ZodOptional<z.ZodNumber>;
35
+ reach: z.ZodOptional<z.ZodNumber>;
36
+ }, z.core.$strip>>;
37
+ condition: z.ZodOptional<z.ZodString>;
38
+ }, z.core.$strip>;
@@ -0,0 +1,5 @@
1
+ import { z } from "zod";
2
+ import type { Choice } from "../types/choice.js";
3
+ export declare const choiceSchema: z.ZodType<Choice>;
4
+ export type ChoiceInput = z.input<typeof choiceSchema>;
5
+ export type ChoiceOutput = z.output<typeof choiceSchema>;
@@ -0,0 +1,7 @@
1
+ import {
2
+ choiceSchema
3
+ } from "../chunk-CDW7R2QT.js";
4
+ import "../chunk-NXR3BD2V.js";
5
+ export {
6
+ choiceSchema
7
+ };
@@ -0,0 +1,13 @@
1
+ import { z } from "zod";
2
+ /** A buff/effect duration. Parsed in Phase 2 and rendered as a static label;
3
+ * Phase 3's activatable-buff toggle consumes the structured form. */
4
+ export declare const durationSchema: z.ZodUnion<readonly [z.ZodLiteral<"instantaneous">, z.ZodLiteral<"until-dispelled">, z.ZodObject<{
5
+ amount: z.ZodNumber;
6
+ unit: z.ZodEnum<{
7
+ round: "round";
8
+ minute: "minute";
9
+ hour: "hour";
10
+ day: "day";
11
+ }>;
12
+ }, z.core.$strict>]>;
13
+ export type Duration = z.infer<typeof durationSchema>;
@@ -0,0 +1,6 @@
1
+ import {
2
+ durationSchema
3
+ } from "../chunk-WYGD2UGN.js";
4
+ export {
5
+ durationSchema
6
+ };
@@ -0,0 +1,6 @@
1
+ import { z } from "zod";
2
+ import type { EquipmentGrant, EquipmentOption, StartingEquipmentEntry, StartingGold } from "../types/equipment-grant.js";
3
+ export declare const equipmentGrantSchema: z.ZodType<EquipmentGrant>;
4
+ export declare const equipmentOptionSchema: z.ZodType<EquipmentOption>;
5
+ export declare const startingEquipmentEntrySchema: z.ZodType<StartingEquipmentEntry>;
6
+ export declare const startingGoldSchema: z.ZodType<StartingGold>;
@@ -0,0 +1,12 @@
1
+ import {
2
+ equipmentGrantSchema,
3
+ equipmentOptionSchema,
4
+ startingEquipmentEntrySchema,
5
+ startingGoldSchema
6
+ } from "../chunk-3DZ74AKK.js";
7
+ export {
8
+ equipmentGrantSchema,
9
+ equipmentOptionSchema,
10
+ startingEquipmentEntrySchema,
11
+ startingGoldSchema
12
+ };
@@ -0,0 +1,131 @@
1
+ import { z } from "zod";
2
+ export declare const featureEffectSchema: z.ZodDiscriminatedUnion<[z.ZodObject<{
3
+ kind: z.ZodLiteral<"initiative-bonus">;
4
+ value: z.ZodNumber;
5
+ }, z.core.$strip>, z.ZodObject<{
6
+ kind: z.ZodLiteral<"immune-condition">;
7
+ condition: z.ZodString;
8
+ while: z.ZodOptional<z.ZodString>;
9
+ }, z.core.$strip>, z.ZodObject<{
10
+ kind: z.ZodLiteral<"resistance">;
11
+ damage_type: z.ZodString;
12
+ }, z.core.$strip>, z.ZodObject<{
13
+ kind: z.ZodLiteral<"hp-per-level-bonus">;
14
+ value: z.ZodNumber;
15
+ }, z.core.$strip>, z.ZodObject<{
16
+ kind: z.ZodLiteral<"speed-bonus">;
17
+ mode: z.ZodEnum<{
18
+ walk: "walk";
19
+ fly: "fly";
20
+ swim: "swim";
21
+ climb: "climb";
22
+ burrow: "burrow";
23
+ }>;
24
+ value: z.ZodNumber;
25
+ set: z.ZodOptional<z.ZodBoolean>;
26
+ }, z.core.$strip>, z.ZodObject<{
27
+ kind: z.ZodLiteral<"sense">;
28
+ type: z.ZodEnum<{
29
+ darkvision: "darkvision";
30
+ blindsight: "blindsight";
31
+ tremorsense: "tremorsense";
32
+ truesight: "truesight";
33
+ }>;
34
+ range: z.ZodNumber;
35
+ }, z.core.$strip>, z.ZodObject<{
36
+ kind: z.ZodLiteral<"apply-condition">;
37
+ condition: z.ZodString;
38
+ duration: z.ZodOptional<z.ZodString>;
39
+ ends_on: z.ZodOptional<z.ZodArray<z.ZodString>>;
40
+ save_repeat: z.ZodOptional<z.ZodObject<{
41
+ ability: z.ZodString;
42
+ timing: z.ZodString;
43
+ }, z.core.$strip>>;
44
+ }, z.core.$strip>, z.ZodObject<{
45
+ kind: z.ZodLiteral<"damage-bonus">;
46
+ damage_type: z.ZodString;
47
+ amount: z.ZodString;
48
+ applies_to: z.ZodOptional<z.ZodEnum<{
49
+ weapon: "weapon";
50
+ spell: "spell";
51
+ all: "all";
52
+ }>>;
53
+ condition: z.ZodOptional<z.ZodString>;
54
+ }, z.core.$strip>, z.ZodObject<{
55
+ kind: z.ZodLiteral<"proficiency">;
56
+ proficiency_type: z.ZodEnum<{
57
+ weapon: "weapon";
58
+ skill: "skill";
59
+ tool: "tool";
60
+ language: "language";
61
+ "saving-throw": "saving-throw";
62
+ armor: "armor";
63
+ }>;
64
+ value: z.ZodString;
65
+ }, z.core.$strip>, z.ZodObject<{
66
+ kind: z.ZodLiteral<"ac-bonus">;
67
+ value: z.ZodNumber;
68
+ requires_armor: z.ZodOptional<z.ZodBoolean>;
69
+ }, z.core.$strip>, z.ZodObject<{
70
+ kind: z.ZodLiteral<"unarmored-ac">;
71
+ abilities: z.ZodArray<z.ZodEnum<{
72
+ str: "str";
73
+ dex: "dex";
74
+ con: "con";
75
+ int: "int";
76
+ wis: "wis";
77
+ cha: "cha";
78
+ }>>;
79
+ base: z.ZodOptional<z.ZodNumber>;
80
+ allow_shield: z.ZodOptional<z.ZodBoolean>;
81
+ }, z.core.$strip>, z.ZodObject<{
82
+ kind: z.ZodLiteral<"weapon-ability">;
83
+ ability: z.ZodUnion<readonly [z.ZodEnum<{
84
+ str: "str";
85
+ dex: "dex";
86
+ con: "con";
87
+ int: "int";
88
+ wis: "wis";
89
+ cha: "cha";
90
+ }>, z.ZodLiteral<"spellcasting">]>;
91
+ weapons: z.ZodOptional<z.ZodUnion<readonly [z.ZodLiteral<"chosen">, z.ZodString, z.ZodArray<z.ZodString>]>>;
92
+ }, z.core.$strip>, z.ZodObject<{
93
+ kind: z.ZodLiteral<"roll-modifier">;
94
+ mode: z.ZodEnum<{
95
+ advantage: "advantage";
96
+ disadvantage: "disadvantage";
97
+ }>;
98
+ roll: z.ZodEnum<{
99
+ "saving-throw": "saving-throw";
100
+ "ability-check": "ability-check";
101
+ attack: "attack";
102
+ }>;
103
+ scope: z.ZodOptional<z.ZodString>;
104
+ condition: z.ZodOptional<z.ZodString>;
105
+ }, z.core.$strip>, z.ZodObject<{
106
+ kind: z.ZodLiteral<"extra-attack">;
107
+ count: z.ZodNumber;
108
+ }, z.core.$strip>, z.ZodObject<{
109
+ kind: z.ZodLiteral<"crit-range">;
110
+ min_roll: z.ZodNumber;
111
+ applies_to: z.ZodOptional<z.ZodEnum<{
112
+ weapon: "weapon";
113
+ spell: "spell";
114
+ all: "all";
115
+ }>>;
116
+ condition: z.ZodOptional<z.ZodString>;
117
+ }, z.core.$strip>, z.ZodObject<{
118
+ kind: z.ZodLiteral<"reroll-damage">;
119
+ max_reroll: z.ZodNumber;
120
+ applies_to: z.ZodOptional<z.ZodEnum<{
121
+ weapon: "weapon";
122
+ spell: "spell";
123
+ all: "all";
124
+ }>>;
125
+ once_per_die: z.ZodOptional<z.ZodBoolean>;
126
+ }, z.core.$strip>, z.ZodObject<{
127
+ kind: z.ZodLiteral<"attack-rule">;
128
+ flag: z.ZodEnum<{
129
+ "no-ranged-in-melee-disadvantage": "no-ranged-in-melee-disadvantage";
130
+ }>;
131
+ }, z.core.$strip>], "kind">;
@@ -0,0 +1,6 @@
1
+ import {
2
+ featureEffectSchema
3
+ } from "../chunk-NXR3BD2V.js";
4
+ export {
5
+ featureEffectSchema
6
+ };
@@ -0,0 +1,2 @@
1
+ import { z } from "zod";
2
+ export declare const featureSchema: z.ZodType<unknown>;
@@ -0,0 +1,10 @@
1
+ import {
2
+ featureSchema
3
+ } from "../chunk-DABBCYTT.js";
4
+ import "../chunk-WYGD2UGN.js";
5
+ import "../chunk-PZOWBI3B.js";
6
+ import "../chunk-CDW7R2QT.js";
7
+ import "../chunk-NXR3BD2V.js";
8
+ export {
9
+ featureSchema
10
+ };
@@ -0,0 +1,6 @@
1
+ export { choiceSchema } from "./choice-schema.js";
2
+ export type { ChoiceInput, ChoiceOutput } from "./choice-schema.js";
3
+ export { resourceSchema, resourceConsumptionSchema } from "./resource-schema.js";
4
+ export { attackSchema } from "./attack-schema.js";
5
+ export { featureEffectSchema } from "./feature-effect-schema.js";
6
+ export { featureSchema } from "./feature-schema.js";
@@ -0,0 +1,95 @@
1
+ import { z } from "zod";
2
+ declare const resetTriggerEnum: z.ZodEnum<{
3
+ "short-rest": "short-rest";
4
+ "long-rest": "long-rest";
5
+ dawn: "dawn";
6
+ dusk: "dusk";
7
+ turn: "turn";
8
+ round: "round";
9
+ custom: "custom";
10
+ }>;
11
+ declare const actionCostEnum: z.ZodEnum<{
12
+ action: "action";
13
+ "bonus-action": "bonus-action";
14
+ reaction: "reaction";
15
+ free: "free";
16
+ special: "special";
17
+ }>;
18
+ export declare const resourceSchema: z.ZodObject<{
19
+ id: z.ZodString;
20
+ name: z.ZodString;
21
+ max_formula: z.ZodString;
22
+ scales_at: z.ZodOptional<z.ZodArray<z.ZodObject<{
23
+ level: z.ZodNumber;
24
+ max: z.ZodString;
25
+ }, z.core.$strict>>>;
26
+ die: z.ZodOptional<z.ZodObject<{
27
+ base: z.ZodString;
28
+ scaling: z.ZodOptional<z.ZodRecord<z.ZodString, z.ZodString>>;
29
+ }, z.core.$strip>>;
30
+ reset: z.ZodEnum<{
31
+ "short-rest": "short-rest";
32
+ "long-rest": "long-rest";
33
+ dawn: "dawn";
34
+ dusk: "dusk";
35
+ turn: "turn";
36
+ round: "round";
37
+ custom: "custom";
38
+ }>;
39
+ consumes: z.ZodOptional<z.ZodObject<{
40
+ resource: z.ZodString;
41
+ amount: z.ZodNumber;
42
+ }, z.core.$strip>>;
43
+ recovery: z.ZodOptional<z.ZodArray<z.ZodObject<{
44
+ id: z.ZodString;
45
+ name: z.ZodString;
46
+ amount: z.ZodUnion<readonly [z.ZodNumber, z.ZodString]>;
47
+ action: z.ZodOptional<z.ZodEnum<{
48
+ action: "action";
49
+ "bonus-action": "bonus-action";
50
+ reaction: "reaction";
51
+ free: "free";
52
+ special: "special";
53
+ }>>;
54
+ uses: z.ZodOptional<z.ZodNumber>;
55
+ reset: z.ZodEnum<{
56
+ "short-rest": "short-rest";
57
+ "long-rest": "long-rest";
58
+ dawn: "dawn";
59
+ dusk: "dusk";
60
+ turn: "turn";
61
+ round: "round";
62
+ custom: "custom";
63
+ }>;
64
+ }, z.core.$strip>>>;
65
+ }, z.core.$strip>;
66
+ export declare const resourceConsumptionSchema: z.ZodObject<{
67
+ source: z.ZodOptional<z.ZodEnum<{
68
+ resource: "resource";
69
+ "class-column": "class-column";
70
+ "attack-dice": "attack-dice";
71
+ }>>;
72
+ resource: z.ZodOptional<z.ZodString>;
73
+ column: z.ZodOptional<z.ZodString>;
74
+ amount: z.ZodNumber;
75
+ expend_condition: z.ZodOptional<z.ZodEnum<{
76
+ roll_succeeds: "roll_succeeds";
77
+ roll_fails: "roll_fails";
78
+ target_takes_damage: "target_takes_damage";
79
+ always: "always";
80
+ }>>;
81
+ free_uses: z.ZodOptional<z.ZodObject<{
82
+ amount: z.ZodNumber;
83
+ reset: z.ZodEnum<{
84
+ "short-rest": "short-rest";
85
+ "long-rest": "long-rest";
86
+ dawn: "dawn";
87
+ dusk: "dusk";
88
+ turn: "turn";
89
+ round: "round";
90
+ custom: "custom";
91
+ }>;
92
+ state_key: z.ZodOptional<z.ZodString>;
93
+ }, z.core.$strip>>;
94
+ }, z.core.$strip>;
95
+ export { resetTriggerEnum, actionCostEnum };
@@ -0,0 +1,12 @@
1
+ import {
2
+ actionCostEnum,
3
+ resetTriggerEnum,
4
+ resourceConsumptionSchema,
5
+ resourceSchema
6
+ } from "../chunk-PZOWBI3B.js";
7
+ export {
8
+ actionCostEnum,
9
+ resetTriggerEnum,
10
+ resourceConsumptionSchema,
11
+ resourceSchema
12
+ };
@@ -0,0 +1,34 @@
1
+ import { z } from "zod";
2
+ export declare const selectionPoolSchema: z.ZodObject<{
3
+ id: z.ZodString;
4
+ label: z.ZodString;
5
+ source: z.ZodObject<{
6
+ entity_type: z.ZodLiteral<"optional-feature">;
7
+ where: z.ZodObject<{
8
+ feature_type: z.ZodString;
9
+ available_to: z.ZodLiteral<"self">;
10
+ }, z.core.$strip>;
11
+ }, z.core.$strip>;
12
+ count: z.ZodObject<{
13
+ column: z.ZodString;
14
+ }, z.core.$strip>;
15
+ replaceable: z.ZodOptional<z.ZodBoolean>;
16
+ }, z.core.$strip>;
17
+ export declare const poolGrantSchema: z.ZodObject<{
18
+ pool: z.ZodString;
19
+ grants: z.ZodArray<z.ZodObject<{
20
+ feature: z.ZodString;
21
+ at_level: z.ZodNumber;
22
+ }, z.core.$strip>>;
23
+ }, z.core.$strip>;
24
+ export declare const tabDeclSchema: z.ZodObject<{
25
+ id: z.ZodString;
26
+ label: z.ZodString;
27
+ renders: z.ZodObject<{
28
+ pool: z.ZodString;
29
+ layout: z.ZodOptional<z.ZodEnum<{
30
+ "spell-like": "spell-like";
31
+ blocks: "blocks";
32
+ }>>;
33
+ }, z.core.$strip>;
34
+ }, z.core.$strip>;
@@ -0,0 +1,10 @@
1
+ import {
2
+ poolGrantSchema,
3
+ selectionPoolSchema,
4
+ tabDeclSchema
5
+ } from "../chunk-4TIJKN6O.js";
6
+ export {
7
+ poolGrantSchema,
8
+ selectionPoolSchema,
9
+ tabDeclSchema
10
+ };
@@ -0,0 +1,15 @@
1
+ import type { EntityRegistry } from "@archivist-gg/core";
2
+ import type { Spell } from "./spell.types.js";
3
+ export interface SpellCandidate {
4
+ slug: string;
5
+ name: string;
6
+ level: number;
7
+ entity: Spell;
8
+ }
9
+ /**
10
+ * Pure spell-picker filter. Enumerates all `spell` entities from the registry
11
+ * (an empty query returns every spell of the type), drops already-known slugs,
12
+ * then applies the name search and — unless `showAll` is set — the class/level
13
+ * gate. Results are sorted by level then name.
14
+ */
15
+ export declare function classSpellCandidates(registry: EntityRegistry, classSlugs: string[], maxLevel: number, knownSlugs: Set<string>, showAll?: boolean, query?: string): SpellCandidate[];
@@ -0,0 +1,25 @@
1
+ import {
2
+ baseClassName
3
+ } from "../chunk-J2RYSZMQ.js";
4
+
5
+ // src/spell/spell.access.ts
6
+ function classSpellCandidates(registry, classSlugs, maxLevel, knownSlugs, showAll = false, query = "") {
7
+ const all = registry.search(query, "spell", 1e3);
8
+ const q = query.toLowerCase();
9
+ const classSet = new Set(classSlugs.map((s) => baseClassName(s)));
10
+ return all.filter((e) => !knownSlugs.has(e.slug)).map((e) => {
11
+ var _a;
12
+ const entity = e.data;
13
+ return { slug: e.slug, name: e.name, entity, level: (_a = entity.level) != null ? _a : 0 };
14
+ }).filter((c) => {
15
+ var _a;
16
+ if (q && !c.name.toLowerCase().includes(q)) return false;
17
+ if (showAll) return true;
18
+ const classes = ((_a = c.entity.classes) != null ? _a : []).map((x) => baseClassName(x));
19
+ const inClass = classes.some((x) => classSet.has(x));
20
+ return inClass && c.level <= maxLevel;
21
+ }).sort((a, b) => a.level - b.level || a.name.localeCompare(b.name));
22
+ }
23
+ export {
24
+ classSpellCandidates
25
+ };
@@ -0,0 +1,24 @@
1
+ import { z } from "zod";
2
+ export declare const spellInputSchema: z.ZodObject<{
3
+ name: z.ZodString;
4
+ level: z.ZodNumber;
5
+ school: z.ZodEnum<{
6
+ abjuration: "abjuration";
7
+ conjuration: "conjuration";
8
+ divination: "divination";
9
+ enchantment: "enchantment";
10
+ evocation: "evocation";
11
+ illusion: "illusion";
12
+ necromancy: "necromancy";
13
+ transmutation: "transmutation";
14
+ }>;
15
+ casting_time: z.ZodString;
16
+ range: z.ZodString;
17
+ components: z.ZodString;
18
+ duration: z.ZodString;
19
+ description: z.ZodArray<z.ZodString>;
20
+ at_higher_levels: z.ZodOptional<z.ZodArray<z.ZodString>>;
21
+ classes: z.ZodOptional<z.ZodArray<z.ZodString>>;
22
+ ritual: z.ZodOptional<z.ZodBoolean>;
23
+ concentration: z.ZodOptional<z.ZodBoolean>;
24
+ }, z.core.$strip>;
@@ -0,0 +1,6 @@
1
+ import {
2
+ spellInputSchema
3
+ } from "../chunk-656QCX4U.js";
4
+ export {
5
+ spellInputSchema
6
+ };
@@ -0,0 +1,3 @@
1
+ import type { DocCodec } from "@archivist-gg/core";
2
+ import type { Spell } from "./spell.types.js";
3
+ export declare const spellCodec: DocCodec<Spell>;
@@ -0,0 +1,8 @@
1
+ import {
2
+ spellCodec
3
+ } from "../chunk-24GFQU7T.js";
4
+ import "../chunk-N2JE7BWL.js";
5
+ import "../chunk-Y4I74YEG.js";
6
+ export {
7
+ spellCodec
8
+ };
@@ -0,0 +1,2 @@
1
+ import type { Spell } from "@archivist-gg/dnd5e/spell/spell.types";
2
+ export declare function enrichSpell(raw: Record<string, unknown>): Spell;
@@ -0,0 +1,9 @@
1
+ import {
2
+ enrichSpell
3
+ } from "../chunk-GZ46OVGZ.js";
4
+ import "../chunk-RAWJTA45.js";
5
+ import "../chunk-NAEPSZAM.js";
6
+ import "../chunk-WP2CX2JO.js";
7
+ export {
8
+ enrichSpell
9
+ };
@@ -0,0 +1,2 @@
1
+ import type { EntityType } from "@archivist-gg/core";
2
+ export declare const spellEntityType: EntityType;
@@ -0,0 +1,15 @@
1
+ import type { SpellCandidate } from "./spell.access.js";
2
+ export type CastTimeCat = "action" | "bonus" | "reaction" | "long" | "special";
3
+ export type RangeCat = "self" | "touch" | "ranged" | "special";
4
+ /** Cast-time bucket from the stored token (mirrors compactCastingTime's set).
5
+ * Rounds/minutes/hours fold into "long"; null/unknown → "special". */
6
+ export declare function castTimeCategory(token: string | undefined): CastTimeCat;
7
+ /** Range bucket from the human range string. Honest read, documented buckets:
8
+ * "Self…"→self, "Touch…"→touch, "<n> feet|ft"→ranged, else (mile/Sight/…)→special. */
9
+ export declare function rangeCategory(range: string | undefined): RangeCat;
10
+ export type SortKey = "name" | "level" | "time" | "school" | "range" | "damage" | "save" | "source";
11
+ export type SortDir = "asc" | "desc";
12
+ export declare function castTimeRank(token: string | undefined): number;
13
+ /** Numeric sort weight for a range string: Self=0, Touch=1, "<n> feet"=n, else large. */
14
+ export declare function rangeSortValue(range: string | undefined): number;
15
+ export declare function compareCandidates(a: SpellCandidate, b: SpellCandidate, key: SortKey, dir: SortDir): number;
@@ -0,0 +1,87 @@
1
+ // src/spell/spell.filter.ts
2
+ function castTimeCategory(token) {
3
+ switch (token) {
4
+ case "action":
5
+ return "action";
6
+ case "bonus-action":
7
+ return "bonus";
8
+ case "reaction":
9
+ return "reaction";
10
+ case "minute":
11
+ case "1minute":
12
+ case "10minutes":
13
+ case "hour":
14
+ case "1hour":
15
+ case "8hours":
16
+ case "12hours":
17
+ case "24hours":
18
+ return "long";
19
+ default:
20
+ return "special";
21
+ }
22
+ }
23
+ function rangeCategory(range) {
24
+ if (!range) return "special";
25
+ if (/^self/i.test(range)) return "self";
26
+ if (/^touch/i.test(range)) return "touch";
27
+ if (/\d+\s*(feet|ft)\b/i.test(range)) return "ranged";
28
+ return "special";
29
+ }
30
+ var CAST_RANK = { action: 0, bonus: 1, reaction: 2, long: 3, special: 4 };
31
+ function castTimeRank(token) {
32
+ return CAST_RANK[castTimeCategory(token)];
33
+ }
34
+ function rangeSortValue(range) {
35
+ if (!range) return 99999;
36
+ if (/^self/i.test(range)) return 0;
37
+ if (/^touch/i.test(range)) return 1;
38
+ const m = range.match(/(\d+)\s*(feet|ft)\b/i);
39
+ return m ? Number(m[1]) : 99999;
40
+ }
41
+ var EDITION_RANK = { "2014": 0, "2024": 1 };
42
+ function cmpMaybe(a, b) {
43
+ if (a && b) return a.localeCompare(b);
44
+ if (a) return -1;
45
+ if (b) return 1;
46
+ return 0;
47
+ }
48
+ function compareCandidates(a, b, key, dir) {
49
+ var _a, _b, _c, _d, _e, _f, _g, _h, _i, _j;
50
+ const mul = dir === "asc" ? 1 : -1;
51
+ let r = 0;
52
+ switch (key) {
53
+ case "name":
54
+ r = a.name.localeCompare(b.name);
55
+ break;
56
+ case "level":
57
+ r = a.level - b.level;
58
+ break;
59
+ case "time":
60
+ r = castTimeRank(a.entity.casting_time) - castTimeRank(b.entity.casting_time);
61
+ break;
62
+ case "school":
63
+ r = cmpMaybe(a.entity.school, b.entity.school);
64
+ break;
65
+ case "range":
66
+ r = rangeSortValue(a.entity.range) - rangeSortValue(b.entity.range);
67
+ break;
68
+ case "damage":
69
+ r = cmpMaybe((_b = (_a = a.entity.damage) == null ? void 0 : _a.types) == null ? void 0 : _b[0], (_d = (_c = b.entity.damage) == null ? void 0 : _c.types) == null ? void 0 : _d[0]);
70
+ break;
71
+ case "save":
72
+ r = cmpMaybe((_e = a.entity.saving_throw) == null ? void 0 : _e.ability, (_f = b.entity.saving_throw) == null ? void 0 : _f.ability);
73
+ break;
74
+ case "source":
75
+ r = ((_h = EDITION_RANK[(_g = a.entity.edition) != null ? _g : ""]) != null ? _h : 9) - ((_j = EDITION_RANK[(_i = b.entity.edition) != null ? _i : ""]) != null ? _j : 9);
76
+ break;
77
+ }
78
+ if (r === 0 && key !== "name") r = a.name.localeCompare(b.name);
79
+ return r * mul;
80
+ }
81
+ export {
82
+ castTimeCategory,
83
+ castTimeRank,
84
+ compareCandidates,
85
+ rangeCategory,
86
+ rangeSortValue
87
+ };
@@ -0,0 +1,2 @@
1
+ import type { Generatable } from "@archivist-gg/core";
2
+ export declare const spellGeneratable: Generatable;
@@ -0,0 +1,3 @@
1
+ import { Spell } from "./spell.types.js";
2
+ import { ParseResult } from "@archivist-gg/core";
3
+ export declare function parseSpell(source: string): ParseResult<Spell>;
@@ -0,0 +1,7 @@
1
+ import {
2
+ parseSpell
3
+ } from "../chunk-N2JE7BWL.js";
4
+ import "../chunk-Y4I74YEG.js";
5
+ export {
6
+ parseSpell
7
+ };
@@ -0,0 +1,14 @@
1
+ import type { Spell } from "./spell.types.js";
2
+ /** A spell repeats under higher levels only if it has a real upcast benefit. */
3
+ export declare function spellScales(spell: Spell): boolean;
4
+ /**
5
+ * At-a-glance scaled effect for casting `spell` with a slot of `slotLevel`,
6
+ * read from structured `casting_options` (`type: "slot_level_<N>"`). Returns
7
+ * null when absent or untrustworthy. `damage_roll` is shown as-is; a
8
+ * `target_count` that equals the slot level is the known SRD-2014 bad encoding
9
+ * (e.g. Magic Missile 2nd->2 instead of 4) and is suppressed. This errs toward
10
+ * showing nothing rather than a wrong number.
11
+ */
12
+ export declare function spellEffectAtSlot(spell: Spell, slotLevel: number): string | null;
13
+ /** Owned slot levels strictly above the spell's base level (scaling spells only). */
14
+ export declare function upcastLevelsFor(spell: Spell, ownedSlotLevels: number[]): number[];