import { A2UIComponentProps, ComponentRegistration } from "../types.mjs";
import { ComponentType } from "react";
import { Types } from "@a2ui/lit/0.8";
//#region src/react-renderer/registry/ComponentRegistry.d.ts
/**
* Registry for A2UI components. Allows registration of custom components
* and supports lazy loading for code splitting.
*
* @example
* ```tsx
* const registry = new ComponentRegistry();
*
* // Register a component directly
* registry.register('Text', { component: Text });
*
* // Register with lazy loading
* registry.register('Modal', {
* component: () => import('./components/Modal'),
* lazy: true
* });
*
* // Use with A2UIRenderer
*
* ```
*/
declare class ComponentRegistry {
private static _instance;
private registry;
private lazyCache;
/**
* Get the singleton instance of the registry.
* Use this for the default global registry.
*/
static getInstance(): ComponentRegistry;
/**
* Reset the singleton instance.
* Useful for testing.
*/
static resetInstance(): void;
/**
* Register a component type.
*
* @param type - The A2UI component type name (e.g., 'Text', 'Button')
* @param registration - The component registration
*/
register(type: string, registration: ComponentRegistration): void;
/**
* Unregister a component type.
*
* @param type - The component type to unregister
*/
unregister(type: string): void;
/**
* Check if a component type is registered.
*
* @param type - The component type to check
* @returns True if the component is registered
*/
has(type: string): boolean;
/**
* Get a component by type. If the component is registered with lazy loading,
* returns a React.lazy wrapped component.
*
* @param type - The component type to get
* @returns The React component, or null if not found
*/
get(type: string): ComponentType | null;
/**
* Get all registered component types.
*
* @returns Array of registered type names
*/
getRegisteredTypes(): string[];
/**
* Clear all registrations.
*/
clear(): void;
}
//#endregion
export { ComponentRegistry };
//# sourceMappingURL=ComponentRegistry.d.mts.map