///
import { HMSTrackSource } from '../store/schema';
import { TrackWithPeer } from './videoListUtils';
declare const getVideoTileLabel: (peerName: string, isLocal: boolean, videoSource?: HMSTrackSource) => string | undefined;
declare const closeMediaStream: (stream: MediaStream | undefined) => void;
interface GetTileSizesInList {
count: number;
parentWidth: number;
parentHeight: number;
maxTileCount?: number;
maxRowCount?: number;
maxColCount?: number;
aspectRatio: {
width: number;
height: number;
};
}
/**
* get the aspect ration occurring with the highest frequency
* @param tracks - video tracks to infer aspect ratios from
*/
declare const getModeAspectRatio: (tracks: TrackWithPeer[]) => number | null;
declare function calculateLayoutSizes({ count, parentWidth, parentHeight, maxTileCount, maxRowCount, maxColCount, aspectRatio, }: GetTileSizesInList): {
tilesInFirstPage: number;
defaultWidth: number;
defaultHeight: number;
lastPageWidth: number;
lastPageHeight: number;
isLastPageDifferentFromFirstPage: boolean;
};
interface ChunkElements {
elements: T[];
tilesInFirstPage: number;
onlyOnePage: boolean;
isLastPageDifferentFromFirstPage: boolean;
defaultWidth: number;
defaultHeight: number;
lastPageWidth: number;
lastPageHeight: number;
}
/**
* Given a list of tracks/elements and some constraints, group the tracks in separate pages.
* @return 2D list for every page which has the original element and height and width
* for its tile.
*/
declare const chunkElements: ({ elements, tilesInFirstPage, onlyOnePage, isLastPageDifferentFromFirstPage, defaultWidth, defaultHeight, lastPageWidth, lastPageHeight, }: ChunkElements) => (T & {
width: number;
height: number;
})[][];
/**
* Mathematical mode - the element with the highest occurrence in an array
* @param array
*/
declare function mode(array: number[]): number | null;
declare const getInitialsFromName: (name: string | undefined) => string | undefined;
/**
* Finds the largest rectangle area when trying to place N rectangle into a containing
* rectangle without rotation.
*
* @param {Number} containerWidth The width of the container.
* @param {Number} containerHeight The height of the container.
* @param {Number} numRects How many rectangles must fit within.
* @param {Number} width The unscaled width of the rectangles to be placed.
* @param {Number} height The unscaled height of the rectangles to be placed.
* @return {Object} The area and number of rows and columns that fit.
*/
declare const largestRect: (containerWidth: number, containerHeight: number, numRects: number, width: number | undefined, height: number | undefined) => {
area: number;
cols: number;
rows: number;
width: number;
height: number;
};
interface GenerateClassNameProps {
seed: string;
componentName: string;
}
declare const generateClassName: ({ seed, componentName }: GenerateClassNameProps) => string;
interface AddGlobalCssProps {
seedStyleMap: Type;
componentName: string;
}
declare function addGlobalCss({ seedStyleMap, componentName, }: AddGlobalCssProps): {};
declare function combineClasses(defaultClasses: Record | undefined, extraClasses: Record | undefined): Record | undefined;
declare const generateRandomString: () => string;
declare const mergeRefs: (...refs: (import("react").MutableRefObject | ((node?: Element | null | undefined) => void))[]) => import("react").MutableRefObject | ((inst: Element | null) => void) | null;
declare const scrollTo: (element: React.MutableRefObject) => () => void;
declare const sigmoid: (z: number) => number;
export { closeMediaStream, getVideoTileLabel, getInitialsFromName, largestRect, generateClassName, addGlobalCss, combineClasses, chunkElements, mode, generateRandomString, mergeRefs, scrollTo, getModeAspectRatio, calculateLayoutSizes, sigmoid, };