@multitapio/multitap 0.0.17 → 0.0.19

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 (60) hide show
  1. package/dist/channel.d.ts +6 -6
  2. package/dist/channel.d.ts.map +1 -1
  3. package/dist/crypto.d.ts +12 -0
  4. package/dist/crypto.d.ts.map +1 -1
  5. package/dist/input-graph.d.ts +2 -0
  6. package/dist/input-graph.d.ts.map +1 -1
  7. package/dist/lib.js +268 -118
  8. package/dist/react/components/SyncLoadingScreen.d.ts +27 -0
  9. package/dist/react/components/SyncLoadingScreen.d.ts.map +1 -0
  10. package/dist/react/components/SyncStatusIndicator.d.ts +15 -0
  11. package/dist/react/components/SyncStatusIndicator.d.ts.map +1 -0
  12. package/dist/react/components/index.d.ts +3 -0
  13. package/dist/react/components/index.d.ts.map +1 -0
  14. package/dist/react/hooks/usePlayers.d.ts +2 -0
  15. package/dist/react/hooks/usePlayers.d.ts.map +1 -1
  16. package/dist/react/hooks/useSyncStatus.d.ts +18 -0
  17. package/dist/react/hooks/useSyncStatus.d.ts.map +1 -0
  18. package/dist/react/index.d.ts +2 -0
  19. package/dist/react/index.d.ts.map +1 -1
  20. package/dist/react/providers/ParticipantProvider.d.ts +51 -0
  21. package/dist/react/providers/ParticipantProvider.d.ts.map +1 -0
  22. package/dist/react/providers/SessionProvider.d.ts.map +1 -1
  23. package/dist/react/providers/index.d.ts +2 -0
  24. package/dist/react/providers/index.d.ts.map +1 -1
  25. package/dist/react/stores/syncStatusStore.d.ts +6 -0
  26. package/dist/react/stores/syncStatusStore.d.ts.map +1 -0
  27. package/dist/react/types/session.d.ts +4 -7
  28. package/dist/react/types/session.d.ts.map +1 -1
  29. package/dist/session.d.ts +24 -7
  30. package/dist/session.d.ts.map +1 -1
  31. package/dist/types/channel.d.ts +6 -6
  32. package/dist/types/channel.d.ts.map +1 -1
  33. package/dist/types/crypto.d.ts +12 -0
  34. package/dist/types/crypto.d.ts.map +1 -1
  35. package/dist/types/input-graph.d.ts +2 -0
  36. package/dist/types/input-graph.d.ts.map +1 -1
  37. package/dist/types/react/components/SyncLoadingScreen.d.ts +27 -0
  38. package/dist/types/react/components/SyncLoadingScreen.d.ts.map +1 -0
  39. package/dist/types/react/components/SyncStatusIndicator.d.ts +15 -0
  40. package/dist/types/react/components/SyncStatusIndicator.d.ts.map +1 -0
  41. package/dist/types/react/components/index.d.ts +3 -0
  42. package/dist/types/react/components/index.d.ts.map +1 -0
  43. package/dist/types/react/hooks/usePlayers.d.ts +2 -0
  44. package/dist/types/react/hooks/usePlayers.d.ts.map +1 -1
  45. package/dist/types/react/hooks/useSyncStatus.d.ts +18 -0
  46. package/dist/types/react/hooks/useSyncStatus.d.ts.map +1 -0
  47. package/dist/types/react/index.d.ts +2 -0
  48. package/dist/types/react/index.d.ts.map +1 -1
  49. package/dist/types/react/providers/ParticipantProvider.d.ts +51 -0
  50. package/dist/types/react/providers/ParticipantProvider.d.ts.map +1 -0
  51. package/dist/types/react/providers/SessionProvider.d.ts.map +1 -1
  52. package/dist/types/react/providers/index.d.ts +2 -0
  53. package/dist/types/react/providers/index.d.ts.map +1 -1
  54. package/dist/types/react/stores/syncStatusStore.d.ts +6 -0
  55. package/dist/types/react/stores/syncStatusStore.d.ts.map +1 -0
  56. package/dist/types/react/types/session.d.ts +4 -7
  57. package/dist/types/react/types/session.d.ts.map +1 -1
  58. package/dist/types/session.d.ts +24 -7
  59. package/dist/types/session.d.ts.map +1 -1
  60. package/package.json +1 -1
@@ -0,0 +1,27 @@
1
+ import { type ReactNode } from 'react';
2
+ interface SyncLoadingScreenProps {
3
+ children: ReactNode;
4
+ }
5
+ /**
6
+ * SyncLoadingScreen wraps game content and shows a loading overlay during initial sync
7
+ *
8
+ * Blocks children from rendering until the first sync is complete. This prevents
9
+ * the scene from rendering before state is ready.
10
+ *
11
+ * After initial sync, children render normally. Subsequent catch-ups (reconnects)
12
+ * should use SyncStatusIndicator in the HUD instead of blocking the scene.
13
+ *
14
+ * Usage:
15
+ * ```tsx
16
+ * <SessionProvider config={config}>
17
+ * <SyncLoadingScreen>
18
+ * <Arena />
19
+ * <Players />
20
+ * <HUD />
21
+ * </SyncLoadingScreen>
22
+ * </SessionProvider>
23
+ * ```
24
+ */
25
+ export declare function SyncLoadingScreen({ children }: SyncLoadingScreenProps): import("react/jsx-runtime").JSX.Element;
26
+ export {};
27
+ //# sourceMappingURL=SyncLoadingScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncLoadingScreen.d.ts","sourceRoot":"","sources":["../../../../src/react/components/SyncLoadingScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,2CA2DrE"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * SyncStatusIndicator displays the current sync status as a simple text indicator
3
+ *
4
+ * Shows "IN SYNC" (green) when caught up, "SYNCING (-N)" (orange) when behind.
5
+ * Does not render during first sync (loading screen handles that).
6
+ *
7
+ * Usage in HUD:
8
+ * ```tsx
9
+ * <div style={{ position: 'absolute', top: 10, left: 10 }}>
10
+ * <SyncStatusIndicator />
11
+ * </div>
12
+ * ```
13
+ */
14
+ export declare function SyncStatusIndicator(): import("react/jsx-runtime").JSX.Element | null;
15
+ //# sourceMappingURL=SyncStatusIndicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncStatusIndicator.d.ts","sourceRoot":"","sources":["../../../../src/react/components/SyncStatusIndicator.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,mDAiBlC"}
@@ -0,0 +1,3 @@
1
+ export { SyncLoadingScreen } from './SyncLoadingScreen';
2
+ export { SyncStatusIndicator } from './SyncStatusIndicator';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/react/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -18,6 +18,8 @@ export declare function usePlayers(): Player[];
18
18
  * this, since that is guaranteed to be in sync with the state snapshot - this hook is not.
19
19
  * This hook is however useful for things like HUDs etc where sync is not critical.
20
20
  *
21
+ * Must be used within a ParticipantProvider.
22
+ *
21
23
  * @returns Current player or null if not in session
22
24
  */
23
25
  export declare function useCurrentPlayer(): Player | null;
@@ -1 +1 @@
1
- {"version":3,"file":"usePlayers.d.ts","sourceRoot":"","sources":["../../../../src/react/hooks/usePlayers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAGrC;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAIhD"}
1
+ {"version":3,"file":"usePlayers.d.ts","sourceRoot":"","sources":["../../../../src/react/hooks/usePlayers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAGrC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAIhD"}
@@ -0,0 +1,18 @@
1
+ import type { SyncStatus } from '../types/session';
2
+ /**
3
+ * useSyncStatus returns the current synchronization status of the session
4
+ *
5
+ * Use this to display loading progress or network status indicators:
6
+ * - `phase`: 'connecting' | 'syncing' | 'sync'
7
+ * - `latestTick`: Server's authoritative tick (sync head)
8
+ * - `computedTick`: Highest tick with computed state (excludes predictions)
9
+ * - `lastSyncTime`: Timestamp when first sync completed (null if never synced)
10
+ *
11
+ * Example usage for loading screen vs HUD indicator:
12
+ * - `lastSyncTime === null && phase !== 'sync'` -> Show full loading screen (first sync)
13
+ * - `lastSyncTime !== null && phase === 'syncing'` -> Show HUD network indicator (catching up)
14
+ *
15
+ * @returns SyncStatus object (returns default status if not in SessionProvider)
16
+ */
17
+ export declare function useSyncStatus(): SyncStatus;
18
+ //# sourceMappingURL=useSyncStatus.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"useSyncStatus.d.ts","sourceRoot":"","sources":["../../../../src/react/hooks/useSyncStatus.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,UAAU,EAAE,MAAM,kBAAkB,CAAC;AAUnD;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,aAAa,IAAI,UAAU,CAe1C"}
@@ -2,6 +2,8 @@
2
2
  * React components for Multitap games
3
3
  */
4
4
  export { SessionProvider, SessionContext, useSessionContext } from './providers';
5
+ export { ParticipantProvider, useParticipantContext, useCurrentPlayerId, useSendInput } from './providers';
6
+ export type { ParticipantContextValue, ParticipantProviderProps } from './providers';
5
7
  export { useSession, useFrame, useQuery, useQueryMask, usePlayers, useCurrentPlayer, useEvent } from './hooks';
6
8
  export type { CapturedEvent, UseEventOptions } from './hooks';
7
9
  export type { Player, PlayerStore, EntityStore, SessionContextValue, SessionProviderProps, ReactSessionInterface, ReactCreateSession, UseSessionRenderCallback, QuerySelector, QuerySelectorContext, } from './types/session';
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAGhF,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC9G,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAG7D,YAAY,EACV,MAAM,EACN,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,aAAa,EACb,oBAAoB,GACrB,MAAM,iBAAiB,CAAA;AAQxB,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAG7E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,YAAY,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAGvC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAC5C,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAGpF,OAAO,EACL,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,aAAa,EACb,OAAO,GACR,MAAM,SAAS,CAAA;AAChB,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../src/react/index.ts"],"names":[],"mappings":"AAAA;;GAEG;AAOH,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,aAAa,CAAA;AAChF,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,aAAa,CAAA;AAC1G,YAAY,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAGpF,OAAO,EAAE,UAAU,EAAE,QAAQ,EAAE,QAAQ,EAAE,YAAY,EAAE,UAAU,EAAE,gBAAgB,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AAC9G,YAAY,EAAE,aAAa,EAAE,eAAe,EAAE,MAAM,SAAS,CAAA;AAG7D,YAAY,EACV,MAAM,EACN,WAAW,EACX,WAAW,EACX,mBAAmB,EACnB,oBAAoB,EACpB,qBAAqB,EACrB,kBAAkB,EAClB,wBAAwB,EACxB,aAAa,EACb,oBAAoB,GACrB,MAAM,iBAAiB,CAAA;AAQxB,OAAO,EAAE,MAAM,IAAI,YAAY,EAAE,MAAM,IAAI,gBAAgB,EAAE,MAAM,UAAU,CAAA;AAG7E,OAAO,EAAE,SAAS,EAAE,MAAM,aAAa,CAAA;AAGvC,YAAY,EACV,WAAW,EACX,YAAY,EACZ,YAAY,EACZ,QAAQ,EACR,WAAW,EACX,cAAc,EACd,iBAAiB,GAClB,MAAM,SAAS,CAAA;AAGhB,OAAO,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAGvC,OAAO,EAAE,aAAa,EAAE,MAAM,qBAAqB,CAAA;AACnD,YAAY,EAAE,UAAU,EAAE,MAAM,qBAAqB,CAAA;AAGrD,OAAO,EAAE,kBAAkB,EAAE,MAAM,SAAS,CAAA;AAC5C,YAAY,EAAE,WAAW,EAAE,QAAQ,EAAE,MAAM,SAAS,CAAA;AACpD,OAAO,EAAE,aAAa,EAAE,eAAe,EAAE,WAAW,EAAE,aAAa,EAAE,MAAM,SAAS,CAAA;AAGpF,OAAO,EACL,eAAe,EACf,eAAe,EACf,oBAAoB,EACpB,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,UAAU,EACV,OAAO,EACP,WAAW,EACX,gBAAgB,EAChB,aAAa,EACb,QAAQ,EACR,aAAa,EACb,OAAO,GACR,MAAM,SAAS,CAAA;AAChB,YAAY,EAAE,aAAa,EAAE,IAAI,EAAE,SAAS,EAAE,WAAW,EAAE,MAAM,SAAS,CAAA"}
@@ -0,0 +1,51 @@
1
+ import type { JoinOptions } from '../../session';
2
+ /**
3
+ * Context value provided by ParticipantProvider
4
+ */
5
+ export interface ParticipantContextValue {
6
+ /** Send input to the session */
7
+ sendInput: (input: Uint8Array) => void;
8
+ /** Current player's public key as hex string */
9
+ currentPlayerId: string;
10
+ /** Whether the player has successfully joined the session */
11
+ isJoined: boolean;
12
+ }
13
+ /**
14
+ * Props for ParticipantProvider component
15
+ */
16
+ export interface ParticipantProviderProps {
17
+ /** Player's private key for signing inputs */
18
+ playerKey: Uint8Array;
19
+ /** Options for joining (e.g., enableP2P) */
20
+ joinOptions?: JoinOptions;
21
+ children: React.ReactNode;
22
+ }
23
+ /**
24
+ * ParticipantProvider - manages joining a session and sending inputs
25
+ *
26
+ * Must be a child of SessionProvider. Takes a player key and auto-joins the session,
27
+ * providing sendInput and currentPlayerId to child components.
28
+ *
29
+ * Usage:
30
+ * ```tsx
31
+ * <SessionProvider config={}>
32
+ * <ParticipantProvider playerKey={myPrivateKey}>
33
+ * <Game />
34
+ * </ParticipantProvider>
35
+ * </SessionProvider>
36
+ * ```
37
+ */
38
+ export declare function ParticipantProvider({ playerKey, joinOptions, children }: ParticipantProviderProps): import("react/jsx-runtime").JSX.Element;
39
+ /**
40
+ * Hook to access participant context
41
+ */
42
+ export declare function useParticipantContext(): ParticipantContextValue;
43
+ /**
44
+ * Hook to get the current player ID (convenience wrapper)
45
+ */
46
+ export declare function useCurrentPlayerId(): string;
47
+ /**
48
+ * Hook to get the sendInput function (convenience wrapper)
49
+ */
50
+ export declare function useSendInput(): (input: Uint8Array) => void;
51
+ //# sourceMappingURL=ParticipantProvider.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"ParticipantProvider.d.ts","sourceRoot":"","sources":["../../../../src/react/providers/ParticipantProvider.tsx"],"names":[],"mappings":"AAIA,OAAO,KAAK,EAAwB,WAAW,EAAE,MAAM,eAAe,CAAC;AAEvE;;GAEG;AACH,MAAM,WAAW,uBAAuB;IACtC,gCAAgC;IAChC,SAAS,EAAE,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAAC;IACvC,gDAAgD;IAChD,eAAe,EAAE,MAAM,CAAC;IACxB,6DAA6D;IAC7D,QAAQ,EAAE,OAAO,CAAC;CACnB;AAID;;GAEG;AACH,MAAM,WAAW,wBAAwB;IACvC,8CAA8C;IAC9C,SAAS,EAAE,UAAU,CAAC;IACtB,4CAA4C;IAC5C,WAAW,CAAC,EAAE,WAAW,CAAC;IAC1B,QAAQ,EAAE,KAAK,CAAC,SAAS,CAAC;CAC3B;AAED;;;;;;;;;;;;;;GAcG;AACH,wBAAgB,mBAAmB,CAAC,EAAE,SAAS,EAAE,WAAW,EAAE,QAAQ,EAAE,EAAE,wBAAwB,2CA0DjG;AAED;;GAEG;AACH,wBAAgB,qBAAqB,IAAI,uBAAuB,CAM/D;AAED;;GAEG;AACH,wBAAgB,kBAAkB,IAAI,MAAM,CAE3C;AAED;;GAEG;AACH,wBAAgB,YAAY,IAAI,CAAC,KAAK,EAAE,UAAU,KAAK,IAAI,CAE1D"}
@@ -1 +1 @@
1
- {"version":3,"file":"SessionProvider.d.ts","sourceRoot":"","sources":["../../../../src/react/providers/SessionProvider.tsx"],"names":[],"mappings":"AAUA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EAKrB,MAAM,kBAAkB,CAAC;AAQ1B,eAAO,MAAM,cAAc,qDAAkD,CAAC;AA4D9E;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CA8GzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,mBAAmB,CAMvD"}
1
+ {"version":3,"file":"SessionProvider.d.ts","sourceRoot":"","sources":["../../../../src/react/providers/SessionProvider.tsx"],"names":[],"mappings":"AAQA,OAAO,KAAK,EACV,mBAAmB,EACnB,oBAAoB,EAKrB,MAAM,kBAAkB,CAAC;AAQ1B,eAAO,MAAM,cAAc,qDAAkD,CAAC;AA6D9E;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAAC,EAAE,MAAM,EAAE,QAAQ,EAAE,EAAE,oBAAoB,2CA4GzE;AAED;;GAEG;AACH,wBAAgB,iBAAiB,IAAI,mBAAmB,CAMvD"}
@@ -1,2 +1,4 @@
1
1
  export { SessionProvider, SessionContext, useSessionContext } from './SessionProvider';
2
+ export { ParticipantProvider, useParticipantContext, useCurrentPlayerId, useSendInput } from './ParticipantProvider';
3
+ export type { ParticipantContextValue, ParticipantProviderProps } from './ParticipantProvider';
2
4
  //# sourceMappingURL=index.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/react/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA"}
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/react/providers/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,eAAe,EAAE,cAAc,EAAE,iBAAiB,EAAE,MAAM,mBAAmB,CAAA;AACtF,OAAO,EAAE,mBAAmB,EAAE,qBAAqB,EAAE,kBAAkB,EAAE,YAAY,EAAE,MAAM,uBAAuB,CAAA;AACpH,YAAY,EAAE,uBAAuB,EAAE,wBAAwB,EAAE,MAAM,uBAAuB,CAAA"}
@@ -0,0 +1,6 @@
1
+ import type { SyncStatusStore } from '../types/session';
2
+ /**
3
+ * Create a Zustand store for tracking sync status
4
+ */
5
+ export declare function createSyncStatusStore(): import("zustand").StoreApi<SyncStatusStore>;
6
+ //# sourceMappingURL=syncStatusStore.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"syncStatusStore.d.ts","sourceRoot":"","sources":["../../../../src/react/stores/syncStatusStore.ts"],"names":[],"mappings":"AACA,OAAO,KAAK,EAAc,eAAe,EAAE,MAAM,kBAAkB,CAAC;AASpE;;GAEG;AACH,wBAAgB,qBAAqB,gDAQpC"}
@@ -2,7 +2,7 @@ import type { RefObject } from 'react';
2
2
  import type { RootState } from '@react-three/fiber';
3
3
  import type { StoreApi as ZustandStoreApi } from 'zustand';
4
4
  import type { SessionConfig } from '../../session-config';
5
- import type { SessionStats, SessionOptions, SessionInterface } from '../../session';
5
+ import type { SessionStats, SessionOptions, SessionInterface, InputSenderInterface, JoinOptions } from '../../session';
6
6
  import type { Participant } from '../../input-graph';
7
7
  import type { EntityRef, CompiledSchema } from '../../state';
8
8
  import type { InputCodec } from '../../input-codec';
@@ -50,8 +50,6 @@ export interface SessionContextValue {
50
50
  isReady: boolean;
51
51
  /** Error during session initialization */
52
52
  error: Error | null;
53
- /** Send input to the session */
54
- sendInput: (input: Uint8Array) => void;
55
53
  /** Compiled input bindings */
56
54
  inputBindings: InputCodec;
57
55
  /** Session has ended */
@@ -62,8 +60,8 @@ export interface SessionContextValue {
62
60
  schema: CompiledSchema;
63
61
  /** Get session stats */
64
62
  getStats: () => SessionStats;
65
- /** Get current player id */
66
- currentPlayerId: string;
63
+ /** Join the session as a participant, returns an InputSender */
64
+ join: (playerKey: Uint8Array, options?: JoinOptions) => Promise<InputSenderInterface>;
67
65
  }
68
66
  /**
69
67
  * Props for SessionProvider component
@@ -78,12 +76,11 @@ export interface SessionProviderProps {
78
76
  export interface ReactSessionInterface {
79
77
  getConfig: SessionInterface['getConfig'];
80
78
  getInputBindings: SessionInterface['getInputBindings'];
81
- sendInput: SessionInterface['sendInput'];
82
79
  getState: SessionInterface['getState'];
83
80
  getStats: SessionInterface['getStats'];
84
81
  close: SessionInterface['close'];
85
82
  getParticipants: SessionInterface['getParticipants'];
86
- getCurrentPlayerId: SessionInterface['getCurrentPlayerId'];
83
+ join: (playerKey: Uint8Array, options?: JoinOptions) => Promise<InputSenderInterface>;
87
84
  }
88
85
  /**
89
86
  * Factory function type for creating sessions (allows test mocking)
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/react/types/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../../../src/react/types/session.ts"],"names":[],"mappings":"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"}
package/dist/session.d.ts CHANGED
@@ -4,6 +4,7 @@ import { type CompiledSchema, type StateBuffer, type StateSchema, type StoreApi
4
4
  import type { CompiledInitDataSchema } from './schema';
5
5
  import { type Rollback as RollbackClass } from './rollback';
6
6
  import { SessionConfig } from './session-config';
7
+ import { PeerMesh } from './peer-mesh';
7
8
  import type { Participant } from './input-graph';
8
9
  export * from './input-graph';
9
10
  export declare const OPTIMISTIC_NONE: "NONE";
@@ -41,7 +42,6 @@ export interface MultitapConfig {
41
42
  };
42
43
  }
43
44
  export interface SessionOptions {
44
- playerKey: Uint8Array;
45
45
  authority?: string;
46
46
  appID: string;
47
47
  path: string[] | string;
@@ -56,6 +56,7 @@ export interface SessionOptions {
56
56
  maxTicksPerBatch?: number;
57
57
  tickLag?: number;
58
58
  connectionTimeoutMs?: number;
59
+ joinTimeoutMs?: number;
59
60
  plugins: MultitapPlugin[];
60
61
  schema: {
61
62
  state: StateSchema | CompiledSchema;
@@ -66,9 +67,27 @@ export interface SessionOptions {
66
67
  renderer: Renderer;
67
68
  logSyncTicks?: boolean;
68
69
  enableStatsCollection?: boolean;
69
- enableP2P?: boolean;
70
70
  optimisticStrategy: OptimisticStrategy;
71
71
  predictedHeadMax?: number | 'auto';
72
+ manifestURL?: string | undefined;
73
+ }
74
+ export interface InputSenderInterface {
75
+ sendInput(input: Uint8Array): void;
76
+ readonly currentPlayerId: string;
77
+ getPublicKey(): Uint8Array;
78
+ }
79
+ export interface JoinOptions {
80
+ enableP2P?: boolean;
81
+ }
82
+ export declare class InputSender implements InputSenderInterface {
83
+ private channel;
84
+ private privateKey;
85
+ private publicKey;
86
+ private peerMesh;
87
+ constructor(channel: Channel, privateKey: Uint8Array, peerMesh: PeerMesh | null);
88
+ sendInput(input: Uint8Array): void;
89
+ get currentPlayerId(): string;
90
+ getPublicKey(): Uint8Array;
72
91
  }
73
92
  declare class Session {
74
93
  private channel;
@@ -76,7 +95,6 @@ declare class Session {
76
95
  private config;
77
96
  private initializing;
78
97
  private initialized;
79
- private playerKey;
80
98
  private compiledStateSchema;
81
99
  private rollbackWorkerUrl;
82
100
  private rollbackWorker;
@@ -86,6 +104,7 @@ declare class Session {
86
104
  readonly debug: boolean | undefined;
87
105
  private autoConnect;
88
106
  private connectionTimeoutMs;
107
+ private joinTimeoutMs;
89
108
  private tickLag;
90
109
  private logSyncTicks;
91
110
  private schema;
@@ -103,20 +122,18 @@ declare class Session {
103
122
  private participantsById;
104
123
  private participantsSorted;
105
124
  private peerMesh;
106
- private enableP2P;
107
125
  private optimisticStrategy;
108
126
  private predictedHeadMax;
127
+ private manifestURL;
109
128
  constructor(options: SessionOptions);
110
129
  init(): Promise<void>;
111
- getCurrentPlayerId(): string;
112
130
  getParticipants(): readonly Participant[];
113
131
  private onParticipantJoined;
114
132
  getConfig(): SessionConfig;
115
133
  getStateBindings(): StoreApi;
116
134
  getInputBindings(): InputCodec;
117
- sendInput(input: Uint8Array): void;
135
+ join(privateKey: Uint8Array, options?: JoinOptions): Promise<InputSender>;
118
136
  getState(): StateBuffer;
119
- private onInputSendError;
120
137
  private onStateUpdate;
121
138
  getStats(): SessionStats;
122
139
  close(): Promise<void>;
@@ -1 +1 @@
1
- {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"session.d.ts","sourceRoot":"","sources":["../../src/session.ts"],"names":[],"mappings":"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"}
@@ -19,7 +19,6 @@ export interface ChannelConfig {
19
19
  /** multitap:// connection URL (will be base64-encoded for transport) */
20
20
  connectionURL: string;
21
21
  serverCertHash: string | null | undefined;
22
- privateKey?: Uint8Array;
23
22
  relayPubKey?: Uint8Array | undefined | null;
24
23
  inputPayloadPredictor?: PayloadPredictor | null;
25
24
  debug?: boolean | undefined;
@@ -29,14 +28,13 @@ export interface ChannelConfig {
29
28
  iceServers?: ICEServerConfig[] | undefined;
30
29
  optimisticStrategy: OptimisticStrategy;
31
30
  predictedHeadMax?: number | 'auto' | undefined;
31
+ manifestURL?: string | undefined;
32
32
  }
33
33
  export declare const MAX_PREDICTION_WINDOW = 10;
34
34
  export declare class Channel implements AsyncTickLog {
35
35
  readonly connectionURL: string;
36
36
  readonly serverCertHash: string | null | undefined;
37
37
  readonly connectionTimeoutMs: number;
38
- private privateKey;
39
- private publicKey;
40
38
  private genesisHash;
41
39
  private sessionConfig;
42
40
  private peerConnection;
@@ -60,12 +58,13 @@ export declare class Channel implements AsyncTickLog {
60
58
  private lastSentTick;
61
59
  private optimisticStrategy;
62
60
  private autoPredictedHeadMax;
61
+ private manifestURL;
63
62
  private smoothedRttMs;
64
63
  private lastPingId;
64
+ private replayEnd;
65
65
  private stats;
66
66
  constructor(config: ChannelConfig);
67
67
  connect(): Promise<void>;
68
- getPublicKey(): Promise<Uint8Array<ArrayBufferLike>>;
69
68
  getGenesisHash(): Promise<Uint8Array<ArrayBufferLike>>;
70
69
  onStateChange(fn: StateListener): UnsubscribeFn;
71
70
  getStats(): {
@@ -80,6 +79,7 @@ export declare class Channel implements AsyncTickLog {
80
79
  getTickRate(): Promise<number>;
81
80
  getParticipantSlots(tick: number): Promise<Participant[]>;
82
81
  getSyncHead(): Promise<TickNode>;
82
+ isCaughtUp(): Promise<boolean>;
83
83
  getPredictedHead(): Promise<TickNode>;
84
84
  addSyncTick(msg: TickMessage): Promise<void>;
85
85
  addOptimisticInput(input: InputData, preVerifiedSigner?: Uint8Array): Promise<void>;
@@ -93,8 +93,8 @@ export declare class Channel implements AsyncTickLog {
93
93
  close(): Promise<void>;
94
94
  private _setConnected;
95
95
  private _send;
96
- private _generateNullInput;
97
- sendSignedInput(payload: Uint8Array): Promise<Uint8Array | null>;
96
+ sendJoinMessage(privateKey: Uint8Array): Promise<void>;
97
+ sendSignedInput(payload: Uint8Array, privateKey: Uint8Array): Promise<Uint8Array | null>;
98
98
  private _nextChannel;
99
99
  private _connectLoop;
100
100
  private _handleDataChannel;
@@ -1 +1 @@
1
- {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/channel.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"channel.d.ts","sourceRoot":"","sources":["../../src/channel.ts"],"names":[],"mappings":"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"}
@@ -11,6 +11,18 @@ export declare const GENESIS_HASH_SIZE = 16;
11
11
  * @returns 32-byte private key
12
12
  */
13
13
  export declare function generateKeyPair(): Uint8Array;
14
+ /**
15
+ * Derive a child private key from a base key and index.
16
+ * Uses SHA256(baseKey || "multitap:bot:" || index_le_u32) for deterministic derivation.
17
+ * The same base key + index always produces the same child key.
18
+ *
19
+ * This matches the Go implementation in protocol/crypto.go DeriveKey().
20
+ *
21
+ * @param baseKey 32-byte base private key
22
+ * @param index Player index (uint32, 0-4294967295)
23
+ * @returns 32-byte derived private key
24
+ */
25
+ export declare function deriveKey(baseKey: Uint8Array, index: number): Uint8Array;
14
26
  /**
15
27
  * Derive the compressed public key from a private key.
16
28
  * @param privateKey 32-byte private key
@@ -1 +1 @@
1
- {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAO5C,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC;;;GAGG;AACH,wBAAgB,eAAe,IAAI,UAAU,CAE5C;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,GAAG,UAAU,CAehF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,UAAU,CAkBxF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAO3G;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAGrE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAIpD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,UAAU,CAc7G;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,UAAU,EACvB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,UAAU,GACtB,UAAU,CAiBZ;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAkC1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,CAkC/D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,UAAU,CAkBxF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAU7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAI5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAMtD"}
1
+ {"version":3,"file":"crypto.d.ts","sourceRoot":"","sources":["../../src/crypto.ts"],"names":[],"mappings":"AAOA,OAAO,KAAK,EAAE,SAAS,EAAE,MAAM,YAAY,CAAC;AAO5C,eAAO,MAAM,cAAc,KAAK,CAAC;AACjC,eAAO,MAAM,sBAAsB,KAAK,CAAC;AACzC,eAAO,MAAM,uBAAuB,KAAK,CAAC;AAC1C,eAAO,MAAM,gBAAgB,KAAK,CAAC;AACnC,eAAO,MAAM,SAAS,KAAK,CAAC;AAC5B,eAAO,MAAM,iBAAiB,IAAI,CAAC;AACnC,eAAO,MAAM,iBAAiB,KAAK,CAAC;AAEpC;;;GAGG;AACH,wBAAgB,eAAe,IAAI,UAAU,CAE5C;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,SAAS,CAAC,OAAO,EAAE,UAAU,EAAE,KAAK,EAAE,MAAM,GAAG,UAAU,CAsBxE;AAED;;;;GAIG;AACH,wBAAgB,iBAAiB,CAAC,UAAU,EAAE,UAAU,GAAG,UAAU,CAEpE;AAED;;;;;;GAMG;AACH,wBAAgB,IAAI,CAAC,UAAU,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,GAAG,UAAU,CAehF;AAED;;;;;GAKG;AACH,wBAAgB,aAAa,CAAC,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,UAAU,CAkBxF;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,MAAM,EAAE,UAAU,EAAE,WAAW,EAAE,UAAU,EAAE,SAAS,EAAE,UAAU,GAAG,OAAO,CAO3G;AAED;;;;GAIG;AACH,wBAAgB,WAAW,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAExD;AAED;;;;;GAKG;AACH,wBAAgB,wBAAwB,CAAC,IAAI,EAAE,UAAU,GAAG,UAAU,CAGrE;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,WAAW,CAAC,GAAG,EAAE,OAAO,GAAG,UAAU,CAIpD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,WAAW,EAAE,UAAU,EAAE,UAAU,EAAE,MAAM,EAAE,OAAO,EAAE,UAAU,GAAG,UAAU,CAc7G;AAED;;;;;;;;GAQG;AACH,wBAAgB,eAAe,CAC7B,WAAW,EAAE,UAAU,EACvB,OAAO,EAAE,MAAM,EACf,UAAU,EAAE,UAAU,EACtB,WAAW,EAAE,UAAU,GACtB,UAAU,CAiBZ;AAED;;;;;;;GAOG;AACH,wBAAgB,UAAU,CAAC,MAAM,EAAE,SAAS,EAAE,GAAG,UAAU,CAkC1D;AAED;;;;;;;;;;;GAWG;AACH,wBAAgB,YAAY,CAAC,QAAQ,EAAE,UAAU,EAAE,GAAG,UAAU,CAkC/D;AAED;;;;;;GAMG;AACH,wBAAgB,eAAe,CAAC,WAAW,EAAE,UAAU,EAAE,WAAW,EAAE,MAAM,GAAG,UAAU,CAkBxF;AAED;;;;;GAKG;AACH,wBAAgB,mBAAmB,CAAC,KAAK,EAAE,UAAU,GAAG,MAAM,CAE7D;AAED;;;;;GAKG;AACH,wBAAgB,qBAAqB,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAU7D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,SAAS,EAAE,UAAU,GAAG,MAAM,CAI5D;AAED;;GAEG;AACH,wBAAgB,cAAc,CAAC,GAAG,EAAE,MAAM,GAAG,UAAU,CAMtD"}
@@ -30,6 +30,7 @@ export interface AsyncTickLog {
30
30
  getTicksAfter(nodeId: string | null, options?: GetTicksAfterOptions): Promise<TickPrimitive[]>;
31
31
  getPredictionCount(): Promise<number>;
32
32
  setOnParticipantJoined(fn: (participant: Participant) => void): Promise<void>;
33
+ isCaughtUp(): Promise<boolean>;
33
34
  }
34
35
  export interface TickPrimitive {
35
36
  id: string;
@@ -117,5 +118,6 @@ export declare class AsyncInputGraph implements AsyncTickLog {
117
118
  getParticipantSlots(tick: number): Promise<(Participant | undefined)[]>;
118
119
  getPredictionCount(): Promise<number>;
119
120
  setOnParticipantJoined(fn: (participant: Participant) => void): Promise<void>;
121
+ isCaughtUp(): Promise<boolean>;
120
122
  }
121
123
  //# sourceMappingURL=input-graph.d.ts.map
@@ -1 +1 @@
1
- {"version":3,"file":"input-graph.d.ts","sourceRoot":"","sources":["../../src/input-graph.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"input-graph.d.ts","sourceRoot":"","sources":["../../src/input-graph.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,27 @@
1
+ import { type ReactNode } from 'react';
2
+ interface SyncLoadingScreenProps {
3
+ children: ReactNode;
4
+ }
5
+ /**
6
+ * SyncLoadingScreen wraps game content and shows a loading overlay during initial sync
7
+ *
8
+ * Blocks children from rendering until the first sync is complete. This prevents
9
+ * the scene from rendering before state is ready.
10
+ *
11
+ * After initial sync, children render normally. Subsequent catch-ups (reconnects)
12
+ * should use SyncStatusIndicator in the HUD instead of blocking the scene.
13
+ *
14
+ * Usage:
15
+ * ```tsx
16
+ * <SessionProvider config={config}>
17
+ * <SyncLoadingScreen>
18
+ * <Arena />
19
+ * <Players />
20
+ * <HUD />
21
+ * </SyncLoadingScreen>
22
+ * </SessionProvider>
23
+ * ```
24
+ */
25
+ export declare function SyncLoadingScreen({ children }: SyncLoadingScreenProps): import("react/jsx-runtime").JSX.Element;
26
+ export {};
27
+ //# sourceMappingURL=SyncLoadingScreen.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncLoadingScreen.d.ts","sourceRoot":"","sources":["../../../../src/react/components/SyncLoadingScreen.tsx"],"names":[],"mappings":"AAAA,OAAO,EAAE,KAAK,SAAS,EAAE,MAAM,OAAO,CAAC;AAIvC,UAAU,sBAAsB;IAC9B,QAAQ,EAAE,SAAS,CAAC;CACrB;AAED;;;;;;;;;;;;;;;;;;;GAmBG;AACH,wBAAgB,iBAAiB,CAAC,EAAE,QAAQ,EAAE,EAAE,sBAAsB,2CA2DrE"}
@@ -0,0 +1,15 @@
1
+ /**
2
+ * SyncStatusIndicator displays the current sync status as a simple text indicator
3
+ *
4
+ * Shows "IN SYNC" (green) when caught up, "SYNCING (-N)" (orange) when behind.
5
+ * Does not render during first sync (loading screen handles that).
6
+ *
7
+ * Usage in HUD:
8
+ * ```tsx
9
+ * <div style={{ position: 'absolute', top: 10, left: 10 }}>
10
+ * <SyncStatusIndicator />
11
+ * </div>
12
+ * ```
13
+ */
14
+ export declare function SyncStatusIndicator(): import("react/jsx-runtime").JSX.Element | null;
15
+ //# sourceMappingURL=SyncStatusIndicator.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"SyncStatusIndicator.d.ts","sourceRoot":"","sources":["../../../../src/react/components/SyncStatusIndicator.tsx"],"names":[],"mappings":"AAEA;;;;;;;;;;;;GAYG;AACH,wBAAgB,mBAAmB,mDAiBlC"}
@@ -0,0 +1,3 @@
1
+ export { SyncLoadingScreen } from './SyncLoadingScreen';
2
+ export { SyncStatusIndicator } from './SyncStatusIndicator';
3
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/react/components/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,iBAAiB,EAAE,MAAM,qBAAqB,CAAC;AACxD,OAAO,EAAE,mBAAmB,EAAE,MAAM,uBAAuB,CAAC"}
@@ -18,6 +18,8 @@ export declare function usePlayers(): Player[];
18
18
  * this, since that is guaranteed to be in sync with the state snapshot - this hook is not.
19
19
  * This hook is however useful for things like HUDs etc where sync is not critical.
20
20
  *
21
+ * Must be used within a ParticipantProvider.
22
+ *
21
23
  * @returns Current player or null if not in session
22
24
  */
23
25
  export declare function useCurrentPlayer(): Player | null;
@@ -1 +1 @@
1
- {"version":3,"file":"usePlayers.d.ts","sourceRoot":"","sources":["../../../../src/react/hooks/usePlayers.ts"],"names":[],"mappings":"AAEA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAGrC;AAED;;;;;;;;GAQG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAIhD"}
1
+ {"version":3,"file":"usePlayers.d.ts","sourceRoot":"","sources":["../../../../src/react/hooks/usePlayers.ts"],"names":[],"mappings":"AAGA,OAAO,KAAK,EAAE,MAAM,EAAE,MAAM,kBAAkB,CAAA;AAE9C;;;;;;;;;;GAUG;AACH,wBAAgB,UAAU,IAAI,MAAM,EAAE,CAGrC;AAED;;;;;;;;;;GAUG;AACH,wBAAgB,gBAAgB,IAAI,MAAM,GAAG,IAAI,CAIhD"}
@@ -0,0 +1,18 @@
1
+ import type { SyncStatus } from '../types/session';
2
+ /**
3
+ * useSyncStatus returns the current synchronization status of the session
4
+ *
5
+ * Use this to display loading progress or network status indicators:
6
+ * - `phase`: 'connecting' | 'syncing' | 'sync'
7
+ * - `latestTick`: Server's authoritative tick (sync head)
8
+ * - `computedTick`: Highest tick with computed state (excludes predictions)
9
+ * - `lastSyncTime`: Timestamp when first sync completed (null if never synced)
10
+ *
11
+ * Example usage for loading screen vs HUD indicator:
12
+ * - `lastSyncTime === null && phase !== 'sync'` -> Show full loading screen (first sync)
13
+ * - `lastSyncTime !== null && phase === 'syncing'` -> Show HUD network indicator (catching up)
14
+ *
15
+ * @returns SyncStatus object (returns default status if not in SessionProvider)
16
+ */
17
+ export declare function useSyncStatus(): SyncStatus;
18
+ //# sourceMappingURL=useSyncStatus.d.ts.map