import type { ApiManager } from '../api-manager/ApiManager';
import type { AnyExecutionContext } from '../execution-context/ExecutionContext';
import type { AnyPackage, RemovePackage } from '../package-api/PackageApi';
import type { Replacer } from './RegistryInterface';
type AnyApiManager = ApiManager<any>;
export declare class Registry {
    private readonly apiManager;
    private readonly parentRegistry;
    private readonly usedComponents;
    private boundContext;
    private readonly componentMap;
    private readonly executedPackages;
    private readonly abortingPackages;
    private readonly childRegistries;
    private readonly packages;
    private readonly replacers;
    constructor(apiManager: AnyApiManager, parentRegistry?: Registry | undefined, usedComponents?: Set<string>);
    createChild(): Registry;
    removeChild(child: Registry): void;
    bind(context: AnyExecutionContext): void;
    private getMatchingReplacers;
    private applyReplacers;
    private set;
    private getDependentPackages;
    private delete;
    private isInUse;
    private addReplacer;
    private has;
    private get;
    destroy(): void;
    private isExecuting;
    private satisfies;
    private trackExecution;
    private tryResolvePackageDependencies;
    private executePackage;
    private maybeChainPackageExecution;
    private getAllPackages;
    private addPackage;
    private removePackage;
    getApi<RegistryMap extends object>(): {
        has: <K extends keyof RegistryMap>(name: K) => boolean;
        get: <K_1 extends keyof RegistryMap>(name: K_1) => RegistryMap[K_1];
        set: <K_2 extends keyof RegistryMap>(name: K_2, instance: RegistryMap[K_2]) => void;
        delete: <K_3 extends keyof RegistryMap>(name: K_3) => boolean;
        addReplacer: <K_4 extends keyof RegistryMap>(name: K_4, replacer: Replacer<RegistryMap[K_4]>) => void;
    };
    getPackageApi<Api extends object>(): {
        add: (pkg: AnyPackage<Api>) => RemovePackage;
    };
}
export {};
