import { Subject } from 'rxjs';
import VersionInfo from '../background/models/versionInfo';
import { JsonRpc } from '../common/jsonrpc';
import { BaseEvent, DefaultConfig, SchemaConfig } from '../common/types';
import Core from './core';
type RegistriedModule = {
    manifest: VersionInfo;
    clazz: any;
    instance?: any;
    order: number;
    contextIds: string[];
    constructorDependencies: string[];
    instancedPropertyDependencies: {
        [name: string]: any;
    };
    instancedConstructorDeps: any[];
    activateMethodsDependencies: string[];
    instancedActivateMethodsDependencies: any[];
    defaultConfig?: DefaultConfig;
    schemaConfig?: SchemaConfig;
    onActionHandler?: Function;
    onHomeHandler?: Function;
    onShareLinkHandler?: Function;
    onWalletsUpdateHandler?: Function;
    onConnectedAccountsUpdateHandler?: Function;
};
export declare const widgets: any[];
export declare class Injector {
    core: Core;
    private eventStream;
    private jsonrpc;
    private env?;
    availableContextIds: string[];
    registry: RegistriedModule[];
    private _dynamicAdapter;
    private _iframeContainer;
    constructor(core: Core, eventStream: Subject<BaseEvent>, jsonrpc: JsonRpc, env?: {
        shareLinkPayload: {
            moduleId: string;
            payload: any;
            isAllOk: boolean;
        };
    });
    loadModules(modules: {
        name: string;
        branch: string;
        version: string;
        order: number;
        contextIds: string[];
    }[]): Promise<void>;
    unloadModules(modules: {
        name: string;
        branch: string;
        version: string;
    }[]): Promise<void>;
    openDappletAction(moduleName: string): Promise<void>;
    openDappletHome(moduleName: string): Promise<void>;
    sendShareLinkData(moduleName: string, data: any): Promise<void>;
    executeWalletsUpdateHandler(): Promise<void>;
    executeConnectedAccountsUpdateHandler(): Promise<void>;
    setActionHandler(moduleName: string, handler: Function): void;
    setHomeHandler(moduleName: string, handler: Function): void;
    setShareLinkHandler(moduleName: string, handler: Function): void;
    setWalletsUpdateHandler(moduleName: string, handler: Function): void;
    setConnectedAccountsUpdate(moduleName: string, handler: Function): void;
    dispose(): Promise<void>;
    private _processModules;
    private _setContextActivivty;
    private _getDependency;
    private _proxifyModule;
    private _registerModule;
}
export {};
