import { Provider, ContainerProvider, Injectable } from './types';
export declare class Container {
    parentContainer?: Container;
    providers: Map<Injectable, ContainerProvider>;
    setParent(container: Container): void;
    /**
     * Registers new or replaces providers
     */
    provide(providers: Provider[]): void;
    /**
     * Gets or instantiates an injectable
     */
    get<T>(injectable: Injectable): Promise<T>;
    /**
     * Verifies that injectable is provided within the scope
     */
    has(injectable: Injectable): boolean;
    /**
     * Resolves the provider, following deps are resolved recursively
     */
    private resolve;
    private registerMultiProviders;
    private registerSingleProviders;
    private registerClassProvider;
    private registerFactoryProvider;
    private registerValueProvider;
    private registerExistingProvider;
}
