import type { HostComponent, ViewProps } from 'react-native'; import type { BubblingEventHandler, Int32, Float, } from 'react-native/Libraries/Types/CodegenTypes'; import codegenNativeComponent from 'react-native/Libraries/Utilities/codegenNativeComponent'; export type StreamEvent = { streamId: string; }; export type ErrorEvent = { code: string; message: string; }; export type EmptyEvent = {}; export type PublisherVideoNetworkStatsEvent = { jsonStats: string; // JSON string containing all video stats }; export type AudioLevelEvent = { audioLevel: Float; }; export type AudioNetworkStatsEvent = { jsonStats: string; // JSON string containing all audio stats }; export type PublisherRTCStatsReportEvent = { jsonStats: string; // JSON string containing all event data }; export interface NativeProps extends ViewProps { sessionId: string; publisherId: string; publishAudio?: boolean; publishVideo?: boolean; publishCaptions?: boolean; audioBitrate?: Int32; publisherAudioFallback?: boolean; subscriberAudioFallback?: boolean; audioTrack?: boolean; cameraPosition?: string; cameraTorch?: boolean; cameraZoomFactor?: Float; enableDtx?: boolean; frameRate?: Int32; name?: string; resolution?: string; scalableScreenshare?: boolean; allowAudioCaptureWhileMuted?: boolean; audioFallbackEnabled?: boolean; videoTrack?: boolean; videoSource?: string; videoContentHint?: string; maxVideoBitrate?: Int32; videoBitratePreset?: string; scaleBehavior?: string; publishSenderStats?: boolean; preferredVideoCodecs?: string; onError?: BubblingEventHandler | null; onStreamCreated?: BubblingEventHandler | null; onStreamDestroyed?: BubblingEventHandler | null; onAudioLevel?: BubblingEventHandler | null; onAudioNetworkStats?: BubblingEventHandler | null; onMuteForced?: BubblingEventHandler | null; onRtcStatsReport?: BubblingEventHandler | null; onVideoDisabled?: BubblingEventHandler | null; onVideoDisableWarning?: BubblingEventHandler | null; onVideoDisableWarningLifted?: BubblingEventHandler | null; onVideoEnabled?: BubblingEventHandler | null; onVideoNetworkStats?: BubblingEventHandler | null; } export default codegenNativeComponent( 'OTRNPublisher' ) as HostComponent;