import React from 'react';
import Loadable from 'react-loadable';
import type { ExtensionParams, MultiBodiedExtensionActions, ReferenceEntity } from './types/extension-handler';
import type { ExtensionKey, ExtensionManifest, ExtensionModuleNode, ExtensionType } from './types/extension-manifest';
import type { Parameters } from './types/extension-parameters';
import type { ExtensionProvider } from './types/extension-provider';
export declare function getExtensionManifest(extensionProvider: ExtensionProvider, extensionType: ExtensionType, extensionKey: ExtensionKey): Promise<ExtensionManifest<any> | undefined>;
export declare function getExtensionModuleNode(extensionProvider: ExtensionProvider, extensionType: ExtensionType, extensionKey: ExtensionKey): Promise<ExtensionModuleNode<any>>;
export declare function getExtensionModuleNodeMaybePreloaded(extensionProvider: ExtensionProvider, extensionType: ExtensionType, extensionKey: ExtensionKey): Promise<ExtensionModuleNode<any>> | ExtensionModuleNode<any>;
/**
 * Gets `__` prefixed properties from an extension node module definition
 */
export declare function getExtensionModuleNodePrivateProps(extensionProvider: ExtensionProvider, extensionType: ExtensionType, extensionKey: ExtensionKey): Promise<{
    [prop: string]: any;
}>;
export declare function getNodeRenderer<T extends Parameters>(extensionProvider: ExtensionProvider, extensionType: ExtensionType, extensionKey: ExtensionKey): React.ComponentType<{
    actions?: MultiBodiedExtensionActions;
    isSelected?: boolean;
    node: ExtensionParams<T>;
    references?: ReferenceEntity[];
    showUnknownMacroPlaceholder?: boolean;
}> & Loadable.LoadableComponent;
