@voltro/plugin-rooms 0.0.0-stage → 0.87.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 (495) hide show
  1. package/CHANGELOG.md +24329 -0
  2. package/LICENSE +61 -0
  3. package/README.md +9204 -2
  4. package/SECURITY.md +56 -0
  5. package/THIRD-PARTY-NOTICES.md +11322 -0
  6. package/dist/actor.js +1474 -0
  7. package/dist/apiBinding.js +678 -0
  8. package/dist/apiRegistryBinding.js +399 -0
  9. package/dist/apiReservations.js +433 -0
  10. package/dist/baselines.js +73 -0
  11. package/dist/bots.d.ts +1485 -0
  12. package/dist/bots.js +563 -0
  13. package/dist/catalog.js +80 -0
  14. package/dist/checkpointJson.js +24 -0
  15. package/dist/checkpointStore.js +386 -0
  16. package/dist/client.js +56 -0
  17. package/dist/clockSync.js +51 -0
  18. package/dist/collision.js +156 -0
  19. package/dist/commandDelivery.js +101 -0
  20. package/dist/commandRecord.js +11 -0
  21. package/dist/commandWithdrawal.js +183 -0
  22. package/dist/connection.js +497 -0
  23. package/dist/controlCarrier.js +375 -0
  24. package/dist/controlRegistry.js +79 -0
  25. package/dist/controlTarget.js +45 -0
  26. package/dist/controlTransport.js +574 -0
  27. package/dist/developmentBinding.js +113 -0
  28. package/dist/directory.js +323 -0
  29. package/dist/directoryProjection.js +117 -0
  30. package/dist/errors.d.ts +125 -0
  31. package/dist/errors.js +53 -0
  32. package/dist/fixed.d.ts +284 -0
  33. package/dist/fixed.js +10 -0
  34. package/dist/fixed32.js +134 -0
  35. package/dist/fixedCollision.js +60 -0
  36. package/dist/fixedCollision32.js +109 -0
  37. package/dist/fixedMath.js +56 -0
  38. package/dist/fixedRaw.js +11 -0
  39. package/dist/fixedSlabs.js +34 -0
  40. package/dist/fixedTrig.js +48 -0
  41. package/dist/fixedTrig32.js +38 -0
  42. package/dist/fixedVectors.js +113 -0
  43. package/dist/fixedVectors32.js +95 -0
  44. package/dist/fixedWide.js +50 -0
  45. package/dist/fixedWords.js +46 -0
  46. package/dist/gateway.js +57 -0
  47. package/dist/geometry-retention-app/rooms.geometryJournalRetention.workflow.server.tsx +4 -0
  48. package/dist/geometry-retention-app/rooms.geometryJournalRetention.workflow.tsx +14 -0
  49. package/dist/geometry-worker/worker.d.mts +2 -0
  50. package/dist/geometry-worker/worker.mjs +50 -0
  51. package/dist/geometry.d.ts +2249 -0
  52. package/dist/geometry.js +40 -0
  53. package/dist/geometryActivation.js +82 -0
  54. package/dist/geometryActorInventory.js +108 -0
  55. package/dist/geometryAdminClient.js +87 -0
  56. package/dist/geometryAdminData.js +32 -0
  57. package/dist/geometryAdminFixtures.js +50 -0
  58. package/dist/geometryAdminPorts.js +5 -0
  59. package/dist/geometryAdminRpc.js +58 -0
  60. package/dist/geometryAdminRpcRoutes.js +49 -0
  61. package/dist/geometryAdminSchemas.js +39 -0
  62. package/dist/geometryAdministration.js +190 -0
  63. package/dist/geometryAdministrationPorts.js +5 -0
  64. package/dist/geometryApiBinding.js +165 -0
  65. package/dist/geometryAppStorage.js +58 -0
  66. package/dist/geometryArtifacts.js +198 -0
  67. package/dist/geometryAssetBundle.js +117 -0
  68. package/dist/geometryAssetClient.js +25 -0
  69. package/dist/geometryAssetData.js +106 -0
  70. package/dist/geometryAssetHttp.js +123 -0
  71. package/dist/geometryAssetPorts.js +5 -0
  72. package/dist/geometryAssetRpc.js +30 -0
  73. package/dist/geometryAssetRpcRoutes.js +40 -0
  74. package/dist/geometryAssetStorageGrant.js +103 -0
  75. package/dist/geometryBoxOverlap.js +110 -0
  76. package/dist/geometryCatalogueDigest.js +111 -0
  77. package/dist/geometryCellCoverage.js +85 -0
  78. package/dist/geometryCellLoader.js +28 -0
  79. package/dist/geometryChannel.js +134 -0
  80. package/dist/geometryChunkHttp.js +54 -0
  81. package/dist/geometryChunkLeases.js +22 -0
  82. package/dist/geometryClient.d.ts +1429 -0
  83. package/dist/geometryClient.js +149 -0
  84. package/dist/geometryClientChunks.js +330 -0
  85. package/dist/geometryClientDelta.js +25 -0
  86. package/dist/geometryClientHttp.js +37 -0
  87. package/dist/geometryClientInterest.js +109 -0
  88. package/dist/geometryClientStatic.js +34 -0
  89. package/dist/geometryCms.d.ts +763 -0
  90. package/dist/geometryCms.js +217 -0
  91. package/dist/geometryCommitCoordinator.js +241 -0
  92. package/dist/geometryCompactionFixture.js +84 -0
  93. package/dist/geometryCompactionStrategies.js +38 -0
  94. package/dist/geometryConnectionClient.js +23 -0
  95. package/dist/geometryDerivationFixtures.js +141 -0
  96. package/dist/geometryDerivationStrategies.js +27 -0
  97. package/dist/geometryDigest.js +13 -0
  98. package/dist/geometryEditChannel.js +70 -0
  99. package/dist/geometryEditIngress.js +263 -0
  100. package/dist/geometryEdits.js +366 -0
  101. package/dist/geometryEnvelope.js +41 -0
  102. package/dist/geometryGridRaycast.js +92 -0
  103. package/dist/geometryGridSweep.js +92 -0
  104. package/dist/geometryHeightfield.js +166 -0
  105. package/dist/geometryHeightfieldRaycast.js +74 -0
  106. package/dist/geometryHeightfieldSweep.js +85 -0
  107. package/dist/geometryHeightfieldVolume.js +45 -0
  108. package/dist/geometryHost.js +322 -0
  109. package/dist/geometryHostDirectory.js +207 -0
  110. package/dist/geometryHostMutations.js +137 -0
  111. package/dist/geometryHostStreams.js +124 -0
  112. package/dist/geometryHttpBody.js +76 -0
  113. package/dist/geometryHttpRoutes.js +112 -0
  114. package/dist/geometryImportGltf.js +300 -0
  115. package/dist/geometryImportLdtk.js +54 -0
  116. package/dist/geometryImportPng.js +144 -0
  117. package/dist/geometryImportPublication.js +67 -0
  118. package/dist/geometryImportTiled.js +39 -0
  119. package/dist/geometryImportTiles.js +136 -0
  120. package/dist/geometryImportVox.js +130 -0
  121. package/dist/geometryImportedSource.js +101 -0
  122. package/dist/geometryInspectEndpoint.js +248 -0
  123. package/dist/geometryInspection.js +92 -0
  124. package/dist/geometryInstall.js +121 -0
  125. package/dist/geometryJournalArchiveData.js +21 -0
  126. package/dist/geometryJournalArchiveIndex.js +330 -0
  127. package/dist/geometryJournalArchiveTable.js +21 -0
  128. package/dist/geometryJournalCompaction.js +100 -0
  129. package/dist/geometryJournalPatch.js +47 -0
  130. package/dist/geometryJournalRetention.js +112 -0
  131. package/dist/geometryJournalRetentionSchemas.js +36 -0
  132. package/dist/geometryJournalRetentionSweep.js +112 -0
  133. package/dist/geometryJournalRetentionWorkflow.js +28 -0
  134. package/dist/geometryJournalRetentionWorkflowData.js +31 -0
  135. package/dist/geometryJournalStorage.js +148 -0
  136. package/dist/geometryLoader.js +118 -0
  137. package/dist/geometryManifest.js +113 -0
  138. package/dist/geometryManifestChannel.js +93 -0
  139. package/dist/geometryManifestClient.js +122 -0
  140. package/dist/geometryManifestData.js +49 -0
  141. package/dist/geometryManifestPorts.js +5 -0
  142. package/dist/geometryManifestPublication.js +109 -0
  143. package/dist/geometryManifestSource.js +68 -0
  144. package/dist/geometryMigrationJournal.js +14 -0
  145. package/dist/geometryMigrationStrategies.js +7 -0
  146. package/dist/geometryMigrations.js +323 -0
  147. package/dist/geometryNativeMetadata.js +52 -0
  148. package/dist/geometryPatch.js +170 -0
  149. package/dist/geometryPersistence.js +449 -0
  150. package/dist/geometryPersistenceCapture.js +69 -0
  151. package/dist/geometryPersistenceData.js +140 -0
  152. package/dist/geometryPersistencePorts.js +5 -0
  153. package/dist/geometryPlayerAdmission.js +34 -0
  154. package/dist/geometryPlayerEditOwner.js +265 -0
  155. package/dist/geometryPlayerEdits.js +49 -0
  156. package/dist/geometryPrepared.js +188 -0
  157. package/dist/geometryPrivacyFence.js +24 -0
  158. package/dist/geometryProceduralPublication.js +91 -0
  159. package/dist/geometryProceduralWorker.js +164 -0
  160. package/dist/geometryPublication.js +110 -0
  161. package/dist/geometryRayAlgebra.js +116 -0
  162. package/dist/geometryReadClient.js +157 -0
  163. package/dist/geometryReadPorts.js +5 -0
  164. package/dist/geometryReadRpc.js +27 -0
  165. package/dist/geometryReadRpcRoutes.js +47 -0
  166. package/dist/geometryReliablePublication.js +82 -0
  167. package/dist/geometryReloadPorts.js +46 -0
  168. package/dist/geometryReloadSource.js +278 -0
  169. package/dist/geometryRenderCache.js +165 -0
  170. package/dist/geometryRenderLod.js +102 -0
  171. package/dist/geometryRollback.js +125 -0
  172. package/dist/geometryRollbackCoordinator.js +203 -0
  173. package/dist/geometryRollbackPorts.js +46 -0
  174. package/dist/geometryRollbackSource.js +209 -0
  175. package/dist/geometryRollbackStore.js +198 -0
  176. package/dist/geometrySchemas.js +27 -0
  177. package/dist/geometryServer.d.ts +2766 -0
  178. package/dist/geometryServer.js +62 -0
  179. package/dist/geometryShapeRaycast.js +111 -0
  180. package/dist/geometryShapeSegments.js +34 -0
  181. package/dist/geometryShapes.js +223 -0
  182. package/dist/geometrySnapshot.js +76 -0
  183. package/dist/geometrySnapshotChannel.js +160 -0
  184. package/dist/geometrySnapshotClient.js +159 -0
  185. package/dist/geometrySnapshotPreparation.js +76 -0
  186. package/dist/geometrySnapshotServer.js +191 -0
  187. package/dist/geometrySqlOwner.js +21 -0
  188. package/dist/geometryStorage.js +127 -0
  189. package/dist/geometryStorageGrant.js +69 -0
  190. package/dist/geometryStorageIdentity.js +9 -0
  191. package/dist/geometryTileArtifact.js +10 -0
  192. package/dist/geometryTileCodec.js +194 -0
  193. package/dist/geometryTileCollision.js +96 -0
  194. package/dist/geometryTileNavigation.js +128 -0
  195. package/dist/geometryTileView.js +35 -0
  196. package/dist/geometryVersionActivation.js +114 -0
  197. package/dist/geometryVersionClient.js +238 -0
  198. package/dist/geometryVersionCompare.js +40 -0
  199. package/dist/geometryVersionMigration.js +106 -0
  200. package/dist/geometryVoxel.js +253 -0
  201. package/dist/geometryWorldEntitySubject.js +32 -0
  202. package/dist/geometryWorldExtent.js +12 -0
  203. package/dist/geometryWorldMetadata.js +38 -0
  204. package/dist/geometryWorldStrategyFixtures.js +127 -0
  205. package/dist/geometryWorldView.js +307 -0
  206. package/dist/host.js +128 -0
  207. package/dist/hostBinding.js +277 -0
  208. package/dist/hostCellObservation.js +114 -0
  209. package/dist/hostClientCapacity.js +90 -0
  210. package/dist/hostCommandScope.js +64 -0
  211. package/dist/hostController.js +3094 -0
  212. package/dist/hostDeployment.js +65 -0
  213. package/dist/hostDrain.js +152 -0
  214. package/dist/hostDrainPorts.js +5 -0
  215. package/dist/hostDriver.js +179 -0
  216. package/dist/hostLane.js +288 -0
  217. package/dist/hostListener.js +79 -0
  218. package/dist/hostListenerBinding.js +19 -0
  219. package/dist/hostLoopObservation.js +90 -0
  220. package/dist/hostMetrics.js +56 -0
  221. package/dist/hostRegistryBinding.js +418 -0
  222. package/dist/hostSelection.js +16 -0
  223. package/dist/hostShutdown.js +47 -0
  224. package/dist/hostTurnObservation.js +53 -0
  225. package/dist/identities.js +4 -0
  226. package/dist/index.d.ts +8632 -0
  227. package/dist/index.js +232 -0
  228. package/dist/inputReceipts.js +63 -0
  229. package/dist/inputRedundancy.js +55 -0
  230. package/dist/inspect.js +238 -0
  231. package/dist/lockstep.d.ts +436 -0
  232. package/dist/lockstep.js +382 -0
  233. package/dist/lockstepAdmission.js +262 -0
  234. package/dist/lockstepAdmissionCodec.js +94 -0
  235. package/dist/lockstepAdmissionPorts.js +5 -0
  236. package/dist/lockstepClientSession.js +578 -0
  237. package/dist/lockstepDefinition.js +148 -0
  238. package/dist/lockstepHostLoop.js +243 -0
  239. package/dist/lockstepInitialAdmission.js +67 -0
  240. package/dist/lockstepInitialStrategyFixtures.js +45 -0
  241. package/dist/lockstepJournal.js +395 -0
  242. package/dist/lockstepJournalCodec.js +254 -0
  243. package/dist/lockstepJournalPorts.js +5 -0
  244. package/dist/lockstepJournalRebuild.js +208 -0
  245. package/dist/lockstepJournalRows.js +57 -0
  246. package/dist/lockstepMembers.js +131 -0
  247. package/dist/lockstepMessages.js +47 -0
  248. package/dist/lockstepOwnedRoom.js +764 -0
  249. package/dist/lockstepPolicies.js +84 -0
  250. package/dist/lockstepReact.js +47 -0
  251. package/dist/lockstepRecoveryTruth.js +121 -0
  252. package/dist/lockstepRosterConfig.js +32 -0
  253. package/dist/lockstepSeed.js +12 -0
  254. package/dist/lockstepSeedFixture.js +20 -0
  255. package/dist/lockstepServer.d.ts +3897 -0
  256. package/dist/lockstepServer.js +325 -0
  257. package/dist/lockstepServerConfig.js +101 -0
  258. package/dist/lockstepServerRoles.js +403 -0
  259. package/dist/lockstepServerStrategyFixtures.js +33 -0
  260. package/dist/lockstepStrategies.js +6 -0
  261. package/dist/lockstepStrategyFixtures.js +137 -0
  262. package/dist/lockstepTerminal.js +90 -0
  263. package/dist/lockstepTerminalPorts.js +5 -0
  264. package/dist/lockstepTransport.js +773 -0
  265. package/dist/lockstepTransportConfig.js +32 -0
  266. package/dist/lockstepWireRoster.js +34 -0
  267. package/dist/matchRoomProvider.js +32 -0
  268. package/dist/matchRooms.js +19 -0
  269. package/dist/membershipObserver.js +47 -0
  270. package/dist/moderation.js +98 -0
  271. package/dist/movementSpecials.js +104 -0
  272. package/dist/ownership.js +17 -0
  273. package/dist/ownershipWithdrawal.js +18 -0
  274. package/dist/pcg32.js +96 -0
  275. package/dist/ports.d.ts +1241 -0
  276. package/dist/ports.js +11 -0
  277. package/dist/quaternion.js +70 -0
  278. package/dist/react.d.ts +406 -0
  279. package/dist/react.js +109 -0
  280. package/dist/reaper-app/rooms.reaper.workflow.server.tsx +5 -0
  281. package/dist/reaper-app/rooms.reaper.workflow.tsx +13 -0
  282. package/dist/reaper.js +243 -0
  283. package/dist/reaperSchemas.js +42 -0
  284. package/dist/reaperWorkflow.js +70 -0
  285. package/dist/recovery.js +189 -0
  286. package/dist/recoverySeats.js +26 -0
  287. package/dist/replay.d.ts +273 -0
  288. package/dist/replay.js +485 -0
  289. package/dist/replayPorts.js +5 -0
  290. package/dist/replayRecording.js +67 -0
  291. package/dist/replaySchema.js +157 -0
  292. package/dist/replayStorage.d.ts +149 -0
  293. package/dist/replayStorage.js +485 -0
  294. package/dist/reservationBatch.js +422 -0
  295. package/dist/reservationSchemas.js +17 -0
  296. package/dist/reservations.js +259 -0
  297. package/dist/reservePort.js +69 -0
  298. package/dist/resolvedOptions.js +4 -0
  299. package/dist/room.d.ts +1006 -0
  300. package/dist/room.js +284 -0
  301. package/dist/roomAccessSweep.js +95 -0
  302. package/dist/roomAppCommandControl.js +59 -0
  303. package/dist/roomAuthoringStrategy.js +17 -0
  304. package/dist/roomErasure.js +198 -0
  305. package/dist/roomPoolRuntimeDefaults.js +24 -0
  306. package/dist/roomPoolSelection.js +19 -0
  307. package/dist/roomPoolTopology.js +212 -0
  308. package/dist/rpc.d.ts +551 -0
  309. package/dist/rpc.js +112 -0
  310. package/dist/rpcClient.js +152 -0
  311. package/dist/rpcRoutes.js +28 -0
  312. package/dist/runtime.js +1123 -0
  313. package/dist/schemaHistory.js +98 -0
  314. package/dist/seatStore.js +151 -0
  315. package/dist/seatStrategyFixtures.js +52 -0
  316. package/dist/seatSubject.js +32 -0
  317. package/dist/seats.js +130 -0
  318. package/dist/serverSession.js +811 -0
  319. package/dist/serverSessionConfig.js +43 -0
  320. package/dist/sessionAdmission.js +53 -0
  321. package/dist/sidecarAdmission.js +103 -0
  322. package/dist/sidecarConfig.js +116 -0
  323. package/dist/sidecarConfigPublication.js +64 -0
  324. package/dist/sidecarHostListener.js +208 -0
  325. package/dist/sidecarIpc.js +205 -0
  326. package/dist/sidecarPeer.js +310 -0
  327. package/dist/sidecarProcessPort.js +28 -0
  328. package/dist/sidecarRuntime.js +168 -0
  329. package/dist/sidecarSelection.js +142 -0
  330. package/dist/sidecarWire.js +178 -0
  331. package/dist/sidecarWrites.js +163 -0
  332. package/dist/simulation.d.ts +391 -0
  333. package/dist/simulation.js +282 -0
  334. package/dist/simulationAuthoring.js +29 -0
  335. package/dist/simulationBytes.js +27 -0
  336. package/dist/simulationConformance.js +305 -0
  337. package/dist/simulationInputHistoryCapture.js +35 -0
  338. package/dist/simulationInputHistoryWire.js +193 -0
  339. package/dist/simulationOptionsWire.js +78 -0
  340. package/dist/simulationRecoveryWire.js +134 -0
  341. package/dist/simulationReplay.js +127 -0
  342. package/dist/simulationSnapshotWire.js +112 -0
  343. package/dist/simulationState.js +178 -0
  344. package/dist/snapshotBlob.js +126 -0
  345. package/dist/snapshotBlobCleanup.js +93 -0
  346. package/dist/snapshotBlobIndex.js +38 -0
  347. package/dist/snapshotBudget.js +80 -0
  348. package/dist/snapshotChain.js +185 -0
  349. package/dist/snapshotErasure.js +172 -0
  350. package/dist/snapshotInspection.js +105 -0
  351. package/dist/snapshotSegmentBlobs.js +58 -0
  352. package/dist/snapshotUploads.js +166 -0
  353. package/dist/socketTransport.js +253 -0
  354. package/dist/spatial.js +104 -0
  355. package/dist/spectatorPolicy.js +26 -0
  356. package/dist/spectatorProducer.js +89 -0
  357. package/dist/startFailureCause.js +4 -0
  358. package/dist/stateCodec.js +658 -0
  359. package/dist/strategies.d.ts +210 -0
  360. package/dist/strategies.js +8 -0
  361. package/dist/strategiesServer.d.ts +286 -0
  362. package/dist/strategiesServer.js +11 -0
  363. package/dist/strategyFixtures.js +182 -0
  364. package/dist/streamFraming.js +122 -0
  365. package/dist/streamTransport.js +266 -0
  366. package/dist/subjectAdmission.js +50 -0
  367. package/dist/subjectPrivacy.js +281 -0
  368. package/dist/subjectPrivacyBinding.js +90 -0
  369. package/dist/systemManifest.js +182 -0
  370. package/dist/tables.js +159 -0
  371. package/dist/testHarness.js +89 -0
  372. package/dist/testing.d.ts +3684 -0
  373. package/dist/testing.js +221 -0
  374. package/dist/testingPorts.js +271 -0
  375. package/dist/testingServer.d.ts +4060 -0
  376. package/dist/testingServer.js +18 -0
  377. package/dist/transform.d.ts +692 -0
  378. package/dist/transform.js +217 -0
  379. package/dist/transform3d.js +118 -0
  380. package/dist/transformCollection.js +24 -0
  381. package/dist/transformCollection3d.js +24 -0
  382. package/dist/transformCollectionCore.js +156 -0
  383. package/dist/transformFrames.js +121 -0
  384. package/dist/transformPrediction3d.js +127 -0
  385. package/dist/transformRules.js +123 -0
  386. package/dist/transformSchemas.js +20 -0
  387. package/dist/transport.js +32 -0
  388. package/dist/transportAuthoring.js +29 -0
  389. package/dist/transportCleanup.js +22 -0
  390. package/dist/transportConformance.js +124 -0
  391. package/dist/transportConnector.js +82 -0
  392. package/dist/transportEndpoints.js +38 -0
  393. package/dist/transportsServer.d.ts +5515 -0
  394. package/dist/transportsServer.js +6 -0
  395. package/dist/viewProjection.js +16 -0
  396. package/dist/web.d.ts +2286 -0
  397. package/dist/web.js +518 -0
  398. package/dist/webTransportClient.js +173 -0
  399. package/dist/wire.d.ts +992 -0
  400. package/dist/wire.js +492 -0
  401. package/dist/withdrawalPort.js +28 -0
  402. package/dist/world.d.ts +1894 -0
  403. package/dist/world.js +333 -0
  404. package/dist/worldActorReceipts.js +48 -0
  405. package/dist/worldActorTransferSnapshot.js +14 -0
  406. package/dist/worldAdmissionPending.js +8 -0
  407. package/dist/worldBoundaryCoordinator.js +148 -0
  408. package/dist/worldCatalog.js +81 -0
  409. package/dist/worldCellAllocation.js +203 -0
  410. package/dist/worldCellDestination.js +68 -0
  411. package/dist/worldCells.js +489 -0
  412. package/dist/worldChange.js +32 -0
  413. package/dist/worldClient.js +664 -0
  414. package/dist/worldClientControl.js +141 -0
  415. package/dist/worldClientPendingInput.js +16 -0
  416. package/dist/worldClientRpc.js +133 -0
  417. package/dist/worldClientRpcRoutes.js +43 -0
  418. package/dist/worldClientSchemas.js +28 -0
  419. package/dist/worldCommands.js +140 -0
  420. package/dist/worldData.js +42 -0
  421. package/dist/worldDefaultBinding.js +377 -0
  422. package/dist/worldDefaultGroupAdmission.js +82 -0
  423. package/dist/worldDefaultGroupAppServices.js +31 -0
  424. package/dist/worldDefaultGroupCompensation.js +109 -0
  425. package/dist/worldDefaultGroupContinuation.js +96 -0
  426. package/dist/worldDefaultGroupControl.js +72 -0
  427. package/dist/worldDefaultGroupMembers.js +85 -0
  428. package/dist/worldDefaultGroups.js +21 -0
  429. package/dist/worldDefaultPending.js +79 -0
  430. package/dist/worldDefaultService.js +245 -0
  431. package/dist/worldEntities.js +2980 -0
  432. package/dist/worldEntityCodec.js +21 -0
  433. package/dist/worldEntityHandoffView.js +154 -0
  434. package/dist/worldGeometry.js +170 -0
  435. package/dist/worldGhostAdmission.js +65 -0
  436. package/dist/worldGhostDestination.js +118 -0
  437. package/dist/worldGhostGateway.js +132 -0
  438. package/dist/worldGhostHandshake.js +108 -0
  439. package/dist/worldGhostHost.js +42 -0
  440. package/dist/worldGhostIngress.js +132 -0
  441. package/dist/worldGhostNeighborhood.js +70 -0
  442. package/dist/worldGhostNeighbors.js +86 -0
  443. package/dist/worldGhostOutbound.js +110 -0
  444. package/dist/worldGhostPublisher.js +216 -0
  445. package/dist/worldGhostReceiver.js +213 -0
  446. package/dist/worldGhostSender.js +146 -0
  447. package/dist/worldGhostSocket.js +78 -0
  448. package/dist/worldGhostWire.js +172 -0
  449. package/dist/worldGroupCommand.js +49 -0
  450. package/dist/worldGroupDeadline.js +115 -0
  451. package/dist/worldGroupPreparation.js +115 -0
  452. package/dist/worldGroupReadyControl.js +128 -0
  453. package/dist/worldGroupSupervisor.js +120 -0
  454. package/dist/worldHandoffMetrics.js +59 -0
  455. package/dist/worldHandoffView.js +100 -0
  456. package/dist/worldHostSource.js +69 -0
  457. package/dist/worldInspectEndpoint.js +250 -0
  458. package/dist/worldInspection.js +109 -0
  459. package/dist/worldInstanceAdmission.js +31 -0
  460. package/dist/worldInstanceAllocation.js +116 -0
  461. package/dist/worldInstanceDestination.js +64 -0
  462. package/dist/worldInstanceExpiry.js +282 -0
  463. package/dist/worldInstanceExpirySupervisor.js +88 -0
  464. package/dist/worldInstanceLifecycle.js +103 -0
  465. package/dist/worldInstanceState.js +52 -0
  466. package/dist/worldInstances.js +478 -0
  467. package/dist/worldJoin.js +56 -0
  468. package/dist/worldLayers.js +151 -0
  469. package/dist/worldLeases.js +78 -0
  470. package/dist/worldManifest.js +25 -0
  471. package/dist/worldMovement.js +63 -0
  472. package/dist/worldPersistence.js +134 -0
  473. package/dist/worldProjection.js +221 -0
  474. package/dist/worldReact.js +110 -0
  475. package/dist/worldRecoveryActor.js +35 -0
  476. package/dist/worldReturnAnchor.js +49 -0
  477. package/dist/worldRoomHooks.js +57 -0
  478. package/dist/worldRoomPool.js +27 -0
  479. package/dist/worldRoomSteps.js +133 -0
  480. package/dist/worldSeatBinding.js +36 -0
  481. package/dist/worldServer.d.ts +6936 -0
  482. package/dist/worldServer.js +48 -0
  483. package/dist/worldSourceSeatPending.js +9 -0
  484. package/dist/worldStrategyFixtures.js +164 -0
  485. package/dist/worldTesting.js +27 -0
  486. package/dist/worldTransitionDefaults.js +198 -0
  487. package/dist/worldTransitionExecutor.js +519 -0
  488. package/dist/worldTransitionGroup.js +113 -0
  489. package/dist/worldTransitionPhysicalSteps.js +40 -0
  490. package/dist/worldTransitionResolver.js +228 -0
  491. package/dist/worldTransitionSeatGroup.js +64 -0
  492. package/dist/worldTransitionSeats.js +260 -0
  493. package/dist/worldTransitionState.js +95 -0
  494. package/dist/worldTransitions.js +101 -0
  495. package/package.json +189 -4
@@ -0,0 +1,436 @@
1
+ import { Schema } from 'effect';
2
+ import { YieldableError } from 'effect/Cause';
3
+
4
+ /* Excluded from this release type: captureLockstepClientOptions */
5
+
6
+ /* Excluded from this release type: captureLockstepClientPolicy */
7
+
8
+ export declare const createLockstepClientSimulation: <S extends Schema.Codec<unknown, unknown>, I extends Schema.Codec<unknown, unknown>, O extends Schema.Codec<unknown, unknown>>(simulation: Simulation<S, I, O>, seed: number, options: O["Type"], client: LockstepClientOptions<I["Type"]>) => LockstepClientSimulation<S, I, O>;
9
+
10
+ export declare const createLockstepPolicies: (options?: LockstepPolicyOptions, strategies?: LockstepPolicyStrategies) => LockstepPolicyOwner;
11
+
12
+ export declare const createRoomLockstepClientSession: <S extends Schema.Codec<unknown, unknown>, I extends Schema.Codec<unknown, unknown>, O extends Schema.Codec<unknown, unknown>>(transport: RoomTransport, simulation: Simulation<S, I, O>, manifest: RoomWireManifest<S, I>, options: RoomLockstepClientSessionOptions<I["Type"]>) => RoomLockstepClientSession<S, I, O>;
13
+
14
+ export declare const isRoomLockstepClientSession: (value: unknown) => value is RoomLockstepClientSession<Schema.Codec<unknown, unknown>, Schema.Codec<unknown, unknown>, Schema.Codec<unknown, unknown>>;
15
+
16
+ export declare type LockstepAdvance<S> = {
17
+ readonly _tag: 'advanced';
18
+ readonly snapshot: SimulationSnapshot<S>;
19
+ readonly predictedPlayers: ReadonlyArray<number>;
20
+ } | {
21
+ readonly _tag: 'stalled';
22
+ readonly tick: number;
23
+ readonly reason: 'inputs' | 'horizon';
24
+ readonly missingTick: number;
25
+ readonly waitingFor: ReadonlyArray<number>;
26
+ };
27
+
28
+ export declare interface LockstepClientMetrics {
29
+ readonly rollbackReplays: number;
30
+ readonly rollbackSteps: number;
31
+ readonly stallAttempts: number;
32
+ }
33
+
34
+ export declare interface LockstepClientOptions<I> {
35
+ readonly localPlayerId: number;
36
+ /** Optional actual complete starting matrix; absent waits for server tick1. */
37
+ readonly initialInputs?: ReadonlyArray<SimulationPlayerInput<I>>;
38
+ /** Complete admitted roster when no starting intention matrix is supplied. */
39
+ readonly playerIds?: ReadonlyArray<number>;
40
+ readonly inputDelayTicks?: number;
41
+ readonly rollbackHorizonTicks?: number;
42
+ readonly maxFutureTicks?: number;
43
+ readonly maxPlayers?: number;
44
+ readonly maxRejectionAttempts?: number;
45
+ readonly inputPrediction?: LockstepInputPrediction<I>;
46
+ /** The local player joins a running match: it is not in `playerIds` yet and enters the
47
+ * roster through `join` at the tick the server announces. */
48
+ readonly lateJoin?: boolean;
49
+ }
50
+
51
+ /** Local simulation composition only. Call confirm exclusively with a complete
52
+ * matrix ordered/admitted by the actual Room server. This class has no socket,
53
+ * Subject, SQL, store, transport, clock, timer or automatic authority grant. */
54
+ export declare class LockstepClientSimulation<S extends Schema.Codec<unknown, unknown>, I extends Schema.Codec<unknown, unknown>, O extends Schema.Codec<unknown, unknown>> {
55
+ #private;
56
+ constructor(simulation: Simulation<S, I, O>, seed: number, options: (O)["Type"], offered: LockstepClientOptions<(I)["Type"]>);
57
+ get tick(): number;
58
+ get confirmedThroughTick(): number;
59
+ get metrics(): LockstepClientMetrics;
60
+ snapshot(): SimulationSnapshot<(S)["Type"]>;
61
+ /** A hash carrier may use only a genuinely confirmed, already executed tick. */
62
+ confirmedSnapshot(tick: number): SimulationSnapshot<(S)["Type"]>;
63
+ /** Local reset seam. Network owner must establish reliable server/epoch/Session
64
+ * provenance. A complete retained or explicitly server-supplied input base is mandatory. */
65
+ installServerSnapshot(offered: SimulationSnapshot<(S)["Type"]>, suppliedInputs?: ReadonlyArray<SimulationPlayerInput<(I)["Type"]>>, suppliedContinuation?: ReadonlyArray<SimulationTickInputs<(I)["Type"]>>): SimulationSnapshot<(S)["Type"]>;
66
+ /** Pure local seam after the network owner proves current server provenance.
67
+ * Seeded history holds actual matrices; normal advance runs one author tick. */
68
+ installConfirmedHistory(offered: SimulationInputHistory<(I)["Type"]>, limits?: SimulationInputHistoryCodecOptions): number;
69
+ private work;
70
+ private captureMatrix;
71
+ /** The roster a tick's matrix covers: the Start roster plus joins effective by then, in ID order. */
72
+ private rosterAt;
73
+ private completeMatrix;
74
+ /** Late join: `playerId` plays from `tick` on, which must still be ahead of the confirmed
75
+ * frontier. Earlier predictions without it roll back when the widened matrix arrives. */
76
+ join(tick: number, playerId: number): void;
77
+ private matrix;
78
+ private prune;
79
+ submitLocal(input: (I)["Type"]): LockstepLocalInput<(I)["Type"]>;
80
+ /** Last authored local tick inputs for a future wire redundancy carrier. */
81
+ recentLocalInputs(count?: number): ReadonlyArray<LockstepLocalInput<(I)["Type"]>>;
82
+ advance(): LockstepAdvance<(S)["Type"]>;
83
+ /** Local caller must verify actual server/Room provenance first. Conflicting
84
+ * already admitted matrices refuse; matching hashes never decide equality. */
85
+ confirm(tick: number, offered: ReadonlyArray<SimulationPlayerInput<(I)["Type"]>>): LockstepConfirmation;
86
+ }
87
+
88
+ export declare type LockstepConfirmation = {
89
+ readonly _tag: 'queued' | 'matched' | 'duplicate';
90
+ readonly tick: number;
91
+ } | {
92
+ readonly _tag: 'replayed';
93
+ readonly tick: number;
94
+ readonly steps: number;
95
+ } | {
96
+ readonly _tag: 'expired';
97
+ readonly tick: number;
98
+ readonly oldestTick: number;
99
+ };
100
+
101
+ export declare type LockstepDesyncAction = 'resync' | 'end' | 'flag';
102
+
103
+ export declare interface LockstepDesyncContext {
104
+ readonly tick: number;
105
+ readonly playerId: number;
106
+ readonly expected: Uint64Words;
107
+ readonly received: Uint64Words;
108
+ }
109
+
110
+ export declare type LockstepInputPrediction<I> = 'repeat-last' | 'none' | ((last: I, context: {
111
+ readonly playerId: number;
112
+ readonly tick: number;
113
+ }) => I);
114
+
115
+ export declare interface LockstepLocalInput<I> {
116
+ readonly tick: number;
117
+ readonly input: I;
118
+ }
119
+
120
+ export declare interface LockstepPolicyOptions {
121
+ readonly refereeLagTicks?: number;
122
+ readonly stallPolicy?: LockstepStallPolicyOptions;
123
+ readonly onDesync?: LockstepDesyncAction;
124
+ }
125
+
126
+ /** Shared actual pure policy consumer for local simulation/server role ownership.
127
+ * Drop-player is an explicit host decision, never synthetic transport closure. */
128
+ export declare class LockstepPolicyOwner {
129
+ #private;
130
+ readonly refereeLagTicks: number;
131
+ readonly stallPolicy: LockstepStallPolicy;
132
+ constructor(offered?: LockstepPolicyOptions, overrides?: LockstepPolicyStrategies);
133
+ stallDecision(tick: number, elapsedTicks: number, offeredMask: Uint64Words): LockstepStallDecision;
134
+ desync(offered: LockstepDesyncContext): LockstepDesyncAction;
135
+ }
136
+
137
+ export declare interface LockstepPolicyStrategies {
138
+ readonly refereeLag?: (configuredTicks: number) => number;
139
+ readonly stallPolicy?: (options: LockstepStallPolicyOptions) => LockstepStallPolicy;
140
+ readonly onDesync?: (incident: LockstepDesyncContext, configuredAction: LockstepDesyncAction) => LockstepDesyncAction;
141
+ }
142
+
143
+ export declare type LockstepStallDecision = {
144
+ readonly _tag: 'waiting';
145
+ readonly tick: number;
146
+ readonly elapsedTicks: number;
147
+ readonly waitingFor: Uint64Words;
148
+ } | {
149
+ readonly _tag: 'action';
150
+ readonly tick: number;
151
+ readonly elapsedTicks: number;
152
+ readonly waitingFor: Uint64Words;
153
+ readonly action: 'pause' | 'drop-player';
154
+ };
155
+
156
+ export declare interface LockstepStallPolicy {
157
+ readonly afterTicks: number;
158
+ readonly action: 'pause' | 'drop-player';
159
+ }
160
+
161
+ export declare interface LockstepStallPolicyOptions {
162
+ readonly afterTicks?: number;
163
+ readonly action?: 'pause' | 'drop-player';
164
+ }
165
+
166
+ /** PCG-XSH-RR 64/32. Numeric seeds are unsigned 32-bit; word seeds retain 64 bits.
167
+ * Algorithm reference: https://www.pcg-random.org/using-pcg-c-basic.html
168
+ * No global generator, BigInt, native dependency or implicit time/entropy seed. */
169
+ declare class Pcg32 {
170
+ #private;
171
+ constructor(seed: Pcg32Seed, stream?: Pcg32Seed, maxRejectionAttempts?: number);
172
+ get maxRejectionAttempts(): number;
173
+ nextU32(): number;
174
+ /** Rejection removes modulo bias. Exhaustion consumes exactly the bounded
175
+ * draws and fails; it never returns a biased fallback or substitutes entropy. */
176
+ bounded(bound: number): number;
177
+ snapshot(): Pcg32Snapshot;
178
+ restore(offered: Pcg32Snapshot): void;
179
+ clone(): Pcg32;
180
+ /** Exact skip-ahead modulo 2^64; at most 32 iterations for this delta API. */
181
+ advance(delta: number): void;
182
+ }
183
+
184
+ declare type Pcg32Seed = number | Uint64Words;
185
+
186
+ declare interface Pcg32Snapshot {
187
+ readonly stateHi: number;
188
+ readonly stateLo: number;
189
+ readonly incrementHi: number;
190
+ readonly incrementLo: number;
191
+ }
192
+
193
+ declare class ProtocolError extends ProtocolError_base {
194
+ get message(): string;
195
+ }
196
+
197
+ declare const ProtocolError_base: Schema.Class<ProtocolError, Schema.TaggedStruct<"ProtocolError", {
198
+ readonly detail: Schema.String;
199
+ }>, YieldableError>;
200
+
201
+ /** Actual default prediction. Caller supplies bounded captured input and owns
202
+ * copy/authority; returning the last value does not confirm a server tick. */
203
+ export declare const repeatLastLockstepInput: <I>(last: I, _context: {
204
+ readonly playerId: number;
205
+ readonly tick: number;
206
+ }) => I;
207
+
208
+ /** Every option present and defined: `Required` keeps an explicit `| undefined`, this removes it. */
209
+ declare type Resolved<T> = {
210
+ readonly [K in keyof T]-?: Exclude<T[K], undefined>;
211
+ };
212
+
213
+ declare interface RoomChannel {
214
+ readonly schema: Schema.Codec<unknown, unknown>;
215
+ readonly direction: 'both' | 'server' | 'client';
216
+ readonly reliable: boolean;
217
+ }
218
+
219
+ declare interface RoomCodecLimits {
220
+ readonly maxBytes: number;
221
+ readonly maxCollectionLength: number;
222
+ readonly maxFieldId: number;
223
+ }
224
+
225
+ declare interface RoomDatagramLane {
226
+ readonly maxDatagramBytes: number;
227
+ send(frame: Uint8Array): void;
228
+ onFrame(listener: (frame: Uint8Array, receivedAt: number) => void): () => void;
229
+ }
230
+
231
+ export declare interface RoomLockstepClientObservation<S> {
232
+ readonly status: RoomLockstepClientSessionStatus;
233
+ readonly sessionId: string | null;
234
+ readonly epoch: number | null;
235
+ readonly localPlayerId: number | null;
236
+ readonly roster: ReadonlyArray<RoomLockstepClientRosterPlayer> | null;
237
+ readonly snapshot: SimulationSnapshot<S> | null;
238
+ readonly metrics: ReturnType<RoomLockstepClientSession<Schema.Codec<unknown, unknown>, Schema.Codec<unknown, unknown>, Schema.Codec<unknown, unknown>>['metrics']>;
239
+ }
240
+
241
+ export declare type RoomLockstepClientRosterPlayer = RoomLockstepWirePlayer;
242
+
243
+ /** Browser-safe network owner over the current Room codec/transport and actual
244
+ * pure rollback consumer. Reliable host mapping precedes all author initialization.
245
+ * No SQL/Store/secret/timer or client state-submit capability is acquired. */
246
+ export declare class RoomLockstepClientSession<S extends Schema.Codec<unknown, unknown>, I extends Schema.Codec<unknown, unknown>, O extends Schema.Codec<unknown, unknown>> {
247
+ #private;
248
+ constructor(transport: RoomTransport, simulation: Simulation<S, I, O>, manifest: RoomWireManifest<S, I>, offered: RoomLockstepClientSessionOptions<(I)["Type"]>);
249
+ private work;
250
+ private live;
251
+ private current;
252
+ private notify;
253
+ subscribe(listener: () => void): () => void;
254
+ onMessage(channelName: string, listener: (payload: unknown) => void): () => void;
255
+ get status(): RoomLockstepClientSessionStatus;
256
+ get failure(): ProtocolError | null;
257
+ get id(): string | null;
258
+ get epoch(): number | null;
259
+ roster(): ReadonlyArray<RoomLockstepClientRosterPlayer> | null;
260
+ /** Start roster plus joins effective by `tick`, in slot order (the wire matrix order). */
261
+ private rosterAt;
262
+ get localPlayerId(): number | null;
263
+ snapshot(): SimulationSnapshot<S["Type"]> | null;
264
+ /** Stable read identity between actual notifications, suitable for React's
265
+ * external-store contract. Owns no timer or native connection. */
266
+ observation(): RoomLockstepClientObservation<(S)["Type"]>;
267
+ metrics(): Readonly<{
268
+ status: RoomLockstepClientSessionStatus;
269
+ tick: number | null;
270
+ confirmedThroughTick: number | null;
271
+ catchUpTicks: number;
272
+ pendingWrites: number;
273
+ pendingIntent: boolean;
274
+ retainedLocalInputs: number;
275
+ retainedHashClaims: number;
276
+ stalls: number;
277
+ resyncs: number;
278
+ hashFlags: number;
279
+ waitingFor: Uint64Words | null;
280
+ observerErrors: number;
281
+ rollbackReplays: number;
282
+ rollbackSteps: number;
283
+ }>;
284
+ private encode;
285
+ private write;
286
+ start(token: Uint8Array): Promise<void>;
287
+ /** The existing Room message wire is separate from authoritative intentions. */
288
+ message(channelName: string, payload: unknown): Promise<void>;
289
+ private receive;
290
+ private prune;
291
+ advance(): LockstepAdvance<(S)["Type"]>;
292
+ sendIntent(input: (I)["Type"]): Promise<void>;
293
+ private deliverIntent;
294
+ /** A reliable write handed to the transport now, in order; `accepted` when the transport took it. */
295
+ private handOff;
296
+ sendInitialIntents(input?: (I)["Type"]): Promise<void>;
297
+ resendRetainedIntent(): Promise<void>;
298
+ retryIntent(): Promise<void>;
299
+ sendHash(tick: number): Promise<void>;
300
+ private release;
301
+ close(): void;
302
+ closeAsync(): Promise<void>;
303
+ settled(): Promise<void>;
304
+ }
305
+
306
+ export declare interface RoomLockstepClientSessionOptions<I> extends Omit<LockstepClientOptions<I>, 'playerIds' | 'localPlayerId'> {
307
+ /** Optional expected identity; actual admission always comes from reliable LsStart. */
308
+ readonly localPlayerId?: number;
309
+ readonly roster?: ReadonlyArray<RoomLockstepClientRosterPlayer>;
310
+ readonly redundantInputs?: number;
311
+ readonly hashEvery?: number;
312
+ /** Retains actual immutable claim provenance independently of rollback state. */
313
+ readonly hashHistoryTicks?: number;
314
+ readonly maxPendingWrites?: number | undefined;
315
+ readonly maxFrameBytes?: number;
316
+ /** Work budget for reliable actual input-history bootstrap, not a load claim. */
317
+ readonly maxBootstrapTicks?: number;
318
+ }
319
+
320
+ export declare type RoomLockstepClientSessionStatus = 'connecting' | 'waitingStart' | 'joined' | 'stalled' | 'left' | 'kicked' | 'faulted';
321
+
322
+ /** Public opaque simulation identities, never Subjects or Session credentials. */
323
+ declare interface RoomLockstepWirePlayer {
324
+ readonly slot: number;
325
+ readonly playerId: number;
326
+ }
327
+
328
+ declare interface RoomReliableLane {
329
+ send(frame: Uint8Array): Promise<void>;
330
+ onFrame(listener: (frame: Uint8Array, receivedAt: number) => void): () => void;
331
+ }
332
+
333
+ /** Plain mutable state; the author receives no store or database capability. */
334
+ declare type RoomState<A> = A extends ReadonlyArray<infer V> ? Array<RoomState<V>> : A extends object ? {
335
+ -readonly [K in keyof A]: RoomState<A[K]>;
336
+ } : A;
337
+
338
+ declare interface RoomTransport {
339
+ readonly name: 'ws' | 'wt';
340
+ readonly reliable: RoomReliableLane;
341
+ readonly unreliable?: RoomDatagramLane | undefined;
342
+ readonly signal: AbortSignal;
343
+ stats(): {
344
+ readonly rttMs: number | null;
345
+ readonly queuedBytes: number;
346
+ readonly droppedDatagrams: number;
347
+ };
348
+ close(code: number, reason: string): void;
349
+ /** When provided, joins actual parent/stream withdrawal and permits retry.
350
+ * Synchronous close alone does not establish native terminal evidence. */
351
+ closeAsync?(code: number, reason: string): Promise<void>;
352
+ }
353
+
354
+ declare interface RoomWireManifest<S extends Schema.Codec<unknown, unknown>, I extends Schema.Codec<unknown, unknown>> {
355
+ readonly state: S;
356
+ readonly input: I;
357
+ readonly messages?: Readonly<Record<string, RoomChannel>>;
358
+ }
359
+
360
+ /** Exported default hash slot, reusing the admitted schema state codec. */
361
+ export declare const schemaSimulationHash: <S extends Schema.Codec<unknown, unknown>>(codec: SimulationStateCodec<S>, state: S["Type"]) => Uint64Words;
362
+
363
+ declare interface Simulation<S extends Schema.Codec<unknown, unknown>, I extends Schema.Codec<unknown, unknown>, O extends Schema.Codec<unknown, unknown>> {
364
+ readonly definition: SimulationDefinition<S, I, O>;
365
+ readonly stateCodec: SimulationStateCodec<S>;
366
+ readonly inputCodec: SimulationStateCodec<I>;
367
+ readonly optionsCodec: SimulationStateCodec<O>;
368
+ }
369
+
370
+ declare interface SimulationDefinition<S extends Schema.Codec<unknown, unknown>, I extends Schema.Codec<unknown, unknown>, O extends Schema.Codec<unknown, unknown>> {
371
+ readonly state: S;
372
+ readonly input: I;
373
+ readonly options: O;
374
+ readonly init: (seed: number, options: (O)["Type"]) => (S)["Type"];
375
+ readonly step: (state: RoomState<(S)["Type"]>, inputs: ReadonlyArray<SimulationPlayerInput<(I)["Type"]>>, tick: number, rng: Pcg32) => (S)["Type"];
376
+ readonly hash?: (state: (S)["Type"]) => Uint64Words;
377
+ /** Late join: runs before `step` at the tick a player's input first appears (it was absent
378
+ * from the previous tick's inputs), in player-ID order, e.g. to spawn the player. Pure and
379
+ * deterministic like `step`. Start players are `init`'s job: tick 1 runs no join. */
380
+ readonly join?: (state: RoomState<(S)["Type"]>, playerId: number, tick: number, rng: Pcg32) => (S)["Type"];
381
+ readonly limits?: Partial<SimulationValueLimits>;
382
+ }
383
+
384
+ declare interface SimulationInputHistory<I> {
385
+ readonly fromTick: number;
386
+ readonly playerIds: ReadonlyArray<number>;
387
+ readonly inputs: ReadonlyArray<SimulationTickInputs<I>>;
388
+ /** Late joins (LSI/v2): these `playerIds` appear in rows from `tick` on. */
389
+ readonly joins?: ReadonlyArray<{
390
+ readonly playerId: number;
391
+ readonly tick: number;
392
+ }>;
393
+ }
394
+
395
+ declare interface SimulationInputHistoryCodecOptions {
396
+ readonly maxBytes?: number | undefined;
397
+ readonly maxPlayers?: number;
398
+ readonly maxTicks?: number;
399
+ }
400
+
401
+ declare interface SimulationPlayerInput<I> {
402
+ readonly playerId: number;
403
+ readonly input: I;
404
+ }
405
+
406
+ declare interface SimulationSnapshot<S> {
407
+ readonly tick: number;
408
+ readonly state: S;
409
+ readonly rng: Pcg32Snapshot;
410
+ readonly hash: Uint64Words;
411
+ }
412
+
413
+ declare interface SimulationStateCodec<S extends Schema.Codec<unknown, unknown>> {
414
+ readonly limits: SimulationValueLimits;
415
+ /** Admitted capture/hash plan, not a binary Room wire schema. */
416
+ schemaDescription?(): string;
417
+ capture(value: unknown): (S)["Type"];
418
+ hash(value: (S)["Type"]): Uint64Words;
419
+ }
420
+
421
+ declare interface SimulationTickInputs<I> {
422
+ readonly tick: number;
423
+ readonly inputs: ReadonlyArray<SimulationPlayerInput<I>>;
424
+ }
425
+
426
+ declare interface SimulationValueLimits extends RoomCodecLimits {
427
+ readonly maxNodes: number;
428
+ }
429
+
430
+ /** Exact unsigned 64-bit integer as independent 32-bit words. */
431
+ declare interface Uint64Words {
432
+ readonly hi: number;
433
+ readonly lo: number;
434
+ }
435
+
436
+ export { }