import type { MatrixActor } from './MatrixActor';
/**
 * Component constructor type.
 */
export type ComponentConstructor = new () => MatrixActor;
/**
 * Component loader - can be direct class, dynamic import function, or module path.
 */
export type ComponentLoader = ComponentConstructor | (() => Promise<ComponentConstructor>) | (() => Promise<{
    default: ComponentConstructor;
}>) | string;
/**
 * IComponentRegistry - Hierarchical component registry interface.
 *
 * KEY PRINCIPLE: NO SINGLETONS
 * - Each composite can have its own registry
 * - Child registries inherit from parent
 * - Local registrations shadow parent registrations
 * - Passed through context, never global
 */
export interface IComponentRegistry {
    /**
     * Resolve a tag name to a component constructor.
     * Searches local registry first, then parent chain.
     * May trigger dynamic import if loader is a function/path.
     *
     * @param tag - Tag name (e.g., 'my-component')
     * @returns Component constructor or undefined if not found
     */
    resolve(tag: string): Promise<ComponentConstructor | undefined>;
    /**
     * Register a component in this registry.
     * Available to this registry and all descendants.
     *
     * @param tag - Tag name
     * @param loader - Component class, dynamic import function, or module path
     */
    register(tag: string, loader: ComponentLoader): void;
    /**
     * Check if a tag is registered (in this registry or ancestors).
     */
    has(tag: string): boolean;
    /**
     * List all tags registered in this registry (not including parent).
     */
    localTags(): string[];
    /**
     * List all tags available (including parent chain).
     */
    allTags(): string[];
    /**
     * Create a child registry that inherits from this one.
     * Local registrations in child shadow parent registrations.
     */
    createChild(): IComponentRegistry;
    /**
     * Get the parent registry (if any).
     */
    readonly parent?: IComponentRegistry;
}
//# sourceMappingURL=IComponentRegistry.d.ts.map