import { StyleProp, ViewStyle } from 'react-native'; import { EventType, MediaStream } from '../../@types/types'; /** * Options for displaying a video stream inside `CardVideoDisplay`. * * @interface CardVideoDisplayOptions * * **Video Source:** * @property {string} remoteProducerId Identifier for the remote video producer. * @property {EventType} eventType Event flavour (meeting, webinar, etc.). * @property {boolean} forceFullDisplay Forces `RTCView` to fill the container. * @property {MediaStream | null} videoStream Stream instance to render. * @property {boolean} [doMirror=false] Mirrors the video output. * * **Appearance:** * @property {string} [backgroundColor='transparent'] Background fill for the container. * @property {StyleProp} [style] Additional styling for the wrapping view. * * **Advanced Render Overrides:** * @property {(options: { defaultContent: JSX.Element; dimensions: { width: number; height: number } }) => JSX.Element} [renderContent] * Override for the `RTCView` content. * @property {(options: { defaultContainer: JSX.Element; dimensions: { width: number; height: number } }) => JSX.Element} [renderContainer] * Override for the containing view. */ export interface CardVideoDisplayOptions { remoteProducerId: string; eventType: EventType; forceFullDisplay: boolean; videoStream: MediaStream | null; backgroundColor?: string; doMirror?: boolean; style?: StyleProp; renderContent?: (options: { defaultContent: JSX.Element; dimensions: { width: number; height: number; }; }) => JSX.Element; renderContainer?: (options: { defaultContainer: JSX.Element; dimensions: { width: number; height: number; }; }) => JSX.Element; } export type CardVideoDisplayType = (options: CardVideoDisplayOptions) => JSX.Element; /** * CardVideoDisplay is a lightweight wrapper around `RTCView` that respects platform-specific rendering * differences while exposing override hooks for advanced layouts. * * ### Key Features * - Mirrors video automatically when requested (self-view scenarios) * - Matches Expo web behaviour by configuring `objectFit`/`transform` for browsers * - Supports render overrides to integrate with animation or custom frames * - Platform-specific optimizations for iOS, Android, and web * * ### Accessibility * - RTCView provides native video accessibility * - Consumers should add descriptive labels to the container * * @example * ```tsx * // Basic remote video display * * ``` * * @example * ```tsx * // Mirrored self-view with custom container * ( * * {defaultContainer} * * )} * /> * ``` */ declare const CardVideoDisplay: React.FC; export default CardVideoDisplay;