@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,172 +1,749 @@
1
- import type { DatabaseOperationsFor } from "../../../../types/helperTypes.d.mts";
2
- import type { DeepPartial, InexactPartial } from "../../../../types/utils.d.mts";
3
- import type { fields } from "../../../common/data/module.d.mts";
4
- import type { DocumentDatabaseOperations } from "../../../common/abstract/document.d.mts";
1
+ import type { ConfiguredCards } from "../../../../configuration/index.d.mts";
2
+ import type { AnyObject, InexactPartial, Merge, NullishProps } from "#utils";
3
+ import type { documents } from "../../../client-esm/client.d.mts";
5
4
  import type Document 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";
6
7
  import type BaseCards from "../../../common/documents/cards.d.mts";
7
8
 
8
9
  declare global {
9
10
  namespace Cards {
10
- type Metadata = Document.MetadataFor<Cards>;
11
+ /**
12
+ * The document's name.
13
+ */
14
+ type Name = "Cards";
11
15
 
12
- type ConfiguredClass = Document.ConfiguredClassForName<"Cards">;
13
- type ConfiguredInstance = Document.ConfiguredInstanceForName<"Cards">;
16
+ /**
17
+ * The arguments to construct the document.
18
+ */
19
+ type ConstructorArgs = Document.ConstructorParameters<CreateData, Parent>;
14
20
 
15
- interface DatabaseOperations extends DocumentDatabaseOperations<Cards> {}
21
+ /**
22
+ * The documents embedded within `Cards`.
23
+ */
24
+ type Hierarchy = Readonly<Document.HierarchyOf<Schema>>;
16
25
 
17
- // Helpful aliases
18
- type TypeNames = BaseCards.TypeNames;
19
- type ConstructorData = BaseCards.ConstructorData;
20
- type UpdateData = BaseCards.UpdateData;
21
- type Schema = BaseCards.Schema;
22
- type Source = BaseCards.Source;
26
+ /**
27
+ * The implementation of the `Cards` document instance configured through `CONFIG.Cards.documentClass` in Foundry and
28
+ * {@link DocumentClassConfig | `DocumentClassConfig`} or {@link ConfiguredCards | `fvtt-types/configuration/ConfiguredCards`} in fvtt-types.
29
+ */
30
+ type Implementation = Document.ImplementationFor<Name>;
23
31
 
24
- type CardsAction = "deal" | "pass";
32
+ /**
33
+ * The implementation of the `Cards` document configured through `CONFIG.Cards.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: "Cards";
47
+ collection: "cards";
48
+ indexed: true;
49
+ compendiumIndexFields: ["_id", "name", "description", "img", "type", "sort", "folder"];
50
+ embedded: Metadata.Embedded;
51
+ hasTypeData: true;
52
+ label: string;
53
+ labelPlural: string;
54
+ coreTypes: ["deck", "hand", "pile"];
55
+ schemaVersion: string;
56
+ }>
57
+ > {}
25
58
 
26
- interface BaseOperationOptions {
59
+ namespace Metadata {
27
60
  /**
28
- * Create a ChatMessage which notifies that this action has occurred
29
- * @defaultValue `true`
61
+ * The embedded metadata
30
62
  */
31
- chatNotification: boolean | undefined;
63
+ interface Embedded {
64
+ Card: "cards";
65
+ }
32
66
  }
33
67
 
34
- interface DealOptions extends BaseOperationOptions {
68
+ /**
69
+ * Allowed subtypes of `Cards`. This is configured through various methods. Modern Foundry
70
+ * recommends registering using [Data Models](https://foundryvtt.com/article/system-data-models/)
71
+ * under {@link CONFIG.Cards.dataModels | `CONFIG.Cards.dataModels`}. This corresponds to
72
+ * fvtt-type's {@link DataModelConfig | `DataModelConfig`}.
73
+ *
74
+ * Subtypes can also be registered through a `template.json` though this is discouraged.
75
+ * The corresponding fvtt-type configs are {@link SourceConfig | `SourceConfig`} and
76
+ * {@link DataConfig | `DataConfig`}.
77
+ */
78
+ type SubType = Game.Model.TypeNames<"Cards">;
79
+
80
+ /**
81
+ * `ConfiguredSubTypes` represents the subtypes a user explicitly registered. This excludes
82
+ * subtypes like the Foundry builtin subtype `"base"` and the catch-all subtype for arbitrary
83
+ * module subtypes `${string}.${string}`.
84
+ *
85
+ * @see {@link SubType} for more information.
86
+ */
87
+ type ConfiguredSubTypes = Document.ConfiguredSubTypesOf<"Cards">;
88
+
89
+ /**
90
+ * `Known` represents the types of `Cards` that a user explicitly registered.
91
+ *
92
+ * @see {@link ConfiguredSubTypes} for more information.
93
+ */
94
+ type Known = Cards.OfType<Cards.ConfiguredSubTypes>;
95
+
96
+ /**
97
+ * `OfType` returns an instance of `Cards` with the corresponding type. This works with both the
98
+ * builtin `Cards` class or a custom subclass if that is set up in
99
+ * {@link ConfiguredCards | `fvtt-types/configuration/ConfiguredCards`}.
100
+ */
101
+ // eslint-disable-next-line @typescript-eslint/no-restricted-types
102
+ type OfType<Type extends SubType> = Document.Internal.OfType<ConfiguredCards<Type>, Cards<Type>>;
103
+
104
+ /**
105
+ * `SystemOfType` returns the system property for a specific `Cards` subtype.
106
+ */
107
+ type SystemOfType<Type extends SubType> = Document.Internal.SystemOfType<_SystemMap, Type>;
108
+
109
+ /**
110
+ * @internal
111
+ */
112
+ interface _SystemMap extends Document.Internal.SystemMap<"Cards"> {}
113
+
114
+ /**
115
+ * A document's parent is something that can contain it.
116
+ * For example an `Item` can be contained by an `Actor` which makes `Actor` one of its possible parents.
117
+ */
118
+ type Parent = null;
119
+
120
+ /**
121
+ * A document's direct descendants are documents that are contained directly within its schema.
122
+ * This is a union of all such instances, or never if the document doesn't have any descendants.
123
+ */
124
+ type DirectDescendant = Card.Stored;
125
+
126
+ /**
127
+ * A document's direct descendants are documents that are contained directly within its schema.
128
+ * This is a union of all such classes, or never if the document doesn't have any descendants.
129
+ */
130
+ type DirectDescendantClass = Card.ImplementationClass;
131
+
132
+ /**
133
+ * A document's descendants are any documents that are contained within, either within its schema
134
+ * or its descendant's schemas.
135
+ * This is a union of all such instances, or never if the document doesn't have any descendants.
136
+ */
137
+ type Descendant = DirectDescendant;
138
+
139
+ /**
140
+ * A document's descendants are any child documents, grandchild documents, etc.
141
+ * This is a union of all classes, or never if the document doesn't have any descendants.
142
+ */
143
+ type DescendantClass = DirectDescendantClass;
144
+
145
+ /**
146
+ * Types of `CompendiumCollection` this document might be contained in.
147
+ * Note that `this.pack` will always return a string; this is the type for `game.packs.get(this.pack)`
148
+ */
149
+ // Note: Takes any document in the heritage chain (i.e. itself or any parent, transitive or not) that can be contained in a compendium.
150
+ type Pack = CompendiumCollection.ForDocument<"Cards">;
151
+
152
+ /**
153
+ * An embedded document is a document contained in another.
154
+ * For example an `Item` can be contained by an `Actor` which means `Item` can be embedded in `Actor`.
155
+ *
156
+ * If this is `never` it is because there are no embeddable documents (or there's a bug!).
157
+ */
158
+ type Embedded = Document.ImplementationFor<Embedded.Name>;
159
+
160
+ namespace Embedded {
35
161
  /**
36
- * How to draw, a value from CONST.CARD_DRAW_MODES
37
- * @defaultValue `foundry.CONST.CARD_DRAW_MODES.FIRST`
162
+ * An embedded document is a document contained in another.
163
+ * For example an `Item` can be contained by an `Actor` which means `Item` can be embedded in `Actor`.
164
+ *
165
+ * If this is `never` it is because there are no embeddable documents (or there's a bug!).
38
166
  */
39
- how: foundry.CONST.CARD_DRAW_MODES;
167
+ type Name = keyof Metadata.Embedded;
40
168
 
41
169
  /**
42
- * Modifications to make to each Card as part of the deal operation,
43
- * for example the displayed face
44
- * @defaultValue `{}`
170
+ * Gets the collection name for an embedded document.
45
171
  */
46
- updateData: DeepPartial<Cards["_source"]>;
172
+ type CollectionNameOf<CollectionName extends Embedded.CollectionName> = Document.Embedded.CollectionNameFor<
173
+ Metadata.Embedded,
174
+ CollectionName
175
+ >;
47
176
 
48
177
  /**
49
- * The name of the action being performed, used as part of the dispatched Hook event
50
- * @defaultValue `"deal"`
178
+ * Gets the collection document for an embedded document.
179
+ */
180
+ // TODO(LukeAbby): There's a circularity. Should be `Document.Embedded.CollectionDocumentFor<Metadata.Embedded, CollectionName>`
181
+ // eslint-disable-next-line @typescript-eslint/no-unused-vars
182
+ type DocumentFor<CollectionName extends Embedded.CollectionName> = Document.Any;
183
+
184
+ /**
185
+ * Gets the collection for an embedded document.
186
+ */
187
+ type CollectionFor<CollectionName extends Embedded.CollectionName> = Document.Embedded.CollectionFor<
188
+ // TODO(LukeAbby): This should be `TokenDocument.Implementation` but this causes a circularity.
189
+ Document.Any,
190
+ Metadata.Embedded,
191
+ CollectionName
192
+ >;
193
+
194
+ /**
195
+ * A valid name to refer to a collection embedded in this document. For example an `Actor`
196
+ * has the key `"items"` which contains `Item` instance which would make both `"Item" | "Items"`
197
+ * valid keys (amongst others).
51
198
  */
52
- action: CardsAction;
199
+ type CollectionName = Document.Embedded.CollectionName<Metadata.Embedded>;
53
200
  }
54
201
 
55
- /** Additional context which describes the operation */
56
- interface DealContext {
57
- /** The action name being performed, i.e. "deal", "pass" */
58
- action: CardsAction;
202
+ /**
203
+ * The name of the world or embedded collection this document can find itself in.
204
+ * For example an `Item` is always going to be inside a collection with a key of `items`.
205
+ * This is a fixed string per document type and is primarily useful for {@link ClientDocumentMixin | `Descendant Document Events`}.
206
+ */
207
+ type ParentCollectionName = Metadata["collection"];
59
208
 
60
- /** An array of Card creation operations to be performed in each destination Cards document */
61
- toCreate: Card["_source"][][];
209
+ /**
210
+ * The world collection that contains `Cards`s. Will be `never` if none exists.
211
+ */
212
+ type CollectionClass = CardStacks.ConfiguredClass;
62
213
 
63
- /** Card update operations to be performed in the origin Cards document */
64
- fromUpdate: { _id: string; drawn: true }[];
214
+ /**
215
+ * The world collection that contains `Cards`s. Will be `never` if none exists.
216
+ */
217
+ type Collection = CardStacks.Configured;
65
218
 
66
- /** Card deletion operations to be performed in the origin Cards document */
67
- fromDelete: string[];
68
- }
219
+ /**
220
+ * An instance of `Cards` that comes from the database but failed validation meaning that
221
+ * its `system` and `_source` could theoretically be anything.
222
+ */
223
+ interface Invalid<out SubType extends Cards.SubType = Cards.SubType> extends Document.Invalid<OfType<SubType>> {}
224
+
225
+ /**
226
+ * An instance of `Cards` that comes from the database.
227
+ */
228
+ interface Stored<out SubType extends Cards.SubType = Cards.SubType> extends Document.Stored<OfType<SubType>> {}
229
+
230
+ /**
231
+ * The data put in {@link Cards._source | `Cards#_source`}. This data is what was
232
+ * persisted to the database and therefore it must be valid JSON.
233
+ *
234
+ * For example a {@link fields.SetField | `SetField`} is persisted to the database as an array
235
+ * but initialized as a {@link Set | `Set`}.
236
+ */
237
+ interface Source extends fields.SchemaField.SourceData<Schema> {}
238
+
239
+ /**
240
+ * @deprecated {@link Cards.Source | `Cards.Source`}
241
+ */
242
+ type PersistedData = Source;
243
+
244
+ /**
245
+ * The data necessary to create a document. Used in places like {@link Cards.create | `Cards.create`}
246
+ * and {@link Cards | `new Cards(...)`}.
247
+ *
248
+ * For example a {@link fields.SetField | `SetField`} can accept any {@link Iterable | `Iterable`}
249
+ * with the right values. This means you can pass a `Set` instance, an array of values,
250
+ * a generator, or any other iterable.
251
+ */
252
+ interface CreateData extends fields.SchemaField.CreateData<Schema> {}
253
+
254
+ /**
255
+ * The data after a {@link foundry.abstract.Document | `Document`} has been initialized, for example
256
+ * {@link Cards.name | `Cards#name`}.
257
+ *
258
+ * This is data transformed from {@link Cards.Source | `Cards.Source`} and turned into more
259
+ * convenient runtime data structures. For example a {@link fields.SetField | `SetField`} is
260
+ * persisted to the database as an array of values but at runtime it is a `Set` instance.
261
+ */
262
+ interface InitializedData extends fields.SchemaField.InitializedData<Schema> {}
263
+
264
+ /**
265
+ * The data used to update a document, for example {@link Cards.update | `Cards#update`}.
266
+ * It is a distinct type from {@link Cards.CreateData | `DeepPartial<Cards.CreateData>`} because
267
+ * it has different rules for `null` and `undefined`.
268
+ */
269
+ interface UpdateData extends fields.SchemaField.UpdateData<Schema> {}
270
+
271
+ /**
272
+ * The schema for {@link Cards | `Cards`}. This is the source of truth for how an Cards document
273
+ * must be structured.
274
+ *
275
+ * Foundry uses this schema to validate the structure of the {@link Cards | `Cards`}. For example
276
+ * a {@link fields.StringField | `StringField`} will enforce that the value is a string. More
277
+ * complex fields like {@link fields.SetField | `SetField`} goes through various conversions
278
+ * starting as an array in the database, initialized as a set, and allows updates with any
279
+ * iterable.
280
+ */
281
+ interface Schema extends DataSchema {
282
+ /**
283
+ * The _id which uniquely identifies this stack of Cards document
284
+ * @defaultValue `null`
285
+ */
286
+ _id: fields.DocumentIdField;
287
+
288
+ /** The text name of this stack */
289
+ // FIXME: This field is `required` with no `initial`, so actually required for construction; Currently an AssignmentType override is required to enforce this
290
+ name: fields.StringField<{ required: true; blank: false; label: "CARDS.Name"; textSearch: true }, string>;
69
291
 
70
- interface PassOptions extends BaseOperationOptions {
71
292
  /**
72
- * Modifications to make to each Card as part of the pass operation,
73
- * for example the displayed face
293
+ * The type of this stack, in BaseCards.metadata.types
294
+ * @defaultValue `BaseCards.TYPES[0]`
295
+ */
296
+ // TODO: type is required at construction, no "base" allowed
297
+ type: fields.DocumentTypeField<typeof BaseCards>;
298
+
299
+ /**
300
+ * A text description of this stack
301
+ * @defaultValue `""`
302
+ */
303
+ description: fields.HTMLField<{ label: "CARDS.Description"; textSearch: true }>;
304
+
305
+ /**
306
+ * An image or video which is used to represent the stack of cards
307
+ * @defaultValue `BaseCards.DEFAULT_ICON`
308
+ */
309
+ img: fields.FilePathField<{
310
+ categories: ["IMAGE", "VIDEO"];
311
+ initial: () => typeof BaseCards.DEFAULT_ICON;
312
+ label: "CARDS.Image";
313
+ }>;
314
+
315
+ /**
316
+ * Game system data which is defined by the system template.json model
74
317
  * @defaultValue `{}`
75
318
  */
76
- updateData: DeepPartial<Card["_source"]> | undefined;
319
+ system: fields.TypeDataField<typeof BaseCards>;
77
320
 
78
321
  /**
79
- * The name of the action being performed, used as part of the dispatched Hook event
80
- * @defaultValue `"pass"`
322
+ * A collection of Card documents which currently belong to this stack
323
+ * @defaultValue `[]`
81
324
  */
82
- action: string | undefined;
325
+ cards: fields.EmbeddedCollectionField<typeof documents.BaseCard, Cards.Implementation>;
83
326
 
84
327
  /**
85
- * Create a ChatMessage which notifies that this action has occurred
86
- * @defaultValue `true`
328
+ * The visible width of this stack
329
+ * @defaultValue `null`
87
330
  */
88
- chatNotification: boolean | undefined;
89
- }
331
+ width: fields.NumberField<{ integer: true; positive: true; label: "Width" }>;
90
332
 
91
- interface DrawOptions extends PassOptions {
92
333
  /**
93
- * How to draw, a value from CONST.CARD_DRAW_MODES
94
- * @defaultValue `foundry.CONST.CARD_DRAW_MODES.FIRST`
334
+ * The visible height of this stack
335
+ * @defaultValue `null`
336
+ */
337
+ height: fields.NumberField<{ integer: true; positive: true; label: "Height" }>;
338
+
339
+ /**
340
+ * The angle of rotation of this stack
341
+ * @defaultValue `0`
342
+ */
343
+ rotation: fields.AngleField<{ label: "Rotation" }>;
344
+
345
+ /**
346
+ * Whether or not to publicly display the number of cards in this stack
347
+ * @defaultValue `false`
348
+ */
349
+ displayCount: fields.BooleanField;
350
+
351
+ /**
352
+ * The _id of a Folder which contains this document
353
+ * @defaultValue `null`
354
+ */
355
+ folder: fields.ForeignDocumentField<typeof documents.BaseFolder>;
356
+
357
+ /**
358
+ * The sort order of this stack relative to others in its parent collection
359
+ * @defaultValue `0`
360
+ */
361
+ sort: fields.IntegerSortField;
362
+
363
+ /**
364
+ * An object which configures ownership of this Cards
365
+ * @defaultValue see {@link fields.DocumentOwnershipField | `fields.DocumentOwnershipField`}
95
366
  */
96
- how: foundry.CONST.CARD_DRAW_MODES;
367
+ ownership: fields.DocumentOwnershipField;
97
368
 
98
369
  /**
99
- * Modifications to make to each Card as part of the draw operation,
100
- * for example the displayed face
370
+ * An object of optional key/value flags
101
371
  * @defaultValue `{}`
102
372
  */
103
- updateData: DeepPartial<Card["_source"]>;
373
+ flags: fields.ObjectField.FlagsField<Name>;
374
+
375
+ /**
376
+ * An object of creation and access information
377
+ * @defaultValue see {@link fields.DocumentStatsField | `fields.DocumentStatsField`}
378
+ */
379
+ _stats: fields.DocumentStatsField;
104
380
  }
105
381
 
106
- interface ShuffleOptions extends BaseOperationOptions {
382
+ namespace Database {
383
+ /** Options passed along in Get operations for Cards Documents */
384
+ interface Get extends foundry.abstract.types.DatabaseGetOperation<Cards.Parent> {}
385
+
386
+ /** Options passed along in Create operations for Cards Documents */
387
+ interface Create<Temporary extends boolean | undefined = boolean | undefined>
388
+ extends foundry.abstract.types.DatabaseCreateOperation<Cards.CreateData, Cards.Parent, Temporary> {
389
+ animate?: boolean;
390
+ }
391
+
392
+ /** Options passed along in Delete operations for Cards Documents */
393
+ interface Delete extends foundry.abstract.types.DatabaseDeleteOperation<Cards.Parent> {
394
+ animate?: boolean;
395
+ }
396
+
397
+ /** Options passed along in Update operations for Cards Documents */
398
+ interface Update extends foundry.abstract.types.DatabaseUpdateOperation<Cards.UpdateData, Cards.Parent> {
399
+ animate?: boolean;
400
+ }
401
+
402
+ /** Operation for {@link Cards.createDocuments | `Cards.createDocuments`} */
403
+ interface CreateDocumentsOperation<Temporary extends boolean | undefined>
404
+ extends Document.Database.CreateOperation<Cards.Database.Create<Temporary>> {}
405
+
406
+ /** Operation for {@link Cards.updateDocuments | `Cards.updateDocuments`} */
407
+ interface UpdateDocumentsOperation extends Document.Database.UpdateDocumentsOperation<Cards.Database.Update> {}
408
+
409
+ /** Operation for {@link Cards.deleteDocuments | `Cards.deleteDocuments`} */
410
+ interface DeleteDocumentsOperation extends Document.Database.DeleteDocumentsOperation<Cards.Database.Delete> {}
411
+
412
+ /** Operation for {@link Cards.create | `Cards.create`} */
413
+ interface CreateOperation<Temporary extends boolean | undefined>
414
+ extends Document.Database.CreateOperation<Cards.Database.Create<Temporary>> {}
415
+
416
+ /** Operation for {@link Cards.update | `Cards#update`} */
417
+ interface UpdateOperation extends Document.Database.UpdateOperation<Update> {}
418
+
419
+ interface DeleteOperation extends Document.Database.DeleteOperation<Delete> {}
420
+
421
+ /** Options for {@link Cards.get | `Cards.get`} */
422
+ interface GetOptions extends Document.Database.GetOptions {}
423
+
424
+ /** Options for {@link Cards._preCreate | `Cards#_preCreate`} */
425
+ interface PreCreateOptions extends Document.Database.PreCreateOptions<Create> {}
426
+
427
+ /** Options for {@link Cards._onCreate | `Cards#_onCreate`} */
428
+ interface OnCreateOptions extends Document.Database.CreateOptions<Create> {}
429
+
430
+ /** Operation for {@link Cards._preCreateOperation | `Cards._preCreateOperation`} */
431
+ interface PreCreateOperation extends Document.Database.PreCreateOperationStatic<Cards.Database.Create> {}
432
+
433
+ /** Operation for {@link Cards._onCreateOperation | `Cards#_onCreateOperation`} */
434
+ interface OnCreateOperation extends Cards.Database.Create {}
435
+
436
+ /** Options for {@link Cards._preUpdate | `Cards#_preUpdate`} */
437
+ interface PreUpdateOptions extends Document.Database.PreUpdateOptions<Update> {}
438
+
439
+ /** Options for {@link Cards._onUpdate | `Cards#_onUpdate`} */
440
+ interface OnUpdateOptions extends Document.Database.UpdateOptions<Update> {}
441
+
442
+ /** Operation for {@link Cards._preUpdateOperation | `Cards._preUpdateOperation`} */
443
+ interface PreUpdateOperation extends Cards.Database.Update {}
444
+
445
+ /** Operation for {@link Cards._onUpdateOperation | `Cards._preUpdateOperation`} */
446
+ interface OnUpdateOperation extends Cards.Database.Update {}
447
+
448
+ /** Options for {@link Cards._preDelete | `Cards#_preDelete`} */
449
+ interface PreDeleteOptions extends Document.Database.PreDeleteOperationInstance<Delete> {}
450
+
451
+ /** Options for {@link Cards._onDelete | `Cards#_onDelete`} */
452
+ interface OnDeleteOptions extends Document.Database.DeleteOptions<Delete> {}
453
+
454
+ /** Options for {@link Cards._preDeleteOperation | `Cards#_preDeleteOperation`} */
455
+ interface PreDeleteOperation extends Cards.Database.Delete {}
456
+
457
+ /** Options for {@link Cards._onDeleteOperation | `Cards#_onDeleteOperation`} */
458
+ interface OnDeleteOperation extends Cards.Database.Delete {}
459
+
460
+ /** Context for {@link Cards._onDeleteOperation | `Cards._onDeleteOperation`} */
461
+ interface OnDeleteDocumentsContext extends Document.ModificationContext<Cards.Parent> {}
462
+
463
+ /** Context for {@link Cards._onCreateDocuments | `Cards._onCreateDocuments`} */
464
+ interface OnCreateDocumentsContext extends Document.ModificationContext<Cards.Parent> {}
465
+
466
+ /** Context for {@link Cards._onUpdateDocuments | `Cards._onUpdateDocuments`} */
467
+ interface OnUpdateDocumentsContext extends Document.ModificationContext<Cards.Parent> {}
468
+
107
469
  /**
108
- * Modifications to make to each Card as part of the shuffle operation,
109
- * for example the displayed face
110
- * @defaultValue `{}`
470
+ * Options for {@link Cards._preCreateDescendantDocuments | `Cards#_preCreateDescendantDocuments`}
471
+ * and {@link Cards._onCreateDescendantDocuments | `Cards#_onCreateDescendantDocuments`}
111
472
  */
112
- updateData: DeepPartial<Card["_source"]>;
473
+ interface CreateOptions extends Document.Database.CreateOptions<Cards.Database.Create> {}
113
474
 
114
- /** Create a ChatMessage which notifies that this action has occurred
115
- * @defaultValue `true`
475
+ /**
476
+ * Options for {@link Cards._preUpdateDescendantDocuments | `Cards#_preUpdateDescendantDocuments`}
477
+ * and {@link Cards._onUpdateDescendantDocuments | `Cards#_onUpdateDescendantDocuments`}
116
478
  */
117
- chatNotification: boolean | undefined;
479
+ interface UpdateOptions extends Document.Database.UpdateOptions<Cards.Database.Update> {}
480
+
481
+ /**
482
+ * Options for {@link Cards._preDeleteDescendantDocuments | `Cards#_preDeleteDescendantDocuments`}
483
+ * and {@link Cards._onDeleteDescendantDocuments | `Cards#_onDeleteDescendantDocuments`}
484
+ */
485
+ interface DeleteOptions extends Document.Database.DeleteOptions<Cards.Database.Delete> {}
118
486
  }
119
487
 
120
- /** Options which modify the reset operation */
121
- interface ResetOptions extends BaseOperationOptions {
488
+ /**
489
+ * The flags that are available for this document in the form `{ [scope: string]: { [key: string]: unknown } }`.
490
+ */
491
+ interface Flags extends Document.ConfiguredFlagsForName<Name> {}
492
+
493
+ namespace Flags {
122
494
  /**
123
- * Modifications to make to each Card as part of the reset operation,
124
- * for example the displayed face
125
- * @defaultValue `{}`
495
+ * The valid scopes for the flags on this document e.g. `"core"` or `"dnd5e"`.
496
+ */
497
+ type Scope = Document.FlagKeyOf<Flags>;
498
+
499
+ /**
500
+ * The valid keys for a certain scope for example if the scope is "core" then a valid key may be `"sheetLock"` or `"viewMode"`.
501
+ */
502
+ type Key<Scope extends Flags.Scope> = Document.FlagKeyOf<Document.FlagGetKey<Flags, Scope>>;
503
+
504
+ /**
505
+ * Gets the type of a particular flag given a `Scope` and a `Key`.
126
506
  */
127
- updateData: DeepPartial<Card["_source"]>;
507
+ type Get<Scope extends Flags.Scope, Key extends Flags.Key<Scope>> = Document.GetFlag<Name, Scope, Key>;
128
508
  }
129
509
 
130
- /** Additional context which describes the operation. */
131
- interface ReturnContext {
510
+ type PreCreateDescendantDocumentsArgs = Document.PreCreateDescendantDocumentsArgs<
511
+ Cards.Stored,
512
+ Cards.DirectDescendant,
513
+ Cards.Metadata.Embedded
514
+ >;
515
+
516
+ type OnCreateDescendantDocumentsArgs = Document.OnCreateDescendantDocumentsArgs<
517
+ Cards.Stored,
518
+ Cards.DirectDescendant,
519
+ Cards.Metadata.Embedded
520
+ >;
521
+
522
+ type PreUpdateDescendantDocumentsArgs = Document.PreUpdateDescendantDocumentsArgs<
523
+ Cards.Stored,
524
+ Cards.DirectDescendant,
525
+ Cards.Metadata.Embedded
526
+ >;
527
+
528
+ type OnUpdateDescendantDocumentsArgs = Document.OnUpdateDescendantDocumentsArgs<
529
+ Cards.Stored,
530
+ Cards.DirectDescendant,
531
+ Cards.Metadata.Embedded
532
+ >;
533
+
534
+ type PreDeleteDescendantDocumentsArgs = Document.PreDeleteDescendantDocumentsArgs<
535
+ Cards.Stored,
536
+ Cards.DirectDescendant,
537
+ Cards.Metadata.Embedded
538
+ >;
539
+
540
+ type OnDeleteDescendantDocumentsArgs = Document.OnDeleteDescendantDocumentsArgs<
541
+ Cards.Stored,
542
+ Cards.DirectDescendant,
543
+ Cards.Metadata.Embedded
544
+ >;
545
+
546
+ /**
547
+ * @remarks Passing anything else errors downstream when a lookup table lacking the provided key causes
548
+ * {@link Cards._postChatNotification | `Cards#_postChatNotification`} to call {@link Localization.format | `game.i18n.format`}
549
+ * with an `undefined` first argument
550
+ */
551
+ type DealAction = "deal" | "pass";
552
+
553
+ /**
554
+ * @remarks Passing anything else errors downstream when a lookup table lacking the provided key causes
555
+ * {@link Cards._postChatNotification | `Cards#_postChatNotification`} to call {@link Localization.format | `game.i18n.format`}
556
+ * with an `undefined` first argument
557
+ */
558
+ type PassAction = "pass" | "play" | "draw" | "discard";
559
+
560
+ /** @internal */
561
+ type _ChatNotificationOption = NullishProps<{
132
562
  /**
133
- * A mapping of Card deck IDs to the update operations that
134
- * will be performed on them.
563
+ * Create a ChatMessage which notifies that this action has occurred
564
+ * @defaultValue `true`
565
+ */
566
+ chatNotification: boolean;
567
+ }>;
568
+
569
+ /**
570
+ * @internal Omitting one word from the different descriptions in various methods' JSDocs lets
571
+ * this be a reusable property
572
+ */
573
+ type _UpdateDataOption = InexactPartial<{
574
+ /**
575
+ * Modifications to make to each Card as part of the [...] operation, for example the displayed face
576
+ * @defaultValue `{}`
577
+ * @remarks Can't be `null` as it only has a parameter default
135
578
  */
136
- toUpdate: Record<string, DeepPartial<Card["_source"]>[]>;
579
+ updateData: Card.UpdateData;
580
+ }>;
137
581
 
582
+ type _HowOption = InexactPartial<{
138
583
  /**
139
- * Card deletion operations to be performed on the origin Cards
140
- * document.
584
+ * How to draw, a value from CONST.CARD_DRAW_MODES
585
+ * @defaultValue `CONST.CARD_DRAW_MODES.FIRST`
586
+ * @remarks Can't be `null` as it only has a parameter default
587
+ */
588
+ how: CONST.CARD_DRAW_MODES;
589
+ }>;
590
+
591
+ /** @internal */
592
+ type _DealOptions = InexactPartial<{
593
+ /**
594
+ * The name of the action being performed, used as part of the dispatched Hook event
595
+ * @defaultValue `"deal"`
596
+ * @remarks Can't be `null` as it only has a parameter default. See {@linkcode Cards.DealAction}
597
+ */
598
+ action: DealAction;
599
+ }>;
600
+
601
+ interface DealOptions extends _DealOptions, _HowOption, _UpdateDataOption, _ChatNotificationOption {}
602
+
603
+ /**
604
+ * Additional context which describes the operation
605
+ * @remarks This is the context provided to the {@link Hooks.StaticCallbacks.dealCards | `dealCards`} hook
606
+ */
607
+ interface DealContext {
608
+ /**
609
+ * The action name being performed, i.e. "deal", "pass"
610
+ * @remarks See {@linkcode Cards.DealAction}
611
+ */
612
+ action: DealAction;
613
+
614
+ /**
615
+ * An array of Card creation operations to be performed in each destination Cards document
616
+ * @remarks Outer array: one element per `to` provided to this {@link Cards.deal | `Cards#deal`} call
617
+ */
618
+ toCreate: Card.CreateData[][];
619
+
620
+ /**
621
+ * Card update operations to be performed in the origin Cards document
622
+ * @remarks Core will only ever provide elements of `{ _id: string; drawn: true}`
623
+ */
624
+ fromUpdate: Card.UpdateData[];
625
+
626
+ /**
627
+ * Card deletion operations to be performed in the origin Cards document
628
+ * @remarks An array of `_id`s
141
629
  */
142
630
  fromDelete: string[];
143
631
  }
632
+
633
+ /** @internal */
634
+ type _PassOptions = InexactPartial<{
635
+ /**
636
+ * The name of the action being performed, used as part of the dispatched Hook event
637
+ * @defaultValue `"pass"`
638
+ * @remarks Can't be `null` as it only has a parameter default. See {@linkcode PassAction}
639
+ */
640
+ action: PassAction;
641
+ }>;
642
+
643
+ interface PassOptions extends _PassOptions, _UpdateDataOption, _ChatNotificationOption {}
644
+
645
+ /**
646
+ * Additional context which describes the operation
647
+ * @remarks This is the context provided to the {@link Hooks.StaticCallbacks.passCards | `passCards`} hook
648
+ */
649
+ interface PassContext extends Pick<DealContext, "fromUpdate" | "fromDelete"> {
650
+ /**
651
+ * The action name being performed, i.e. "pass", "play", "discard", "draw"
652
+ * @remarks See {@linkcode Cards.PassAction}
653
+ */
654
+ action: PassAction;
655
+
656
+ /**
657
+ * Card creation operations to be performed in the destination Cards document
658
+ */
659
+ toCreate: Card.CreateData[];
660
+
661
+ /**
662
+ * Card update operations to be performed in the destination Cards document
663
+ * @remarks Core will only ever provide elements of `{ _id: string; drawn: false }`
664
+ */
665
+ toUpdate: Card.UpdateData[];
666
+ }
667
+
668
+ /**
669
+ * @remarks {@link Cards.draw | `Cards#draw`} spreads this into an object, minus `how`, with the `action` preset to `"draw"`,
670
+ * which wouldn't make sense to change, then passes that to {@link Cards.pass | `Cards#pass`}
671
+ * @privateRemarks `action` omitted as it's already provided.
672
+ */
673
+ interface DrawOptions extends _HowOption, Omit<PassOptions, "action"> {}
674
+
675
+ interface ShuffleOptions extends _UpdateDataOption, _ChatNotificationOption {}
676
+
677
+ interface RecallOptions extends _UpdateDataOption, _ChatNotificationOption {}
678
+
679
+ /**
680
+ * Additional context which describes the operation.
681
+ * @remarks This is the context provided to the {@link Hooks.StaticCallbacks.returnCards | `returnCards`} hook
682
+ */
683
+ interface ReturnContext extends Pick<DealContext, "fromDelete"> {
684
+ /**
685
+ * A mapping of Card deck IDs to the update operations that will be performed on them.
686
+ */
687
+ toUpdate: Record<string, Card.UpdateData[]>;
688
+ }
689
+
690
+ /**
691
+ * @deprecated {@link Cards.Database | `Cards.DatabaseOperation`}
692
+ */
693
+ // eslint-disable-next-line @typescript-eslint/no-deprecated
694
+ interface DatabaseOperations extends Document.Database.Operations<Cards.Implementation> {}
695
+
696
+ /**
697
+ * @deprecated {@link Cards.SubType | `Cards.SubType`}
698
+ */
699
+ type TypeNames = Cards.SubType;
700
+
701
+ /**
702
+ * @deprecated {@link Cards.CreateData | `Cards.CreateData`}
703
+ */
704
+ interface ConstructorData extends Cards.CreateData {}
705
+
706
+ /**
707
+ * @deprecated {@link Cards.implementation | `Cards.ImplementationClass`}
708
+ */
709
+ type ConfiguredClass = ImplementationClass;
710
+
711
+ /**
712
+ * @deprecated {@link Cards.Implementation | `Cards.Implementation`}
713
+ */
714
+ type ConfiguredInstance = Implementation;
144
715
  }
145
716
 
146
717
  /**
147
718
  * The client-side Cards document which extends the common BaseCards model.
148
719
  * Each Cards document contains CardsData which defines its data schema.
149
720
  *
150
- * @see {@link CardStacks} The world-level collection of Cards documents
151
- * @see {@link CardsConfig} The Cards configuration application
721
+ * @see {@link CardStacks | `CardStacks`} The world-level collection of Cards documents
722
+ * @see {@link CardsConfig | `CardsConfig`} The Cards configuration application
152
723
  */
153
- class Cards extends ClientDocumentMixin(foundry.documents.BaseCards) {
154
- static override metadata: Cards.Metadata;
724
+ class Cards<out SubType extends Cards.SubType = Cards.SubType> extends ClientDocumentMixin(
725
+ foundry.documents.BaseCards,
726
+ )<SubType> {
727
+ /**
728
+ * @param data - Initial data from which to construct the `Cards`
729
+ * @param context - Construction context options
730
+ */
731
+ constructor(...args: Cards.ConstructorArgs);
155
732
 
156
733
  /**
157
734
  * Provide a thumbnail image path used to represent this document.
158
735
  */
159
- get thumbnail(): this["img"];
736
+ get thumbnail(): string | null;
160
737
 
161
738
  /**
162
739
  * The Card documents within this stack which are able to be drawn.
163
740
  */
164
- get availableCards(): Card.ConfiguredInstance[];
741
+ get availableCards(): Card.Implementation[];
165
742
 
166
743
  /**
167
744
  * The Card documents which belong to this stack but have already been drawn.
168
745
  */
169
- get drawnCards(): Card.ConfiguredInstance[];
746
+ get drawnCards(): Card.Implementation[];
170
747
 
171
748
  /**
172
749
  * Returns the localized Label for the type of Card Stack this is
@@ -178,107 +755,94 @@ declare global {
178
755
  */
179
756
  get canClone(): boolean;
180
757
 
181
- static createDocuments<T extends Document.AnyConstructor, Temporary extends boolean | undefined>(
182
- this: T,
183
- data: Array<
184
- fields.SchemaField.AssignmentType<InstanceType<NoInfer<T>>["schema"]["fields"]> & Record<string, unknown>
185
- >,
186
- operation?: InexactPartial<Omit<DatabaseOperationsFor<NoInfer<T>["metadata"]["name"], "create">, "data">> & {
187
- temporary?: Temporary;
188
- },
189
- ): Promise<Document.ToStoredIf<T, Temporary>[] | undefined>;
758
+ /**
759
+ * @remarks Sets `context.keepEmbeddedIds` to `false` if it's `=== undefined`
760
+ */
761
+ static override createDocuments<Temporary extends boolean | undefined = false>(
762
+ data: Array<Cards.Implementation | Cards.CreateData> | undefined,
763
+ operation?: Document.Database.CreateOperation<Cards.Database.Create<Temporary>>,
764
+ ): Promise<Array<Document.TemporaryIf<Cards.Implementation, Temporary>>>;
190
765
 
191
766
  /**
192
767
  * Deal one or more cards from this Cards document to each of a provided array of Cards destinations.
193
768
  * Cards are allocated from the top of the deck in cyclical order until the required number of Cards have been dealt.
194
769
  * @param to - An array of other Cards documents to which cards are dealt
195
- * @param number - The number of cards to deal to each other document
196
- * (default: `1`)
197
- * @param options - (default: `{}`)
770
+ * @param number - The number of cards to deal to each other document (default: `1`)
771
+ * @param options - Options which modify how the deal operation is performed (default: `{}`)
198
772
  * @returns This Cards document after the deal operation has completed
199
773
  */
200
- deal(
201
- to: Cards.ConfiguredInstance[],
202
- number?: number,
203
- options?: InexactPartial<Cards.DealOptions>,
204
- ): Promise<Cards.ConfiguredInstance>;
774
+ // number: not null (dealing 0 cards makes no sense), options: not null (destructured)
775
+ deal(to: Cards.Implementation[], number?: number, options?: Cards.DealOptions): Promise<Cards.Implementation>;
205
776
 
206
777
  /**
207
778
  * Pass an array of specific Card documents from this document to some other Cards stack.
208
779
  * @param to - Some other Cards document that is the destination for the pass operation
209
780
  * @param ids - The embedded Card ids which should be passed
210
- * @param options - Additional options which modify the pass operation
211
- * (default: `{}`)
781
+ * @param options - Additional options which modify the pass operation (default: `{}`)
212
782
  * @returns An array of the Card embedded documents created within the destination stack
213
783
  */
214
- pass(
215
- to: Cards.ConfiguredInstance,
216
- ids: string[],
217
- options?: InexactPartial<Cards.PassOptions>,
218
- ): Promise<Card.ConfiguredInstance[]>;
784
+ // options: not null (destructured)
785
+ pass(to: Cards.Implementation, ids: string[], options?: Cards.PassOptions): Promise<Card.Implementation[]>;
219
786
 
220
787
  /**
221
788
  * Draw one or more cards from some other Cards document.
222
789
  * @param from - Some other Cards document from which to draw
223
- * @param number - The number of cards to draw
224
- * (default: `1`)
225
- * @param options - (default: `{}`)
790
+ * @param number - The number of cards to draw (default: `1`)
791
+ * @param options - Options which modify how the draw operation is performed (default: `{}`)
226
792
  * @returns An array of the Card documents which were drawn
227
793
  */
228
- draw(
229
- from: Cards.ConfiguredInstance,
230
- number?: number,
231
- options?: InexactPartial<Cards.DrawOptions>,
232
- ): Promise<Card.ConfiguredInstance[]>;
794
+ // number: not null (drawing 0 cards makes no sense), options: not null (destructured)
795
+ draw(from: Cards.Implementation, number?: number, options?: Cards.DrawOptions): Promise<Card.Implementation[]>;
233
796
 
234
797
  /**
235
798
  * Shuffle this Cards stack, randomizing the sort order of all the cards it contains.
236
- * @param options - (default: `{}`)
799
+ * @param options - Options which modify how the shuffle operation is performed. (default: `{}`)
237
800
  * @returns The Cards document after the shuffle operation has completed
238
801
  */
239
- shuffle(options?: InexactPartial<Cards.ShuffleOptions>): Promise<Cards.ConfiguredInstance>;
802
+ // options: not null (destructured)
803
+ shuffle(options?: Cards.ShuffleOptions): Promise<this>;
240
804
 
241
805
  /**
242
- * Reset the Cards stack, retrieving all original cards from other stacks where they may have been drawn if this is a
806
+ * Recall the Cards stack, retrieving all original cards from other stacks where they may have been drawn if this is a
243
807
  * deck, otherwise returning all the cards in this stack to the decks where they originated.
244
- * @param options - Options which modify the reset operation
245
- * (default: `{}`)
246
- * @returns The Cards document after the reset operation has completed
808
+ * @param options - Options which modify the recall operation
809
+ * @returns The Cards document after the recall operation has completed.
247
810
  */
248
- reset(options?: InexactPartial<Cards.ResetOptions>): Promise<Cards.ConfiguredInstance>;
811
+ // options: not null (destructured where forwarded)
812
+ recall(options?: Cards.RecallOptions): Promise<this>;
249
813
 
250
814
  /**
251
815
  * Perform a reset operation for a deck, retrieving all original cards from other stacks where they may have been
252
816
  * drawn.
253
- * @param options - Options which modify the reset operation.
254
- * (default: `{}`)
817
+ * @param options - Options which modify the reset operation. (default: `{}`)
255
818
  * @returns The Cards document after the reset operation has completed.
256
- * @internal
819
+ * @private
257
820
  */
258
- protected _resetDeck(options?: InexactPartial<Cards.ResetOptions>): Promise<Cards.ConfiguredInstance>;
821
+ // options: not null (destructured)
822
+ protected _resetDeck(options?: Cards.RecallOptions): Promise<this>;
259
823
 
260
824
  /**
261
825
  * Return all cards in this stack to their original decks.
262
- * @param options - Options which modify the return operation.
263
- * (default: `{}`)
826
+ * @param options - Options which modify the return operation. (default: `{}`)
264
827
  * @returns The Cards document after the return operation has completed.
265
- * @internal
828
+ * @private
266
829
  */
267
- protected _resetStack(options?: InexactPartial<Cards.ResetOptions>): Promise<Cards.ConfiguredInstance>;
830
+ // options: not null (destructured)
831
+ protected _resetStack(options?: InexactPartial<Cards.RecallOptions>): Promise<this>;
268
832
 
269
833
  /**
270
834
  * A sorting function that is used to determine the standard order of Card documents within an un-shuffled stack.
271
835
  * @param a - The card being sorted
272
836
  * @param b - Another card being sorted against
273
837
  */
274
- protected sortStandard(a: Card, b: Card): number;
838
+ protected sortStandard(a: Card.Implementation, b: Card.Implementation): number;
275
839
 
276
840
  /**
277
841
  * A sorting function that is used to determine the order of Card documents within a shuffled stack.
278
842
  * @param a - The card being sorted
279
843
  * @param b - Another card being sorted against
280
844
  */
281
- protected sortShuffled(a: Card, b: Card): number;
845
+ protected sortShuffled(a: Card.Implementation, b: Card.Implementation): number;
282
846
 
283
847
  /**
284
848
  * An internal helper method for drawing a certain number of Card documents from this Cards stack.
@@ -286,7 +850,7 @@ declare global {
286
850
  * @param how - A draw mode from CONST.CARD_DRAW_MODES
287
851
  * @returns An array of drawn Card documents
288
852
  */
289
- protected _drawCards(number: number, how: foundry.CONST.CARD_DRAW_MODES): Card.ConfiguredInstance[];
853
+ protected _drawCards(number: number, how: CONST.CARD_DRAW_MODES): Card.Implementation[];
290
854
 
291
855
  /**
292
856
  * Create a ChatMessage which provides a notification of the cards operation which was just performed.
@@ -295,62 +859,191 @@ declare global {
295
859
  * @param action - The localization key which formats the chat message notification
296
860
  * @param context - Data passed to the i18n.format method for the localization key
297
861
  * @returns A created ChatMessage document
298
- * @internal
862
+ * @private
299
863
  */
300
864
  protected _postChatNotification(
301
- source: Cards.ConfiguredInstance,
865
+ source: Cards.Implementation,
302
866
  action: string,
303
867
  context: Record<string, unknown>,
304
- ): Promise<ChatMessage.ConfiguredInstance | undefined>;
868
+ ): Promise<ChatMessage.Implementation | undefined>;
305
869
 
306
- /**
307
- * @privateRemarks _preCreate, _onUpdate, and _preDelete are all overridden but with no signature changes.
308
- * For type simplicity they are left off. These methods historically have been the source of a large amount of computation from tsc.
309
- */
870
+ // _preCreate, _onUpdate, and _preDelete are all overridden but with no signature changes from BaseCards.
310
871
 
311
872
  /**
312
873
  * Display a dialog which prompts the user to deal cards to some number of hand-type Cards documents.
313
- * @see {@link Cards#deal}
874
+ * @see {@link Cards.deal | `Cards#deal`}
314
875
  */
315
- dealDialog(): Promise<Cards.ConfiguredInstance | null>;
876
+ dealDialog(): Promise<this | null>;
316
877
 
317
878
  /**
318
879
  * Display a dialog which prompts the user to draw cards from some other deck-type Cards documents.
319
- * @see {@link Cards#draw}
880
+ * @see {@link Cards.draw | `Cards#draw`}
320
881
  */
321
- drawDialog(): Promise<Card.ConfiguredInstance[] | null>;
882
+ drawDialog(): Promise<Card.Implementation[] | null>;
322
883
 
323
884
  /**
324
885
  * Display a dialog which prompts the user to pass cards from this document to some other other Cards document.
325
- * @see {@link Cards#deal}
886
+ * @see {@link Cards.deal | `Cards#deal`}
326
887
  */
327
- passDialog(): Promise<Cards.ConfiguredInstance | null>;
888
+ passDialog(): Promise<this | null>;
328
889
 
329
890
  /**
330
891
  * Display a dialog which prompts the user to play a specific Card to some other Cards document
331
- * @see {@link Cards#pass}
892
+ * @see {@link Cards.pass | `Cards#pass`}
332
893
  * @param card - The specific card being played as part of this dialog
333
894
  */
334
- playDialog(card: Card.ConfiguredInstance): Promise<Card.ConfiguredInstance[] | void | null>;
895
+ playDialog(card: Card.Implementation): Promise<Card.Implementation[] | null>;
335
896
 
336
897
  /**
337
898
  * Display a confirmation dialog for whether or not the user wishes to reset a Cards stack
338
- * @see {@link Cards#reset}
339
- */
340
- resetDialog(): Promise<Cards.ConfiguredInstance | false | null>;
341
-
342
- override deleteDialog(options?: Partial<DialogOptions>): Promise<this | false | null | undefined>;
343
-
344
- static override createDialog<T extends Document.AnyConstructor>(
345
- this: T,
346
- data?: DeepPartial<Document.ConstructorDataFor<NoInfer<T>> & Record<string, unknown>>,
347
- context?: Pick<DatabaseOperationsFor<Cards["documentName"], "create">, "parent" | "pack"> &
348
- InexactPartial<
349
- DialogOptions & {
350
- /** A restriction the selectable sub-types of the Dialog. */
351
- types: string[];
352
- }
353
- >,
354
- ): Promise<Document.ToConfiguredInstance<T> | null | undefined>;
899
+ * @see {@link Cards.reset | `Cards#reset`}
900
+ */
901
+ resetDialog(): Promise<this | false | null>;
902
+
903
+ // options: not null (parameter default only)
904
+ override deleteDialog(options?: InexactPartial<Dialog.Options>): Promise<this | false | null | undefined>;
905
+
906
+ /** @remarks No type changes, just creates a fancier `Dialog` than `super` */
907
+ // data: not null (parameter default only), context: not null (destructured)
908
+ static override createDialog(
909
+ data?: Document.CreateDialogData<Cards.CreateData>,
910
+ context?: Document.CreateDialogContext<"Cards", Cards.Parent>,
911
+ ): Promise<Cards.Stored | null | undefined>;
912
+
913
+ /*
914
+ * After this point these are not really overridden methods.
915
+ * They are here because Foundry's documents are complex and have lots of edge cases.
916
+ * There are DRY ways of representing this but this ends up being harder to understand
917
+ * for end users extending these functions, especially for static methods. There are also a
918
+ * number of methods that don't make sense to call directly on `Document` like `createDocuments`,
919
+ * as there is no data that can safely construct every possible document. Finally keeping definitions
920
+ * separate like this helps against circularities.
921
+ */
922
+
923
+ // ClientDocument overrides
924
+
925
+ /**
926
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
927
+ * this method must be overridden like so:
928
+ * ```typescript
929
+ * class SwadeCards extends Cards {
930
+ * protected override _preCreateDescendantDocuments(...args: Cards.PreCreateDescendantDocumentsArgs) {
931
+ * super._preCreateDescendantDocuments(...args);
932
+ *
933
+ * const [parent, collection, data, options, userId] = args;
934
+ * if (collection === "cards") {
935
+ * options; // Will be narrowed.
936
+ * }
937
+ * }
938
+ * }
939
+ * ```
940
+ */
941
+ protected override _preCreateDescendantDocuments(...args: Cards.PreCreateDescendantDocumentsArgs): void;
942
+
943
+ /**
944
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
945
+ * this method must be overridden like so:
946
+ * ```typescript
947
+ * class GurpsCards extends Cards {
948
+ * protected override _onCreateDescendantDocuments(...args: Cards.OnCreateDescendantDocumentsArgs) {
949
+ * super._onCreateDescendantDocuments(...args);
950
+ *
951
+ * const [parent, collection, documents, data, options, userId] = args;
952
+ * if (collection === "cards") {
953
+ * options; // Will be narrowed.
954
+ * }
955
+ * }
956
+ * }
957
+ * ```
958
+ */
959
+ protected override _onCreateDescendantDocuments(...args: Cards.OnCreateDescendantDocumentsArgs): void;
960
+
961
+ /**
962
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
963
+ * this method must be overridden like so:
964
+ * ```typescript
965
+ * class LancerCards extends Cards {
966
+ * protected override _preUpdateDescendantDocuments(...args: Cards.OnUpdateDescendantDocuments) {
967
+ * super._preUpdateDescendantDocuments(...args);
968
+ *
969
+ * const [parent, collection, changes, options, userId] = args;
970
+ * if (collection === "cards") {
971
+ * options; // Will be narrowed.
972
+ * }
973
+ * }
974
+ * }
975
+ * ```
976
+ */
977
+ protected override _preUpdateDescendantDocuments(...args: Cards.PreUpdateDescendantDocumentsArgs): void;
978
+
979
+ /**
980
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
981
+ * this method must be overridden like so:
982
+ * ```typescript
983
+ * class Ptr2eCards extends Cards {
984
+ * protected override _onUpdateDescendantDocuments(...args: Cards.OnUpdateDescendantDocumentsArgs) {
985
+ * super._onUpdateDescendantDocuments(...args);
986
+ *
987
+ * const [parent, collection, documents, changes, options, userId] = args;
988
+ * if (collection === "cards") {
989
+ * options; // Will be narrowed.
990
+ * }
991
+ * }
992
+ * }
993
+ * ```
994
+ */
995
+ protected override _onUpdateDescendantDocuments(...args: Cards.OnUpdateDescendantDocumentsArgs): void;
996
+
997
+ /**
998
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
999
+ * this method must be overridden like so:
1000
+ * ```typescript
1001
+ * class KultCards extends Cards {
1002
+ * protected override _preDeleteDescendantDocuments(...args: Cards.PreDeleteDescendantDocumentsArgs) {
1003
+ * super._preDeleteDescendantDocuments(...args);
1004
+ *
1005
+ * const [parent, collection, ids, options, userId] = args;
1006
+ * if (collection === "cards") {
1007
+ * options; // Will be narrowed.
1008
+ * }
1009
+ * }
1010
+ * }
1011
+ * ```
1012
+ */
1013
+ protected override _preDeleteDescendantDocuments(...args: Cards.PreDeleteDescendantDocumentsArgs): void;
1014
+
1015
+ /**
1016
+ * @remarks To make it possible for narrowing one parameter to jointly narrow other parameters
1017
+ * this method must be overridden like so:
1018
+ * ```typescript
1019
+ * class BladesCards extends Cards {
1020
+ * protected override _onDeleteDescendantDocuments(...args: Cards.OnUpdateDescendantDocuments) {
1021
+ * super._onDeleteDescendantDocuments(...args);
1022
+ *
1023
+ * const [parent, collection, documents, ids, options, userId] = args;
1024
+ * if (collection === "cards") {
1025
+ * options; // Will be narrowed.
1026
+ * }
1027
+ * }
1028
+ * }
1029
+ * ```
1030
+ */
1031
+ protected override _onDeleteDescendantDocuments(...args: Cards.OnDeleteDescendantDocumentsArgs): void;
1032
+
1033
+ // context: not null (destructured)
1034
+ static override defaultName(context?: Document.DefaultNameContext<"Cards", Cards.Parent>): string;
1035
+
1036
+ // options: not null (parameter default only)
1037
+ static override fromDropData(
1038
+ data: Document.DropData<Cards.Implementation>,
1039
+ options?: AnyObject,
1040
+ ): Promise<Cards.Implementation | undefined>;
1041
+
1042
+ static override fromImport(
1043
+ source: Cards.Source,
1044
+ context?: Document.FromImportContext<Cards.Parent> | null,
1045
+ ): Promise<Cards.Implementation>;
1046
+
1047
+ override _onClickDocumentLink(event: MouseEvent): ClientDocument.OnClickDocumentLinkReturn;
355
1048
  }
356
1049
  }