import { SupportedEnvironments } from '../config/environments.js'; import { ViewProps } from 'react-native'; /** * Naluri Video constructor options */ interface NaluriVideoOptions { apiKey: string; apiSecret?: string; timeoutMs?: number; environment?: SupportedEnvironments; } interface TrackIdentifier { participantSid: string; videoTrackSid: string; } type scaleType = 'fit' | 'fill'; type cameraType = 'front' | 'back'; interface NaluriVideoParticipantViewProps extends ViewProps { trackIdentifier: TrackIdentifier; key?: string; ref?: React.Ref; scaleType?: scaleType; /** * Whether to apply Z ordering to this view. Setting this to true will cause * this view to appear above other Naluri Video views. */ applyZOrder?: boolean | undefined; } interface NaluriVideoLocalViewProps extends ViewProps { enabled: boolean; ref?: React.Ref; scaleType?: scaleType; /** * Whether to apply Z ordering to this view. Setting this to true will cause * this view to appear above other Naluri Video views. */ applyZOrder?: boolean | undefined; } interface Participant { sid: string; identity: string; } interface Track { enabled: boolean; trackName: string; trackSid: string; } interface TrackEventCbArgs { participant: Participant; track: Track; } type TrackEventCb = (t: TrackEventCbArgs) => void; interface DataTrackEventCbArgs { message: string; trackSid: string; } type DataTrackEventCb = (t: DataTrackEventCbArgs) => void; interface RoomEventCommonArgs { roomName: string; roomSid: string; } type RoomErrorEventArgs = RoomEventCommonArgs & { error: any; }; type RoomEventArgs = RoomEventCommonArgs & { participants: Participant[]; localParticipant: Participant; }; type ParticipantEventArgs = RoomEventCommonArgs & { participant: Participant; }; type NetworkLevelChangeEventArgs = { participant: Participant; isLocalUser: boolean; quality: number; }; type RoomEventCb = (p: RoomEventArgs) => void; type RoomErrorEventCb = (t: RoomErrorEventArgs) => void; type ParticipantEventCb = (p: ParticipantEventArgs) => void; type NetworkLevelChangeEventCb = (p: NetworkLevelChangeEventArgs) => void; type DominantSpeakerChangedEventArgs = RoomEventCommonArgs & { participant: Participant; }; type DominantSpeakerChangedCb = (d: DominantSpeakerChangedEventArgs) => void; type LocalParticipantSupportedCodecsCbEventArgs = { supportedCodecs: Array; }; type LocalParticipantSupportedCodecsCb = (d: LocalParticipantSupportedCodecsCbEventArgs) => void; type NaluriVideoProps = ViewProps & { onCameraDidStart?: () => void; onCameraDidStopRunning?: (err: any) => void; onCameraWasInterrupted?: () => void; onDominantSpeakerDidChange?: DominantSpeakerChangedCb; onParticipantAddedAudioTrack?: TrackEventCb; onParticipantAddedVideoTrack?: TrackEventCb; onParticipantDisabledVideoTrack?: TrackEventCb; onParticipantDisabledAudioTrack?: TrackEventCb; onParticipantEnabledVideoTrack?: TrackEventCb; onParticipantEnabledAudioTrack?: TrackEventCb; onParticipantRemovedAudioTrack?: TrackEventCb; onParticipantRemovedVideoTrack?: TrackEventCb; onParticipantAddedDataTrack?: TrackEventCb; onParticipantRemovedDataTrack?: TrackEventCb; onRoomDidConnect?: RoomEventCb; onRoomDidDisconnect?: RoomErrorEventCb; onRoomDidFailToConnect?: RoomErrorEventCb; onRoomParticipantDidConnect?: ParticipantEventCb; onRoomParticipantDidDisconnect?: ParticipantEventCb; onNetworkQualityLevelsChanged?: NetworkLevelChangeEventCb; onLocalParticipantSupportedCodecs?: LocalParticipantSupportedCodecsCb; onStatsReceived?: (data: any) => void; onDataTrackMessageReceived?: DataTrackEventCb; autoInitializeCamera?: boolean; ref?: React.Ref; }; type iOSConnectParams = { roomName?: string; accessToken: string; cameraType?: cameraType; dominantSpeakerEnabled?: boolean; enableAudio?: boolean; enableVideo?: boolean; encodingParameters?: { enableH264Codec?: boolean; audioBitrate?: number; videoBitrate?: number; }; enableNetworkQualityReporting?: boolean; }; type androidConnectParams = { roomName?: string; accessToken: string; cameraType?: cameraType; dominantSpeakerEnabled?: boolean; enableAudio?: boolean; enableVideo?: boolean; enableRemoteAudio?: boolean; encodingParameters?: { enableH264Codec?: boolean; }; enableNetworkQualityReporting?: boolean; maintainVideoTrackInBackground?: boolean; }; interface NaluriVideoClassOptions extends NaluriVideoProps { setLocalVideoEnabled?: (enabled: boolean) => Promise; setLocalAudioEnabled?: (enabled: boolean) => Promise; setRemoteAudioEnabled?: (enabled: boolean) => Promise; setBluetoothHeadsetConnected?: (enabled: boolean) => Promise; connect?: (options: iOSConnectParams | androidConnectParams) => void; disconnect?: () => void; flipCamera?: () => void; toggleSoundSetup?: (speaker: boolean) => void; getStats?: () => void; publishLocalAudio?: () => void; unpublishLocalAudio?: () => void; publishLocalVideo?: () => void; unpublishLocalVideo?: () => void; sendString?: (message: string) => void; } export type { DataTrackEventCb, DataTrackEventCbArgs, DominantSpeakerChangedCb, DominantSpeakerChangedEventArgs, LocalParticipantSupportedCodecsCb, LocalParticipantSupportedCodecsCbEventArgs, NaluriVideoClassOptions, NaluriVideoLocalViewProps, NaluriVideoOptions, NaluriVideoParticipantViewProps, NaluriVideoProps, NetworkLevelChangeEventArgs, NetworkLevelChangeEventCb, ParticipantEventCb, RoomErrorEventArgs, RoomErrorEventCb, RoomEventCb, TrackEventCb, TrackEventCbArgs, TrackIdentifier, androidConnectParams, iOSConnectParams };