import type { FactoryFunction, FactoryRegistration } from "../../types/index.js";
export declare abstract class BaseFactory<TInstance, TConfig = unknown> {
    protected items: Map<string, FactoryRegistration<TInstance, TConfig>>;
    protected aliasMap: Map<string, string>;
    protected initialized: boolean;
    protected initPromise: Promise<void> | null;
    protected abstract registerAll(): Promise<void>;
    ensureInitialized(): Promise<void>;
    register(name: string, factory: FactoryFunction<TInstance, TConfig>, aliases?: string[], metadata?: Record<string, unknown>): void;
    create(nameOrAlias: string, config?: TConfig): Promise<TInstance>;
    resolveName(nameOrAlias: string): string;
    has(nameOrAlias: string): boolean;
    getAvailable(): string[];
    getAliases(): Map<string, string>;
    clear(): void;
}
