///
import { HMSTrackSource, HMSPeer } from '@100mslive/hms-video-store';
import { TrackWithPeer } from './videoListUtils';
/**
* Check only for presence(not truthy) of a value.
* Use in places where 0, false need to be considered valid.
*/
export declare function isPresent(value: any): boolean;
export declare const formatBytes: (bytes?: number | undefined, unit?: string, decimals?: number) => string;
export declare const getVideoTileLabel: (peerName: string, isLocal: boolean, videoSource?: HMSTrackSource, isLocallyMuted?: boolean | undefined, degraded?: boolean | undefined) => string;
export declare const closeMediaStream: (stream: MediaStream | undefined) => void;
export declare const chunk: (elements: T[], chunkSize: number, onlyOnePage: boolean) => T[][];
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
*/
export declare const getModeAspectRatio: (tracks: TrackWithPeer[]) => number | null;
interface GetTileSizes {
parentWidth: number;
parentHeight: number;
count: number;
maxCount: number;
aspectRatio: {
width: number;
height: number;
};
}
export declare const getTileSizesWithPageConstraint: ({ parentWidth, parentHeight, count, maxCount, aspectRatio, }: GetTileSizes) => {
tilesInFirstPage: number;
defaultWidth: number;
defaultHeight: number;
lastPageWidth: number;
lastPageHeight: number;
isLastPageDifferentFromFirstPage: boolean;
};
export declare const getTileSizesWithRowConstraint: ({ parentWidth, parentHeight, count, maxCount, aspectRatio, }: GetTileSizes) => {
tilesInFirstPage: number;
defaultWidth: number;
defaultHeight: number;
lastPageWidth: number;
lastPageHeight: number;
isLastPageDifferentFromFirstPage: boolean;
};
export declare const getTileSizesWithColConstraint: ({ parentWidth, parentHeight, count, maxCount, aspectRatio, }: GetTileSizes) => {
tilesInFirstPage: number;
defaultWidth: number;
defaultHeight: number;
lastPageWidth: number;
lastPageHeight: number;
isLastPageDifferentFromFirstPage: boolean;
};
export 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.
*/
export 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
*/
export declare function mode(array: number[]): number | null;
export 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.
*/
export 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;
}
export declare const generateClassName: ({ seed, componentName, }: GenerateClassNameProps) => string;
interface AddGlobalCssProps {
seedStyleMap: Type;
componentName: string;
}
export declare function addGlobalCss({ seedStyleMap, componentName, }: AddGlobalCssProps): {};
export declare function combineClasses(defaultClasses: Record | undefined, extraClasses: Record | undefined): Record | undefined;
export declare const generateRandomString: () => string;
export declare const mergeRefs: (...refs: (import("react").MutableRefObject | ((node?: Element | null | undefined) => void))[]) => import("react").MutableRefObject | ((inst: Element | null) => void) | null;
export declare const scrollTo: (element: React.MutableRefObject) => () => void;
export declare const sigmoid: (z: number) => number;
export declare function isMobileDevice(): any;
export declare const isSafari: () => boolean;
export declare const toggleFullScreen: (element: HTMLDivElement, setFullScreen: boolean) => Promise;
export declare const groupBy: (peers: HMSPeer[]) => [string, HMSPeer[]][];
export {};