@league-of-foundry-developers/foundry-vtt-types 12.331.3-beta → 12.331.5

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 (559) hide show
  1. package/README.md +17 -18
  2. package/package.json +91 -32
  3. package/src/configuration/configuration.d.mts +316 -0
  4. package/src/configuration/documents.d.mts +295 -0
  5. package/src/configuration/globals.d.mts +357 -0
  6. package/src/configuration/index.d.mts +5 -0
  7. package/src/foundry/client/apps/app.d.mts +129 -122
  8. package/src/foundry/client/apps/av/av-config.d.mts +12 -7
  9. package/src/foundry/client/apps/av/cameras.d.mts +12 -7
  10. package/src/foundry/client/apps/dice/dice-config.d.mts +59 -0
  11. package/src/foundry/client/apps/dice/index.d.mts +1 -0
  12. package/src/foundry/client/apps/form.d.mts +114 -86
  13. package/src/foundry/client/apps/forms/actor.d.mts +21 -11
  14. package/src/foundry/client/apps/forms/adventure-exporter.d.mts +12 -7
  15. package/src/foundry/client/apps/forms/adventure-importer.d.mts +14 -6
  16. package/src/foundry/client/apps/forms/base-sheet.d.mts +16 -8
  17. package/src/foundry/client/apps/forms/card-config.d.mts +16 -8
  18. package/src/foundry/client/apps/forms/cards-config.d.mts +15 -14
  19. package/src/foundry/client/apps/forms/combat-config.d.mts +7 -7
  20. package/src/foundry/client/apps/forms/combatant-config.d.mts +3 -3
  21. package/src/foundry/client/apps/forms/default-sheets-config.d.mts +1 -1
  22. package/src/foundry/client/apps/forms/effect-config.d.mts +7 -7
  23. package/src/foundry/client/apps/forms/folder-config.d.mts +10 -5
  24. package/src/foundry/client/apps/forms/fonts.d.mts +42 -35
  25. package/src/foundry/client/apps/forms/grid-config.d.mts +12 -13
  26. package/src/foundry/client/apps/forms/image-popout.d.mts +29 -23
  27. package/src/foundry/client/apps/forms/item.d.mts +9 -9
  28. package/src/foundry/client/apps/forms/journal-page-sheet.d.mts +16 -14
  29. package/src/foundry/client/apps/forms/journal-sheet.d.mts +48 -38
  30. package/src/foundry/client/apps/forms/macro-config.d.mts +7 -7
  31. package/src/foundry/client/apps/forms/measure-template.d.mts +10 -12
  32. package/src/foundry/client/apps/forms/ownership.d.mts +5 -5
  33. package/src/foundry/client/apps/forms/playlist-config.d.mts +8 -10
  34. package/src/foundry/client/apps/forms/playlist-sound-config.d.mts +7 -7
  35. package/src/foundry/client/apps/forms/roll-table-config.d.mts +11 -10
  36. package/src/foundry/client/apps/forms/scene-config.d.mts +40 -41
  37. package/src/foundry/client/apps/forms/sheet-config.d.mts +9 -21
  38. package/src/foundry/client/apps/forms/user-config.d.mts +13 -12
  39. package/src/foundry/client/apps/hud/chatbubble.d.mts +18 -6
  40. package/src/foundry/client/apps/hud/container.d.mts +4 -4
  41. package/src/foundry/client/apps/hud/controls.d.mts +126 -81
  42. package/src/foundry/client/apps/hud/hotbar.d.mts +17 -12
  43. package/src/foundry/client/apps/hud/hud.d.mts +5 -5
  44. package/src/foundry/client/apps/hud/menu.d.mts +10 -3
  45. package/src/foundry/client/apps/hud/navigation.d.mts +14 -9
  46. package/src/foundry/client/apps/hud/pause.d.mts +9 -4
  47. package/src/foundry/client/apps/hud/players.d.mts +14 -9
  48. package/src/foundry/client/apps/i18n.d.mts +31 -27
  49. package/src/foundry/client/apps/index.d.mts +1 -0
  50. package/src/foundry/client/apps/placeables/drawing-config.d.mts +41 -33
  51. package/src/foundry/client/apps/placeables/drawing-hud.d.mts +5 -5
  52. package/src/foundry/client/apps/placeables/index.d.mts +0 -2
  53. package/src/foundry/client/apps/placeables/note-config.d.mts +28 -18
  54. package/src/foundry/client/apps/placeables/tile-config.d.mts +23 -10
  55. package/src/foundry/client/apps/placeables/tile-hud.d.mts +10 -5
  56. package/src/foundry/client/apps/placeables/token-config.d.mts +91 -58
  57. package/src/foundry/client/apps/placeables/token-hud.d.mts +12 -7
  58. package/src/foundry/client/apps/placeables/wall-config.d.mts +21 -17
  59. package/src/foundry/client/apps/sidebar/apps/chat-popout.d.mts +5 -5
  60. package/src/foundry/client/apps/sidebar/apps/client-settings.d.mts +3 -3
  61. package/src/foundry/client/apps/sidebar/apps/compendium.d.mts +15 -13
  62. package/src/foundry/client/apps/sidebar/apps/invitation-links.d.mts +3 -3
  63. package/src/foundry/client/apps/sidebar/apps/keybindings-config.d.mts +3 -2
  64. package/src/foundry/client/apps/sidebar/apps/module-management.d.mts +6 -6
  65. package/src/foundry/client/apps/sidebar/apps/permission-config.d.mts +6 -6
  66. package/src/foundry/client/apps/sidebar/apps/support-details.d.mts +34 -29
  67. package/src/foundry/client/apps/sidebar/apps/tours-management.d.mts +2 -2
  68. package/src/foundry/client/apps/sidebar/apps/world-config.d.mts +13 -10
  69. package/src/foundry/client/apps/sidebar/directory-tab-mixin.d.mts +50 -35
  70. package/src/foundry/client/apps/sidebar/document-directory.d.mts +52 -38
  71. package/src/foundry/client/apps/sidebar/package-configuration.d.mts +4 -4
  72. package/src/foundry/client/apps/sidebar/sidebar-tab.d.mts +3 -3
  73. package/src/foundry/client/apps/sidebar/sidebar.d.mts +9 -4
  74. package/src/foundry/client/apps/sidebar/tabs/actors-directory.d.mts +11 -2
  75. package/src/foundry/client/apps/sidebar/tabs/cards-directory.d.mts +11 -2
  76. package/src/foundry/client/apps/sidebar/tabs/chat-log.d.mts +39 -27
  77. package/src/foundry/client/apps/sidebar/tabs/combat-tracker.d.mts +21 -12
  78. package/src/foundry/client/apps/sidebar/tabs/compendium-directory.d.mts +30 -15
  79. package/src/foundry/client/apps/sidebar/tabs/items-directory.d.mts +11 -2
  80. package/src/foundry/client/apps/sidebar/tabs/journal-directory.d.mts +11 -2
  81. package/src/foundry/client/apps/sidebar/tabs/macros-directory.d.mts +14 -5
  82. package/src/foundry/client/apps/sidebar/tabs/playlists-directory.d.mts +30 -22
  83. package/src/foundry/client/apps/sidebar/tabs/roll-table-directory.d.mts +11 -2
  84. package/src/foundry/client/apps/sidebar/tabs/scenes-directory.d.mts +14 -5
  85. package/src/foundry/client/apps/sidebar/tabs/settings.d.mts +23 -5
  86. package/src/foundry/client/apps/templates.d.mts +1 -1
  87. package/src/foundry/client/av/client.d.mts +1 -1
  88. package/src/foundry/client/av/clients/simplepeer.d.mts +11 -1
  89. package/src/foundry/client/av/master.d.mts +2 -2
  90. package/src/foundry/client/av/settings.d.mts +17 -15
  91. package/src/foundry/client/config.d.mts +444 -312
  92. package/src/foundry/client/core/document-index.d.mts +11 -3
  93. package/src/foundry/client/core/hooks.d.mts +2 -4
  94. package/src/foundry/client/core/image.d.mts +14 -13
  95. package/src/foundry/client/core/issues.d.mts +9 -4
  96. package/src/foundry/client/core/keybindings.d.mts +5 -5
  97. package/src/foundry/client/core/nue.d.mts +1 -1
  98. package/src/foundry/client/core/packages.d.mts +400 -62
  99. package/src/foundry/client/core/settings.d.mts +62 -38
  100. package/src/foundry/client/core/socket.d.mts +2 -2
  101. package/src/foundry/client/core/sorting.d.mts +6 -6
  102. package/src/foundry/client/core/time.d.mts +6 -3
  103. package/src/foundry/client/core/tooltip.d.mts +2 -2
  104. package/src/foundry/client/core/tour.d.mts +59 -50
  105. package/src/foundry/client/core/tours.d.mts +1 -1
  106. package/src/foundry/client/core/utils.d.mts +33 -10
  107. package/src/foundry/client/core/video.d.mts +1 -1
  108. package/src/foundry/client/core/workers.d.mts +24 -17
  109. package/src/foundry/client/data/abstract/canvas-document.d.mts +22 -28
  110. package/src/foundry/client/data/abstract/client-document.d.mts +238 -206
  111. package/src/foundry/client/data/abstract/directory-collection-mixin.d.mts +24 -40
  112. package/src/foundry/client/data/abstract/document-collection.d.mts +96 -68
  113. package/src/foundry/client/data/abstract/world-collection.d.mts +53 -54
  114. package/src/foundry/client/data/collections/actors.d.mts +30 -28
  115. package/src/foundry/client/data/collections/cards.d.mts +16 -3
  116. package/src/foundry/client/data/collections/combats.d.mts +18 -5
  117. package/src/foundry/client/data/collections/compendium-collection.d.mts +84 -101
  118. package/src/foundry/client/data/collections/compendium-folders.d.mts +6 -6
  119. package/src/foundry/client/data/collections/compendium-packs.d.mts +5 -5
  120. package/src/foundry/client/data/collections/fog.d.mts +16 -3
  121. package/src/foundry/client/data/collections/folder.d.mts +20 -6
  122. package/src/foundry/client/data/collections/items.d.mts +17 -4
  123. package/src/foundry/client/data/collections/journal.d.mts +22 -7
  124. package/src/foundry/client/data/collections/macros.d.mts +21 -19
  125. package/src/foundry/client/data/collections/messages.d.mts +19 -6
  126. package/src/foundry/client/data/collections/playlists.d.mts +17 -5
  127. package/src/foundry/client/data/collections/scenes.d.mts +24 -27
  128. package/src/foundry/client/data/collections/settings.d.mts +16 -3
  129. package/src/foundry/client/data/collections/tables.d.mts +18 -5
  130. package/src/foundry/client/data/collections/users.d.mts +22 -10
  131. package/src/foundry/client/data/documents/active-effect.d.mts +780 -112
  132. package/src/foundry/client/data/documents/actor-delta.d.mts +705 -31
  133. package/src/foundry/client/data/documents/actor.d.mts +806 -98
  134. package/src/foundry/client/data/documents/adventure.d.mts +522 -59
  135. package/src/foundry/client/data/documents/ambient-light.d.mts +427 -20
  136. package/src/foundry/client/data/documents/ambient-sound.d.mts +478 -14
  137. package/src/foundry/client/data/documents/card.d.mts +598 -44
  138. package/src/foundry/client/data/documents/cards.d.mts +862 -169
  139. package/src/foundry/client/data/documents/chat-message.d.mts +668 -77
  140. package/src/foundry/client/data/documents/combat.d.mts +757 -107
  141. package/src/foundry/client/data/documents/combatant.d.mts +545 -32
  142. package/src/foundry/client/data/documents/drawing.d.mts +545 -14
  143. package/src/foundry/client/data/documents/fog-exploration.d.mts +465 -30
  144. package/src/foundry/client/data/documents/folder.d.mts +567 -51
  145. package/src/foundry/client/data/documents/index.d.mts +2 -0
  146. package/src/foundry/client/data/documents/item.d.mts +691 -24
  147. package/src/foundry/client/data/documents/journal-entry-page.d.mts +654 -55
  148. package/src/foundry/client/data/documents/journal-entry.d.mts +631 -35
  149. package/src/foundry/client/data/documents/macro.d.mts +560 -31
  150. package/src/foundry/client/data/documents/measured-template.d.mts +484 -15
  151. package/src/foundry/client/data/documents/note.d.mts +498 -15
  152. package/src/foundry/client/data/documents/playlist-sound.d.mts +443 -45
  153. package/src/foundry/client/data/documents/playlist.d.mts +710 -99
  154. package/src/foundry/client/data/documents/region-behavior.d.mts +516 -0
  155. package/src/foundry/client/data/documents/region.d.mts +789 -0
  156. package/src/foundry/client/data/documents/scene.d.mts +1216 -159
  157. package/src/foundry/client/data/documents/setting.d.mts +406 -23
  158. package/src/foundry/client/data/documents/table-result.d.mts +488 -14
  159. package/src/foundry/client/data/documents/table.d.mts +667 -78
  160. package/src/foundry/client/data/documents/tile.d.mts +505 -14
  161. package/src/foundry/client/data/documents/token.d.mts +1191 -143
  162. package/src/foundry/client/data/documents/user.d.mts +613 -57
  163. package/src/foundry/client/data/documents/wall.d.mts +555 -14
  164. package/src/foundry/client/game.d.mts +60 -92
  165. package/src/foundry/client/head.d.mts +9 -9
  166. package/src/foundry/client/hooks.d.mts +259 -248
  167. package/src/foundry/client/pixi/board.d.mts +107 -94
  168. package/src/foundry/client/pixi/core/containers/base-canvas-group.d.mts +97 -25
  169. package/src/foundry/client/pixi/core/containers/cached-container.d.mts +37 -19
  170. package/src/foundry/client/pixi/core/containers/full-canvas-container.d.mts +7 -10
  171. package/src/foundry/client/pixi/core/containers/point-source-mesh.d.mts +25 -15
  172. package/src/foundry/client/pixi/core/containers/quad-mesh.d.mts +16 -6
  173. package/src/foundry/client/pixi/core/containers/quadtree.d.mts +113 -54
  174. package/src/foundry/client/pixi/core/containers/sprite-mesh.d.mts +69 -26
  175. package/src/foundry/client/pixi/core/containers/unbound-container.d.mts +20 -2
  176. package/src/foundry/client/pixi/core/interaction/canvas-animation.d.mts +164 -99
  177. package/src/foundry/client/pixi/core/interaction/control-icon.d.mts +61 -22
  178. package/src/foundry/client/pixi/core/interaction/mouse-handler.d.mts +120 -53
  179. package/src/foundry/client/pixi/core/interaction/ping.d.mts +62 -31
  180. package/src/foundry/client/pixi/core/interaction/pings/chevron.d.mts +23 -10
  181. package/src/foundry/client/pixi/core/interaction/pings/pulse.d.mts +91 -34
  182. package/src/foundry/client/pixi/core/interaction/render-flags.d.mts +69 -30
  183. package/src/foundry/client/pixi/core/interaction/resize-handle.d.mts +35 -5
  184. package/src/foundry/client/pixi/core/interaction/targets.d.mts +21 -18
  185. package/src/foundry/client/pixi/core/loader.d.mts +86 -76
  186. package/src/foundry/client/pixi/core/shapes/limited-angle-polygon.d.mts +42 -17
  187. package/src/foundry/client/pixi/core/shapes/polygon-mesher.d.mts +92 -64
  188. package/src/foundry/client/pixi/core/shapes/precise-text.d.mts +28 -10
  189. package/src/foundry/client/pixi/core/shapes/ray.d.mts +47 -23
  190. package/src/foundry/client/pixi/core/shapes/source-polygon.d.mts +170 -75
  191. package/src/foundry/client/pixi/extensions/circle.d.mts +128 -125
  192. package/src/foundry/client/pixi/extensions/graphics.d.mts +3 -1
  193. package/src/foundry/client/pixi/extensions/observable-transform.d.mts +5 -4
  194. package/src/foundry/client/pixi/extensions/polygon.d.mts +154 -134
  195. package/src/foundry/client/pixi/extensions/rectangle.d.mts +242 -259
  196. package/src/foundry/client/pixi/groups/effects.d.mts +75 -24
  197. package/src/foundry/client/pixi/groups/environment.d.mts +68 -19
  198. package/src/foundry/client/pixi/groups/hidden.d.mts +27 -11
  199. package/src/foundry/client/pixi/groups/interface.d.mts +62 -38
  200. package/src/foundry/client/pixi/groups/overlay.d.mts +19 -7
  201. package/src/foundry/client/pixi/groups/primary.d.mts +66 -44
  202. package/src/foundry/client/pixi/groups/rendered.d.mts +19 -7
  203. package/src/foundry/client/pixi/layers/base/canvas-layer.d.mts +11 -15
  204. package/src/foundry/client/pixi/layers/base/interaction-layer.d.mts +29 -28
  205. package/src/foundry/client/pixi/layers/base/placeables-layer.d.mts +306 -272
  206. package/src/foundry/client/pixi/layers/controls/cursor.d.mts +18 -9
  207. package/src/foundry/client/pixi/layers/controls/door.d.mts +32 -11
  208. package/src/foundry/client/pixi/layers/controls/layer.d.mts +89 -77
  209. package/src/foundry/client/pixi/layers/controls/ruler.d.mts +121 -96
  210. package/src/foundry/client/pixi/layers/effects/background-effects.d.mts +9 -12
  211. package/src/foundry/client/pixi/layers/effects/coloration-effects.d.mts +9 -10
  212. package/src/foundry/client/pixi/layers/effects/darkness-effects.d.mts +8 -8
  213. package/src/foundry/client/pixi/layers/effects/illumination-effects.d.mts +22 -22
  214. package/src/foundry/client/pixi/layers/effects/visibility.d.mts +106 -86
  215. package/src/foundry/client/pixi/layers/effects/weather/particles/effect.d.mts +14 -5
  216. package/src/foundry/client/pixi/layers/effects/weather/particles/leaves.d.mts +31 -2
  217. package/src/foundry/client/pixi/layers/effects/weather-effects.d.mts +137 -65
  218. package/src/foundry/client/pixi/layers/grid/highlight.d.mts +14 -4
  219. package/src/foundry/client/pixi/layers/grid/layer.d.mts +92 -92
  220. package/src/foundry/client/pixi/layers/grid/mesh.d.mts +37 -16
  221. package/src/foundry/client/pixi/layers/masks/depth.d.mts +12 -7
  222. package/src/foundry/client/pixi/layers/masks/occlusion.d.mts +19 -12
  223. package/src/foundry/client/pixi/layers/masks/vision.d.mts +104 -18
  224. package/src/foundry/client/pixi/layers/placeables/drawings.d.mts +16 -15
  225. package/src/foundry/client/pixi/layers/placeables/index.d.mts +1 -0
  226. package/src/foundry/client/pixi/layers/placeables/lighting.d.mts +12 -14
  227. package/src/foundry/client/pixi/layers/placeables/notes.d.mts +49 -32
  228. package/src/foundry/client/pixi/layers/placeables/regions.d.mts +113 -0
  229. package/src/foundry/client/pixi/layers/placeables/sounds.d.mts +81 -67
  230. package/src/foundry/client/pixi/layers/placeables/templates.d.mts +11 -15
  231. package/src/foundry/client/pixi/layers/placeables/tiles.d.mts +30 -21
  232. package/src/foundry/client/pixi/layers/placeables/tokens.d.mts +66 -52
  233. package/src/foundry/client/pixi/layers/placeables/walls.d.mts +54 -57
  234. package/src/foundry/client/pixi/perception/clockwise-sweep.d.mts +62 -27
  235. package/src/foundry/client/pixi/perception/detection-mode.d.mts +121 -47
  236. package/src/foundry/client/pixi/perception/fog.d.mts +38 -15
  237. package/src/foundry/client/pixi/perception/perception-manager.d.mts +136 -136
  238. package/src/foundry/client/pixi/perception/vision-mode.d.mts +91 -64
  239. package/src/foundry/client/pixi/perception/weiler-atherton-clipping.d.mts +44 -16
  240. package/src/foundry/client/pixi/placeable.d.mts +239 -137
  241. package/src/foundry/client/pixi/placeables/drawing.d.mts +255 -133
  242. package/src/foundry/client/pixi/placeables/index.d.mts +1 -0
  243. package/src/foundry/client/pixi/placeables/light.d.mts +193 -64
  244. package/src/foundry/client/pixi/placeables/note.d.mts +145 -54
  245. package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-canvas-object.d.mts +30 -8
  246. package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-graphics.d.mts +41 -11
  247. package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-occludable-object.d.mts +59 -18
  248. package/src/foundry/client/pixi/placeables/primary-canvas-objects/primary-sprite-mesh.d.mts +120 -37
  249. package/src/foundry/client/pixi/placeables/region.d.mts +280 -0
  250. package/src/foundry/client/pixi/placeables/sound.d.mts +205 -66
  251. package/src/foundry/client/pixi/placeables/template.d.mts +181 -100
  252. package/src/foundry/client/pixi/placeables/tile.d.mts +206 -140
  253. package/src/foundry/client/pixi/placeables/token.d.mts +916 -449
  254. package/src/foundry/client/pixi/placeables/wall.d.mts +249 -129
  255. package/src/foundry/client/pixi/webgl/extensions/batch-renderer.d.mts +72 -33
  256. package/src/foundry/client/pixi/webgl/extensions/batch-shader-generator.d.mts +10 -9
  257. package/src/foundry/client/pixi/webgl/helpers/{framebugger-snapshot.d.mts → framebuffer-snapshot.d.mts} +10 -9
  258. package/src/foundry/client/pixi/webgl/helpers/index.d.mts +1 -1
  259. package/src/foundry/client/pixi/webgl/helpers/smooth-noise.d.mts +38 -23
  260. package/src/foundry/client/pixi/webgl/helpers/texture-extractor.d.mts +82 -53
  261. package/src/foundry/client/pixi/webgl/shaders/base-shader-mixin.d.mts +12 -12
  262. package/src/foundry/client/pixi/webgl/shaders/base-shader.d.mts +45 -28
  263. package/src/foundry/client/pixi/webgl/shaders/filters/base-filter.d.mts +12 -11
  264. package/src/foundry/client/pixi/webgl/shaders/filters/base-mask-filter.d.mts +12 -10
  265. package/src/foundry/client/pixi/webgl/shaders/filters/blur.d.mts +22 -20
  266. package/src/foundry/client/pixi/webgl/shaders/filters/effects-masking.d.mts +36 -32
  267. package/src/foundry/client/pixi/webgl/shaders/filters/environment.d.mts +10 -9
  268. package/src/foundry/client/pixi/webgl/shaders/filters/glow-overlay.d.mts +12 -11
  269. package/src/foundry/client/pixi/webgl/shaders/filters/invisibility.d.mts +10 -9
  270. package/src/foundry/client/pixi/webgl/shaders/filters/outline-overlay.d.mts +12 -11
  271. package/src/foundry/client/pixi/webgl/shaders/filters/transition.d.mts +67 -60
  272. package/src/foundry/client/pixi/webgl/shaders/filters/visibility.d.mts +24 -17
  273. package/src/foundry/client/pixi/webgl/shaders/filters/vision-mask-filter.d.mts +13 -10
  274. package/src/foundry/client/pixi/webgl/shaders/filters/void.d.mts +10 -9
  275. package/src/foundry/client/pixi/webgl/shaders/filters/weather-occlusion-masks.d.mts +11 -10
  276. package/src/foundry/client/pixi/webgl/shaders/fragment-channel-mixin.d.mts +20 -14
  277. package/src/foundry/client/pixi/webgl/shaders/grid/grid.d.mts +12 -11
  278. package/src/foundry/client/pixi/webgl/shaders/lighting/background-lighting.d.mts +10 -9
  279. package/src/foundry/client/pixi/webgl/shaders/lighting/base-lighting.d.mts +33 -33
  280. package/src/foundry/client/pixi/webgl/shaders/lighting/coloration-lighting.d.mts +10 -9
  281. package/src/foundry/client/pixi/webgl/shaders/lighting/darkness-lighting.d.mts +10 -9
  282. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/bewitching-wave.d.mts +19 -17
  283. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/black-hole.d.mts +10 -9
  284. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/chroma.d.mts +10 -9
  285. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/emanation.d.mts +10 -9
  286. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/energy-field.d.mts +10 -9
  287. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/fairy-light.d.mts +19 -17
  288. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/flame.d.mts +19 -17
  289. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/fog.d.mts +10 -9
  290. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/force-grid.d.mts +10 -8
  291. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/ghost-light.d.mts +19 -17
  292. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/hexa-dome.d.mts +10 -9
  293. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/light-dome.d.mts +10 -9
  294. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/magical-gloom.d.mts +10 -9
  295. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/pulse.d.mts +19 -17
  296. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/radial-rainbow.d.mts +10 -9
  297. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/revolving-light.d.mts +10 -9
  298. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/roiling-mass.d.mts +10 -9
  299. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/siren-light.d.mts +19 -17
  300. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/smoke-patch.d.mts +20 -17
  301. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/star-light.d.mts +10 -9
  302. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/sunburst.d.mts +19 -17
  303. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/swirling-rainbow.d.mts +10 -9
  304. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/torch.d.mts +19 -17
  305. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/vortex.d.mts +19 -17
  306. package/src/foundry/client/pixi/webgl/shaders/lighting/effects/wave.d.mts +19 -17
  307. package/src/foundry/client/pixi/webgl/shaders/lighting/illumination-lighting.d.mts +10 -9
  308. package/src/foundry/client/pixi/webgl/shaders/region/adjust-darkness-level.d.mts +71 -29
  309. package/src/foundry/client/pixi/webgl/shaders/region/base.d.mts +54 -10
  310. package/src/foundry/client/pixi/webgl/shaders/region/highlight.d.mts +69 -9
  311. package/src/foundry/client/pixi/webgl/shaders/samplers/base-sampler.d.mts +24 -25
  312. package/src/foundry/client/pixi/webgl/shaders/samplers/baseline-illumination.d.mts +10 -9
  313. package/src/foundry/client/pixi/webgl/shaders/samplers/color-adjustment.d.mts +38 -29
  314. package/src/foundry/client/pixi/webgl/shaders/samplers/depth.d.mts +21 -17
  315. package/src/foundry/client/pixi/webgl/shaders/samplers/fog-of-war.d.mts +10 -9
  316. package/src/foundry/client/pixi/webgl/shaders/samplers/occlusion.d.mts +20 -18
  317. package/src/foundry/client/pixi/webgl/shaders/samplers/primary.d.mts +11 -2
  318. package/src/foundry/client/pixi/webgl/shaders/samplers/token-ring.d.mts +28 -2
  319. package/src/foundry/client/pixi/webgl/shaders/vision/background-vision.d.mts +10 -9
  320. package/src/foundry/client/pixi/webgl/shaders/vision/base-vision.d.mts +11 -9
  321. package/src/foundry/client/pixi/webgl/shaders/vision/coloration-vision.d.mts +10 -9
  322. package/src/foundry/client/pixi/webgl/shaders/vision/effects/amplification.d.mts +10 -9
  323. package/src/foundry/client/pixi/webgl/shaders/vision/effects/wave.d.mts +19 -17
  324. package/src/foundry/client/pixi/webgl/shaders/vision/illumination-vision.d.mts +10 -9
  325. package/src/foundry/client/pixi/webgl/shaders/weather/base-weather.d.mts +40 -36
  326. package/src/foundry/client/pixi/webgl/shaders/weather/effect.d.mts +27 -33
  327. package/src/foundry/client/pixi/webgl/shaders/weather/fog.d.mts +17 -16
  328. package/src/foundry/client/pixi/webgl/shaders/weather/rain.d.mts +19 -18
  329. package/src/foundry/client/pixi/webgl/shaders/weather/snow.d.mts +15 -14
  330. package/src/foundry/client/pixi/workers/texture-worker.d.mts +33 -53
  331. package/src/foundry/client/tours/setup-tour.d.mts +15 -10
  332. package/src/foundry/client/ui/context.d.mts +48 -40
  333. package/src/foundry/client/ui/dialog.d.mts +137 -126
  334. package/src/foundry/client/ui/drag.d.mts +1 -1
  335. package/src/foundry/client/ui/dragdrop.d.mts +34 -28
  336. package/src/foundry/client/ui/editor.d.mts +29 -21
  337. package/src/foundry/client/ui/filepicker.d.mts +43 -38
  338. package/src/foundry/client/ui/filter.d.mts +62 -50
  339. package/src/foundry/client/ui/forms.d.mts +22 -22
  340. package/src/foundry/client/ui/notifications.d.mts +10 -3
  341. package/src/foundry/client/ui/prosemirror.d.mts +15 -7
  342. package/src/foundry/client/ui/secrets.d.mts +42 -27
  343. package/src/foundry/client/ui/tabs.d.mts +40 -33
  344. package/src/foundry/client-esm/applications/_module.d.mts +3 -3
  345. package/src/foundry/client-esm/applications/_types.d.mts +0 -2
  346. package/src/foundry/client-esm/applications/api/_module.d.mts +2 -2
  347. package/src/foundry/client-esm/applications/api/application.d.mts +28 -19
  348. package/src/foundry/client-esm/applications/api/dialog.d.mts +20 -22
  349. package/src/foundry/client-esm/applications/api/document-sheet.d.mts +26 -12
  350. package/src/foundry/client-esm/applications/api/handlebars-application.d.mts +142 -126
  351. package/src/foundry/client-esm/applications/apps/_module.d.mts +2 -2
  352. package/src/foundry/client-esm/applications/apps/compendium-art-config.d.mts +10 -10
  353. package/src/foundry/client-esm/applications/apps/permission-config.d.mts +3 -3
  354. package/src/foundry/client-esm/applications/dice/_module.d.mts +2 -2
  355. package/src/foundry/client-esm/applications/dice/roll-resolver.d.mts +14 -2
  356. package/src/foundry/client-esm/applications/elements/_module.d.mts +2 -2
  357. package/src/foundry/client-esm/applications/elements/document-tags.d.mts +2 -0
  358. package/src/foundry/client-esm/applications/elements/file-picker.d.mts +1 -1
  359. package/src/foundry/client-esm/applications/elements/multi-select.d.mts +15 -5
  360. package/src/foundry/client-esm/applications/elements/string-tags.d.mts +1 -1
  361. package/src/foundry/client-esm/applications/forms/fields.d.mts +1 -1
  362. package/src/foundry/client-esm/applications/sheets/_module.d.mts +2 -2
  363. package/src/foundry/client-esm/applications/sheets/actor-sheet.d.mts +3 -3
  364. package/src/foundry/client-esm/applications/sheets/ambient-light-config.d.mts +10 -8
  365. package/src/foundry/client-esm/applications/sheets/ambient-sound-config.d.mts +9 -7
  366. package/src/foundry/client-esm/applications/sheets/item-sheet.d.mts +3 -3
  367. package/src/foundry/client-esm/applications/sheets/region-behavior-config.d.mts +30 -5
  368. package/src/foundry/client-esm/applications/sheets/region-config.d.mts +36 -5
  369. package/src/foundry/client-esm/applications/sheets/user-config.d.mts +8 -7
  370. package/src/foundry/client-esm/applications/ui/_module.d.mts +2 -2
  371. package/src/foundry/client-esm/applications/ui/region-legend.d.mts +45 -3
  372. package/src/foundry/client-esm/audio/_module.d.mts +2 -3
  373. package/src/foundry/client-esm/audio/_types.d.mts +2 -0
  374. package/src/foundry/client-esm/audio/biquad.d.mts +76 -26
  375. package/src/foundry/client-esm/audio/cache.d.mts +31 -20
  376. package/src/foundry/client-esm/audio/convolver.d.mts +47 -25
  377. package/src/foundry/client-esm/audio/helper.d.mts +124 -80
  378. package/src/foundry/client-esm/audio/sound.d.mts +230 -126
  379. package/src/foundry/client-esm/audio/timeout.d.mts +28 -12
  380. package/src/foundry/client-esm/canvas/_module.d.mts +2 -2
  381. package/src/foundry/client-esm/canvas/edges/_module.d.mts +2 -2
  382. package/src/foundry/client-esm/canvas/edges/collision.d.mts +69 -18
  383. package/src/foundry/client-esm/canvas/edges/edge.d.mts +110 -41
  384. package/src/foundry/client-esm/canvas/edges/edges.d.mts +10 -0
  385. package/src/foundry/client-esm/canvas/edges/vertex.d.mts +56 -26
  386. package/src/foundry/client-esm/canvas/regions/_module.d.mts +6 -11
  387. package/src/foundry/client-esm/canvas/regions/geometry.d.mts +38 -0
  388. package/src/foundry/client-esm/canvas/regions/mesh.d.mts +72 -0
  389. package/src/foundry/client-esm/canvas/regions/polygon-tree.d.mts +130 -0
  390. package/src/foundry/client-esm/canvas/regions/shape.d.mts +129 -0
  391. package/src/foundry/client-esm/canvas/scene-manager.d.mts +13 -3
  392. package/src/foundry/client-esm/canvas/smaa/blend.d.mts +14 -3
  393. package/src/foundry/client-esm/canvas/smaa/edges.d.mts +25 -3
  394. package/src/foundry/client-esm/canvas/smaa/smaa.d.mts +121 -23
  395. package/src/foundry/client-esm/canvas/smaa/weights.d.mts +26 -3
  396. package/src/foundry/client-esm/canvas/sources/_module.d.mts +2 -2
  397. package/src/foundry/client-esm/canvas/sources/base-effect-source.d.mts +84 -40
  398. package/src/foundry/client-esm/canvas/sources/base-light-source.d.mts +103 -39
  399. package/src/foundry/client-esm/canvas/sources/global-light-source.d.mts +89 -15
  400. package/src/foundry/client-esm/canvas/sources/point-darkness-source.d.mts +71 -27
  401. package/src/foundry/client-esm/canvas/sources/point-effect-source.d.mts +49 -20
  402. package/src/foundry/client-esm/canvas/sources/point-light-source.d.mts +57 -16
  403. package/src/foundry/client-esm/canvas/sources/point-movement-source.d.mts +31 -4
  404. package/src/foundry/client-esm/canvas/sources/point-sound-source.d.mts +45 -12
  405. package/src/foundry/client-esm/canvas/sources/point-vision-source.d.mts +98 -52
  406. package/src/foundry/client-esm/canvas/sources/rendered-effect-source.d.mts +180 -69
  407. package/src/foundry/client-esm/canvas/tokens/_module.d.mts +2 -3
  408. package/src/foundry/client-esm/canvas/tokens/ring-config.d.mts +175 -2
  409. package/src/foundry/client-esm/canvas/tokens/ring-data.d.mts +142 -2
  410. package/src/foundry/client-esm/canvas/tokens/ring.d.mts +284 -2
  411. package/src/foundry/client-esm/client.d.mts +47 -54
  412. package/src/foundry/client-esm/data/_module.d.mts +2 -2
  413. package/src/foundry/client-esm/data/client-backend.d.mts +22 -23
  414. package/src/foundry/client-esm/data/region-behaviors/_module.d.mts +11 -14
  415. package/src/foundry/client-esm/data/region-behaviors/adjust-darkness-level.d.mts +56 -0
  416. package/src/foundry/client-esm/data/region-behaviors/base.d.mts +59 -0
  417. package/src/foundry/client-esm/data/region-behaviors/display-scrolling-text.d.mts +64 -0
  418. package/src/foundry/client-esm/data/region-behaviors/execute-macro.d.mts +27 -0
  419. package/src/foundry/client-esm/data/region-behaviors/execute-script.d.mts +23 -0
  420. package/src/foundry/client-esm/data/region-behaviors/pause-game.d.mts +23 -0
  421. package/src/foundry/client-esm/data/region-behaviors/suppress-weather.d.mts +17 -0
  422. package/src/foundry/client-esm/data/region-behaviors/teleport-token.d.mts +32 -0
  423. package/src/foundry/client-esm/data/region-behaviors/toggle-behavior.d.mts +31 -0
  424. package/src/foundry/client-esm/dice/_module.d.mts +2 -3
  425. package/src/foundry/client-esm/dice/parser.d.mts +11 -25
  426. package/src/foundry/client-esm/dice/roll.d.mts +112 -89
  427. package/src/foundry/client-esm/dice/terms/_module.d.mts +2 -3
  428. package/src/foundry/client-esm/dice/terms/coin.d.mts +8 -5
  429. package/src/foundry/client-esm/dice/terms/dice.d.mts +93 -63
  430. package/src/foundry/client-esm/dice/terms/die.d.mts +11 -4
  431. package/src/foundry/client-esm/dice/terms/fate.d.mts +9 -2
  432. package/src/foundry/client-esm/dice/terms/function.d.mts +18 -18
  433. package/src/foundry/client-esm/dice/terms/numeric.d.mts +3 -5
  434. package/src/foundry/client-esm/dice/terms/operator.d.mts +2 -2
  435. package/src/foundry/client-esm/dice/terms/parenthetical.d.mts +9 -10
  436. package/src/foundry/client-esm/dice/terms/pool.d.mts +25 -31
  437. package/src/foundry/client-esm/dice/terms/string.d.mts +4 -4
  438. package/src/foundry/client-esm/dice/terms/term.d.mts +18 -4
  439. package/src/foundry/client-esm/dice/twister.d.mts +3 -3
  440. package/src/foundry/client-esm/helpers/_module.d.mts +2 -2
  441. package/src/foundry/client-esm/helpers/_types.d.mts +12 -46
  442. package/src/foundry/client-esm/helpers/compendium-art.d.mts +56 -4
  443. package/src/foundry/common/abstract/_types.d.mts +60 -54
  444. package/src/foundry/common/abstract/backend.d.mts +51 -45
  445. package/src/foundry/common/abstract/data.d.mts +265 -236
  446. package/src/foundry/common/abstract/document.d.mts +1449 -464
  447. package/src/foundry/common/abstract/embedded-collection-delta.d.mts +1 -1
  448. package/src/foundry/common/abstract/embedded-collection.d.mts +37 -7
  449. package/src/foundry/common/abstract/module.d.mts +3 -2
  450. package/src/foundry/common/abstract/singleton-collection.d.mts +1 -1
  451. package/src/foundry/common/abstract/socket.d.mts +1 -1
  452. package/src/foundry/common/abstract/type-data.d.mts +61 -55
  453. package/src/foundry/common/config.d.mts +11 -3
  454. package/src/foundry/common/constants.d.mts +261 -231
  455. package/src/foundry/common/data/data.d.mts +238 -102
  456. package/src/foundry/common/data/fields.d.mts +1334 -874
  457. package/src/foundry/common/data/module.d.mts +2 -2
  458. package/src/foundry/common/data/validation-failure.d.mts +12 -9
  459. package/src/foundry/common/documents/_module.d.mts +4 -2
  460. package/src/foundry/common/documents/_types.d.mts +22 -56
  461. package/src/foundry/common/documents/active-effect.d.mts +358 -194
  462. package/src/foundry/common/documents/actor-delta.d.mts +403 -73
  463. package/src/foundry/common/documents/actor.d.mts +359 -117
  464. package/src/foundry/common/documents/adventure.d.mts +312 -142
  465. package/src/foundry/common/documents/ambient-light.d.mts +296 -75
  466. package/src/foundry/common/documents/ambient-sound.d.mts +296 -109
  467. package/src/foundry/common/documents/card.d.mts +321 -187
  468. package/src/foundry/common/documents/cards.d.mts +353 -125
  469. package/src/foundry/common/documents/chat-message.d.mts +338 -167
  470. package/src/foundry/common/documents/combat.d.mts +358 -94
  471. package/src/foundry/common/documents/combatant.d.mts +323 -92
  472. package/src/foundry/common/documents/drawing.d.mts +327 -206
  473. package/src/foundry/common/documents/fog-exploration.d.mts +303 -69
  474. package/src/foundry/common/documents/folder.d.mts +307 -82
  475. package/src/foundry/common/documents/item.d.mts +377 -100
  476. package/src/foundry/common/documents/journal-entry-page.d.mts +327 -187
  477. package/src/foundry/common/documents/journal-entry.d.mts +345 -68
  478. package/src/foundry/common/documents/macro.d.mts +325 -139
  479. package/src/foundry/common/documents/measured-template.d.mts +328 -138
  480. package/src/foundry/common/documents/note.d.mts +312 -151
  481. package/src/foundry/common/documents/playlist-sound.d.mts +309 -102
  482. package/src/foundry/common/documents/playlist.d.mts +341 -131
  483. package/src/foundry/common/documents/region-behavior.d.mts +360 -0
  484. package/src/foundry/common/documents/region.d.mts +355 -0
  485. package/src/foundry/common/documents/roll-table.d.mts +320 -102
  486. package/src/foundry/common/documents/scene.d.mts +437 -350
  487. package/src/foundry/common/documents/setting.d.mts +285 -54
  488. package/src/foundry/common/documents/table-result.d.mts +326 -103
  489. package/src/foundry/common/documents/tile.d.mts +337 -172
  490. package/src/foundry/common/documents/token.d.mts +396 -447
  491. package/src/foundry/common/documents/user.d.mts +296 -173
  492. package/src/foundry/common/documents/wall.d.mts +303 -156
  493. package/src/foundry/common/grid/_module.d.mts +3 -3
  494. package/src/foundry/common/grid/base.d.mts +66 -49
  495. package/src/foundry/common/grid/gridless.d.mts +2 -2
  496. package/src/foundry/common/grid/hexagonal.d.mts +35 -28
  497. package/src/foundry/common/grid/square.d.mts +3 -3
  498. package/src/foundry/common/packages/base-module.d.mts +6 -24
  499. package/src/foundry/common/packages/base-package.d.mts +56 -31
  500. package/src/foundry/common/packages/base-system.d.mts +45 -63
  501. package/src/foundry/common/packages/base-world.d.mts +15 -61
  502. package/src/foundry/common/packages/module.d.mts +7 -7
  503. package/src/foundry/common/packages/sub-types.d.mts +4 -6
  504. package/src/foundry/common/primitives/array.d.mts +4 -4
  505. package/src/foundry/common/primitives/math.d.mts +7 -1
  506. package/src/foundry/common/primitives/number.d.mts +2 -2
  507. package/src/foundry/common/primitives/set.d.mts +17 -14
  508. package/src/foundry/common/primitives/string.d.mts +1 -1
  509. package/src/foundry/common/prosemirror/_module.d.mts +15 -15
  510. package/src/foundry/common/prosemirror/dirty-plugin.d.mts +1 -1
  511. package/src/foundry/common/prosemirror/dom-parser.d.mts +2 -1
  512. package/src/foundry/common/prosemirror/dropdown.d.mts +1 -1
  513. package/src/foundry/common/prosemirror/highlight-matches-plugin.d.mts +2 -2
  514. package/src/foundry/common/prosemirror/image-plugin.d.mts +1 -1
  515. package/src/foundry/common/prosemirror/menu.d.mts +3 -3
  516. package/src/foundry/common/prosemirror/paste-transformer.d.mts +1 -1
  517. package/src/foundry/common/prosemirror/plugin.d.mts +2 -2
  518. package/src/foundry/common/prosemirror/schema/index.d.mts +0 -1
  519. package/src/foundry/common/prosemirror/schema/lists.d.mts +2 -0
  520. package/src/foundry/common/prosemirror/util.d.mts +1 -1
  521. package/src/foundry/common/types.d.mts +3 -3
  522. package/src/foundry/common/utils/bitmask.d.mts +23 -11
  523. package/src/foundry/common/utils/collection.d.mts +61 -38
  524. package/src/foundry/common/utils/color.d.mts +20 -2
  525. package/src/foundry/common/utils/event-emitter.d.mts +32 -17
  526. package/src/foundry/common/utils/helpers.d.mts +36 -26
  527. package/src/foundry/common/utils/http.d.mts +2 -2
  528. package/src/foundry/common/utils/module.d.mts +2 -2
  529. package/src/foundry/common/utils/string-tree.d.mts +45 -39
  530. package/src/foundry/common/utils/word-tree.d.mts +10 -23
  531. package/src/foundry/index.d.mts +0 -1
  532. package/src/foundry/{clipper → public/scripts/clipper}/clipper.d.mts +58 -16
  533. package/src/foundry/public/scripts/index.d.mts +1 -0
  534. package/src/foundry/public/scripts/workers/image-compressor.d.mts +23 -0
  535. package/src/foundry/public/scripts/workers/index.d.mts +1 -0
  536. package/{index-lenient.d.mts → src/index-lenient.d.mts} +2 -0
  537. package/src/index.d.mts +6 -0
  538. package/src/tsconfig.json +15 -0
  539. package/src/types/augments/particles.d.mts +29 -0
  540. package/src/types/augments/pixi.d.mts +1024 -21
  541. package/src/types/augments/smooth.d.mts +31 -0
  542. package/src/types/augments/tinyMCE.d.mts +1 -1
  543. package/src/types/config.d.mts +18 -313
  544. package/src/types/documentConfiguration.d.mts +286 -542
  545. package/src/types/index.d.mts +1 -1
  546. package/src/types/lib.d.mts +12 -0
  547. package/src/types/workers/image-compressor.d.mts +176 -0
  548. package/src/utils/index.d.mts +1279 -0
  549. package/tsconfig.json +29 -0
  550. package/tsconfig.main.json +8 -0
  551. package/tsconfig.miscellaneous.json +16 -0
  552. package/index.d.mts +0 -5
  553. package/src/foundry/client/apps/placeables/light-config.d.mts +0 -100
  554. package/src/foundry/client/apps/placeables/sound-config.d.mts +0 -43
  555. package/src/foundry/common/documents/module.d.mts +0 -35
  556. package/src/foundry/common/primitives/regex.d.mts +0 -12
  557. package/src/types/helperTypes.d.mts +0 -583
  558. package/src/types/utils.d.mts +0 -539
  559. /package/src/foundry/{clipper → public/scripts/clipper}/index.d.mts +0 -0
@@ -1,51 +1,581 @@
1
- import type { InexactPartial } from "../../../../types/utils.d.mts";
1
+ import type { ConfiguredCombat } from "../../../../configuration/index.d.mts";
2
+ import type { AnyObject, InexactPartial, Merge, NullishProps } from "#utils";
3
+ import type { documents } from "../../../client-esm/client.d.mts";
2
4
  import type Document from "../../../common/abstract/document.d.mts";
3
- import type { DocumentDatabaseOperations } from "../../../common/abstract/document.d.mts";
5
+ import type { DataSchema } from "../../../common/data/fields.d.mts";
6
+ import type { fields } from "../../../common/data/module.d.mts";
4
7
  import type BaseCombat from "../../../common/documents/combat.d.mts";
5
8
 
6
9
  declare global {
7
10
  namespace Combat {
8
- type Metadata = Document.MetadataFor<Combat>;
11
+ /**
12
+ * The document's name.
13
+ */
14
+ type Name = "Combat";
15
+
16
+ /**
17
+ * The arguments to construct the document.
18
+ */
19
+ type ConstructorArgs = Document.ConstructorParameters<CreateData, Parent>;
20
+
21
+ /**
22
+ * The documents embedded within `Combat`.
23
+ */
24
+ type Hierarchy = Readonly<Document.HierarchyOf<Schema>>;
25
+
26
+ /**
27
+ * The implementation of the `Combat` document instance configured through `CONFIG.Combat.documentClass` in Foundry and
28
+ * {@link DocumentClassConfig | `DocumentClassConfig`} or {@link ConfiguredCombat | `fvtt-types/configuration/ConfiguredCombat`} in fvtt-types.
29
+ */
30
+ type Implementation = Document.ImplementationFor<Name>;
31
+
32
+ /**
33
+ * The implementation of the `Combat` document configured through `CONFIG.Combat.documentClass` in Foundry and
34
+ * {@link DocumentClassConfig | `DocumentClassConfig`} in fvtt-types.
35
+ */
36
+ type ImplementationClass = Document.ImplementationClassFor<Name>;
37
+
38
+ /**
39
+ * A document's metadata is special information about the document ranging anywhere from its name,
40
+ * whether it's indexed, or to the permissions a user has over it.
41
+ */
42
+ interface Metadata
43
+ extends Merge<
44
+ Document.Metadata.Default,
45
+ Readonly<{
46
+ name: "Combat";
47
+ collection: "combats";
48
+ label: string;
49
+ labelPlural: string;
50
+ embedded: Metadata.Embedded;
51
+ hasTypeData: true;
52
+ permissions: Metadata.Permissions;
53
+ schemaVersion: string;
54
+ }>
55
+ > {}
56
+
57
+ namespace Metadata {
58
+ /**
59
+ * The embedded metadata
60
+ */
61
+ interface Embedded {
62
+ Combatant: "combatants";
63
+ }
64
+
65
+ /**
66
+ * The permissions for whether a certain user can create, update, or delete this document.
67
+ */
68
+ interface Permissions {
69
+ update(user: User.Internal.Implementation, doc: Implementation, data: UpdateData): boolean;
70
+ }
71
+ }
72
+
73
+ /**
74
+ * Allowed subtypes of `Combat`. This is configured through various methods. Modern Foundry
75
+ * recommends registering using [Data Models](https://foundryvtt.com/article/system-data-models/)
76
+ * under {@link CONFIG.Combat.dataModels | `CONFIG.Combat.dataModels`}. This corresponds to
77
+ * fvtt-type's {@link DataModelConfig | `DataModelConfig`}.
78
+ *
79
+ * Subtypes can also be registered through a `template.json` though this is discouraged.
80
+ * The corresponding fvtt-type configs are {@link SourceConfig | `SourceConfig`} and
81
+ * {@link DataConfig | `DataConfig`}.
82
+ */
83
+ type SubType = Game.Model.TypeNames<"Combat">;
84
+
85
+ /**
86
+ * `ConfiguredSubTypes` represents the subtypes a user explicitly registered. This excludes
87
+ * subtypes like the Foundry builtin subtype `"base"` and the catch-all subtype for arbitrary
88
+ * module subtypes `${string}.${string}`.
89
+ *
90
+ * @see {@link SubType} for more information.
91
+ */
92
+ type ConfiguredSubTypes = Document.ConfiguredSubTypesOf<"Combat">;
9
93
 
10
- type ConfiguredClass = Document.ConfiguredClassForName<"Combat">;
11
- type ConfiguredInstance = Document.ConfiguredInstanceForName<"Combat">;
94
+ /**
95
+ * `Known` represents the types of `Combat` that a user explicitly registered.
96
+ *
97
+ * @see {@link ConfiguredSubTypes} for more information.
98
+ */
99
+ type Known = Combat.OfType<Combat.ConfiguredSubTypes>;
100
+
101
+ /**
102
+ * `OfType` returns an instance of `Combat` with the corresponding type. This works with both the
103
+ * builtin `Combat` class or a custom subclass if that is set up in
104
+ * {@link ConfiguredCombat | `fvtt-types/configuration/ConfiguredCombat`}.
105
+ */
106
+ // eslint-disable-next-line @typescript-eslint/no-restricted-types
107
+ type OfType<Type extends SubType> = Document.Internal.OfType<ConfiguredCombat<Type>, Combat<Type>>;
108
+
109
+ /**
110
+ * `SystemOfType` returns the system property for a specific `Combat` subtype.
111
+ */
112
+ type SystemOfType<Type extends SubType> = Document.Internal.SystemOfType<_SystemMap, Type>;
12
113
 
114
+ /**
115
+ * @internal
116
+ */
117
+ interface _SystemMap extends Document.Internal.SystemMap<"Combat"> {}
118
+
119
+ /**
120
+ * A document's parent is something that can contain it.
121
+ * For example an `Item` can be contained by an `Actor` which makes `Actor` one of its possible parents.
122
+ */
123
+ type Parent = null;
124
+
125
+ /**
126
+ * A document's descendants are any child documents, grandchild documents, etc.
127
+ * This is a union of all instances, or never if the document doesn't have any descendants.
128
+ */
129
+ type DescendantName = "Combatant";
130
+
131
+ /**
132
+ * A document's direct descendants are documents that are contained directly within its schema.
133
+ * This is a union of all such instances, or never if the document doesn't have any descendants.
134
+ */
135
+ type DirectDescendant = Combatant.Stored;
136
+
137
+ /**
138
+ * A document's direct descendants are documents that are contained directly within its schema.
139
+ * This is a union of all such classes, or never if the document doesn't have any descendants.
140
+ */
141
+ type DirectDescendantClass = Combatant.ImplementationClass;
142
+
143
+ /**
144
+ * A document's descendants are any documents that are contained within, either within its schema
145
+ * or its descendant's schemas.
146
+ * This is a union of all such instances, or never if the document doesn't have any descendants.
147
+ */
148
+ type Descendant = DirectDescendant;
149
+
150
+ /**
151
+ * A document's descendants are any child documents, grandchild documents, etc.
152
+ * This is a union of all classes, or never if the document doesn't have any descendants.
153
+ */
154
+ type DescendantClass = DirectDescendantClass;
155
+
156
+ /**
157
+ * Types of `CompendiumCollection` this document might be contained in.
158
+ * Note that `this.pack` will always return a string; this is the type for `game.packs.get(this.pack)`
159
+ */
160
+ // Note: Takes any document in the heritage chain (i.e. itself or any parent, transitive or not) that can be contained in a compendium.
161
+ type Pack = never;
162
+
163
+ /**
164
+ * An embedded document is a document contained in another.
165
+ * For example an `Item` can be contained by an `Actor` which means `Item` can be embedded in `Actor`.
166
+ *
167
+ * If this is `never` it is because there are no embeddable documents (or there's a bug!).
168
+ */
169
+ type Embedded = Document.ImplementationFor<Embedded.Name>;
170
+
171
+ namespace Embedded {
172
+ /**
173
+ * An embedded document is a document contained in another.
174
+ * For example an `Item` can be contained by an `Actor` which means `Item` can be embedded in `Actor`.
175
+ *
176
+ * If this is `never` it is because there are no embeddable documents (or there's a bug!).
177
+ */
178
+ type Name = keyof Metadata.Embedded;
179
+
180
+ /**
181
+ * Gets the collection name for an embedded document.
182
+ */
183
+ type CollectionNameOf<CollectionName extends Embedded.CollectionName> = Document.Embedded.CollectionNameFor<
184
+ Metadata.Embedded,
185
+ CollectionName
186
+ >;
187
+
188
+ /**
189
+ * Gets the collection document for an embedded document.
190
+ */
191
+ // TODO(LukeAbby): There's a circularity. Should be `Document.Embedded.CollectionDocumentFor<Metadata.Embedded, CollectionName>`
192
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
193
+ type DocumentFor<CollectionName extends Embedded.CollectionName> = Document.Any;
194
+
195
+ /**
196
+ * Gets the collection for an embedded document.
197
+ */
198
+ type CollectionFor<CollectionName extends Embedded.CollectionName> = Document.Embedded.CollectionFor<
199
+ // TODO(LukeAbby): This should be `TokenDocument.Implementation` but this causes a circularity.
200
+ Document.Any,
201
+ Metadata.Embedded,
202
+ CollectionName
203
+ >;
204
+
205
+ /**
206
+ * A valid name to refer to a collection embedded in this document. For example an `Actor`
207
+ * has the key `"items"` which contains `Item` instance which would make both `"Item" | "Items"`
208
+ * valid keys (amongst others).
209
+ */
210
+ type CollectionName = Document.Embedded.CollectionName<Metadata.Embedded>;
211
+ }
212
+
213
+ /**
214
+ * The name of the world or embedded collection this document can find itself in.
215
+ * For example an `Item` is always going to be inside a collection with a key of `items`.
216
+ * This is a fixed string per document type and is primarily useful for {@link ClientDocumentMixin | `Descendant Document Events`}.
217
+ */
218
+ type ParentCollectionName = Metadata["collection"];
219
+
220
+ /**
221
+ * The world collection that contains `Combat`s. Will be `never` if none exists.
222
+ */
223
+ type CollectionClass = CombatEncounters.ConfiguredClass;
224
+
225
+ /**
226
+ * The world collection that contains `Combat`s. Will be `never` if none exists.
227
+ */
228
+ type Collection = CombatEncounters.Configured;
229
+
230
+ /**
231
+ * An instance of `Combat` that comes from the database but failed validation meaning that
232
+ * its `system` and `_source` could theoretically be anything.
233
+ */
234
+ interface Invalid<out SubType extends Combat.SubType = Combat.SubType> extends Document.Invalid<OfType<SubType>> {}
235
+
236
+ /**
237
+ * An instance of `Combat` that comes from the database.
238
+ */
239
+ interface Stored<out SubType extends Combat.SubType = Combat.SubType> extends Document.Stored<OfType<SubType>> {}
240
+
241
+ /**
242
+ * The data put in {@link Combat._source | `Combat#_source`}. This data is what was
243
+ * persisted to the database and therefore it must be valid JSON.
244
+ *
245
+ * For example a {@link fields.SetField | `SetField`} is persisted to the database as an array
246
+ * but initialized as a {@link Set | `Set`}.
247
+ */
248
+ interface Source extends fields.SchemaField.SourceData<Schema> {}
249
+
250
+ /**
251
+ * @deprecated {@link Combat.Source | `Combat.Source`}
252
+ */
253
+ type PersistedData = Source;
254
+
255
+ /**
256
+ * The data necessary to create a document. Used in places like {@link Combat.create | `Combat.create`}
257
+ * and {@link Combat | `new Combat(...)`}.
258
+ *
259
+ * For example a {@link fields.SetField | `SetField`} can accept any {@link Iterable | `Iterable`}
260
+ * with the right values. This means you can pass a `Set` instance, an array of values,
261
+ * a generator, or any other iterable.
262
+ */
263
+ interface CreateData extends fields.SchemaField.CreateData<Schema> {}
264
+
265
+ /**
266
+ * The data after a {@link foundry.abstract.Document | `Document`} has been initialized, for example
267
+ * {@link Combat.name | `Combat#name`}.
268
+ *
269
+ * This is data transformed from {@link Combat.Source | `Combat.Source`} and turned into more
270
+ * convenient runtime data structures. For example a {@link fields.SetField | `SetField`} is
271
+ * persisted to the database as an array of values but at runtime it is a `Set` instance.
272
+ */
273
+ interface InitializedData extends fields.SchemaField.InitializedData<Schema> {}
274
+
275
+ /**
276
+ * The data used to update a document, for example {@link Combat.update | `Combat#update`}.
277
+ * It is a distinct type from {@link Combat.CreateData | `DeepPartial<Combat.CreateData>`} because
278
+ * it has different rules for `null` and `undefined`.
279
+ */
280
+ interface UpdateData extends fields.SchemaField.UpdateData<Schema> {}
281
+
282
+ /**
283
+ * The schema for {@link Combat | `Combat`}. This is the source of truth for how an Combat document
284
+ * must be structured.
285
+ *
286
+ * Foundry uses this schema to validate the structure of the {@link Combat | `Combat`}. For example
287
+ * a {@link fields.StringField | `StringField`} will enforce that the value is a string. More
288
+ * complex fields like {@link fields.SetField | `SetField`} goes through various conversions
289
+ * starting as an array in the database, initialized as a set, and allows updates with any
290
+ * iterable.
291
+ */
292
+ interface Schema extends DataSchema {
293
+ /**
294
+ * The _id which uniquely identifies this Combat document
295
+ * @defaultValue `null`
296
+ */
297
+ _id: fields.DocumentIdField;
298
+
299
+ type: fields.DocumentTypeField<typeof BaseCombat, { initial: typeof CONST.BASE_DOCUMENT_TYPE }>;
300
+
301
+ system: fields.TypeDataField<typeof BaseCombat>;
302
+
303
+ /**
304
+ * The _id of a Scene within which this Combat occurs
305
+ * @defaultValue `null`
306
+ */
307
+ scene: fields.ForeignDocumentField<typeof documents.BaseScene>;
308
+
309
+ /**
310
+ * A Collection of Combatant embedded Documents
311
+ * @defaultValue `[]`
312
+ */
313
+ combatants: fields.EmbeddedCollectionField<typeof documents.BaseCombatant, Combat.Implementation>;
314
+
315
+ /**
316
+ * Is the Combat encounter currently active?
317
+ * @defaultValue `false`
318
+ */
319
+ active: fields.BooleanField;
320
+
321
+ /**
322
+ * The current round of the Combat encounter
323
+ * @defaultValue `0`
324
+ */
325
+ round: fields.NumberField<{
326
+ required: true;
327
+ nullable: false;
328
+ integer: true;
329
+ min: 0;
330
+ initial: 0;
331
+ label: "COMBAT.Round";
332
+ }>;
333
+
334
+ /**
335
+ * The current turn in the Combat round
336
+ * @defaultValue `null`
337
+ */
338
+ turn: fields.NumberField<{ required: true; integer: true; min: 0; initial: null; label: "COMBAT.Turn" }>;
339
+
340
+ /**
341
+ * The current sort order of this Combat relative to others in the same Scene
342
+ * @defaultValue `0`
343
+ */
344
+ sort: fields.IntegerSortField;
345
+
346
+ /**
347
+ * An object of optional key/value flags
348
+ * @defaultValue `{}`
349
+ */
350
+ flags: fields.ObjectField.FlagsField<Name>;
351
+
352
+ /**
353
+ * An object of creation and access information
354
+ * @defaultValue see {@link fields.DocumentStatsField | `fields.DocumentStatsField`}
355
+ */
356
+ _stats: fields.DocumentStatsField;
357
+ }
358
+
359
+ namespace Database {
360
+ /** Options passed along in Get operations for Combats */
361
+ interface Get extends foundry.abstract.types.DatabaseGetOperation<Combat.Parent> {}
362
+
363
+ /** Options passed along in Create operations for Combats */
364
+ interface Create<Temporary extends boolean | undefined = boolean | undefined>
365
+ extends foundry.abstract.types.DatabaseCreateOperation<Combat.CreateData, Combat.Parent, Temporary> {}
366
+
367
+ /** Options passed along in Delete operations for Combats */
368
+ interface Delete extends foundry.abstract.types.DatabaseDeleteOperation<Combat.Parent> {}
369
+
370
+ /** Options passed along in Update operations for Combats */
371
+ interface Update extends foundry.abstract.types.DatabaseUpdateOperation<Combat.UpdateData, Combat.Parent> {
372
+ direction: -1 | 1;
373
+ worldTime: { delta: number };
374
+ turnEvents: boolean;
375
+ }
376
+
377
+ /** Operation for {@link Combat.createDocuments | `Combat.createDocuments`} */
378
+ interface CreateDocumentsOperation<Temporary extends boolean | undefined>
379
+ extends Document.Database.CreateOperation<Combat.Database.Create<Temporary>> {}
380
+
381
+ /** Operation for {@link Combat.updateDocuments | `Combat.updateDocuments`} */
382
+ interface UpdateDocumentsOperation extends Document.Database.UpdateDocumentsOperation<Combat.Database.Update> {}
383
+
384
+ /** Operation for {@link Combat.deleteDocuments | `Combat.deleteDocuments`} */
385
+ interface DeleteDocumentsOperation extends Document.Database.DeleteDocumentsOperation<Combat.Database.Delete> {}
386
+
387
+ /** Operation for {@link Combat.create | `Combat.create`} */
388
+ interface CreateOperation<Temporary extends boolean | undefined>
389
+ extends Document.Database.CreateOperation<Combat.Database.Create<Temporary>> {}
390
+
391
+ /** Operation for {@link Combat.update | `Combat#update`} */
392
+ interface UpdateOperation extends Document.Database.UpdateOperation<Update> {}
393
+
394
+ interface DeleteOperation extends Document.Database.DeleteOperation<Delete> {}
395
+
396
+ /** Options for {@link Combat.get | `Combat.get`} */
397
+ interface GetOptions extends Document.Database.GetOptions {}
398
+
399
+ /** Options for {@link Combat._preCreate | `Combat#_preCreate`} */
400
+ interface PreCreateOptions extends Document.Database.PreCreateOptions<Create> {}
401
+
402
+ /** Options for {@link Combat._onCreate | `Combat#_onCreate`} */
403
+ interface OnCreateOptions extends Document.Database.CreateOptions<Create> {}
404
+
405
+ /** Operation for {@link Combat._preCreateOperation | `Combat._preCreateOperation`} */
406
+ interface PreCreateOperation extends Document.Database.PreCreateOperationStatic<Combat.Database.Create> {}
407
+
408
+ /** Operation for {@link Combat._onCreateOperation | `Combat#_onCreateOperation`} */
409
+ interface OnCreateOperation extends Combat.Database.Create {}
410
+
411
+ /** Options for {@link Combat._preUpdate | `Combat#_preUpdate`} */
412
+ interface PreUpdateOptions extends Document.Database.PreUpdateOptions<Update> {}
413
+
414
+ /** Options for {@link Combat._onUpdate | `Combat#_onUpdate`} */
415
+ interface OnUpdateOptions extends Document.Database.UpdateOptions<Update> {}
416
+
417
+ /** Operation for {@link Combat._preUpdateOperation | `Combat._preUpdateOperation`} */
418
+ interface PreUpdateOperation extends Combat.Database.Update {}
419
+
420
+ /** Operation for {@link Combat._onUpdateOperation | `Combat._preUpdateOperation`} */
421
+ interface OnUpdateOperation extends Combat.Database.Update {}
422
+
423
+ /** Options for {@link Combat._preDelete | `Combat#_preDelete`} */
424
+ interface PreDeleteOptions extends Document.Database.PreDeleteOperationInstance<Delete> {}
425
+
426
+ /** Options for {@link Combat._onDelete | `Combat#_onDelete`} */
427
+ interface OnDeleteOptions extends Document.Database.DeleteOptions<Delete> {}
428
+
429
+ /** Options for {@link Combat._preDeleteOperation | `Combat#_preDeleteOperation`} */
430
+ interface PreDeleteOperation extends Combat.Database.Delete {}
431
+
432
+ /** Options for {@link Combat._onDeleteOperation | `Combat#_onDeleteOperation`} */
433
+ interface OnDeleteOperation extends Combat.Database.Delete {}
434
+
435
+ /** Context for {@link Combat._onDeleteOperation | `Combat._onDeleteOperation`} */
436
+ interface OnDeleteDocumentsContext extends Document.ModificationContext<Combat.Parent> {}
437
+
438
+ /** Context for {@link Combat._onCreateDocuments | `Combat._onCreateDocuments`} */
439
+ interface OnCreateDocumentsContext extends Document.ModificationContext<Combat.Parent> {}
440
+
441
+ /** Context for {@link Combat._onUpdateDocuments | `Combat._onUpdateDocuments`} */
442
+ interface OnUpdateDocumentsContext extends Document.ModificationContext<Combat.Parent> {}
443
+
444
+ /**
445
+ * Options for {@link Combat._preCreateDescendantDocuments | `Combat#_preCreateDescendantDocuments`}
446
+ * and {@link Combat._onCreateDescendantDocuments | `Combat#_onCreateDescendantDocuments`}
447
+ */
448
+ interface CreateOptions extends Document.Database.CreateOptions<Combat.Database.Create> {}
449
+
450
+ /**
451
+ * Options for {@link Combat._preUpdateDescendantDocuments | `Combat#_preUpdateDescendantDocuments`}
452
+ * and {@link Combat._onUpdateDescendantDocuments | `Combat#_onUpdateDescendantDocuments`}
453
+ */
454
+ interface UpdateOptions extends Document.Database.UpdateOptions<Combat.Database.Update> {}
455
+
456
+ /**
457
+ * Options for {@link Combat._preDeleteDescendantDocuments | `Combat#_preDeleteDescendantDocuments`}
458
+ * and {@link Combat._onDeleteDescendantDocuments | `Combat#_onDeleteDescendantDocuments`}
459
+ */
460
+ interface DeleteOptions extends Document.Database.DeleteOptions<Combat.Database.Delete> {}
461
+ }
462
+
463
+ /**
464
+ * The flags that are available for this document in the form `{ [scope: string]: { [key: string]: unknown } }`.
465
+ */
466
+ interface Flags extends Document.ConfiguredFlagsForName<Name> {}
467
+
468
+ namespace Flags {
469
+ /**
470
+ * The valid scopes for the flags on this document e.g. `"core"` or `"dnd5e"`.
471
+ */
472
+ type Scope = Document.FlagKeyOf<Flags>;
473
+
474
+ /**
475
+ * The valid keys for a certain scope for example if the scope is "core" then a valid key may be `"sheetLock"` or `"viewMode"`.
476
+ */
477
+ type Key<Scope extends Flags.Scope> = Document.FlagKeyOf<Document.FlagGetKey<Flags, Scope>>;
478
+
479
+ /**
480
+ * Gets the type of a particular flag given a `Scope` and a `Key`.
481
+ */
482
+ type Get<Scope extends Flags.Scope, Key extends Flags.Key<Scope>> = Document.GetFlag<Name, Scope, Key>;
483
+ }
484
+
485
+ type PreCreateDescendantDocumentsArgs = Document.PreCreateDescendantDocumentsArgs<
486
+ Combat.Stored,
487
+ Combat.DirectDescendant,
488
+ Combat.Metadata.Embedded
489
+ >;
490
+
491
+ type OnCreateDescendantDocumentsArgs = Document.OnCreateDescendantDocumentsArgs<
492
+ Combat.Stored,
493
+ Combat.DirectDescendant,
494
+ Combat.Metadata.Embedded
495
+ >;
496
+
497
+ type PreUpdateDescendantDocumentsArgs = Document.PreUpdateDescendantDocumentsArgs<
498
+ Combat.Stored,
499
+ Combat.DirectDescendant,
500
+ Combat.Metadata.Embedded
501
+ >;
502
+
503
+ type OnUpdateDescendantDocumentsArgs = Document.OnUpdateDescendantDocumentsArgs<
504
+ Combat.Stored,
505
+ Combat.DirectDescendant,
506
+ Combat.Metadata.Embedded
507
+ >;
508
+
509
+ type PreDeleteDescendantDocumentsArgs = Document.PreDeleteDescendantDocumentsArgs<
510
+ Combat.Stored,
511
+ Combat.DirectDescendant,
512
+ Combat.Metadata.Embedded
513
+ >;
514
+
515
+ type OnDeleteDescendantDocumentsArgs = Document.OnDeleteDescendantDocumentsArgs<
516
+ Combat.Stored,
517
+ Combat.DirectDescendant,
518
+ Combat.Metadata.Embedded
519
+ >;
520
+
521
+ /**
522
+ * @deprecated {@link Combat.Database | `Combat.Database`}
523
+ */
13
524
  /* eslint-disable @typescript-eslint/no-empty-object-type */
14
525
  interface DatabaseOperations
15
- extends DocumentDatabaseOperations<
16
- Combat,
526
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
527
+ extends Document.Database.Operations<
528
+ Combat.Implementation,
17
529
  {},
18
530
  { direction: -1 | 1; worldTime: { delta: number }; turnEvents: boolean },
19
531
  {}
20
532
  > {}
21
533
  /* eslint-enable @typescript-eslint/no-empty-object-type */
22
534
 
23
- // Helpful aliases
24
- type TypeNames = BaseCombat.TypeNames;
25
- type ConstructorData = BaseCombat.ConstructorData;
26
- type UpdateData = BaseCombat.UpdateData;
27
- type Schema = BaseCombat.Schema;
28
- type Source = BaseCombat.Source;
535
+ /**
536
+ * @deprecated {@link Combat.SubType | `Combat.SubType`}
537
+ */
538
+ type TypeNames = Combat.SubType;
539
+
540
+ /**
541
+ * @deprecated {@link Combat.CreateData | `Combat.CreateData`}
542
+ */
543
+ interface ConstructorData extends Combat.CreateData {}
29
544
 
30
- interface InitiativeOptions {
545
+ /**
546
+ * @deprecated {@link Combat.implementation | `Combat.ImplementationClass`}
547
+ */
548
+ type ConfiguredClass = ImplementationClass;
549
+
550
+ /**
551
+ * @deprecated {@link Combat.Implementation | `Combat.Implementation`}
552
+ */
553
+ type ConfiguredInstance = Implementation;
554
+
555
+ /** @internal */
556
+ type _InitiativeOptions = NullishProps<{
31
557
  /**
32
558
  * A non-default initiative formula to roll. Otherwise the system default is used.
33
559
  * @defaultValue `null`
34
560
  */
35
- formula?: string | null;
561
+ formula: string;
36
562
 
37
563
  /**
38
564
  * Update the Combat turn after adding new initiative scores to keep the turn on the same Combatant.
39
565
  * @defaultValue `true`
40
566
  */
41
- updateTurn?: boolean;
42
-
43
- /**
44
- * Additional options with which to customize created Chat Messages
45
- * @defaultValue `{}`
46
- */
47
- messageOptions?: foundry.documents.BaseChatMessage.ConstructorData;
48
- }
567
+ updateTurn: boolean;
568
+ }> &
569
+ InexactPartial<{
570
+ /**
571
+ * Additional options with which to customize created Chat Messages
572
+ * @defaultValue `{}`
573
+ * @remarks Can't be `null` as it only has a parameter default
574
+ */
575
+ messageOptions: ChatMessage.CreateData;
576
+ }>;
577
+
578
+ interface InitiativeOptions extends _InitiativeOptions {}
49
579
 
50
580
  interface HistoryData {
51
581
  round: number | null;
@@ -60,53 +590,59 @@ declare global {
60
590
  /**
61
591
  * The client-side Combat document which extends the common BaseCombat model.
62
592
  *
63
- * @see {@link Combats} The world-level collection of Combat documents
64
- * @see {@link Combatant} The Combatant embedded document which exists within a Combat document
65
- * @see {@link CombatConfig} The Combat configuration application
593
+ * @see {@link Combats | `Combats`} The world-level collection of Combat documents
594
+ * @see {@link Combatant | `Combatant`} The Combatant embedded document which exists within a Combat document
595
+ * @see {@link CombatConfig | `CombatConfig`} The Combat configuration application
66
596
  */
67
- class Combat extends ClientDocumentMixin(foundry.documents.BaseCombat) {
68
- static override metadata: Combat.Metadata;
69
-
597
+ class Combat<out SubType extends Combat.SubType = Combat.SubType> extends ClientDocumentMixin(
598
+ foundry.documents.BaseCombat,
599
+ )<SubType> {
70
600
  /**
71
- * @param data - Initial data provided to construct the Combat document
601
+ * @param data - Initial data from which to construct the `Combat`
602
+ * @param context - Construction context options
72
603
  */
73
- // Note(LukeAbby): TODO, this constructor just copies from the parent. Should this just be removed?
74
- // constructor(
75
- // data?: ConstructorParameters<typeof foundry.documents.BaseCombat>[0],
76
- // context?: ConstructorParameters<typeof foundry.documents.BaseCombat>[1],
77
- // );
604
+ constructor(...args: Combat.ConstructorArgs);
78
605
 
79
606
  /** Track the sorted turn order of this combat encounter */
80
- turns: Combatant.ConfiguredInstance[];
607
+ turns: Combatant.Implementation[];
81
608
 
82
609
  /** Record the current round, turn, and tokenId to understand changes in the encounter state */
83
610
  current: Combat.HistoryData;
84
611
 
85
- /** Track the previous round, turn, and tokenId to understand changes in the encounter state */
86
- previous: Combat.HistoryData;
612
+ /**
613
+ * Track the previous round, turn, and tokenId to understand changes in the encounter state
614
+ * @remarks Only `undefined` prior to first {@link Combat._onUpdate | `Combat#_onUpdate`} or {@link Combat.setupTurns | `Combat#setupTurns`} (which is called in
615
+ * {@link Combat.prepareDerivedData | `Combat#prepareDerivedData`}) call
616
+ */
617
+ previous: Combat.HistoryData | undefined;
87
618
 
88
619
  /**
89
620
  * The configuration setting used to record Combat preferences
90
- * Default: `"combatTrackerConfig"`
621
+ * @defaultValue `"combatTrackerConfig"`
622
+ * @privateRemarks Right now it doesn't make sense to make this not a literal, as `type CONFIG_SETTING` is static, so changing this would
623
+ * just make {@link Combat.settings | `Combat#settings`} and {@linkcode CombatEncounters.settings} incorrect
91
624
  */
92
- static CONFIG_SETTING: string;
625
+ // TODO: Make the setting name configurable?
626
+ static CONFIG_SETTING: "combatTrackerConfig";
93
627
 
94
628
  /** Get the Combatant who has the current turn. */
95
- get combatant(): this["turns"][number] | undefined;
629
+ get combatant(): Combatant.Implementation | undefined;
96
630
 
97
631
  /**
98
632
  * Get the Combatant who has the next turn.
99
633
  */
100
- get nextCombatant(): Combatant.ConfiguredInstance | undefined;
634
+ get nextCombatant(): Combatant.Implementation | undefined;
101
635
 
102
636
  /** Return the object of settings which modify the Combat Tracker behavior */
103
637
  // Type is copied here to avoid recursion issue
638
+ // TODO: Make the setting name configurable?
104
639
  get settings(): ClientSettings.SettingInitializedType<"core", Combat.CONFIG_SETTING>;
105
640
 
106
641
  /** Has this combat encounter been started? */
107
642
  get started(): boolean;
108
643
 
109
- get visible(): true;
644
+ /** @remarks Foundry's implementation in {@linkcode Combat} always returns `true` */
645
+ override get visible(): boolean;
110
646
 
111
647
  /** Is this combat active in the current scene? */
112
648
  get isActive(): boolean;
@@ -116,8 +652,9 @@ declare global {
116
652
  * Deactivate all other Combat encounters within the viewed Scene and set this one as active
117
653
  * @param options - Additional context to customize the update workflow
118
654
  */
119
- activate(options?: Document.OnUpdateOptions<"Combat">): Promise<Combat.ConfiguredInstance[]>;
655
+ activate(options?: Combat.Database.UpdateOperation): Promise<Combat.Implementation[]>;
120
656
 
657
+ /** @remarks Calls {@link Combat.setupTurns | `Combat#setupTurns`} if there is at least one Combatant and `this.turns` is empty */
121
658
  override prepareDerivedData(): void;
122
659
 
123
660
  /**
@@ -125,58 +662,55 @@ declare global {
125
662
  * @param token - A Token ID or a TokenDocument instance
126
663
  * @returns An array of Combatants which represent the Token.
127
664
  */
128
- getCombatantsByToken(token: string | TokenDocument): Combatant.ConfiguredInstance[];
665
+ getCombatantsByToken(token: string | TokenDocument.Implementation): Combatant.Implementation[];
129
666
 
130
667
  /**
131
668
  * Get a Combatant that represents the given Actor or Actor ID.
132
669
  * @param actorOrId - An Actor ID or an Actor instance.
133
670
  */
134
- getCombatantsByActor(actorOrId: string | Actor): Combatant.ConfiguredInstance[];
671
+ getCombatantsByActor(actorOrId: string | Actor.Implementation): Combatant.Implementation[];
135
672
 
136
673
  /** Begin the combat encounter, advancing to round 1 and turn 1 */
137
- startCombat(): Promise<this>;
674
+ startCombat(): Promise<this | undefined>;
138
675
 
139
676
  /** Advance the combat to the next round */
140
- nextRound(): Promise<this>;
677
+ nextRound(): Promise<this | undefined>;
141
678
 
142
679
  /** Rewind the combat to the previous round */
143
- previousRound(): Promise<this>;
680
+ previousRound(): Promise<this | undefined>;
144
681
 
145
682
  /** Advance the combat to the next turn */
146
- nextTurn(): Promise<this>;
683
+ nextTurn(): Promise<this | undefined>;
147
684
 
148
685
  /** Rewind the combat to the previous turn */
149
- previousTurn(): Promise<this>;
686
+ previousTurn(): Promise<this | undefined>;
150
687
 
151
688
  /** Display a dialog querying the GM whether they wish to end the combat encounter and empty the tracker */
152
- endCombat(): Promise<this>;
689
+ endCombat(): Promise<this | undefined>;
153
690
 
154
691
  /** Toggle whether this combat is linked to the scene or globally available. */
155
- toggleSceneLink(): Promise<this>;
692
+ toggleSceneLink(): Promise<this | undefined>;
156
693
 
157
694
  /** Reset all combatant initiative scores, setting the turn back to zero */
158
- resetAll(): Promise<this>;
695
+ resetAll(): Promise<this | undefined>;
159
696
 
160
697
  /**
161
698
  * Roll initiative for one or multiple Combatants within the Combat document
162
699
  * @param ids - A Combatant id or Array of ids for which to roll
163
- * @param options - Additional options which modify how initiative rolls are created or presented.
164
- * default `{}`
700
+ * @param options - Additional options which modify how initiative rolls are created or presented. (default: `{}`)
165
701
  * @returns A promise which resolves to the updated Combat document once updates are complete.
166
702
  */
167
703
  rollInitiative(ids: string | string[], options?: Combat.InitiativeOptions): Promise<this>;
168
704
 
169
705
  /**
170
706
  * Roll initiative for all combatants which have not already rolled
171
- * @param options - Additional options forwarded to the Combat.rollInitiative method
172
- * default `{}`
707
+ * @param options - Additional options forwarded to the Combat.rollInitiative method (default: `{}`)
173
708
  */
174
709
  rollAll(options?: Combat.InitiativeOptions): Promise<this>;
175
710
 
176
711
  /**
177
712
  * Roll initiative for all non-player actors who have not already rolled
178
- * @param options - Additional options forwarded to the Combat.rollInitiative method
179
- * default `{}`
713
+ * @param options - Additional options forwarded to the Combat.rollInitiative method (default: `{}`)
180
714
  */
181
715
  rollNPC(options?: Combat.InitiativeOptions): Promise<this>;
182
716
 
@@ -189,13 +723,13 @@ declare global {
189
723
  setInitiative(id: string, value: number): Promise<void>;
190
724
 
191
725
  /** Return the Array of combatants sorted into initiative order, breaking ties alphabetically by name. */
192
- setupTurns(): this["turns"];
726
+ setupTurns(): Combatant.Implementation[];
193
727
 
194
728
  /**
195
729
  * Debounce changes to the composition of the Combat encounter to de-duplicate multiple concurrent Combatant changes.
196
730
  * If this is the currently viewed encounter, re-render the CombatTracker application.
197
731
  */
198
- debounceSetup: () => ReturnType<typeof foundry.utils.debounce>;
732
+ debounceSetup: () => void;
199
733
 
200
734
  /**
201
735
  * Update active effect durations for all actors present in this Combat encounter.
@@ -204,65 +738,89 @@ declare global {
204
738
 
205
739
  /**
206
740
  * Loads the registered Combat Theme (if any) and plays the requested type of sound.
207
-
208
- * If multiple exist for that type, one is chosen at random.
741
+ * If multiple exist for that type, one is chosen at random.
209
742
  * @param announcement - The announcement that should be played: "startEncounter", "nextUp", or "yourTurn".
210
743
  */
211
- protected _playCombatSound(announcement: foundry.CONST.COMBAT_ANNOUNCEMENTS): void;
744
+ protected _playCombatSound(announcement: CONST.COMBAT_ANNOUNCEMENTS): void;
212
745
 
213
746
  /**
214
747
  * Define how the array of Combatants is sorted in the displayed list of the tracker.
215
748
  * This method can be overridden by a system or module which needs to display combatants in an alternative order.
216
- * By default sort by initiative, next falling back to name, lastly tie-breaking by combatant id.
217
- * @internal
749
+ * The default sorting rules sort in descending order of initiative using combatant IDs for tiebreakers.
750
+ * @param a - Some combatant
751
+ * @param b - Some other combatant
218
752
  */
219
- protected _sortCombatants(a: Combatant.ConfiguredInstance, b: Combatant.ConfiguredInstance): number;
753
+ protected _sortCombatants(a: Combatant.Implementation, b: Combatant.Implementation): number;
220
754
 
221
755
  /**
222
756
  * Refresh the Token HUD under certain circumstances.
223
757
  * @param documents - A list of Combatant documents that were added or removed.
224
758
  */
225
- protected _refreshTokenHUD(documents: Array<Combatant>): void;
759
+ protected _refreshTokenHUD(documents: Combatant.Implementation[]): void;
760
+
761
+ // _onCreate, _onUpdate, and _onDelete are all overridden but with no signature changes from BaseCombat.
226
762
 
227
763
  /**
228
- * @privateRemarks _onCreate, _onUpdate, and _onDelete are all overridden but with no signature changes.
229
- * For type simplicity they are left off. These methods historically have been the source of a large amount of computation from tsc.
764
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
765
+ * this method must be overridden like so:
766
+ * ```typescript
767
+ * class GurpsCombat extends Combat {
768
+ * protected override _onCreateDescendantDocuments(...args: Combat.OnCreateDescendantDocumentsArgs) {
769
+ * super._onCreateDescendantDocuments(...args);
770
+ *
771
+ * const [parent, collection, documents, data, options, userId] = args;
772
+ * if (collection === "combatants") {
773
+ * options; // Will be narrowed.
774
+ * }
775
+ * }
776
+ * }
777
+ * ```
230
778
  */
779
+ protected override _onCreateDescendantDocuments(...args: Combat.OnCreateDescendantDocumentsArgs): void;
231
780
 
232
- protected override _onCreateDescendantDocuments(
233
- parent: ClientDocument,
234
- collection: string,
235
- documents: ClientDocument[],
236
- result: unknown[],
237
- options: Document.OnCreateOptions<"Combatant"> & InexactPartial<{ combatTurn: number; turnEvents: boolean }>,
238
- userId: string,
239
- ): void;
240
-
241
- protected override _onUpdateDescendantDocuments(
242
- parent: ClientDocument,
243
- collection: string,
244
- documents: ClientDocument[],
245
- changes: unknown[],
246
- options: Document.OnUpdateOptions<"Combatant"> & InexactPartial<{ combatTurn: number; turnEvents: boolean }>,
247
- userId: string,
248
- ): void;
781
+ /**
782
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
783
+ * this method must be overridden like so:
784
+ * ```typescript
785
+ * class Ptr2eCombat extends Combat {
786
+ * protected override _onUpdateDescendantDocuments(...args: Combat.OnUpdateDescendantDocumentsArgs) {
787
+ * super._onUpdateDescendantDocuments(...args);
788
+ *
789
+ * const [parent, collection, documents, changes, options, userId] = args;
790
+ * if (collection === "combatants") {
791
+ * options; // Will be narrowed.
792
+ * }
793
+ * }
794
+ * }
795
+ * ```
796
+ */
797
+ protected override _onUpdateDescendantDocuments(...args: Combat.OnUpdateDescendantDocumentsArgs): void;
249
798
 
250
- protected override _onDeleteDescendantDocuments(
251
- parent: ClientDocument,
252
- collection: string,
253
- documents: ClientDocument[],
254
- ids: string,
255
- options: Document.OnDeleteOptions<"Combatant"> & InexactPartial<{ combatTurn: number; turnEvents: boolean }>,
256
- userId: string,
257
- ): void;
799
+ /**
800
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
801
+ * this method must be overridden like so:
802
+ * ```typescript
803
+ * class BladesCombat extends Combat {
804
+ * protected override _onDeleteDescendantDocuments(...args: Combat.OnUpdateDescendantDocuments) {
805
+ * super._onDeleteDescendantDocuments(...args);
806
+ *
807
+ * const [parent, collection, documents, ids, options, userId] = args;
808
+ * if (collection === "combatants") {
809
+ * options; // Will be narrowed.
810
+ * }
811
+ * }
812
+ * }
813
+ * ```
814
+ */
815
+ protected override _onDeleteDescendantDocuments(...args: Combat.OnDeleteDescendantDocumentsArgs): void;
258
816
 
259
817
  #onModifyCombatants();
260
818
 
261
819
  /**
262
820
  * Get the current history state of the Combat encounter.
263
- * @param combatant - The new active combatant
821
+ * @param combatant - The new active combatant (default: `this.combatant`)
264
822
  */
265
- protected _getCurrentState(combatant: Combatant): Combat.HistoryData;
823
+ protected _getCurrentState(combatant?: Combatant.Implementation): Combat.HistoryData;
266
824
 
267
825
  /**
268
826
  * Manage the execution of Combat lifecycle events.
@@ -272,9 +830,8 @@ declare global {
272
830
  * 3. Begin Round
273
831
  * 4. Begin Turn
274
832
  * Each lifecycle event is an async method, and each is awaited before proceeding.
275
- * @param adjustedTurn - Optionally, an adjusted turn to commit to the Combat.
276
833
  */
277
- protected _manageTurnEvents(adjustedTurn: number): Promise<void>;
834
+ protected _manageTurnEvents(): Promise<void>;
278
835
 
279
836
  /**
280
837
  * A workflow that occurs at the end of each Combat Turn.
@@ -283,7 +840,7 @@ declare global {
283
840
  * This method only executes for one designated GM user. If no GM users are present this method will not be called.
284
841
  * @param combatant - The Combatant whose turn just ended
285
842
  */
286
- protected _onEndTurn(combatant: Combatant): Promise<void>;
843
+ protected _onEndTurn(combatant: Combatant.Implementation): Promise<void>;
287
844
 
288
845
  /**
289
846
  * A workflow that occurs at the end of each Combat Round.
@@ -308,21 +865,114 @@ declare global {
308
865
  * This method only executes for one designated GM user. If no GM users are present this method will not be called.
309
866
  * @param combatant - The Combatant whose turn just started
310
867
  */
311
- protected _onStartTurn(combatant: Combatant): Promise<void>;
868
+ protected _onStartTurn(combatant: Combatant.Implementation): Promise<void>;
312
869
 
313
870
  /**
314
- * @deprecated Since v11 until v13. Use {@link Combat#updateCombatantActors} instead.
871
+ * @deprecated Since v11 until v13.
872
+ * @remarks "`Combat#updateEffectDurations` is renamed to {@link Combat.updateCombatantActors | `Combat#updateCombatantActors`}"
315
873
  */
316
874
  updateEffectDurations(): void;
317
875
 
318
876
  /**
319
- * @deprecated Since v12. Use {@link Combat#getCombatantsByActor} instead.
877
+ * @deprecated Since v12, no stated end
878
+ * @remarks Foundry provides no deprecation warning; use {@link Combat.getCombatantsByActor | `Combat#getCombatantsByActor`} instead.
879
+ */
880
+ getCombatantByActor(actor: string | Actor.Implementation): Combatant.Implementation | null;
881
+
882
+ /**
883
+ * @deprecated Since v12, no stated end
884
+ * @remarks Foundry provides no deprecation warning; use {@link Combat.getCombatantsByActor | `Combat#getCombatantsByActor`} instead.
885
+ */
886
+ getCombatantByToken(token: string | Token.Object): Combatant.Implementation | null;
887
+
888
+ /*
889
+ * After this point these are not really overridden methods.
890
+ * They are here because Foundry's documents are complex and have lots of edge cases.
891
+ * There are DRY ways of representing this but this ends up being harder to understand
892
+ * for end users extending these functions, especially for static methods. There are also a
893
+ * number of methods that don't make sense to call directly on `Document` like `createDocuments`,
894
+ * as there is no data that can safely construct every possible document. Finally keeping definitions
895
+ * separate like this helps against circularities.
896
+ */
897
+
898
+ // ClientDocument overrides
899
+
900
+ /**
901
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
902
+ * this method must be overridden like so:
903
+ * ```typescript
904
+ * class SwadeCombat extends Combat {
905
+ * protected override _preCreateDescendantDocuments(...args: Combat.PreCreateDescendantDocumentsArgs) {
906
+ * super._preCreateDescendantDocuments(...args);
907
+ *
908
+ * const [parent, collection, data, options, userId] = args;
909
+ * if (collection === "combatants") {
910
+ * options; // Will be narrowed.
911
+ * }
912
+ * }
913
+ * }
914
+ * ```
320
915
  */
321
- getCombatantByActor(actor: Actor): Combatant[];
916
+ protected override _preCreateDescendantDocuments(...args: Combat.PreCreateDescendantDocumentsArgs): void;
322
917
 
323
918
  /**
324
- * @deprecated Since v12. Use {@link Combat#getCombatantsByActor} instead.
919
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
920
+ * this method must be overridden like so:
921
+ * ```typescript
922
+ * class LancerCombat extends Combat {
923
+ * protected override _preUpdateDescendantDocuments(...args: Combat.OnUpdateDescendantDocuments) {
924
+ * super._preUpdateDescendantDocuments(...args);
925
+ *
926
+ * const [parent, collection, changes, options, userId] = args;
927
+ * if (collection === "combatants") {
928
+ * options; // Will be narrowed.
929
+ * }
930
+ * }
931
+ * }
932
+ * ```
325
933
  */
326
- getCombatantByToken(token: Token): Combatant[];
934
+ protected override _preUpdateDescendantDocuments(...args: Combat.PreUpdateDescendantDocumentsArgs): void;
935
+
936
+ /**
937
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
938
+ * this method must be overridden like so:
939
+ * ```typescript
940
+ * class KultCombat extends Combat {
941
+ * protected override _preDeleteDescendantDocuments(...args: Combat.PreDeleteDescendantDocumentsArgs) {
942
+ * super._preDeleteDescendantDocuments(...args);
943
+ *
944
+ * const [parent, collection, ids, options, userId] = args;
945
+ * if (collection === "combatants") {
946
+ * options; // Will be narrowed.
947
+ * }
948
+ * }
949
+ * }
950
+ * ```
951
+ */
952
+ protected override _preDeleteDescendantDocuments(...args: Combat.PreDeleteDescendantDocumentsArgs): void;
953
+
954
+ // context: not null (destructured)
955
+ static override defaultName(context?: Document.DefaultNameContext<"Combat", Combat.Parent>): string;
956
+
957
+ // data: not null (parameter default only), context: not null (destructured)
958
+ static override createDialog(
959
+ data?: Document.CreateDialogData<Combat.CreateData>,
960
+ context?: Document.CreateDialogContext<"Combat", Combat.Parent>,
961
+ ): Promise<Combat.Stored | null | undefined>;
962
+
963
+ // options: not null (parameter default only)
964
+ static override fromDropData(
965
+ data: Document.DropData<Combat.Implementation>,
966
+ options?: AnyObject,
967
+ ): Promise<Combat.Implementation | undefined>;
968
+
969
+ static override fromImport(
970
+ source: Combat.Source,
971
+ context?: Document.FromImportContext<Combat.Parent> | null,
972
+ ): Promise<Combat.Implementation>;
973
+
974
+ override _onClickDocumentLink(event: MouseEvent): ClientDocument.OnClickDocumentLinkReturn;
975
+
976
+ #Combat: true;
327
977
  }
328
978
  }