import { IWidget } from "matrix-widget-api";
import { ActionPayload } from "../dispatcher/payloads";
import { AsyncStoreWithClient } from "./AsyncStoreWithClient";
interface IState {
}
export interface IApp extends IWidget {
    "roomId": string;
    "eventId"?: string;
    "avatar_url"?: string;
    "io.element.managed_hybrid"?: boolean;
}
export declare function isAppWidget(widget: IWidget | IApp): widget is IApp;
export declare function isVirtualWidget(widget: IApp): boolean;
interface IRoomWidgets {
    widgets: IApp[];
}
export default class WidgetStore extends AsyncStoreWithClient<IState> {
    private static readonly internalInstance;
    private widgetMap;
    private roomMap;
    private constructor();
    static get instance(): WidgetStore;
    private initRoom;
    protected onReady(): Promise<any>;
    protected onNotReady(): Promise<any>;
    protected onAction(payload: ActionPayload): Promise<void>;
    private onWidgetEchoStoreUpdate;
    private generateApps;
    private loadRoomWidgets;
    private onRoom;
    private onRoomStateEvents;
    get(widgetId: string, roomId: string | undefined): IApp | undefined;
    getRoom(roomId: string, initIfNeeded?: boolean): IRoomWidgets;
    getApps(roomId: string): IApp[];
    addVirtualWidget(widget: IWidget, roomId: string): IApp;
    removeVirtualWidget(widgetId: string, roomId: string): void;
}
export {};
