import { Room } from "matrix-js-sdk/src/matrix";
import { Optional } from "matrix-events-sdk";
import { IWidget } from "matrix-widget-api";
import { ReadyWatchingStore } from "../ReadyWatchingStore";
import { Container, IStoredLayout, ILayoutStateEvent, WIDGET_LAYOUT_EVENT_TYPE } from "./types";
export type { IStoredLayout, ILayoutStateEvent };
export { Container, WIDGET_LAYOUT_EVENT_TYPE };
export declare const MAX_PINNED = 3;
export declare class WidgetLayoutStore extends ReadyWatchingStore {
    private static internalInstance;
    private byRoom;
    private pinnedRef;
    private layoutRef;
    private dynamicRef;
    private constructor();
    static get instance(): WidgetLayoutStore;
    static emissionForRoom(room: Room): string;
    private emitFor;
    protected onReady(): Promise<void>;
    protected onNotReady(): Promise<void>;
    private updateAllRooms;
    private updateFromWidgetStore;
    private updateRoomFromState;
    private updateFromSettings;
    recalculateRoom(room: Room): void;
    getContainerWidgets(room: Optional<Room>, container: Container): IWidget[];
    isInContainer(room: Room, widget: IWidget, container: Container): boolean;
    canAddToContainer(room: Room, container: Container): boolean;
    getResizerDistributions(room: Room, container: Container): string[];
    setResizerDistributions(room: Room, container: Container, distributions: string[]): void;
    getContainerHeight(room: Room, container: Container): number | null;
    setContainerHeight(room: Room, container: Container, height?: number | null): void;
    moveWithinContainer(room: Room, container: Container, widget: IWidget, delta: number): void;
    moveToContainer(room: Room, widget: IWidget, toContainer: Container): void;
    hasMaximisedWidget(room: Room): boolean;
    hasPinnedWidgets(room: Room): boolean;
    canCopyLayoutToRoom(room: Room): boolean;
    copyLayoutToRoom(room: Room): void;
    private getAllWidgets;
    private updateUserLayout;
}
