import type { IRuntimeLogger } from './IRuntimeLogger';
import type { IHostCustomElementRegistry } from './IHostCustomElementRegistry';
import type { IRuntimeComponent } from './IRuntimeComponent';
export declare class ShellElementRegistry {
    private readonly registry;
    private readonly logger;
    private readonly components;
    private readonly instances;
    private totalInstanceCount;
    constructor(registry: IHostCustomElementRegistry, logger: IRuntimeLogger);
    register(tag: string, constructor: CustomElementConstructor): void;
    isRegistered(tag: string): boolean;
    /**
     * Resolve the constructor for a registered component.
     * Prefer the explicit registry in this class, but fall back to the
     * host customElements registry if needed.
     */
    getConstructor(tag: string): CustomElementConstructor | undefined;
    trackInstance(tag: string, element: HTMLElement, scope: {
        context: {
            mount: string;
        };
    }, mountPath: string): void;
    untrackInstance(element: HTMLElement): void;
    clearInstances(): void;
    getInstances(tag: string): IRuntimeComponent[];
    getAllInstances(): IRuntimeComponent[];
    validate(tag: string, constructor: CustomElementConstructor): string[];
    getStats(): {
        registeredComponents: number;
        activeInstances: number;
        totalInstancesCreated: number;
    };
    whenDefined(tag: string): Promise<void>;
}
//# sourceMappingURL=ComponentRegistry.d.ts.map