/// <reference types="node" />
import { EventEmitter } from 'events';
import { LayoutContainer } from 'opentok-layout-js';
import { LayoutMode } from '../utils/types';
import HiddenTileTracker from '../internal/hidden-tile-tracker';
export type LayoutOptions = {
    layoutMode?: LayoutMode;
    speakerHighlightEnabled?: boolean;
    speakerHighlightColor?: string;
    cameraPublisherContainer?: HTMLElement | string;
    screenPublisherContainer?: HTMLElement | string;
    isMobileLayout: boolean;
};
declare interface LayoutManager {
    on(event: 'layoutComplete', listener: () => void): this;
    on(event: 'cameraSubscriberHidden', listener: (subscriberId: string) => void): this;
    on(event: 'cameraSubscriberDisplayed', listener: (subscriberId: string) => void): this;
}
declare class LayoutManager extends EventEmitter {
    _layoutContainer: LayoutContainer;
    _layoutContainerElement: HTMLElement;
    _activeSpeakerElement?: HTMLElement;
    _screenSharingElementIds: Array<string>;
    _cameraSubscriberElementIds: Array<string>;
    _layoutMode: LayoutMode;
    isViewingScreenshare: boolean;
    _emitLayoutRecalculated: () => void;
    _isMobileLayout: boolean;
    _hiddenTileTracker: HiddenTileTracker;
    _speakerHighlightColor?: string;
    _speakerHighlightEnabled?: boolean;
    constructor(targetElement: HTMLElement | string, layoutOptions: LayoutOptions, maxVideoParticipantsOnScreen?: Number);
    _initLayoutContainerElement: (roomContainerElement: HTMLElement | string) => HTMLElement;
    _initContainerResizeListener: () => void;
    setLayoutMode: (layoutMode: LayoutMode) => void;
    _setElementBig: (element: HTMLElement) => void;
    _setElementSmall: (element: HTMLElement) => void;
    _hideElement: (element: HTMLElement) => void;
    _displayElement: (element: HTMLElement) => void;
    _removeSubscriberOnLoad: (element: HTMLElement) => void;
    _setAllElementsSmall: () => void;
    _setOnlyScreenElementsBig: () => void;
    _setOnlyActiveSpeakerElementBig: () => void;
    _getActiveSpeakerViewLargeElement: () => HTMLElement | undefined;
    _displayOnlyScreenElement: () => void;
    _displayOnlyActiveSpeaker: () => void;
    _displayLimitedGridElements: () => void;
    onActiveSpeakerChanged({ newActiveSpeakerElement, previousActiveSpeakerElement, }: {
        newActiveSpeakerElement?: HTMLElement;
        previousActiveSpeakerElement?: HTMLElement;
    }): void;
    onActiveSpeakerStatusChanged({ isSpeaking }: {
        isSpeaking: boolean;
    }): void;
    _recalculateTileSizes(): void;
    _isSubscribingToScreen: () => boolean;
    onScreenSubscriberCreated: (subscriberId?: string) => void;
    onScreenSubscriberDestroyed: (subscriberId?: string) => void;
    onCameraSubscriberCreated: (element: HTMLElement | undefined) => void;
    onCameraSubscriberDestroyed: (element: HTMLElement | undefined) => void;
    getLayoutContainerElement(): HTMLElement;
    updateLayout(): void;
}
export default LayoutManager;
