import type { InfraRegistryEntry } from "../../types/index.js";
export declare abstract class BaseRegistry<TItem, TMetadata = unknown> {
    protected items: Map<string, InfraRegistryEntry<TItem, TMetadata>>;
    protected initialized: boolean;
    protected initPromise: Promise<void> | null;
    protected abstract registerAll(): Promise<void>;
    ensureInitialized(): Promise<void>;
    register(id: string, factory: () => Promise<TItem>, aliases?: string[], options?: {
        metadata: TMetadata;
    }): void;
    get(id: string): Promise<TItem | undefined>;
    has(id: string): boolean;
    list(): Array<{
        id: string;
        metadata: TMetadata;
    }>;
    clear(): void;
    isInitialized(): boolean;
}
