import { DominantSpeakersInfo } from '@azure/communication-calling';
import { ParticipantRole } from '@azure/communication-calling';
import { RemoteParticipantState, RemoteVideoStreamState } from "../../../calling-stateful-client/src";
import { VideoGalleryRemoteParticipant, MediaAccess } from "../../../react-components/src";
import { ParticipantConnectionState } from './callUtils';
import { RaisedHandState } from "../../../calling-stateful-client/src";
import { Reaction } from "../../../react-components/src";
import { Spotlight } from "../../../react-components/src";
/** @internal */
export declare const _dominantSpeakersWithFlatId: (dominantSpeakers?: DominantSpeakersInfo) => undefined | string[];
/** @internal */
export type _VideoGalleryRemoteParticipantsMemoFn = (remoteParticipants: RemoteParticipantState[] | undefined, isHideAttendeeNamesEnabled?: boolean, localUserRole?: ParticipantRole) => VideoGalleryRemoteParticipant[];
/** @internal */
export declare const _videoGalleryRemoteParticipantsMemo: _VideoGalleryRemoteParticipantsMemoFn;
/** @private */
export declare const convertRemoteParticipantToVideoGalleryRemoteParticipant: (userId: string, isMuted: boolean, isSpeaking: boolean, videoStreams: {
    [key: number]: RemoteVideoStreamState;
}, state: ParticipantConnectionState, displayName?: string, raisedHand?: RaisedHandState, contentSharingStream?: HTMLElement, reaction?: Reaction, spotlight?: Spotlight, signalStrength?: undefined, mediaAccess?: MediaAccess, role?: ParticipantRole) => VideoGalleryRemoteParticipant;
/** @private */
export declare const memoizeLocalParticipant: (this: any, identifier: any, displayName: any, isMuted: any, isScreenSharingOn: any, localVideoStream: any, localScreenSharingStream: any, role: any, raisedHand: any, reaction: any, localSpotlight: any, capabilities: any) => {
    userId: any;
    displayName: any;
    isMuted: any;
    isScreenSharingOn: any;
    videoStream: {
        isAvailable: boolean;
        isMirrored: any;
        renderElement: any;
    };
    screenShareStream: {
        isAvailable: boolean;
        renderElement: any;
    };
    role: any;
    raisedHand: any;
    reaction: any;
    spotlight: any;
    capabilities: any;
    mediaAccess: {
        isAudioPermitted: any;
        isVideoPermitted: any;
    };
};
/** @private */
export declare const memoizeSpotlightedParticipantIds: (this: any, spotlightedParticipants: any) => any;
/** @private */
export declare const memoizeTogetherModeStreams: (this: any, togetherModeStreams: any) => {
    mainVideoStream: {
        id: any;
        isReceiving: any;
        isAvailable: any;
        renderElement: any;
        streamSize: any;
    };
};
//# sourceMappingURL=videoGalleryUtils.d.ts.map