import { type ComponentInstance, type JsComponent } from '../../types';
import { type ModuleContent } from '../../types/core';
/**
 * Clear the caches for testing.
 * In prod we don't want to clear ever
 */
export declare function clearCaches_TEST(): void;
/**
 * Load available components into the cache.
 *
 * @param importers - the importers object.
 * @param components - the components to register
 */
export declare function preloadComponents(importers: Record<string, () => Promise<ModuleContent>>, jsComponents: JsComponent[]): Promise<void>;
interface DynamicComponentProps {
    /** The component instance to inject */
    component: ComponentInstance | null | undefined;
}
/**
 * This component dynamically loads a component from the component registry. This component can either be another JS
 * component or it can be a python component defined in the backend. For JS components we use the importers context to
 * load the appropriate module and then extract the right component from that by its name. For python components we hand
 * off to the PythonWrapper component which makes the call to the backend to get the html string to inject into the DOM.
 *
 * @param props - the components props
 */
declare function DynamicComponent(props: DynamicComponentProps): React.ReactNode;
declare const _default: import("react").MemoExoticComponent<typeof DynamicComponent>;
export default _default;
//# sourceMappingURL=dynamic-component.d.ts.map