import React from 'react';
import { HMSPeer } from '@100mslive/hms-video-store';
import { VideoProps, VideoClasses } from '../Video/Video';
import './index.css';
export interface AdditionalVideoTileProps {
children?: React.ReactNode;
customAvatar?: React.ReactNode;
/**
* Array of components
*/
contextMenuItems?: JSX.Element[];
}
export interface VideoTileProps extends Omit, AdditionalVideoTileProps {
/**
* HMS Peer object for which the tile is shown.
*/
peer: HMSPeer;
/**
* If showScreen is true, user's screenshare will be shown instead of camera
*/
showScreen?: boolean;
/**
* Indicates if the stream's audio is muted or not. Ignored if showAudioMuteStatus is false.
*/
isAudioMuted?: boolean;
/**
* Indicates if the stream's video is muted or not. Ignored if showVideoMuteStatus is false.
*/
isVideoMuted?: boolean;
/**
* Indicates whether to show the stream's audio mute status. Needs isAudioMuted value to display the status.
*/
showAudioMuteStatus?: boolean;
/**
* Aspect ratio of the video container(if objectFit is set to 'cover').
* If aspectRatio is defined, the video container expands to fit the largest rectangle maintaining the aspec ratio.
* If aspectRatio is not defined, the video container takes the parent's width and height.
* Ignored when displayShape is 'circle' or objectFit is 'contain'.
*/
aspectRatio?: {
width: number;
height: number;
};
/**
* Indicates whether to show controls for remote muting/unmuting other participants.
*/
allowRemoteMute?: boolean;
/**
* Custom controls component to display label, audio mute status, audio level, remote mute control.
* Default is VideoTileControls.
*/
controlsComponent?: React.ReactNode;
/**
* extra classes added by user
*/
classes?: VideoTileClasses;
avatarType?: 'initial';
/**
* Boolean variable to specify if videoTile is small or not
*/
compact?: boolean;
/**
* Boolean variable to specify if hand is raised
*/
isHandRaised?: boolean;
/**
* Boolean variable to specify if stats overlay should be shown
*/
showStats?: boolean;
/**
* Boolean variable to specify if default overlay and controls should be shown
*/
showDefaultOverlayOptions?: boolean;
}
export interface VideoTileClasses extends VideoClasses {
/**
* The top-level container.
*/
root?: string;
/**
* The video container.
*/
videoContainer?: string;
/**
* The avatar container.
*/
avatarContainer?: string;
/**
* Classes added to Avatar container if its a circle
*/
avatarContainerCircle?: string;
/**
* Classes added to Video container if its a circle
*/
videoContainerCircle?: string;
/**
* Classes added to fullscreen control
*/
fullScreenControl?: string;
/**
* Classes added to raisehand control
*/
raiseHand?: string;
}
export declare const VideoTile: React.MemoExoticComponent<({ videoTrack, peer, hmsVideoTrackId, hmsVideoTrack, showScreen, audioLevel, isAudioMuted, isVideoMuted, showAudioMuteStatus, showAudioLevel, objectFit, aspectRatio, displayShape, audioLevelDisplayType, audioLevelDisplayColor, controlsComponent, classes, avatarType, customAvatar, contextMenuItems, isHandRaised, showStats, compact, children, showDefaultOverlayOptions, }: VideoTileProps) => JSX.Element>;