import { IInjectionInstance, ProviderToken, RegistrationProvider } from './interfaces';
import { IContainer, IContainerOptions } from './container.interface';
export declare class Container implements IContainer {
    private static DEFAULT_LIFE_TIME;
    private registry;
    private parent;
    private defaultLifeTime;
    constructor(options?: IContainerOptions);
    register(provider: RegistrationProvider | RegistrationProvider[]): void;
    resolve(token: ProviderToken): IInjectionInstance;
    createScope(): IContainer;
    createChild(): IContainer;
    setParent(parent: IContainer): void;
    resolveInternal(token: ProviderToken, container: IContainer, traceMessage?: string): IInjectionInstance;
    private registerAll(providers);
    private registerOne(provider);
    private convertTokensToInjectionMd(tokens);
    private instantiateWithFactory(factory, container, traceMessage);
    private normalizeProvider(provider);
    private normalizeSingleProvider(provider);
    private buildTraceMessage(token, message);
    private getTokenString(token);
    private symbol2string(symbol);
    private isInjectable(cls);
    private retrieveInjectionsFromClass(cls);
}
