@dreamboard-games/sdk 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (369) hide show
  1. package/LICENSE.md +96 -0
  2. package/README.md +12 -0
  3. package/dist/HandView-ncJIVLhN.d.ts +193 -0
  4. package/dist/ResourceCounter-CTREyF73.d.ts +102 -0
  5. package/dist/ThemeProvider-fy0_QzgO.d.ts +99 -0
  6. package/dist/bundle-TIZcw8LB.d.ts +281 -0
  7. package/dist/cards-Sl3b40Mv.d.ts +13 -0
  8. package/dist/chunk-7YAHLYBR.js +481 -0
  9. package/dist/chunk-7YAHLYBR.js.map +1 -0
  10. package/dist/chunk-FDNZTDD6.js +8085 -0
  11. package/dist/chunk-FDNZTDD6.js.map +1 -0
  12. package/dist/chunk-GKKBPPSW.js +598 -0
  13. package/dist/chunk-GKKBPPSW.js.map +1 -0
  14. package/dist/chunk-I46YJSOD.js +1 -0
  15. package/dist/chunk-I46YJSOD.js.map +1 -0
  16. package/dist/chunk-KAELH4KC.js +104 -0
  17. package/dist/chunk-KAELH4KC.js.map +1 -0
  18. package/dist/chunk-PZ5AY32C.js +10 -0
  19. package/dist/chunk-PZ5AY32C.js.map +1 -0
  20. package/dist/chunk-T3ZKNUZ7.js +1 -0
  21. package/dist/chunk-T3ZKNUZ7.js.map +1 -0
  22. package/dist/chunk-T52J5RMF.js +1 -0
  23. package/dist/chunk-T52J5RMF.js.map +1 -0
  24. package/dist/chunk-TDSWKVZ4.js +5401 -0
  25. package/dist/chunk-TDSWKVZ4.js.map +1 -0
  26. package/dist/chunk-U5C6BONG.js +34 -0
  27. package/dist/chunk-U5C6BONG.js.map +1 -0
  28. package/dist/chunk-VDXOF4FW.js +69 -0
  29. package/dist/chunk-VDXOF4FW.js.map +1 -0
  30. package/dist/chunk-VFTAA4WO.js +115 -0
  31. package/dist/chunk-VFTAA4WO.js.map +1 -0
  32. package/dist/chunk-WN74KVNY.js +17 -0
  33. package/dist/chunk-WN74KVNY.js.map +1 -0
  34. package/dist/chunk-WYPQ3GG5.js +10990 -0
  35. package/dist/chunk-WYPQ3GG5.js.map +1 -0
  36. package/dist/components-D5ZRE2Hl.d.ts +1451 -0
  37. package/dist/generated/runtime/primitives.d.ts +12 -0
  38. package/dist/generated/runtime/primitives.js +180 -0
  39. package/dist/generated/runtime/primitives.js.map +1 -0
  40. package/dist/generated/runtime-api.d.ts +3 -0
  41. package/dist/generated/runtime-api.js +2 -0
  42. package/dist/generated/runtime-api.js.map +1 -0
  43. package/dist/generated/runtime.d.ts +14 -0
  44. package/dist/generated/runtime.js +18 -0
  45. package/dist/generated/runtime.js.map +1 -0
  46. package/dist/generated/workspace-contract.d.ts +14 -0
  47. package/dist/generated/workspace-contract.js +14 -0
  48. package/dist/generated/workspace-contract.js.map +1 -0
  49. package/dist/hex-board-view-D_07hO6O.d.ts +933 -0
  50. package/dist/hex-color-MhOyuY-o.d.ts +8 -0
  51. package/dist/index-BwqPQtBu.d.ts +1433 -0
  52. package/dist/index.d.ts +1 -0
  53. package/dist/index.js +12 -0
  54. package/dist/index.js.map +1 -0
  55. package/dist/infrastructure/reducer-bundle-abi.d.ts +1083 -0
  56. package/dist/infrastructure/reducer-bundle-abi.js +14 -0
  57. package/dist/infrastructure/reducer-bundle-abi.js.map +1 -0
  58. package/dist/infrastructure/workspace-codegen.d.ts +53 -0
  59. package/dist/infrastructure/workspace-codegen.js +44 -0
  60. package/dist/infrastructure/workspace-codegen.js.map +1 -0
  61. package/dist/manifest-contract-BNHVGFtU.d.ts +9 -0
  62. package/dist/package-set.d.ts +13 -0
  63. package/dist/package-set.js +12 -0
  64. package/dist/package-set.js.map +1 -0
  65. package/dist/primitive-props-DpKs-GCr.d.ts +11 -0
  66. package/dist/reducer.d.ts +3786 -0
  67. package/dist/reducer.js +8131 -0
  68. package/dist/reducer.js.map +1 -0
  69. package/dist/runtime/primitives.d.ts +226 -0
  70. package/dist/runtime/primitives.js +180 -0
  71. package/dist/runtime/primitives.js.map +1 -0
  72. package/dist/runtime/types/runtime-api.d.ts +1 -0
  73. package/dist/runtime/types/runtime-api.js +2 -0
  74. package/dist/runtime/types/runtime-api.js.map +1 -0
  75. package/dist/runtime/workspace-contract.d.ts +172 -0
  76. package/dist/runtime/workspace-contract.js +14 -0
  77. package/dist/runtime/workspace-contract.js.map +1 -0
  78. package/dist/runtime-api-3dshj6kK.d.ts +101 -0
  79. package/dist/runtime-api-DWxvTr-O.d.ts +379 -0
  80. package/dist/runtime.d.ts +58 -0
  81. package/dist/runtime.js +13 -0
  82. package/dist/runtime.js.map +1 -0
  83. package/dist/slots-1GPGihk8.d.ts +8 -0
  84. package/dist/testing.d.ts +149 -0
  85. package/dist/testing.js +513 -0
  86. package/dist/testing.js.map +1 -0
  87. package/dist/types.d.ts +496 -0
  88. package/dist/types.js +28 -0
  89. package/dist/types.js.map +1 -0
  90. package/dist/ui/components.d.ts +16 -0
  91. package/dist/ui/components.js +192 -0
  92. package/dist/ui/components.js.map +1 -0
  93. package/dist/ui/defaults.d.ts +19 -0
  94. package/dist/ui/defaults.js +104 -0
  95. package/dist/ui/defaults.js.map +1 -0
  96. package/dist/ui/plugin-styles.css +250 -0
  97. package/dist/ui/types/player-state.d.ts +365 -0
  98. package/dist/ui/types/player-state.js +1 -0
  99. package/dist/ui/types/player-state.js.map +1 -0
  100. package/dist/ui-contract-iQfTtUSL.d.ts +1161 -0
  101. package/dist/ui.d.ts +320 -0
  102. package/dist/ui.js +253 -0
  103. package/dist/ui.js.map +1 -0
  104. package/package.json +199 -0
  105. package/src/generated/reducer-contract/builders.ts +90 -0
  106. package/src/generated/reducer-contract/version.ts +9 -0
  107. package/src/generated/reducer-contract/wire.ts +100 -0
  108. package/src/generated/reducer-contract/zod.ts +101 -0
  109. package/src/generated/runtime/primitives.ts +2 -0
  110. package/src/generated/runtime-api.ts +5 -0
  111. package/src/generated/runtime.ts +35 -0
  112. package/src/generated/workspace-contract.ts +2 -0
  113. package/src/index.ts +7 -0
  114. package/src/infrastructure/reducer-bundle-abi.ts +8 -0
  115. package/src/infrastructure/reducer-contract/bundle.ts +37 -0
  116. package/src/infrastructure/workspace-codegen/hex-geometry.ts +69 -0
  117. package/src/infrastructure/workspace-codegen/index.ts +64 -0
  118. package/src/infrastructure/workspace-codegen/manifest-contract.ts +6632 -0
  119. package/src/infrastructure/workspace-codegen/manifest-validation.ts +795 -0
  120. package/src/infrastructure/workspace-codegen/ownership.ts +131 -0
  121. package/src/infrastructure/workspace-codegen/preset-card-sets.ts +169 -0
  122. package/src/infrastructure/workspace-codegen/seeds.ts +1705 -0
  123. package/src/infrastructure/workspace-codegen.ts +1 -0
  124. package/src/package-set.ts +19 -0
  125. package/src/reducer/authoring/contract.ts +157 -0
  126. package/src/reducer/authoring/effect.ts +224 -0
  127. package/src/reducer/authoring/game.ts +23 -0
  128. package/src/reducer/authoring/interaction.ts +98 -0
  129. package/src/reducer/authoring/phase.ts +300 -0
  130. package/src/reducer/authoring/types.ts +70 -0
  131. package/src/reducer/authoring/validation.ts +382 -0
  132. package/src/reducer/authoring/view-stage.ts +68 -0
  133. package/src/reducer/authoring.ts +29 -0
  134. package/src/reducer/bundle/ingress-bundle.ts +491 -0
  135. package/src/reducer/bundle/trusted/engine-instruction-resolver.ts +254 -0
  136. package/src/reducer/bundle/trusted/flow-instruction-resolver.ts +73 -0
  137. package/src/reducer/bundle/trusted/instruction-runner.ts +414 -0
  138. package/src/reducer/bundle/trusted/interaction-authorization.ts +137 -0
  139. package/src/reducer/bundle/trusted/interaction-collectors.ts +859 -0
  140. package/src/reducer/bundle/trusted/interaction-decision.ts +747 -0
  141. package/src/reducer/bundle/trusted/interaction-resolver.ts +95 -0
  142. package/src/reducer/bundle/trusted/interaction-types.ts +171 -0
  143. package/src/reducer/bundle/trusted/lifecycle-runner.ts +427 -0
  144. package/src/reducer/bundle/trusted/projection-builder.ts +356 -0
  145. package/src/reducer/bundle/trusted/projection-context.ts +39 -0
  146. package/src/reducer/bundle/trusted/rng-sampler.ts +150 -0
  147. package/src/reducer/bundle/trusted/runtime-registry.ts +120 -0
  148. package/src/reducer/bundle/trusted/runtime-scope.ts +336 -0
  149. package/src/reducer/bundle/trusted/simultaneous-player.ts +97 -0
  150. package/src/reducer/bundle/trusted/stage-resolver.ts +87 -0
  151. package/src/reducer/bundle/trusted/static-projection.ts +116 -0
  152. package/src/reducer/bundle/trusted/trusted-runtime-args.ts +97 -0
  153. package/src/reducer/bundle/trusted/trusted-runtime-result.ts +39 -0
  154. package/src/reducer/bundle/trusted/trusted-setup-profiles.ts +43 -0
  155. package/src/reducer/bundle/trusted/trusted-state-codec.ts +48 -0
  156. package/src/reducer/bundle/trusted-bundle.ts +97 -0
  157. package/src/reducer/bundle/types.ts +171 -0
  158. package/src/reducer/bundle.ts +2 -0
  159. package/src/reducer/client-param-schemas.ts +57 -0
  160. package/src/reducer/compose.ts +34 -0
  161. package/src/reducer/core/runtime-input.ts +30 -0
  162. package/src/reducer/core/runtime-instruction.ts +59 -0
  163. package/src/reducer/core/types.ts +62 -0
  164. package/src/reducer/definition-index.ts +277 -0
  165. package/src/reducer/derived.ts +106 -0
  166. package/src/reducer/effects.ts +92 -0
  167. package/src/reducer/engine/runtime-instruction-engine.ts +155 -0
  168. package/src/reducer/ingress/decode-runtime-input.ts +7 -0
  169. package/src/reducer/ingress/decode-session-state.ts +9 -0
  170. package/src/reducer/ingress/encode-session-state.ts +6 -0
  171. package/src/reducer/ingress/input-codec.ts +18 -0
  172. package/src/reducer/ingress/phase-schemas.ts +62 -0
  173. package/src/reducer/ingress/raw-types.ts +107 -0
  174. package/src/reducer/ingress/runtime-codec.ts +14 -0
  175. package/src/reducer/ingress/runtime-payload.ts +13 -0
  176. package/src/reducer/ingress/session-codec.ts +392 -0
  177. package/src/reducer/ingress/types.ts +6 -0
  178. package/src/reducer/inputs/boardInput.ts +217 -0
  179. package/src/reducer/inputs/boardTarget.ts +190 -0
  180. package/src/reducer/inputs/cardInput.ts +86 -0
  181. package/src/reducer/inputs/cardTarget.ts +101 -0
  182. package/src/reducer/inputs/choiceTarget.ts +104 -0
  183. package/src/reducer/inputs/defineInputs.ts +71 -0
  184. package/src/reducer/inputs/formInput.ts +809 -0
  185. package/src/reducer/inputs/many.ts +120 -0
  186. package/src/reducer/inputs/promptInput.ts +87 -0
  187. package/src/reducer/inputs/rngInput.ts +58 -0
  188. package/src/reducer/inputs/targetRule.ts +123 -0
  189. package/src/reducer/inputs.ts +41 -0
  190. package/src/reducer/model/definition.ts +1072 -0
  191. package/src/reducer/model/extract.ts +745 -0
  192. package/src/reducer/model/manifest.ts +570 -0
  193. package/src/reducer/model/queries.ts +641 -0
  194. package/src/reducer/model/runtime.ts +264 -0
  195. package/src/reducer/model/spec.ts +1386 -0
  196. package/src/reducer/model/table.ts +260 -0
  197. package/src/reducer/model.ts +7 -0
  198. package/src/reducer/ops.ts +1034 -0
  199. package/src/reducer/parse-utils.ts +28 -0
  200. package/src/reducer/per-player.ts +422 -0
  201. package/src/reducer/rng.ts +69 -0
  202. package/src/reducer/schema-helpers.ts +185 -0
  203. package/src/reducer/setup-bootstrap-helpers.ts +171 -0
  204. package/src/reducer/setup-bootstrap.ts +481 -0
  205. package/src/reducer/table-ops.ts +2671 -0
  206. package/src/reducer/table-queries.ts +372 -0
  207. package/src/reducer/transaction.ts +120 -0
  208. package/src/reducer.ts +314 -0
  209. package/src/runtime/primitives.ts +1 -0
  210. package/src/runtime/types/runtime-api.ts +1 -0
  211. package/src/runtime/workspace-contract.ts +32 -0
  212. package/src/runtime-internal/components/InteractionForm.tsx +1309 -0
  213. package/src/runtime-internal/components/PluginRuntime.tsx +103 -0
  214. package/src/runtime-internal/components/board/target-layer.ts +70 -0
  215. package/src/runtime-internal/context/ClientParamSchemaContext.tsx +44 -0
  216. package/src/runtime-internal/context/InteractionDraftContext.tsx +279 -0
  217. package/src/runtime-internal/context/PluginSessionContext.tsx +47 -0
  218. package/src/runtime-internal/context/PluginStateContext.tsx +262 -0
  219. package/src/runtime-internal/context/RuntimeContext.tsx +96 -0
  220. package/src/runtime-internal/defaults/components.tsx +409 -0
  221. package/src/runtime-internal/defaults/index.ts +11 -0
  222. package/src/runtime-internal/errors/ValidationError.ts +29 -0
  223. package/src/runtime-internal/hooks/useActivePlayers.ts +33 -0
  224. package/src/runtime-internal/hooks/useBoardInteractions.ts +665 -0
  225. package/src/runtime-internal/hooks/useGameSelector.ts +105 -0
  226. package/src/runtime-internal/hooks/useGameView.ts +9 -0
  227. package/src/runtime-internal/hooks/useInteractionByKey.ts +354 -0
  228. package/src/runtime-internal/hooks/useInteractionHandle.ts +438 -0
  229. package/src/runtime-internal/hooks/useIsMyTurn.ts +20 -0
  230. package/src/runtime-internal/hooks/useLobby.ts +76 -0
  231. package/src/runtime-internal/hooks/useMe.ts +48 -0
  232. package/src/runtime-internal/hooks/usePlayerInfo.ts +28 -0
  233. package/src/runtime-internal/hooks/usePlayerTurnOrder.ts +23 -0
  234. package/src/runtime-internal/hooks/usePluginRuntime.ts +147 -0
  235. package/src/runtime-internal/hooks/useSeatInbox.ts +61 -0
  236. package/src/runtime-internal/hooks/useSimultaneousPhase.ts +10 -0
  237. package/src/runtime-internal/index.ts +42 -0
  238. package/src/runtime-internal/internal.ts +43 -0
  239. package/src/runtime-internal/plugin-styles.css +250 -0
  240. package/src/runtime-internal/primitives/board.tsx +459 -0
  241. package/src/runtime-internal/primitives/dialog-lifecycle.ts +58 -0
  242. package/src/runtime-internal/primitives/dice.tsx +79 -0
  243. package/src/runtime-internal/primitives/game-ui-provider.tsx +35 -0
  244. package/src/runtime-internal/primitives/game.tsx +387 -0
  245. package/src/runtime-internal/primitives/hand-intent-adapter.ts +147 -0
  246. package/src/runtime-internal/primitives/hand-surface.tsx +594 -0
  247. package/src/runtime-internal/primitives/index.ts +196 -0
  248. package/src/runtime-internal/primitives/interaction-form-binding.tsx +56 -0
  249. package/src/runtime-internal/primitives/interaction-submit.ts +90 -0
  250. package/src/runtime-internal/primitives/interaction.tsx +987 -0
  251. package/src/runtime-internal/primitives/phase.tsx +43 -0
  252. package/src/runtime-internal/primitives/player-roster.tsx +302 -0
  253. package/src/runtime-internal/primitives/primitive-props.tsx +101 -0
  254. package/src/runtime-internal/primitives/prompt.tsx +255 -0
  255. package/src/runtime-internal/primitives/ui.tsx +60 -0
  256. package/src/runtime-internal/primitives/zone.tsx +791 -0
  257. package/src/runtime-internal/reducer.ts +30 -0
  258. package/src/runtime-internal/runtime/createPluginRuntimeAPI.ts +605 -0
  259. package/src/runtime-internal/types/plugin-state.ts +508 -0
  260. package/src/runtime-internal/types/reducer-state.ts +24 -0
  261. package/src/runtime-internal/types/runtime-api.ts +114 -0
  262. package/src/runtime-internal/ui-contract.ts +519 -0
  263. package/src/runtime-internal/utils/card-intent-adapter.ts +546 -0
  264. package/src/runtime-internal/utils/interaction-inputs.ts +492 -0
  265. package/src/runtime-internal/utils/interaction-labels.ts +23 -0
  266. package/src/runtime-internal/utils/interaction-router.ts +273 -0
  267. package/src/runtime-internal/utils/interaction-status.ts +74 -0
  268. package/src/runtime-internal/workspace-contract.ts +1170 -0
  269. package/src/runtime.ts +34 -0
  270. package/src/testing/create-expect-api.ts +352 -0
  271. package/src/testing/create-test-runtime.ts +381 -0
  272. package/src/testing/definitions.ts +127 -0
  273. package/src/testing/index.ts +3 -0
  274. package/src/testing.ts +1 -0
  275. package/src/type-stubs/manifest-contract.d.ts +42 -0
  276. package/src/type-stubs/manifest-contract.js +72 -0
  277. package/src/type-stubs/ui-contract.d.ts +5 -0
  278. package/src/type-stubs/ui-contract.js +1 -0
  279. package/src/types/authoring-card-properties.type-test.ts +266 -0
  280. package/src/types/authoring.ts +1282 -0
  281. package/src/types/cards.ts +19 -0
  282. package/src/types/contracts.ts +1550 -0
  283. package/src/types/generated-helpers.ts +35 -0
  284. package/src/types/index.ts +147 -0
  285. package/src/types/slots.ts +11 -0
  286. package/src/types.ts +1 -0
  287. package/src/ui/components/ActionButton.tsx +97 -0
  288. package/src/ui/components/ActionPanel.tsx +315 -0
  289. package/src/ui/components/Card.tsx +378 -0
  290. package/src/ui/components/CardDragSurface.tsx +1076 -0
  291. package/src/ui/components/ChromeSuppressionContext.tsx +70 -0
  292. package/src/ui/components/CostDisplay.tsx +145 -0
  293. package/src/ui/components/DiceRoller.tsx +581 -0
  294. package/src/ui/components/Drawer.tsx +180 -0
  295. package/src/ui/components/ErrorBoundary.tsx +275 -0
  296. package/src/ui/components/GameEndDisplay.tsx +398 -0
  297. package/src/ui/components/GameSkeleton.tsx +260 -0
  298. package/src/ui/components/Hand.tsx +468 -0
  299. package/src/ui/components/HandDock.tsx +299 -0
  300. package/src/ui/components/HandView.tsx +441 -0
  301. package/src/ui/components/MobileHandTray.tsx +381 -0
  302. package/src/ui/components/MoreActions.tsx +143 -0
  303. package/src/ui/components/PhaseIndicator.tsx +341 -0
  304. package/src/ui/components/PlayArea.tsx +146 -0
  305. package/src/ui/components/PrimaryActionButton.tsx +336 -0
  306. package/src/ui/components/PrimaryButton.tsx +45 -0
  307. package/src/ui/components/ResourceCounter.tsx +270 -0
  308. package/src/ui/components/StagingZone.tsx +134 -0
  309. package/src/ui/components/ThemedButton.tsx +113 -0
  310. package/src/ui/components/Toast.tsx +264 -0
  311. package/src/ui/components/board/HexGrid.tsx +1294 -0
  312. package/src/ui/components/board/NetworkGraph.tsx +476 -0
  313. package/src/ui/components/board/SlotSystem.tsx +388 -0
  314. package/src/ui/components/board/SquareGrid.tsx +1165 -0
  315. package/src/ui/components/board/TrackBoard.tsx +496 -0
  316. package/src/ui/components/board/ZoneMap.tsx +448 -0
  317. package/src/ui/components/board/hex-board-view.ts +123 -0
  318. package/src/ui/components/board/index.ts +142 -0
  319. package/src/ui/components/board/interaction-accessibility.ts +21 -0
  320. package/src/ui/components/board/target-layer.ts +66 -0
  321. package/src/ui/components/card-render-content.type-test.ts +27 -0
  322. package/src/ui/components/hand-layout-math.ts +163 -0
  323. package/src/ui/components/hand-pointer-engine.ts +413 -0
  324. package/src/ui/components/index.ts +245 -0
  325. package/src/ui/components.ts +1 -0
  326. package/src/ui/defaults/components.tsx +106 -0
  327. package/src/ui/defaults/index.ts +8 -0
  328. package/src/ui/defaults.ts +1 -0
  329. package/src/ui/errors/ValidationError.ts +29 -0
  330. package/src/ui/helpers/cards.ts +19 -0
  331. package/src/ui/helpers/track-board.ts +211 -0
  332. package/src/ui/hooks/useBoardTopology.ts +316 -0
  333. package/src/ui/hooks/useCards.ts +10 -0
  334. package/src/ui/hooks/useHandCardPointer.ts +381 -0
  335. package/src/ui/hooks/useHandLayout.ts +378 -0
  336. package/src/ui/hooks/useHandPresentation.ts +121 -0
  337. package/src/ui/hooks/useHexBoard.ts +74 -0
  338. package/src/ui/hooks/useHexGrid.ts +185 -0
  339. package/src/ui/hooks/useIsMobile.ts +35 -0
  340. package/src/ui/hooks/usePanZoom.ts +278 -0
  341. package/src/ui/hooks/useSquareBoard.ts +124 -0
  342. package/src/ui/hooks/useSquareGrid.ts +328 -0
  343. package/src/ui/index.ts +98 -0
  344. package/src/ui/internal/ui/alert.tsx +51 -0
  345. package/src/ui/internal/ui/button.tsx +58 -0
  346. package/src/ui/internal/ui/dialog.tsx +134 -0
  347. package/src/ui/internal/ui/input.tsx +21 -0
  348. package/src/ui/internal/ui/label.tsx +21 -0
  349. package/src/ui/internal/ui/select.tsx +129 -0
  350. package/src/ui/internal/ui/tooltip.tsx +54 -0
  351. package/src/ui/internal/ui/utils.ts +5 -0
  352. package/src/ui/plugin-styles.css +250 -0
  353. package/src/ui/primitives/dialog-lifecycle.ts +58 -0
  354. package/src/ui/primitives/dice.tsx +79 -0
  355. package/src/ui/primitives/primitive-props.tsx +101 -0
  356. package/src/ui/theme/ThemeProvider.tsx +252 -0
  357. package/src/ui/theme/board.ts +61 -0
  358. package/src/ui/theme/css-vars.ts +105 -0
  359. package/src/ui/theme/derive.ts +240 -0
  360. package/src/ui/theme/index.ts +61 -0
  361. package/src/ui/theme/presets/arcade.ts +261 -0
  362. package/src/ui/theme/presets/studio.ts +261 -0
  363. package/src/ui/theme/presets/tabletop.ts +266 -0
  364. package/src/ui/theme/tokens.ts +392 -0
  365. package/src/ui/types/hex-color.ts +20 -0
  366. package/src/ui/types/player-state.ts +463 -0
  367. package/src/ui/types/tiled-board.ts +785 -0
  368. package/src/ui/types/visual-state.ts +137 -0
  369. package/src/ui.ts +1 -0
@@ -0,0 +1,1433 @@
1
+ /**
2
+ * Supported player-count metadata for the game
3
+ */
4
+ type PlayersDefinition = {
5
+ minPlayers: number;
6
+ maxPlayers: number;
7
+ optimalPlayers?: number;
8
+ };
9
+ type PresetCardSetDefinition = {
10
+ /**
11
+ * Unique local identifier for the authored card set
12
+ */
13
+ id: string;
14
+ /**
15
+ * Built-in preset card-set selector
16
+ */
17
+ presetId: string;
18
+ /**
19
+ * Display name of the card set
20
+ */
21
+ name: string;
22
+ /**
23
+ * Type of card set source
24
+ */
25
+ type: 'preset';
26
+ };
27
+ /**
28
+ * Arbitrary authored JSON value.
29
+ */
30
+ type JsonValue = string | number | boolean | null | Array<JsonValue> | {
31
+ [key: string]: JsonValue;
32
+ };
33
+ type PropertySchema = {
34
+ /**
35
+ * The data type of the property.
36
+ */
37
+ type: 'string' | 'integer' | 'number' | 'boolean' | 'zoneId' | 'cardId' | 'playerId' | 'boardId' | 'edgeId' | 'vertexId' | 'spaceId' | 'pieceId' | 'dieId' | 'resourceId' | 'array' | 'object' | 'record' | 'enum';
38
+ /**
39
+ * Optional description of the property's purpose and usage.
40
+ */
41
+ description?: string;
42
+ /**
43
+ * Whether an object property may be omitted.
44
+ */
45
+ optional?: boolean;
46
+ /**
47
+ * Whether the value may be null.
48
+ */
49
+ nullable?: boolean;
50
+ /**
51
+ * Optional authored default value for this property. When present, omitted
52
+ * seed values materialize to the default and generated TypeScript treats
53
+ * the property as present even if `optional: true` is also set.
54
+ *
55
+ */
56
+ default?: JsonValue;
57
+ /**
58
+ * For array types, the schema of the array items. Required if type is 'array'.
59
+ */
60
+ items?: PropertySchema;
61
+ /**
62
+ * For object types, the schema of the object's properties. Required if type is 'object'.
63
+ */
64
+ properties?: {
65
+ [key: string]: PropertySchema;
66
+ };
67
+ /**
68
+ * For enum types, the list of allowed string values. Required if type is 'enum'.
69
+ */
70
+ enums?: Array<string>;
71
+ /**
72
+ * For record types, the schema of the record's values. Required if type is 'record'.
73
+ */
74
+ values?: PropertySchema;
75
+ };
76
+ type ObjectSchema = {
77
+ /**
78
+ * Map of property names to their schemas. Type is always 'object' and all properties are required.
79
+ */
80
+ properties: {
81
+ [key: string]: PropertySchema;
82
+ };
83
+ };
84
+ type CardPropertySchemaVariants = {
85
+ /**
86
+ * Property schemas present on every card-type variant.
87
+ */
88
+ shared?: {
89
+ [key: string]: PropertySchema;
90
+ };
91
+ /**
92
+ * Property schema for each card type in this manual card set.
93
+ */
94
+ variants: {
95
+ [key: string]: ObjectSchema;
96
+ };
97
+ };
98
+ type CardPropertySchema = ObjectSchema | CardPropertySchemaVariants;
99
+ type DetachedHomeSpec = {
100
+ type: 'detached';
101
+ };
102
+ type ZoneHomeSpec = {
103
+ type: 'zone';
104
+ zoneId: string;
105
+ };
106
+ type SpaceHomeSpec = {
107
+ type: 'space';
108
+ boardId: string;
109
+ spaceId: string;
110
+ };
111
+ type ContainerHomeSpec = {
112
+ type: 'container';
113
+ boardId: string;
114
+ containerId: string;
115
+ };
116
+ /**
117
+ * Tiled board edge identified by the spaces that border it
118
+ */
119
+ type BoardEdgeRef = {
120
+ spaces: Array<string>;
121
+ };
122
+ type EdgeHomeSpec = {
123
+ type: 'edge';
124
+ boardId: string;
125
+ ref: BoardEdgeRef;
126
+ };
127
+ /**
128
+ * Tiled board vertex identified by the spaces that touch it
129
+ */
130
+ type BoardVertexRef = {
131
+ spaces: Array<string>;
132
+ };
133
+ type VertexHomeSpec = {
134
+ type: 'vertex';
135
+ boardId: string;
136
+ ref: BoardVertexRef;
137
+ };
138
+ type PieceSlotHostRef = {
139
+ kind: 'piece';
140
+ id: string;
141
+ };
142
+ type DieSlotHostRef = {
143
+ kind: 'die';
144
+ id: string;
145
+ };
146
+ type SlotHostRef = ({
147
+ kind: 'piece';
148
+ } & PieceSlotHostRef) | ({
149
+ kind: 'die';
150
+ } & DieSlotHostRef);
151
+ type SlotHomeSpec = {
152
+ type: 'slot';
153
+ host: SlotHostRef;
154
+ slotId: string;
155
+ };
156
+ type ComponentHomeSpec = ({
157
+ type: 'detached';
158
+ } & DetachedHomeSpec) | ({
159
+ type: 'zone';
160
+ } & ZoneHomeSpec) | ({
161
+ type: 'space';
162
+ } & SpaceHomeSpec) | ({
163
+ type: 'container';
164
+ } & ContainerHomeSpec) | ({
165
+ type: 'edge';
166
+ } & EdgeHomeSpec) | ({
167
+ type: 'vertex';
168
+ } & VertexHomeSpec) | ({
169
+ type: 'slot';
170
+ } & SlotHomeSpec);
171
+ /**
172
+ * Default authored visibility for a component instance
173
+ */
174
+ type ComponentVisibilitySpec = {
175
+ faceUp?: boolean;
176
+ /**
177
+ * When omitted, visible to all players
178
+ */
179
+ visibleTo?: Array<string>;
180
+ };
181
+ type BoardCard = {
182
+ /**
183
+ * Card type identifier used to generate runtime CardIds. When count > 1, runtime IDs are generated as '{type}-1', '{type}-2', etc.
184
+ */
185
+ type: string;
186
+ /**
187
+ * Display name of the card
188
+ */
189
+ name: string;
190
+ /**
191
+ * URL to the card's image
192
+ */
193
+ imageUrl?: string;
194
+ /**
195
+ * Text content on the card
196
+ */
197
+ text?: string;
198
+ /**
199
+ * Number of copies of this card
200
+ */
201
+ count: number;
202
+ /**
203
+ * Optional authored card category or subtype identifier
204
+ */
205
+ cardType?: string;
206
+ /**
207
+ * Optional authored home for this card inventory. When omitted, cards start detached until reducer setup places them.
208
+ */
209
+ home?: ComponentHomeSpec;
210
+ /**
211
+ * Default authored visibility for the card inventory
212
+ */
213
+ visibility?: ComponentVisibilitySpec;
214
+ /**
215
+ * Actual property values for this specific card instance. Keys must match the properties defined in the referenced cardSchema.
216
+ */
217
+ properties: {
218
+ [key: string]: JsonValue;
219
+ };
220
+ };
221
+ type ManualCardSetDefinition = {
222
+ /**
223
+ * Unique identifier for the card set
224
+ */
225
+ id: string;
226
+ /**
227
+ * Display name of the card set
228
+ */
229
+ name: string;
230
+ /**
231
+ * Type of card set source
232
+ */
233
+ type: 'manual';
234
+ /**
235
+ * Schema definition for authored card properties in this card set
236
+ */
237
+ cardSchema: CardPropertySchema;
238
+ /**
239
+ * List of authored cards in this card set
240
+ */
241
+ cards: Array<BoardCard>;
242
+ };
243
+ type CardSetDefinition = ({
244
+ type: 'preset';
245
+ } & PresetCardSetDefinition) | ({
246
+ type: 'manual';
247
+ } & ManualCardSetDefinition);
248
+ /**
249
+ * Whether authored topology exists once for the table or once per player
250
+ */
251
+ type TopologyScope = 'shared' | 'perPlayer';
252
+ /**
253
+ * Default topology visibility for a zone or slot
254
+ */
255
+ type ZoneVisibility = 'ownerOnly' | 'public' | 'hidden';
256
+ /**
257
+ * Generic authored container that can hold cards, pieces, or dice
258
+ */
259
+ type ZoneSpec = {
260
+ /**
261
+ * Stable zone identifier
262
+ */
263
+ id: string;
264
+ /**
265
+ * Display name for the zone
266
+ */
267
+ name: string;
268
+ scope: TopologyScope;
269
+ /**
270
+ * Optional card-set restriction for this zone
271
+ */
272
+ allowedCardSetIds?: Array<string>;
273
+ visibility?: ZoneVisibility;
274
+ };
275
+ /**
276
+ * Stable authored board space or slot anchor
277
+ */
278
+ type BoardSpaceSpec = {
279
+ /**
280
+ * Stable space identifier local to the board
281
+ */
282
+ id: string;
283
+ /**
284
+ * Human-readable space name
285
+ */
286
+ name?: string;
287
+ /**
288
+ * Optional authored space type identifier
289
+ */
290
+ typeId?: string;
291
+ /**
292
+ * Typed authored fields validated against the board's spaceFieldsSchema
293
+ */
294
+ fields?: {
295
+ [key: string]: JsonValue;
296
+ };
297
+ };
298
+ /**
299
+ * Named relation between two authored spaces
300
+ */
301
+ type BoardRelationSpec = {
302
+ /**
303
+ * Optional stable relation identifier
304
+ */
305
+ id?: string;
306
+ /**
307
+ * Relation type identifier such as adjacent, covers, blocks, or linked
308
+ */
309
+ typeId: string;
310
+ fromSpaceId: string;
311
+ toSpaceId: string;
312
+ directed?: boolean;
313
+ /**
314
+ * Typed authored relation fields validated against relationFieldsSchema
315
+ */
316
+ fields?: {
317
+ [key: string]: JsonValue;
318
+ };
319
+ };
320
+ type BoardHostSpec = {
321
+ type: 'board';
322
+ };
323
+ type SpaceHostSpec = {
324
+ type: 'space';
325
+ spaceId: string;
326
+ };
327
+ type BoardContainerHostSpec = ({
328
+ type: 'board';
329
+ } & BoardHostSpec) | ({
330
+ type: 'space';
331
+ } & SpaceHostSpec);
332
+ /**
333
+ * Authored board-attached or space-attached container/slot
334
+ */
335
+ type BoardContainerSpec = {
336
+ /**
337
+ * Stable container identifier local to the board
338
+ */
339
+ id: string;
340
+ /**
341
+ * Display name for the container
342
+ */
343
+ name: string;
344
+ host: BoardContainerHostSpec;
345
+ allowedCardSetIds?: Array<string>;
346
+ /**
347
+ * Typed authored container fields validated against containerFieldsSchema
348
+ */
349
+ fields?: {
350
+ [key: string]: JsonValue;
351
+ };
352
+ };
353
+ /**
354
+ * Reusable authored board topology template
355
+ */
356
+ type GenericBoardTemplateSpec = {
357
+ /**
358
+ * Stable template identifier
359
+ */
360
+ id: string;
361
+ name: string;
362
+ layout: 'generic';
363
+ /**
364
+ * Optional authored board type identifier such as track, map, tableau, or grid
365
+ */
366
+ typeId?: string;
367
+ boardFieldsSchema?: ObjectSchema;
368
+ spaceFieldsSchema?: ObjectSchema;
369
+ relationFieldsSchema?: ObjectSchema;
370
+ containerFieldsSchema?: ObjectSchema;
371
+ spaces?: Array<BoardSpaceSpec>;
372
+ relations?: Array<BoardRelationSpec>;
373
+ containers?: Array<BoardContainerSpec>;
374
+ };
375
+ /**
376
+ * Visual orientation for authored hex coordinates
377
+ */
378
+ type HexOrientation = 'pointy-top' | 'flat-top';
379
+ /**
380
+ * One authored hex space in axial coordinates
381
+ */
382
+ type HexSpaceSpec = {
383
+ /**
384
+ * Stable space identifier local to the board
385
+ */
386
+ id: string;
387
+ /**
388
+ * Axial q coordinate
389
+ */
390
+ q: number;
391
+ /**
392
+ * Axial r coordinate
393
+ */
394
+ r: number;
395
+ /**
396
+ * Optional authored space type identifier
397
+ */
398
+ typeId?: string;
399
+ /**
400
+ * Optional hex-space label for setup or rendering
401
+ */
402
+ label?: string;
403
+ /**
404
+ * Typed authored fields validated against the board's spaceFieldsSchema
405
+ */
406
+ fields?: {
407
+ [key: string]: JsonValue;
408
+ };
409
+ };
410
+ /**
411
+ * Hex edge identified by two adjacent hex spaces
412
+ */
413
+ type HexEdgeRef = {
414
+ spaces: [
415
+ string,
416
+ string
417
+ ];
418
+ };
419
+ /**
420
+ * Authored metadata attached to one derived hex edge
421
+ */
422
+ type HexEdgeSpec = {
423
+ ref: HexEdgeRef;
424
+ /**
425
+ * Optional authored edge type identifier
426
+ */
427
+ typeId?: string;
428
+ /**
429
+ * Optional edge label for setup or rendering
430
+ */
431
+ label?: string;
432
+ tags?: Array<string>;
433
+ /**
434
+ * Typed authored edge fields validated against edgeFieldsSchema
435
+ */
436
+ fields?: {
437
+ [key: string]: JsonValue;
438
+ };
439
+ };
440
+ /**
441
+ * Hex vertex identified by three touching hex spaces
442
+ */
443
+ type HexVertexRef = {
444
+ spaces: [
445
+ string,
446
+ string,
447
+ string
448
+ ];
449
+ };
450
+ /**
451
+ * Authored metadata attached to one derived hex vertex
452
+ */
453
+ type HexVertexSpec = {
454
+ ref: HexVertexRef;
455
+ /**
456
+ * Optional authored vertex type identifier
457
+ */
458
+ typeId?: string;
459
+ /**
460
+ * Optional vertex label for setup or rendering
461
+ */
462
+ label?: string;
463
+ tags?: Array<string>;
464
+ /**
465
+ * Typed authored vertex fields validated against vertexFieldsSchema
466
+ */
467
+ fields?: {
468
+ [key: string]: JsonValue;
469
+ };
470
+ };
471
+ /**
472
+ * Reusable authored hex board topology template
473
+ */
474
+ type HexBoardTemplateSpec = {
475
+ /**
476
+ * Stable template identifier
477
+ */
478
+ id: string;
479
+ name: string;
480
+ layout: 'hex';
481
+ /**
482
+ * Optional authored board type identifier
483
+ */
484
+ typeId?: string;
485
+ orientation?: HexOrientation;
486
+ boardFieldsSchema?: ObjectSchema;
487
+ spaceFieldsSchema?: ObjectSchema;
488
+ edgeFieldsSchema?: ObjectSchema;
489
+ vertexFieldsSchema?: ObjectSchema;
490
+ spaces?: Array<HexSpaceSpec>;
491
+ edges?: Array<HexEdgeSpec>;
492
+ vertices?: Array<HexVertexSpec>;
493
+ };
494
+ /**
495
+ * One authored square space in row/column coordinates
496
+ */
497
+ type SquareSpaceSpec = {
498
+ /**
499
+ * Stable space identifier local to the board
500
+ */
501
+ id: string;
502
+ /**
503
+ * Zero-based row coordinate
504
+ */
505
+ row: number;
506
+ /**
507
+ * Zero-based column coordinate
508
+ */
509
+ col: number;
510
+ /**
511
+ * Optional authored space type identifier
512
+ */
513
+ typeId?: string;
514
+ /**
515
+ * Optional square-space label for setup or rendering
516
+ */
517
+ label?: string;
518
+ /**
519
+ * Typed authored fields validated against the board's spaceFieldsSchema
520
+ */
521
+ fields?: {
522
+ [key: string]: JsonValue;
523
+ };
524
+ };
525
+ /**
526
+ * Authored metadata attached to one derived square edge
527
+ */
528
+ type SquareEdgeSpec = {
529
+ ref: BoardEdgeRef;
530
+ /**
531
+ * Optional authored edge type identifier
532
+ */
533
+ typeId?: string;
534
+ /**
535
+ * Optional edge label for setup or rendering
536
+ */
537
+ label?: string;
538
+ tags?: Array<string>;
539
+ /**
540
+ * Typed authored edge fields validated against edgeFieldsSchema
541
+ */
542
+ fields?: {
543
+ [key: string]: JsonValue;
544
+ };
545
+ };
546
+ /**
547
+ * Authored metadata attached to one derived square vertex
548
+ */
549
+ type SquareVertexSpec = {
550
+ ref: BoardVertexRef;
551
+ /**
552
+ * Optional authored vertex type identifier
553
+ */
554
+ typeId?: string;
555
+ /**
556
+ * Optional vertex label for setup or rendering
557
+ */
558
+ label?: string;
559
+ tags?: Array<string>;
560
+ /**
561
+ * Typed authored vertex fields validated against vertexFieldsSchema
562
+ */
563
+ fields?: {
564
+ [key: string]: JsonValue;
565
+ };
566
+ };
567
+ /**
568
+ * Reusable authored square board topology template
569
+ */
570
+ type SquareBoardTemplateSpec = {
571
+ /**
572
+ * Stable template identifier
573
+ */
574
+ id: string;
575
+ name: string;
576
+ layout: 'square';
577
+ /**
578
+ * Optional authored board type identifier
579
+ */
580
+ typeId?: string;
581
+ boardFieldsSchema?: ObjectSchema;
582
+ spaceFieldsSchema?: ObjectSchema;
583
+ relationFieldsSchema?: ObjectSchema;
584
+ containerFieldsSchema?: ObjectSchema;
585
+ edgeFieldsSchema?: ObjectSchema;
586
+ vertexFieldsSchema?: ObjectSchema;
587
+ spaces?: Array<SquareSpaceSpec>;
588
+ relations?: Array<BoardRelationSpec>;
589
+ containers?: Array<BoardContainerSpec>;
590
+ edges?: Array<SquareEdgeSpec>;
591
+ vertices?: Array<SquareVertexSpec>;
592
+ };
593
+ type BoardTemplateSpec = ({
594
+ layout: 'generic';
595
+ } & GenericBoardTemplateSpec) | ({
596
+ layout: 'hex';
597
+ } & HexBoardTemplateSpec) | ({
598
+ layout: 'square';
599
+ } & SquareBoardTemplateSpec);
600
+ /**
601
+ * Shared or per-player authored board instance shell
602
+ */
603
+ type GenericBoardSpec = {
604
+ /**
605
+ * Stable board identifier
606
+ */
607
+ id: string;
608
+ name: string;
609
+ layout: 'generic';
610
+ /**
611
+ * Optional authored board type identifier such as track, map, tableau, or grid
612
+ */
613
+ typeId?: string;
614
+ scope: TopologyScope;
615
+ /**
616
+ * Optional board template to clone before applying inline authored additions
617
+ */
618
+ templateId?: string;
619
+ boardFieldsSchema?: ObjectSchema;
620
+ spaceFieldsSchema?: ObjectSchema;
621
+ relationFieldsSchema?: ObjectSchema;
622
+ containerFieldsSchema?: ObjectSchema;
623
+ /**
624
+ * Typed authored board fields validated against boardFieldsSchema
625
+ */
626
+ fields?: {
627
+ [key: string]: JsonValue;
628
+ };
629
+ spaces?: Array<BoardSpaceSpec>;
630
+ relations?: Array<BoardRelationSpec>;
631
+ containers?: Array<BoardContainerSpec>;
632
+ };
633
+ /**
634
+ * Shared or per-player authored hex board instance shell
635
+ */
636
+ type HexBoardSpec = {
637
+ /**
638
+ * Stable board identifier
639
+ */
640
+ id: string;
641
+ name: string;
642
+ layout: 'hex';
643
+ /**
644
+ * Optional authored board type identifier
645
+ */
646
+ typeId?: string;
647
+ scope: TopologyScope;
648
+ /**
649
+ * Optional hex board template to clone before applying inline authored additions
650
+ */
651
+ templateId?: string;
652
+ orientation?: HexOrientation;
653
+ boardFieldsSchema?: ObjectSchema;
654
+ spaceFieldsSchema?: ObjectSchema;
655
+ edgeFieldsSchema?: ObjectSchema;
656
+ vertexFieldsSchema?: ObjectSchema;
657
+ /**
658
+ * Typed authored board fields validated against boardFieldsSchema
659
+ */
660
+ fields?: {
661
+ [key: string]: JsonValue;
662
+ };
663
+ spaces?: Array<HexSpaceSpec>;
664
+ edges?: Array<HexEdgeSpec>;
665
+ vertices?: Array<HexVertexSpec>;
666
+ };
667
+ /**
668
+ * Shared or per-player authored square board instance shell
669
+ */
670
+ type SquareBoardSpec = {
671
+ /**
672
+ * Stable board identifier
673
+ */
674
+ id: string;
675
+ name: string;
676
+ layout: 'square';
677
+ /**
678
+ * Optional authored board type identifier
679
+ */
680
+ typeId?: string;
681
+ scope: TopologyScope;
682
+ /**
683
+ * Optional square board template to clone before applying inline authored additions
684
+ */
685
+ templateId?: string;
686
+ boardFieldsSchema?: ObjectSchema;
687
+ spaceFieldsSchema?: ObjectSchema;
688
+ relationFieldsSchema?: ObjectSchema;
689
+ containerFieldsSchema?: ObjectSchema;
690
+ edgeFieldsSchema?: ObjectSchema;
691
+ vertexFieldsSchema?: ObjectSchema;
692
+ /**
693
+ * Typed authored board fields validated against boardFieldsSchema
694
+ */
695
+ fields?: {
696
+ [key: string]: JsonValue;
697
+ };
698
+ spaces?: Array<SquareSpaceSpec>;
699
+ relations?: Array<BoardRelationSpec>;
700
+ containers?: Array<BoardContainerSpec>;
701
+ edges?: Array<SquareEdgeSpec>;
702
+ vertices?: Array<SquareVertexSpec>;
703
+ };
704
+ type BoardSpec = ({
705
+ layout: 'generic';
706
+ } & GenericBoardSpec) | ({
707
+ layout: 'hex';
708
+ } & HexBoardSpec) | ({
709
+ layout: 'square';
710
+ } & SquareBoardSpec);
711
+ /**
712
+ * Named authored slot exposed by a piece or die type
713
+ */
714
+ type ComponentSlotSpec = {
715
+ id: string;
716
+ name?: string;
717
+ };
718
+ /**
719
+ * Reusable authored piece type
720
+ */
721
+ type PieceTypeSpec = {
722
+ id: string;
723
+ name: string;
724
+ fieldsSchema?: ObjectSchema;
725
+ slots?: Array<ComponentSlotSpec>;
726
+ };
727
+ /**
728
+ * Authored seeded piece inventory or supply definition
729
+ */
730
+ type PieceSeedSpec = {
731
+ /**
732
+ * Stable piece id seed. When count > 1, runtime ids are generated as '{id}-1', '{id}-2', etc.
733
+ */
734
+ id?: string;
735
+ name?: string;
736
+ typeId: string;
737
+ count?: number;
738
+ ownerId?: string;
739
+ home?: ComponentHomeSpec;
740
+ visibility?: ComponentVisibilitySpec;
741
+ /**
742
+ * Typed authored piece fields validated against the piece type schema
743
+ */
744
+ fields?: {
745
+ [key: string]: JsonValue;
746
+ };
747
+ };
748
+ /**
749
+ * Reusable authored die type
750
+ */
751
+ type DieTypeSpec$1 = {
752
+ id: string;
753
+ name: string;
754
+ sides?: number;
755
+ fieldsSchema?: ObjectSchema;
756
+ slots?: Array<ComponentSlotSpec>;
757
+ };
758
+ /**
759
+ * Authored seeded die inventory or supply definition
760
+ */
761
+ type DieSeedSpec = {
762
+ /**
763
+ * Stable die id seed. When count > 1, runtime ids are generated as '{id}-1', '{id}-2', etc.
764
+ */
765
+ id?: string;
766
+ name?: string;
767
+ typeId: string;
768
+ count?: number;
769
+ ownerId?: string;
770
+ home?: ComponentHomeSpec;
771
+ visibility?: ComponentVisibilitySpec;
772
+ /**
773
+ * Typed authored die fields validated against the die type schema
774
+ */
775
+ fields?: {
776
+ [key: string]: JsonValue;
777
+ };
778
+ };
779
+ /**
780
+ * Definition of a game resource type
781
+ */
782
+ type ResourceDefinition = {
783
+ /**
784
+ * Unique identifier for the resource. Used as a typed ResourceId.
785
+ */
786
+ id: string;
787
+ /**
788
+ * Human-readable display name for the resource
789
+ */
790
+ name: string;
791
+ /**
792
+ * Optional compact icon or emoji rendered by generic UI resource controls.
793
+ */
794
+ icon?: string;
795
+ };
796
+ /**
797
+ * One authored setup option choice
798
+ */
799
+ type SetupOptionChoiceSpec = {
800
+ id: string;
801
+ label: string;
802
+ description?: string;
803
+ };
804
+ /**
805
+ * Authored setup module/variant axis metadata
806
+ */
807
+ type SetupOptionSpec = {
808
+ id: string;
809
+ name: string;
810
+ description?: string;
811
+ choices?: Array<SetupOptionChoiceSpec>;
812
+ };
813
+ /**
814
+ * Reducer-consumed authored setup profile, recipe, or loadout metadata
815
+ */
816
+ type SetupProfileSpec = {
817
+ id: string;
818
+ name: string;
819
+ description?: string;
820
+ /**
821
+ * Selected setup-option values for this profile
822
+ */
823
+ optionValues?: {
824
+ [key: string]: string;
825
+ };
826
+ };
827
+ /**
828
+ * Authoritative topology manifest for reducer-native games
829
+ */
830
+ type GameTopologyManifest$1 = {
831
+ players: PlayersDefinition;
832
+ /**
833
+ * Authored card catalogs and schemas
834
+ */
835
+ cardSets: Array<CardSetDefinition>;
836
+ /**
837
+ * Shared and per-player authored containers
838
+ */
839
+ zones?: Array<ZoneSpec>;
840
+ /**
841
+ * Reusable board topology templates
842
+ */
843
+ boardTemplates?: Array<BoardTemplateSpec>;
844
+ /**
845
+ * Shared and per-player authored board shells
846
+ */
847
+ boards?: Array<BoardSpec>;
848
+ pieceTypes?: Array<PieceTypeSpec>;
849
+ pieceSeeds?: Array<PieceSeedSpec>;
850
+ dieTypes?: Array<DieTypeSpec$1>;
851
+ dieSeeds?: Array<DieSeedSpec>;
852
+ resources?: Array<ResourceDefinition>;
853
+ /**
854
+ * Authored setup-option metadata consumed by reducer-owned setup flows
855
+ */
856
+ setupOptions?: Array<SetupOptionSpec>;
857
+ /**
858
+ * Authored setup recipes, loadouts, or module profiles consumed by reducer setup code
859
+ */
860
+ setupProfiles?: Array<SetupProfileSpec>;
861
+ };
862
+ /**
863
+ * Authenticated user acting in a session.
864
+ */
865
+ type SessionActorAuthUser = {
866
+ kind: 'AUTH_USER';
867
+ /**
868
+ * Internal user id
869
+ */
870
+ id: string;
871
+ };
872
+ /**
873
+ * Anonymous demo principal for one demo_sessions row (shared across tabs).
874
+ */
875
+ type SessionActorDemoGuest = {
876
+ kind: 'DEMO_GUEST';
877
+ /**
878
+ * demo_sessions.id
879
+ */
880
+ demoActorSessionId: string;
881
+ };
882
+ type SessionActor = ({
883
+ kind: 'AUTH_USER';
884
+ } & SessionActorAuthUser) | ({
885
+ kind: 'DEMO_GUEST';
886
+ } & SessionActorDemoGuest);
887
+ type SessionGameSourceUserCompiled = {
888
+ kind: 'USER_COMPILED';
889
+ ownerUserId: string;
890
+ gameId: string;
891
+ compiledResultId: string;
892
+ };
893
+ type SessionGameSourceDemoRevision = {
894
+ kind: 'DEMO_REVISION';
895
+ slug: string;
896
+ revisionId: string;
897
+ };
898
+ type SessionGameSource = ({
899
+ kind: 'USER_COMPILED';
900
+ } & SessionGameSourceUserCompiled) | ({
901
+ kind: 'DEMO_REVISION';
902
+ } & SessionGameSourceDemoRevision);
903
+ type SessionSnapshotPhase = 'lobby' | 'gameplay' | 'ended';
904
+ type HostSessionStatus = 'active' | 'ended';
905
+ /**
906
+ * Summary of a game state history entry.
907
+ */
908
+ type HistoryEntrySummary = {
909
+ id: string;
910
+ generation: number;
911
+ version: number;
912
+ timestamp: string;
913
+ description: string;
914
+ playerId?: string;
915
+ actionType?: string;
916
+ isCurrent: boolean;
917
+ };
918
+ type SessionSnapshotHistory = {
919
+ entries: Array<HistoryEntrySummary>;
920
+ currentIndex: number;
921
+ canGoBack: boolean;
922
+ canGoForward: boolean;
923
+ };
924
+ type HostSessionContext = {
925
+ /**
926
+ * Unique identifier for the session.
927
+ */
928
+ sessionId: string;
929
+ /**
930
+ * Memorable short code for sharing.
931
+ */
932
+ shortCode: string;
933
+ phase: SessionSnapshotPhase;
934
+ status: HostSessionStatus;
935
+ hostActor: SessionActor;
936
+ gameSource: SessionGameSource;
937
+ /**
938
+ * Selected authored setup profile for this session.
939
+ */
940
+ setupProfileId?: string;
941
+ /**
942
+ * Player IDs the authenticated session actor may select.
943
+ */
944
+ switchablePlayerIds: Array<string>;
945
+ history?: SessionSnapshotHistory;
946
+ };
947
+ type SeatAssignment = {
948
+ /**
949
+ * Player identifier (e.g., 'player-1')
950
+ */
951
+ playerId: string;
952
+ /**
953
+ * Session actor controlling this seat (null if empty)
954
+ */
955
+ controllerActor?: SessionActor;
956
+ /**
957
+ * Display name for this seat/player
958
+ */
959
+ displayName: string;
960
+ /**
961
+ * Hex color code for the player (e.g., '#FF5733')
962
+ */
963
+ playerColor?: string;
964
+ /**
965
+ * Whether this seat is the host
966
+ */
967
+ isHost?: boolean;
968
+ };
969
+ type HostLobbyView = {
970
+ /**
971
+ * Current public seat assignments for the session.
972
+ */
973
+ seats: Array<SeatAssignment>;
974
+ /**
975
+ * Whether the lobby can currently be started.
976
+ */
977
+ canStart: boolean;
978
+ /**
979
+ * Session actor that hosts this session.
980
+ */
981
+ hostActor: SessionActor;
982
+ /**
983
+ * Selected authored setup profile for this session.
984
+ */
985
+ setupProfileId?: string;
986
+ };
987
+ type HostLobbySessionSnapshot = {
988
+ type: 'lobby';
989
+ context: HostSessionContext;
990
+ lobby: HostLobbyView;
991
+ };
992
+ type SimultaneousPhaseSnapshot = {
993
+ phaseName: string;
994
+ interactionId: string;
995
+ actorIds: Array<string>;
996
+ sealedPlayerIds: Array<string>;
997
+ pendingPlayerIds: Array<string>;
998
+ };
999
+ type HostGameplaySharedView = {
1000
+ /**
1001
+ * Player IDs currently active in the game state.
1002
+ */
1003
+ activePlayers: Array<string>;
1004
+ /**
1005
+ * Current reducer-native gameplay phase.
1006
+ */
1007
+ currentPhase: string;
1008
+ /**
1009
+ * Current stage within the phase. Null when the phase has no active stage.
1010
+ */
1011
+ currentStage: string | null;
1012
+ /**
1013
+ * Player IDs this stage currently admits.
1014
+ */
1015
+ stageSeats: Array<string>;
1016
+ /**
1017
+ * Visibility-safe progress metadata for an active simultaneous-player phase.
1018
+ */
1019
+ simultaneousPhase?: SimultaneousPhaseSnapshot | null;
1020
+ /**
1021
+ * JSON-serialized session-scoped static view. Populated on gameplay bootstrap payloads only.
1022
+ */
1023
+ boardStatic?: string | null;
1024
+ /**
1025
+ * Content hash of the session-scoped static view held on the host.
1026
+ */
1027
+ boardStaticHash?: string | null;
1028
+ };
1029
+ /**
1030
+ * Draft commit policy consumed by default UI surfaces.
1031
+ */
1032
+ type InteractionCommitPolicy = {
1033
+ mode: 'manual' | 'autoWhenReady';
1034
+ };
1035
+ /**
1036
+ * Single-value input selection.
1037
+ */
1038
+ type SingleInputSelection = {
1039
+ mode: 'single';
1040
+ };
1041
+ /**
1042
+ * Multi-value input selection.
1043
+ */
1044
+ type ManyInputSelection = {
1045
+ mode: 'many';
1046
+ min: number;
1047
+ max?: number;
1048
+ distinct?: boolean;
1049
+ };
1050
+ type InputSelection = ({
1051
+ mode: 'single';
1052
+ } & SingleInputSelection) | ({
1053
+ mode: 'many';
1054
+ } & ManyInputSelection);
1055
+ type InputDomain = ({
1056
+ type: 'cardTarget';
1057
+ } & CardTargetDomain) | ({
1058
+ type: 'boardTarget';
1059
+ } & BoardTargetDomain) | ({
1060
+ type: 'resourceMap';
1061
+ } & ResourceMapDomain) | ({
1062
+ type: 'boundedNumber';
1063
+ } & BoundedNumberDomain) | ({
1064
+ type: 'choice';
1065
+ } & ChoiceDomain) | ({
1066
+ type: 'choiceList';
1067
+ } & ChoiceListDomain);
1068
+ type InputDomainDependencyCase = {
1069
+ when: {
1070
+ [key: string]: string;
1071
+ };
1072
+ domain: InputDomain;
1073
+ };
1074
+ type EagerInputDomainDependencies = {
1075
+ mode: 'eager';
1076
+ dependentCases: Array<InputDomainDependencyCase>;
1077
+ };
1078
+ type ResolvedCardTargetDomain = {
1079
+ type: 'cardTarget';
1080
+ projection: 'resolved';
1081
+ targetKind: 'card';
1082
+ zoneIds: Array<string>;
1083
+ eligibleTargets: Array<string>;
1084
+ selection?: InputSelection;
1085
+ dependencies?: EagerInputDomainDependencies;
1086
+ };
1087
+ type InputDomainResolver = {
1088
+ interactionKey?: string;
1089
+ inputKey: string;
1090
+ };
1091
+ type LazyInputDomainDependencies = {
1092
+ mode: 'lazy';
1093
+ dependsOn: Array<string>;
1094
+ resolver: InputDomainResolver;
1095
+ };
1096
+ type LazyCardTargetDomain = {
1097
+ type: 'cardTarget';
1098
+ projection: 'lazy';
1099
+ targetKind: 'card';
1100
+ zoneIds: Array<string>;
1101
+ selection?: InputSelection;
1102
+ dependencies: LazyInputDomainDependencies;
1103
+ };
1104
+ type CardTargetDomain = ({
1105
+ projection: 'resolved';
1106
+ } & ResolvedCardTargetDomain) | ({
1107
+ projection: 'lazy';
1108
+ } & LazyCardTargetDomain);
1109
+ type ResolvedBoardTargetDomain = {
1110
+ type: 'boardTarget';
1111
+ projection: 'resolved';
1112
+ targetKind: 'edge' | 'vertex' | 'space' | 'tile';
1113
+ boardId: string;
1114
+ valueKind?: 'board-id' | 'player-board-space';
1115
+ eligibleTargets: Array<string>;
1116
+ selection?: InputSelection;
1117
+ dependencies?: EagerInputDomainDependencies;
1118
+ };
1119
+ type LazyBoardTargetDomain = {
1120
+ type: 'boardTarget';
1121
+ projection: 'lazy';
1122
+ targetKind: 'edge' | 'vertex' | 'space' | 'tile';
1123
+ boardId: string;
1124
+ valueKind?: 'board-id' | 'player-board-space';
1125
+ selection?: InputSelection;
1126
+ dependencies: LazyInputDomainDependencies;
1127
+ };
1128
+ type BoardTargetDomain = ({
1129
+ projection: 'resolved';
1130
+ } & ResolvedBoardTargetDomain) | ({
1131
+ projection: 'lazy';
1132
+ } & LazyBoardTargetDomain);
1133
+ type ResourceMapDomainEntry = {
1134
+ resourceId: string;
1135
+ label?: string;
1136
+ icon?: string;
1137
+ min: number;
1138
+ max: number;
1139
+ };
1140
+ type ResourceMapDomain = {
1141
+ type: 'resourceMap';
1142
+ resources: Array<ResourceMapDomainEntry>;
1143
+ selection?: InputSelection;
1144
+ };
1145
+ type BoundedNumberDomain = {
1146
+ type: 'boundedNumber';
1147
+ min: number;
1148
+ max: number;
1149
+ step?: number;
1150
+ selection?: InputSelection;
1151
+ };
1152
+ type ChoiceDomainOption = {
1153
+ value: string | null;
1154
+ label: string;
1155
+ icon?: string;
1156
+ badge?: string;
1157
+ description?: string;
1158
+ disabled?: boolean;
1159
+ disabledReason?: string;
1160
+ };
1161
+ type ChoiceDomain = {
1162
+ type: 'choice';
1163
+ choices: Array<ChoiceDomainOption>;
1164
+ selection?: InputSelection;
1165
+ dependencies?: EagerInputDomainDependencies;
1166
+ };
1167
+ type ChoiceListDomain = {
1168
+ type: 'choiceList';
1169
+ choices: Array<ChoiceDomainOption>;
1170
+ min?: number;
1171
+ max?: number;
1172
+ selection?: InputSelection;
1173
+ dependencies?: EagerInputDomainDependencies;
1174
+ };
1175
+ /**
1176
+ * Canonical descriptor for one interaction input collector.
1177
+ */
1178
+ type InteractionInputDescriptor = {
1179
+ key: string;
1180
+ kind: string;
1181
+ domain: InputDomain;
1182
+ /**
1183
+ * Optional default value applied to this input when the player has not
1184
+ * yet drafted a value. Mirrors the input collector's `defaultValue`
1185
+ * from the authored interaction, so plugins can render a sensible
1186
+ * starting state (e.g. a pre-selected resource for a bank trade).
1187
+ *
1188
+ */
1189
+ defaultValue?: JsonValue;
1190
+ };
1191
+ type AvailableInteractionAvailability = {
1192
+ status: 'available';
1193
+ };
1194
+ type NotYourTurnInteractionAvailability = {
1195
+ status: 'notYourTurn';
1196
+ reason: string;
1197
+ };
1198
+ type InsufficientResourcesInteractionAvailability = {
1199
+ status: 'insufficientResources';
1200
+ reason: string;
1201
+ /**
1202
+ * Resource shortfall by resource id when a costed interaction is not currently affordable.
1203
+ */
1204
+ missingResources: {
1205
+ [key: string]: number;
1206
+ };
1207
+ };
1208
+ type BlockedInteractionAvailability = {
1209
+ status: 'blocked';
1210
+ reason: string;
1211
+ code?: string;
1212
+ };
1213
+ type InteractionAvailability = ({
1214
+ status: 'available';
1215
+ } & AvailableInteractionAvailability) | ({
1216
+ status: 'notYourTurn';
1217
+ } & NotYourTurnInteractionAvailability) | ({
1218
+ status: 'insufficientResources';
1219
+ } & InsufficientResourcesInteractionAvailability) | ({
1220
+ status: 'blocked';
1221
+ } & BlockedInteractionAvailability);
1222
+ /**
1223
+ * Authoritative interaction descriptor resolved by the trusted bundle.
1224
+ */
1225
+ type InteractionDescriptorBase = {
1226
+ phaseName: string;
1227
+ interactionKey: string;
1228
+ interactionId: string;
1229
+ zoneId?: string;
1230
+ /**
1231
+ * Draft commit policy materialized by the trusted reducer bundle. Omitted authoring specs default to manual before this descriptor crosses the runtime boundary.
1232
+ */
1233
+ commit: InteractionCommitPolicy;
1234
+ /**
1235
+ * Ordered input descriptors. Each entry is the canonical source for its collector key, collector kind, and valid-value domain.
1236
+ */
1237
+ inputs: Array<InteractionInputDescriptor>;
1238
+ cost?: {
1239
+ [key: string]: JsonValue;
1240
+ };
1241
+ currentResources?: {
1242
+ [key: string]: JsonValue;
1243
+ };
1244
+ availability: InteractionAvailability;
1245
+ };
1246
+ type ActionInteractionDescriptor = InteractionDescriptorBase & {
1247
+ kind: 'action';
1248
+ };
1249
+ type InteractionContextOption = {
1250
+ id: string;
1251
+ label: string;
1252
+ };
1253
+ type InteractionContext = {
1254
+ to: string;
1255
+ title?: string;
1256
+ payload?: {
1257
+ [key: string]: JsonValue;
1258
+ };
1259
+ options?: Array<InteractionContextOption>;
1260
+ };
1261
+ type PromptInteractionDescriptor = InteractionDescriptorBase & {
1262
+ kind: 'prompt';
1263
+ context: InteractionContext;
1264
+ };
1265
+ type InteractionDescriptor = ({
1266
+ kind: 'action';
1267
+ } & ActionInteractionDescriptor) | ({
1268
+ kind: 'prompt';
1269
+ } & PromptInteractionDescriptor);
1270
+ type ZoneHandles = {
1271
+ cardIds: Array<string>;
1272
+ cardViewsById: {
1273
+ [key: string]: string;
1274
+ };
1275
+ playableByCardId: {
1276
+ [key: string]: Array<string>;
1277
+ };
1278
+ };
1279
+ type HostGameplaySeatView = {
1280
+ /**
1281
+ * Opaque revision token for this seat's available descriptors and input domains.
1282
+ */
1283
+ actionSetVersion: string;
1284
+ /**
1285
+ * JSON-serialized reducer-projected UI view for this player.
1286
+ */
1287
+ view: string | null;
1288
+ /**
1289
+ * Descriptor refs for interactions available to this player.
1290
+ */
1291
+ availableInteractionRefs: Array<string>;
1292
+ /**
1293
+ * Zone handles for this player, keyed by zone id.
1294
+ */
1295
+ zones: {
1296
+ [key: string]: ZoneHandles;
1297
+ };
1298
+ };
1299
+ type HostPlayerGameplayView = {
1300
+ /**
1301
+ * Monotonic gameplay version for stale-client detection.
1302
+ */
1303
+ version: number;
1304
+ /**
1305
+ * Opaque revision token for the returned descriptors and input domains.
1306
+ */
1307
+ actionSetVersion: string;
1308
+ /**
1309
+ * Player ID currently selected for rendering and input.
1310
+ */
1311
+ perspectivePlayerId: string;
1312
+ /**
1313
+ * Player IDs included in this normalized projection envelope.
1314
+ */
1315
+ controllablePlayerIds: Array<string>;
1316
+ shared: HostGameplaySharedView;
1317
+ /**
1318
+ * Deduplicated interaction descriptor registry keyed by stable descriptor ref.
1319
+ */
1320
+ interactionsByRef: {
1321
+ [key: string]: InteractionDescriptor;
1322
+ };
1323
+ /**
1324
+ * Player-scoped projections keyed by authorized player id.
1325
+ */
1326
+ seats: {
1327
+ [key: string]: HostGameplaySeatView;
1328
+ };
1329
+ };
1330
+ type HostGameplaySessionSnapshot = {
1331
+ type: 'gameplay';
1332
+ context: HostSessionContext;
1333
+ lobby: HostLobbyView;
1334
+ gameplay: HostPlayerGameplayView;
1335
+ };
1336
+ type HostEndedSessionSnapshot = {
1337
+ type: 'ended';
1338
+ context: HostSessionContext;
1339
+ lobby: HostLobbyView;
1340
+ };
1341
+ type HostSessionSnapshot = ({
1342
+ type: 'lobby';
1343
+ } & HostLobbySessionSnapshot) | ({
1344
+ type: 'gameplay';
1345
+ } & HostGameplaySessionSnapshot) | ({
1346
+ type: 'ended';
1347
+ } & HostEndedSessionSnapshot);
1348
+ type HostSessionEventCausation = {
1349
+ clientActionId?: string;
1350
+ };
1351
+ type HostSessionGameplayUpdatedEvent = {
1352
+ type: 'session.gameplayUpdated';
1353
+ context: HostSessionContext;
1354
+ gameplay: HostPlayerGameplayView;
1355
+ causation?: HostSessionEventCausation;
1356
+ };
1357
+ type HostActionSubmitResponse = {
1358
+ success: boolean;
1359
+ version: number;
1360
+ actionSetVersion: string;
1361
+ accepted?: boolean;
1362
+ durabilityStatus?: 'COMMITTED';
1363
+ errorCode?: string;
1364
+ message?: string;
1365
+ clientActionId?: string;
1366
+ update?: HostSessionGameplayUpdatedEvent;
1367
+ };
1368
+ /**
1369
+ * Type of parameter accepted by a runtime action
1370
+ */
1371
+ type ParameterType = 'cardId' | 'cardType' | 'playerId' | 'string' | 'number' | 'boolean' | 'zoneId' | 'pieceId' | 'dieId' | 'boardId' | 'edgeId' | 'vertexId' | 'spaceId' | 'resourceId';
1372
+ /**
1373
+ * Defines a parameter for an action
1374
+ */
1375
+ type ActionParameterDefinition = {
1376
+ name: string;
1377
+ type: ParameterType;
1378
+ required?: boolean;
1379
+ array?: boolean;
1380
+ minLength?: number;
1381
+ maxLength?: number;
1382
+ /**
1383
+ * Optional card set ID to specify which card set a CARD_ID parameter refers to
1384
+ */
1385
+ cardSetId?: string;
1386
+ description?: string;
1387
+ };
1388
+ /**
1389
+ * Defines an available player action with metadata and parameter definitions
1390
+ */
1391
+ type ActionDefinition = {
1392
+ /**
1393
+ * Unique action identifier
1394
+ */
1395
+ actionType: string;
1396
+ /**
1397
+ * UI display name for this action
1398
+ */
1399
+ displayName: string;
1400
+ /**
1401
+ * Optional help text describing the action
1402
+ */
1403
+ description?: string;
1404
+ /**
1405
+ * List of parameters this action accepts
1406
+ */
1407
+ parameters: Array<ActionParameterDefinition>;
1408
+ /**
1409
+ * List of possible validation error codes
1410
+ */
1411
+ errorCodes?: Array<string>;
1412
+ };
1413
+ /**
1414
+ * Type of source for the card set
1415
+ */
1416
+ type CardSetSourceType = 'preset' | 'csv' | 'manual';
1417
+ /**
1418
+ * Engine-level structural board layout discriminator
1419
+ */
1420
+ type BoardLayout = 'generic' | 'hex' | 'square';
1421
+ /**
1422
+ * Unique identifier for the player (e.g., 'player-1')
1423
+ */
1424
+ type PlayerId = string;
1425
+
1426
+ type DieTypeSpec = Omit<DieTypeSpec$1, "sides"> & {
1427
+ sides?: DieTypeSpec$1["sides"];
1428
+ };
1429
+ type GameTopologyManifest = Omit<GameTopologyManifest$1, "dieTypes"> & {
1430
+ dieTypes?: Array<DieTypeSpec>;
1431
+ };
1432
+
1433
+ export type { HostGameplaySessionSnapshot as $, ActionDefinition as A, BlockedInteractionAvailability as B, CardPropertySchema as C, ContainerHomeSpec as D, DetachedHomeSpec as E, DieSeedSpec as F, DieSlotHostRef as G, DieTypeSpec$1 as H, DieTypeSpec as I, EagerInputDomainDependencies as J, EdgeHomeSpec as K, GameTopologyManifest as L, GameTopologyManifest$1 as M, GenericBoardSpec as N, GenericBoardTemplateSpec as O, HexBoardSpec as P, HexBoardTemplateSpec as Q, HexEdgeRef as R, HexEdgeSpec as S, HexOrientation as T, HexSpaceSpec as U, HexVertexRef as V, HexVertexSpec as W, HistoryEntrySummary as X, HostActionSubmitResponse as Y, HostEndedSessionSnapshot as Z, HostGameplaySeatView as _, ActionInteractionDescriptor as a, SquareEdgeSpec as a$, HostGameplaySharedView as a0, HostLobbySessionSnapshot as a1, HostLobbyView as a2, HostPlayerGameplayView as a3, HostSessionContext as a4, HostSessionEventCausation as a5, HostSessionGameplayUpdatedEvent as a6, HostSessionSnapshot as a7, HostSessionStatus as a8, InputDomain as a9, PromptInteractionDescriptor as aA, PropertySchema as aB, ResolvedBoardTargetDomain as aC, ResolvedCardTargetDomain as aD, ResourceDefinition as aE, ResourceMapDomain as aF, ResourceMapDomainEntry as aG, SeatAssignment as aH, SessionActor as aI, SessionActorAuthUser as aJ, SessionActorDemoGuest as aK, SessionGameSource as aL, SessionGameSourceDemoRevision as aM, SessionGameSourceUserCompiled as aN, SessionSnapshotHistory as aO, SessionSnapshotPhase as aP, SetupOptionChoiceSpec as aQ, SetupOptionSpec as aR, SetupProfileSpec as aS, SimultaneousPhaseSnapshot as aT, SingleInputSelection as aU, SlotHomeSpec as aV, SlotHostRef as aW, SpaceHomeSpec as aX, SpaceHostSpec as aY, SquareBoardSpec as aZ, SquareBoardTemplateSpec as a_, InputDomainDependencyCase as aa, InputDomainResolver as ab, InputSelection as ac, InsufficientResourcesInteractionAvailability as ad, InteractionAvailability as ae, InteractionCommitPolicy as af, InteractionContext as ag, InteractionContextOption as ah, InteractionDescriptor as ai, InteractionDescriptorBase as aj, InteractionInputDescriptor as ak, JsonValue as al, LazyBoardTargetDomain as am, LazyCardTargetDomain as an, LazyInputDomainDependencies as ao, ManualCardSetDefinition as ap, ManyInputSelection as aq, NotYourTurnInteractionAvailability as ar, ObjectSchema as as, ParameterType as at, PieceSeedSpec as au, PieceSlotHostRef as av, PieceTypeSpec as aw, PlayerId as ax, PlayersDefinition as ay, PresetCardSetDefinition as az, ActionParameterDefinition as b, SquareSpaceSpec as b0, SquareVertexSpec as b1, TopologyScope as b2, VertexHomeSpec as b3, ZoneHandles as b4, ZoneHomeSpec as b5, ZoneSpec as b6, ZoneVisibility as b7, AvailableInteractionAvailability as c, BoardCard as d, BoardContainerHostSpec as e, BoardContainerSpec as f, BoardEdgeRef as g, BoardHostSpec as h, BoardLayout as i, BoardRelationSpec as j, BoardSpaceSpec as k, BoardSpec as l, BoardTargetDomain as m, BoardTemplateSpec as n, BoardVertexRef as o, BoundedNumberDomain as p, CardPropertySchemaVariants as q, CardSetDefinition as r, CardSetSourceType as s, CardTargetDomain as t, ChoiceDomain as u, ChoiceDomainOption as v, ChoiceListDomain as w, ComponentHomeSpec as x, ComponentSlotSpec as y, ComponentVisibilitySpec as z };