@edge-base/react-native 0.1.5 → 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.
package/dist/index.d.cts CHANGED
@@ -430,6 +430,100 @@ declare class DatabaseLiveClient implements IDatabaseLiveSubscriber {
430
430
  private handleContextChange;
431
431
  }
432
432
 
433
+ interface ParticipantMapLike<TParticipant> extends Iterable<TParticipant> {
434
+ values(): IterableIterator<TParticipant>;
435
+ on(event: 'participantJoined', handler: (participant: TParticipant) => void): void;
436
+ on(event: 'participantLeft', handler: (participant: TParticipant) => void): void;
437
+ on(event: 'participantsCleared', handler: () => void): void;
438
+ on(event: 'participantsUpdate', handler: () => void): void;
439
+ off(event: 'participantJoined', handler: (participant: TParticipant) => void): void;
440
+ off(event: 'participantLeft', handler: (participant: TParticipant) => void): void;
441
+ off(event: 'participantsCleared', handler: () => void): void;
442
+ off(event: 'participantsUpdate', handler: () => void): void;
443
+ }
444
+ type ParticipantEventHandlers = {
445
+ audioUpdate: (payload: {
446
+ audioEnabled: boolean;
447
+ audioTrack: MediaStreamTrack;
448
+ }) => void;
449
+ videoUpdate: (payload: {
450
+ videoEnabled: boolean;
451
+ videoTrack: MediaStreamTrack;
452
+ }) => void;
453
+ screenShareUpdate: (payload: {
454
+ screenShareEnabled: boolean;
455
+ screenShareTracks: {
456
+ audio?: MediaStreamTrack;
457
+ video?: MediaStreamTrack;
458
+ };
459
+ }) => void;
460
+ };
461
+ interface RoomCloudflareKitParticipant {
462
+ id: string;
463
+ customParticipantId?: string;
464
+ userId?: string;
465
+ audioTrack?: MediaStreamTrack;
466
+ audioEnabled?: boolean;
467
+ videoTrack?: MediaStreamTrack;
468
+ videoEnabled?: boolean;
469
+ screenShareTracks?: {
470
+ audio?: MediaStreamTrack;
471
+ video?: MediaStreamTrack;
472
+ };
473
+ screenShareEnabled?: boolean;
474
+ on<TEvent extends keyof ParticipantEventHandlers>(event: TEvent, handler: ParticipantEventHandlers[TEvent]): void;
475
+ off<TEvent extends keyof ParticipantEventHandlers>(event: TEvent, handler: ParticipantEventHandlers[TEvent]): void;
476
+ }
477
+ interface RoomCloudflareKitSelf {
478
+ id: string;
479
+ audioTrack?: MediaStreamTrack;
480
+ videoTrack?: MediaStreamTrack;
481
+ screenShareTracks?: {
482
+ audio?: MediaStreamTrack;
483
+ video?: MediaStreamTrack;
484
+ };
485
+ enableAudio(customTrack?: MediaStreamTrack): Promise<void>;
486
+ enableVideo(customTrack?: MediaStreamTrack): Promise<void>;
487
+ enableScreenShare(): Promise<void>;
488
+ disableAudio(): Promise<void>;
489
+ disableVideo(): Promise<void>;
490
+ disableScreenShare(): Promise<void>;
491
+ getDeviceById(deviceId: string, kind: string): Promise<unknown>;
492
+ setDevice(device: unknown): Promise<void>;
493
+ }
494
+ interface RoomCloudflareKitClient {
495
+ join?(): Promise<void>;
496
+ leave?(state?: unknown): Promise<void>;
497
+ joinRoom?(): Promise<void>;
498
+ leaveRoom?(state?: unknown): Promise<void>;
499
+ readonly participants: {
500
+ active?: ParticipantMapLike<RoomCloudflareKitParticipant>;
501
+ joined?: ParticipantMapLike<RoomCloudflareKitParticipant>;
502
+ };
503
+ readonly self: RoomCloudflareKitSelf;
504
+ }
505
+ interface RoomCloudflareKitClientFactory {
506
+ init(options: {
507
+ authToken: string;
508
+ defaults: {
509
+ audio: boolean;
510
+ video: boolean;
511
+ };
512
+ }): Promise<RoomCloudflareKitClient>;
513
+ }
514
+ interface RoomCloudflareMediaTransportOptions {
515
+ autoSubscribe?: boolean;
516
+ mediaDevices?: Pick<MediaDevices, 'getUserMedia' | 'getDisplayMedia' | 'enumerateDevices'>;
517
+ clientFactory?: RoomCloudflareKitClientFactory;
518
+ }
519
+
520
+ interface RoomP2PMediaTransportOptions {
521
+ rtcConfiguration?: RTCConfiguration;
522
+ peerConnectionFactory?: (configuration: RTCConfiguration) => RTCPeerConnection;
523
+ mediaDevices?: Pick<MediaDevices, 'getUserMedia' | 'getDisplayMedia'>;
524
+ signalPrefix?: string;
525
+ }
526
+
433
527
  /**
434
528
  * RoomClient v2 — Client-side room connection for real-time multiplayer state.
435
529
  *
@@ -450,6 +544,8 @@ interface RoomOptions {
450
544
  reconnectBaseDelay?: number;
451
545
  /** Timeout for send() requests in ms (default: 10000) */
452
546
  sendTimeout?: number;
547
+ /** Timeout for WebSocket connection establishment in ms (default: 15000) */
548
+ connectionTimeout?: number;
453
549
  }
454
550
  interface Subscription {
455
551
  unsubscribe(): void;
@@ -490,6 +586,7 @@ interface RoomMediaTrack {
490
586
  muted: boolean;
491
587
  publishedAt?: number;
492
588
  adminDisabled?: boolean;
589
+ providerSessionId?: string;
493
590
  }
494
591
  interface RoomMemberMediaKindState {
495
592
  published: boolean;
@@ -498,6 +595,7 @@ interface RoomMemberMediaKindState {
498
595
  deviceId?: string;
499
596
  publishedAt?: number;
500
597
  adminDisabled?: boolean;
598
+ providerSessionId?: string;
501
599
  }
502
600
  interface RoomMemberMediaState {
503
601
  audio?: RoomMemberMediaKindState;
@@ -513,6 +611,66 @@ interface RoomMediaDeviceChange {
513
611
  kind: RoomMediaKind;
514
612
  deviceId: string;
515
613
  }
614
+ interface RoomCloudflareRealtimeKitCreateSessionRequest {
615
+ connectionId?: string;
616
+ customParticipantId?: string;
617
+ name?: string;
618
+ picture?: string;
619
+ }
620
+ interface RoomCloudflareRealtimeKitCreateSessionResponse {
621
+ sessionId: string;
622
+ meetingId: string;
623
+ participantId: string;
624
+ authToken: string;
625
+ presetName: string;
626
+ connectionId?: string;
627
+ reused?: boolean;
628
+ }
629
+ interface RoomMediaTransportConnectPayload {
630
+ connectionId?: string;
631
+ customParticipantId?: string;
632
+ name?: string;
633
+ picture?: string;
634
+ }
635
+ interface RoomMediaRemoteTrackEvent {
636
+ kind: RoomMediaKind;
637
+ track: MediaStreamTrack;
638
+ stream?: MediaStream;
639
+ trackName?: string;
640
+ providerSessionId?: string;
641
+ participantId?: string;
642
+ customParticipantId?: string;
643
+ userId?: string;
644
+ }
645
+ interface RoomMediaTransport {
646
+ connect(payload?: RoomMediaTransportConnectPayload): Promise<string>;
647
+ enableAudio(constraints?: MediaTrackConstraints | boolean): Promise<MediaStreamTrack>;
648
+ enableVideo(constraints?: MediaTrackConstraints | boolean): Promise<MediaStreamTrack>;
649
+ startScreenShare(constraints?: unknown): Promise<MediaStreamTrack>;
650
+ disableAudio(): Promise<void>;
651
+ disableVideo(): Promise<void>;
652
+ stopScreenShare(): Promise<void>;
653
+ setMuted(kind: Extract<RoomMediaKind, 'audio' | 'video'>, muted: boolean): Promise<void>;
654
+ switchDevices(payload: {
655
+ audioInputId?: string;
656
+ videoInputId?: string;
657
+ screenInputId?: string;
658
+ }): Promise<void>;
659
+ onRemoteTrack(handler: (event: RoomMediaRemoteTrackEvent) => void): Subscription;
660
+ getSessionId(): string | null;
661
+ getPeerConnection(): RTCPeerConnection | null;
662
+ destroy(): void;
663
+ }
664
+ type RoomMediaTransportProvider = 'cloudflare_realtimekit' | 'p2p';
665
+ interface RoomCloudflareRealtimeKitTransportFactoryOptions {
666
+ provider?: 'cloudflare_realtimekit';
667
+ cloudflareRealtimeKit?: RoomCloudflareMediaTransportOptions;
668
+ }
669
+ interface RoomP2PTransportFactoryOptions {
670
+ provider: 'p2p';
671
+ p2p?: RoomP2PMediaTransportOptions;
672
+ }
673
+ type RoomMediaTransportOptions = RoomCloudflareRealtimeKitTransportFactoryOptions | RoomP2PTransportFactoryOptions;
516
674
  declare class RoomClient {
517
675
  private baseUrl;
518
676
  private tokenManager;
@@ -585,6 +743,7 @@ declare class RoomClient {
585
743
  };
586
744
  readonly members: {
587
745
  list: () => RoomMember[];
746
+ current: () => RoomMember | null;
588
747
  onSync: (handler: (members: RoomMember[]) => void) => Subscription;
589
748
  onJoin: (handler: (member: RoomMember) => void) => Subscription;
590
749
  onLeave: (handler: (member: RoomMember, reason: RoomMemberLeaveReason) => void) => Subscription;
@@ -632,6 +791,10 @@ declare class RoomClient {
632
791
  screenInputId?: string;
633
792
  }) => Promise<void>;
634
793
  };
794
+ cloudflareRealtimeKit: {
795
+ createSession: (payload?: RoomCloudflareRealtimeKitCreateSessionRequest) => Promise<RoomCloudflareRealtimeKitCreateSessionResponse>;
796
+ };
797
+ transport: (options?: RoomMediaTransportOptions) => RoomMediaTransport;
635
798
  onTrack: (handler: (track: RoomMediaTrack, member: RoomMember) => void) => Subscription;
636
799
  onTrackRemoved: (handler: (track: RoomMediaTrack, member: RoomMember) => void) => Subscription;
637
800
  onStateChange: (handler: (member: RoomMember, state: RoomMemberMediaState) => void) => Subscription;
@@ -653,6 +816,8 @@ declare class RoomClient {
653
816
  * Returns developer-defined metadata set by room.setMetadata() on the server.
654
817
  */
655
818
  getMetadata(): Promise<Record<string, unknown>>;
819
+ private requestCloudflareRealtimeKitMedia;
820
+ private requestRoomMedia;
656
821
  /**
657
822
  * Static: Get room metadata without creating a RoomClient instance.
658
823
  * Useful for lobby screens where you need room info before joining.
@@ -662,6 +827,8 @@ declare class RoomClient {
662
827
  join(): Promise<void>;
663
828
  /** Leave the room and disconnect. Cleans up all pending requests. */
664
829
  leave(): void;
830
+ /** Destroy the room client, cleaning up all listeners and the auth subscription. */
831
+ destroy(): void;
665
832
  /**
666
833
  * Send an action to the server.
667
834
  * Returns a Promise that resolves with the action result from the server.
@@ -775,6 +942,7 @@ declare class RoomClient {
775
942
  private upsertMediaTrack;
776
943
  private removeMediaTrack;
777
944
  private mergeMediaState;
945
+ private rejectAllPendingRequests;
778
946
  private rejectPendingVoidRequests;
779
947
  private setConnectionState;
780
948
  private sendRaw;
@@ -1243,4 +1411,4 @@ declare function useTurnstile({ baseUrl, action, }: UseTurnstileOptions): UseTur
1243
1411
  */
1244
1412
  declare function isPlatformWeb(): boolean;
1245
1413
 
1246
- export { type AppStateAdapter, type AsyncStorageAdapter, AuthClient, type AuthResult, type AuthStateChangeHandler, ClientAnalytics, ClientEdgeBase, DatabaseLiveClient, type DatabaseLiveClientAdapter, type DatabaseLiveOptions, type FilterEntry, type FilterOperator, type JuneClientOptions, LifecycleManager, type LinkingAdapter, type PasskeysAuthOptions, PushClient, type PushMessage, type PushMessageHandler, type PushPermissionProvider, type PushPermissionStatus, type PushPlatform, type PushTokenProvider, RoomClient, type RoomConnectionState, type RoomMediaDeviceChange, type RoomMediaKind, type RoomMediaMember, type RoomMediaTrack, type RoomMember, type RoomMemberLeaveReason, type RoomMemberMediaKindState, type RoomMemberMediaState, type RoomOptions, type RoomReconnectInfo, type RoomSignalMeta, type Session, type SignInOptions, type SignUpOptions, type Subscription, TokenManager, type TokenPair, type TokenUser, TurnstileWebView, type TurnstileWebViewProps, type UpdateProfileOptions, type UseLifecycleOptions, type UseTurnstileOptions, type UseTurnstileResult, createClient, isPlatformWeb, matchesFilter, useLifecycle, useTurnstile };
1414
+ export { type AppStateAdapter, type AsyncStorageAdapter, AuthClient, type AuthResult, type AuthStateChangeHandler, ClientAnalytics, ClientEdgeBase, DatabaseLiveClient, type DatabaseLiveClientAdapter, type DatabaseLiveOptions, type FilterEntry, type FilterOperator, type JuneClientOptions, LifecycleManager, type LinkingAdapter, type PasskeysAuthOptions, PushClient, type PushMessage, type PushMessageHandler, type PushPermissionProvider, type PushPermissionStatus, type PushPlatform, type PushTokenProvider, RoomClient, type RoomCloudflareRealtimeKitCreateSessionRequest, type RoomCloudflareRealtimeKitCreateSessionResponse, type RoomCloudflareRealtimeKitTransportFactoryOptions, type RoomConnectionState, type RoomMediaDeviceChange, type RoomMediaKind, type RoomMediaMember, type RoomMediaRemoteTrackEvent, type RoomMediaTrack, type RoomMediaTransport, type RoomMediaTransportConnectPayload, type RoomMediaTransportOptions, type RoomMediaTransportProvider, type RoomMember, type RoomMemberLeaveReason, type RoomMemberMediaKindState, type RoomMemberMediaState, type RoomOptions, type RoomP2PTransportFactoryOptions, type RoomReconnectInfo, type RoomSignalMeta, type Session, type SignInOptions, type SignUpOptions, type Subscription, TokenManager, type TokenPair, type TokenUser, TurnstileWebView, type TurnstileWebViewProps, type UpdateProfileOptions, type UseLifecycleOptions, type UseTurnstileOptions, type UseTurnstileResult, createClient, isPlatformWeb, matchesFilter, useLifecycle, useTurnstile };
package/dist/index.d.ts CHANGED
@@ -430,6 +430,100 @@ declare class DatabaseLiveClient implements IDatabaseLiveSubscriber {
430
430
  private handleContextChange;
431
431
  }
432
432
 
433
+ interface ParticipantMapLike<TParticipant> extends Iterable<TParticipant> {
434
+ values(): IterableIterator<TParticipant>;
435
+ on(event: 'participantJoined', handler: (participant: TParticipant) => void): void;
436
+ on(event: 'participantLeft', handler: (participant: TParticipant) => void): void;
437
+ on(event: 'participantsCleared', handler: () => void): void;
438
+ on(event: 'participantsUpdate', handler: () => void): void;
439
+ off(event: 'participantJoined', handler: (participant: TParticipant) => void): void;
440
+ off(event: 'participantLeft', handler: (participant: TParticipant) => void): void;
441
+ off(event: 'participantsCleared', handler: () => void): void;
442
+ off(event: 'participantsUpdate', handler: () => void): void;
443
+ }
444
+ type ParticipantEventHandlers = {
445
+ audioUpdate: (payload: {
446
+ audioEnabled: boolean;
447
+ audioTrack: MediaStreamTrack;
448
+ }) => void;
449
+ videoUpdate: (payload: {
450
+ videoEnabled: boolean;
451
+ videoTrack: MediaStreamTrack;
452
+ }) => void;
453
+ screenShareUpdate: (payload: {
454
+ screenShareEnabled: boolean;
455
+ screenShareTracks: {
456
+ audio?: MediaStreamTrack;
457
+ video?: MediaStreamTrack;
458
+ };
459
+ }) => void;
460
+ };
461
+ interface RoomCloudflareKitParticipant {
462
+ id: string;
463
+ customParticipantId?: string;
464
+ userId?: string;
465
+ audioTrack?: MediaStreamTrack;
466
+ audioEnabled?: boolean;
467
+ videoTrack?: MediaStreamTrack;
468
+ videoEnabled?: boolean;
469
+ screenShareTracks?: {
470
+ audio?: MediaStreamTrack;
471
+ video?: MediaStreamTrack;
472
+ };
473
+ screenShareEnabled?: boolean;
474
+ on<TEvent extends keyof ParticipantEventHandlers>(event: TEvent, handler: ParticipantEventHandlers[TEvent]): void;
475
+ off<TEvent extends keyof ParticipantEventHandlers>(event: TEvent, handler: ParticipantEventHandlers[TEvent]): void;
476
+ }
477
+ interface RoomCloudflareKitSelf {
478
+ id: string;
479
+ audioTrack?: MediaStreamTrack;
480
+ videoTrack?: MediaStreamTrack;
481
+ screenShareTracks?: {
482
+ audio?: MediaStreamTrack;
483
+ video?: MediaStreamTrack;
484
+ };
485
+ enableAudio(customTrack?: MediaStreamTrack): Promise<void>;
486
+ enableVideo(customTrack?: MediaStreamTrack): Promise<void>;
487
+ enableScreenShare(): Promise<void>;
488
+ disableAudio(): Promise<void>;
489
+ disableVideo(): Promise<void>;
490
+ disableScreenShare(): Promise<void>;
491
+ getDeviceById(deviceId: string, kind: string): Promise<unknown>;
492
+ setDevice(device: unknown): Promise<void>;
493
+ }
494
+ interface RoomCloudflareKitClient {
495
+ join?(): Promise<void>;
496
+ leave?(state?: unknown): Promise<void>;
497
+ joinRoom?(): Promise<void>;
498
+ leaveRoom?(state?: unknown): Promise<void>;
499
+ readonly participants: {
500
+ active?: ParticipantMapLike<RoomCloudflareKitParticipant>;
501
+ joined?: ParticipantMapLike<RoomCloudflareKitParticipant>;
502
+ };
503
+ readonly self: RoomCloudflareKitSelf;
504
+ }
505
+ interface RoomCloudflareKitClientFactory {
506
+ init(options: {
507
+ authToken: string;
508
+ defaults: {
509
+ audio: boolean;
510
+ video: boolean;
511
+ };
512
+ }): Promise<RoomCloudflareKitClient>;
513
+ }
514
+ interface RoomCloudflareMediaTransportOptions {
515
+ autoSubscribe?: boolean;
516
+ mediaDevices?: Pick<MediaDevices, 'getUserMedia' | 'getDisplayMedia' | 'enumerateDevices'>;
517
+ clientFactory?: RoomCloudflareKitClientFactory;
518
+ }
519
+
520
+ interface RoomP2PMediaTransportOptions {
521
+ rtcConfiguration?: RTCConfiguration;
522
+ peerConnectionFactory?: (configuration: RTCConfiguration) => RTCPeerConnection;
523
+ mediaDevices?: Pick<MediaDevices, 'getUserMedia' | 'getDisplayMedia'>;
524
+ signalPrefix?: string;
525
+ }
526
+
433
527
  /**
434
528
  * RoomClient v2 — Client-side room connection for real-time multiplayer state.
435
529
  *
@@ -450,6 +544,8 @@ interface RoomOptions {
450
544
  reconnectBaseDelay?: number;
451
545
  /** Timeout for send() requests in ms (default: 10000) */
452
546
  sendTimeout?: number;
547
+ /** Timeout for WebSocket connection establishment in ms (default: 15000) */
548
+ connectionTimeout?: number;
453
549
  }
454
550
  interface Subscription {
455
551
  unsubscribe(): void;
@@ -490,6 +586,7 @@ interface RoomMediaTrack {
490
586
  muted: boolean;
491
587
  publishedAt?: number;
492
588
  adminDisabled?: boolean;
589
+ providerSessionId?: string;
493
590
  }
494
591
  interface RoomMemberMediaKindState {
495
592
  published: boolean;
@@ -498,6 +595,7 @@ interface RoomMemberMediaKindState {
498
595
  deviceId?: string;
499
596
  publishedAt?: number;
500
597
  adminDisabled?: boolean;
598
+ providerSessionId?: string;
501
599
  }
502
600
  interface RoomMemberMediaState {
503
601
  audio?: RoomMemberMediaKindState;
@@ -513,6 +611,66 @@ interface RoomMediaDeviceChange {
513
611
  kind: RoomMediaKind;
514
612
  deviceId: string;
515
613
  }
614
+ interface RoomCloudflareRealtimeKitCreateSessionRequest {
615
+ connectionId?: string;
616
+ customParticipantId?: string;
617
+ name?: string;
618
+ picture?: string;
619
+ }
620
+ interface RoomCloudflareRealtimeKitCreateSessionResponse {
621
+ sessionId: string;
622
+ meetingId: string;
623
+ participantId: string;
624
+ authToken: string;
625
+ presetName: string;
626
+ connectionId?: string;
627
+ reused?: boolean;
628
+ }
629
+ interface RoomMediaTransportConnectPayload {
630
+ connectionId?: string;
631
+ customParticipantId?: string;
632
+ name?: string;
633
+ picture?: string;
634
+ }
635
+ interface RoomMediaRemoteTrackEvent {
636
+ kind: RoomMediaKind;
637
+ track: MediaStreamTrack;
638
+ stream?: MediaStream;
639
+ trackName?: string;
640
+ providerSessionId?: string;
641
+ participantId?: string;
642
+ customParticipantId?: string;
643
+ userId?: string;
644
+ }
645
+ interface RoomMediaTransport {
646
+ connect(payload?: RoomMediaTransportConnectPayload): Promise<string>;
647
+ enableAudio(constraints?: MediaTrackConstraints | boolean): Promise<MediaStreamTrack>;
648
+ enableVideo(constraints?: MediaTrackConstraints | boolean): Promise<MediaStreamTrack>;
649
+ startScreenShare(constraints?: unknown): Promise<MediaStreamTrack>;
650
+ disableAudio(): Promise<void>;
651
+ disableVideo(): Promise<void>;
652
+ stopScreenShare(): Promise<void>;
653
+ setMuted(kind: Extract<RoomMediaKind, 'audio' | 'video'>, muted: boolean): Promise<void>;
654
+ switchDevices(payload: {
655
+ audioInputId?: string;
656
+ videoInputId?: string;
657
+ screenInputId?: string;
658
+ }): Promise<void>;
659
+ onRemoteTrack(handler: (event: RoomMediaRemoteTrackEvent) => void): Subscription;
660
+ getSessionId(): string | null;
661
+ getPeerConnection(): RTCPeerConnection | null;
662
+ destroy(): void;
663
+ }
664
+ type RoomMediaTransportProvider = 'cloudflare_realtimekit' | 'p2p';
665
+ interface RoomCloudflareRealtimeKitTransportFactoryOptions {
666
+ provider?: 'cloudflare_realtimekit';
667
+ cloudflareRealtimeKit?: RoomCloudflareMediaTransportOptions;
668
+ }
669
+ interface RoomP2PTransportFactoryOptions {
670
+ provider: 'p2p';
671
+ p2p?: RoomP2PMediaTransportOptions;
672
+ }
673
+ type RoomMediaTransportOptions = RoomCloudflareRealtimeKitTransportFactoryOptions | RoomP2PTransportFactoryOptions;
516
674
  declare class RoomClient {
517
675
  private baseUrl;
518
676
  private tokenManager;
@@ -585,6 +743,7 @@ declare class RoomClient {
585
743
  };
586
744
  readonly members: {
587
745
  list: () => RoomMember[];
746
+ current: () => RoomMember | null;
588
747
  onSync: (handler: (members: RoomMember[]) => void) => Subscription;
589
748
  onJoin: (handler: (member: RoomMember) => void) => Subscription;
590
749
  onLeave: (handler: (member: RoomMember, reason: RoomMemberLeaveReason) => void) => Subscription;
@@ -632,6 +791,10 @@ declare class RoomClient {
632
791
  screenInputId?: string;
633
792
  }) => Promise<void>;
634
793
  };
794
+ cloudflareRealtimeKit: {
795
+ createSession: (payload?: RoomCloudflareRealtimeKitCreateSessionRequest) => Promise<RoomCloudflareRealtimeKitCreateSessionResponse>;
796
+ };
797
+ transport: (options?: RoomMediaTransportOptions) => RoomMediaTransport;
635
798
  onTrack: (handler: (track: RoomMediaTrack, member: RoomMember) => void) => Subscription;
636
799
  onTrackRemoved: (handler: (track: RoomMediaTrack, member: RoomMember) => void) => Subscription;
637
800
  onStateChange: (handler: (member: RoomMember, state: RoomMemberMediaState) => void) => Subscription;
@@ -653,6 +816,8 @@ declare class RoomClient {
653
816
  * Returns developer-defined metadata set by room.setMetadata() on the server.
654
817
  */
655
818
  getMetadata(): Promise<Record<string, unknown>>;
819
+ private requestCloudflareRealtimeKitMedia;
820
+ private requestRoomMedia;
656
821
  /**
657
822
  * Static: Get room metadata without creating a RoomClient instance.
658
823
  * Useful for lobby screens where you need room info before joining.
@@ -662,6 +827,8 @@ declare class RoomClient {
662
827
  join(): Promise<void>;
663
828
  /** Leave the room and disconnect. Cleans up all pending requests. */
664
829
  leave(): void;
830
+ /** Destroy the room client, cleaning up all listeners and the auth subscription. */
831
+ destroy(): void;
665
832
  /**
666
833
  * Send an action to the server.
667
834
  * Returns a Promise that resolves with the action result from the server.
@@ -775,6 +942,7 @@ declare class RoomClient {
775
942
  private upsertMediaTrack;
776
943
  private removeMediaTrack;
777
944
  private mergeMediaState;
945
+ private rejectAllPendingRequests;
778
946
  private rejectPendingVoidRequests;
779
947
  private setConnectionState;
780
948
  private sendRaw;
@@ -1243,4 +1411,4 @@ declare function useTurnstile({ baseUrl, action, }: UseTurnstileOptions): UseTur
1243
1411
  */
1244
1412
  declare function isPlatformWeb(): boolean;
1245
1413
 
1246
- export { type AppStateAdapter, type AsyncStorageAdapter, AuthClient, type AuthResult, type AuthStateChangeHandler, ClientAnalytics, ClientEdgeBase, DatabaseLiveClient, type DatabaseLiveClientAdapter, type DatabaseLiveOptions, type FilterEntry, type FilterOperator, type JuneClientOptions, LifecycleManager, type LinkingAdapter, type PasskeysAuthOptions, PushClient, type PushMessage, type PushMessageHandler, type PushPermissionProvider, type PushPermissionStatus, type PushPlatform, type PushTokenProvider, RoomClient, type RoomConnectionState, type RoomMediaDeviceChange, type RoomMediaKind, type RoomMediaMember, type RoomMediaTrack, type RoomMember, type RoomMemberLeaveReason, type RoomMemberMediaKindState, type RoomMemberMediaState, type RoomOptions, type RoomReconnectInfo, type RoomSignalMeta, type Session, type SignInOptions, type SignUpOptions, type Subscription, TokenManager, type TokenPair, type TokenUser, TurnstileWebView, type TurnstileWebViewProps, type UpdateProfileOptions, type UseLifecycleOptions, type UseTurnstileOptions, type UseTurnstileResult, createClient, isPlatformWeb, matchesFilter, useLifecycle, useTurnstile };
1414
+ export { type AppStateAdapter, type AsyncStorageAdapter, AuthClient, type AuthResult, type AuthStateChangeHandler, ClientAnalytics, ClientEdgeBase, DatabaseLiveClient, type DatabaseLiveClientAdapter, type DatabaseLiveOptions, type FilterEntry, type FilterOperator, type JuneClientOptions, LifecycleManager, type LinkingAdapter, type PasskeysAuthOptions, PushClient, type PushMessage, type PushMessageHandler, type PushPermissionProvider, type PushPermissionStatus, type PushPlatform, type PushTokenProvider, RoomClient, type RoomCloudflareRealtimeKitCreateSessionRequest, type RoomCloudflareRealtimeKitCreateSessionResponse, type RoomCloudflareRealtimeKitTransportFactoryOptions, type RoomConnectionState, type RoomMediaDeviceChange, type RoomMediaKind, type RoomMediaMember, type RoomMediaRemoteTrackEvent, type RoomMediaTrack, type RoomMediaTransport, type RoomMediaTransportConnectPayload, type RoomMediaTransportOptions, type RoomMediaTransportProvider, type RoomMember, type RoomMemberLeaveReason, type RoomMemberMediaKindState, type RoomMemberMediaState, type RoomOptions, type RoomP2PTransportFactoryOptions, type RoomReconnectInfo, type RoomSignalMeta, type Session, type SignInOptions, type SignUpOptions, type Subscription, TokenManager, type TokenPair, type TokenUser, TurnstileWebView, type TurnstileWebViewProps, type UpdateProfileOptions, type UseLifecycleOptions, type UseTurnstileOptions, type UseTurnstileResult, createClient, isPlatformWeb, matchesFilter, useLifecycle, useTurnstile };