import { IProxyDiContainer as IProxyDiContainer, ContainerizedServiceInstance, ServiceInstanced, ServiceClass } from './types';
import { ProxyDiSettings, ServiceId } from './types';
export declare class ProxyDiContainer implements IProxyDiContainer {
    private static idCounter;
    readonly id: number;
    readonly parent?: ProxyDiContainer;
    private children;
    /**
     * Holds instances of services registered in particular this container
     */
    private serviceInstances;
    private parentInstanceProxies;
    private settings;
    constructor(settings?: ProxyDiSettings, parent?: ProxyDiContainer);
    registerService<T>(serviceId: ServiceId, instance: ServiceInstanced<T>): void;
    private registerInstanceImplementation;
    createService<T>(serviceId: ServiceId, ServiceClass: ServiceClass<T>): void;
    isKnown(serviceId: ServiceId): boolean;
    resolve<T>(serviceId: ServiceId): T & ContainerizedServiceInstance;
    injectDependencies(injectionsOwner: any): void;
    createChildContainer(): ProxyDiContainer;
    removeService(serviceId: ServiceId | ContainerizedServiceInstance): void;
    destroy(): void;
    private findInstance;
    private addChild;
    private removeChild;
}
