import type { CustomSource as ReactClientCustomSource, DeviceError, InitializeDevicesResult as ReactClientInitializeDevicesResult, PeerWithTracks as ReactClientPeerWithTracks, RemoteTrack as ReactClientRemoteTrack, Track as ReactClientTrack, useCamera as useCameraReactClient, useCustomSource as useCustomSourceReactClient, useInitializeDevices as useInitializeDevicesReactClient, UseLivestreamStreamerResult as ReactClientUseLivestreamStreamerResult, UseLivestreamViewerResult as ReactClientUseLivestreamViewerResult, useMicrophone as useMicrophoneReactClient, useScreenShare as useScreenShareReactClient } from '@fishjam-cloud/react-client'; import type { MediaStream as RNMediaStream, MediaStreamTrack as RNMediaStreamTrack } from '@fishjam-cloud/react-native-webrtc'; export type StreamerInputs = { video: RNMediaStream; audio?: RNMediaStream | null; } | { video?: null; audio: RNMediaStream; }; export type ConnectStreamerConfig = { inputs: StreamerInputs; token: string; }; export type UseLivestreamStreamerResult = Omit & { connect: (config: ConnectStreamerConfig, urlOverride?: string) => Promise; }; export type UseLivestreamViewerResult = Omit & { stream: RNMediaStream | null; }; export type MiddlewareResult = { track: RNMediaStreamTrack; onClear?: () => void; }; export type TrackMiddleware = ((track: RNMediaStreamTrack) => MiddlewareResult | Promise) | null; export type TracksMiddlewareResult = { videoTrack: RNMediaStreamTrack; audioTrack: RNMediaStreamTrack | null; onClear: () => void; }; export type TracksMiddleware = (videoTrack: RNMediaStreamTrack, audioTrack: RNMediaStreamTrack | null) => TracksMiddlewareResult | Promise; export type UseCameraResult = Omit, 'cameraStream' | 'startCamera' | 'currentCameraMiddleware' | 'setCameraTrackMiddleware'> & { cameraStream: RNMediaStream | null; startCamera: (...args: Parameters['startCamera']>) => Promise<[RNMediaStreamTrack, null] | [null, DeviceError]>; currentCameraMiddleware: TrackMiddleware; setCameraTrackMiddleware: (middleware: TrackMiddleware) => Promise; }; export type UseMicrophoneResult = Omit, 'toggleMicrophoneMute' | 'microphoneStream' | 'startMicrophone' | 'currentMicrophoneMiddleware' | 'setMicrophoneTrackMiddleware'> & { microphoneStream: RNMediaStream | null; startMicrophone: (...args: Parameters['startMicrophone']>) => Promise<[RNMediaStreamTrack, null] | [null, DeviceError]>; currentMicrophoneMiddleware: TrackMiddleware; setMicrophoneTrackMiddleware: (middleware: TrackMiddleware) => Promise; }; export type UseScreenShareResult = Omit, 'stream' | 'videoTrack' | 'audioTrack' | 'currentTracksMiddleware' | 'setTracksMiddleware'> & { stream: RNMediaStream | null; videoTrack: RNMediaStreamTrack | null; audioTrack: RNMediaStreamTrack | null; currentTracksMiddleware: TracksMiddleware | null; setTracksMiddleware: (middleware: TracksMiddleware | null) => Promise; /** * iOS only. Presents the system `RPSystemBroadcastPickerView`. When a * broadcast is active, this opens the system "Stop Broadcast" sheet so * the user can end it cleanly (via `broadcastFinished()`) and avoid the * "Screen sharing stopped" error dialog that `stopStreaming` triggers * by force-closing the host-side socket. No-op on non-iOS. */ presentBroadcastPicker: () => Promise; }; export type UseCustomSourceResult = Omit, 'stream' | 'setStream'> & { stream: RNMediaStream | undefined; setStream: (newStream: RNMediaStream | null) => Promise; }; export type UseInitializeDevicesReturn = { initializeDevices: (...args: Parameters['initializeDevices']>) => Promise; }; export type Track = Omit & { stream: RNMediaStream | null; track: RNMediaStreamTrack | null; }; export type RemoteTrack = Omit & { stream: RNMediaStream | null; track: RNMediaStreamTrack | null; }; export type CustomSource = Omit, 'stream'> & { stream?: RNMediaStream; }; export type InitializeDevicesResult = Omit & { stream: RNMediaStream | null; }; export type TrackFields = 'tracks' | 'cameraTrack' | 'microphoneTrack' | 'screenShareVideoTrack' | 'screenShareAudioTrack' | 'customVideoTracks' | 'customAudioTracks'; export type PeerWithTracks = Omit, TrackFields> & { tracks: T[]; cameraTrack?: T; microphoneTrack?: T; screenShareVideoTrack?: T; screenShareAudioTrack?: T; customVideoTracks: T[]; customAudioTracks: T[]; }; //# sourceMappingURL=types.d.ts.map