import { Dispatch } from 'redux';
import { Plugin, PluginViewFrame } from '../../store/pluginSlice';
import { ContextObj as SocketContext, WebsocketMessage } from '../../services/MediaRoomSocketService';
export default class PluginManager {
    socketObj: SocketContext;
    dispatch: Dispatch;
    roomName: string;
    plugins: {
        [pluginId: string]: Plugin;
    };
    peerId: string;
    authToken: string;
    iframes: {
        [pluginId: string]: {
            [viewId: string]: {
                iframe: any;
                listener: (message: any) => any;
            };
        };
    };
    constructor(socketObj: SocketContext, roomName: string, dispatch: Dispatch, peerId: string, authToken: string);
    private handleSockets;
    sendIframeEvent(message: any): void;
    listenSocketEvents(): void;
    getRoomPlugins(): void;
    enablePlugin(plugin: Pick<Plugin, 'id' | 'enabledBy' | 'ACLAccessGrantedUsers' | 'ACLAccessRemovedUsers'>): Promise<void>;
    disablePlugin(plugin: Pick<Plugin, 'id'>): Promise<void>;
    handleIframeMessage(message: any): Promise<void>;
    addIframeView(frame: PluginViewFrame, element: any, EM: any): Promise<void>;
    removeIframeView(frame: PluginViewFrame): Promise<void>;
    addRoomPlugin(plugin: Pick<Plugin, 'id' | 'staggered'>): Promise<void>;
    removeRoomPlugin(plugin: Pick<Plugin, 'id'>): Promise<WebsocketMessage>;
}
