import { ReactNode, ComponentType, HTMLAttributes } from '../react/adapter.ts';
import { BaseComponentProps, UIRenderers } from './types';
/**
* UIProvider Props
*/
export interface UIProviderProps extends HTMLAttributes {
children: ReactNode;
/**
* Document ID for this UI context
* Required for menu rendering
*/
documentId: string;
/**
* Custom component registry
* Maps component IDs to components
*/
components?: Record>;
/**
* REQUIRED: User-provided renderers
* These define how toolbars, panels, and menus are displayed
*/
renderers: UIRenderers;
/**
* Optional: Container for menu portal
* Defaults to document.body
*/
menuContainer?: HTMLElement | null;
}
/**
* UIProvider - Single provider for all UI plugin functionality
*
* Manages:
* - Anchor registry for menu positioning
* - Component registry for custom components
* - Renderers for toolbars, panels, and menus
* - Automatic menu rendering
*
* @example
* ```tsx
*
* {({ pluginsReady }) => (
* pluginsReady && (
*
* {({ activeDocumentId }) => (
* activeDocumentId && (
*
*
*
* )
* )}
*
* )
* )}
*
* ```
*/
export declare function UIProvider({ children, documentId, components, renderers, menuContainer, ...restProps }: UIProviderProps): import("react/jsx-runtime").JSX.Element;