import { ObjectType } from "./object-type";
import { DependencyLifeTime } from "./dependency-life-time";
import { DependencyDescriptor } from "./dependency-descriptor";
import { DependencyContainer } from "./dependency-container";
export declare class DependencyCollection {
    private static _globalCollection;
    static get globalCollection(): DependencyCollection;
    private readonly _registeredTypes;
    constructor();
    register<T = any>(objectType: ObjectType<T>, lifeTime: DependencyLifeTime, dependencies?: ObjectType[], instance?: T): void;
    registerTransient<T = any>(objectType: ObjectType<T>, dependencies?: ObjectType[]): void;
    registerScoped<T = any>(objectType: ObjectType<T>, dependencies?: ObjectType[]): void;
    registerSingleton<T = any>(objectType: ObjectType<T>, dependencies?: ObjectType[], instance?: T): void;
    get(objectType: ObjectType): DependencyDescriptor;
    contains(objectType: ObjectType): boolean;
    buildContainer(validate?: boolean): DependencyContainer;
    private validateDependencyRegistration;
    private validateCircularDependency;
    private validateScopedOnSingletons;
}
