interface IConfig { object?: INewAble; factory?: Factory; value?: Value; cache?: T; singleton: boolean; } interface INewAble { new (...args: any[]): T; } declare type Factory = () => T; declare type Value = T; declare class Options { private _target; constructor(_target: IConfig); inSingletonScope(): void; } declare class Bind { private _target; constructor(_target: IConfig); to(object: INewAble): Options; toFactory(factory: Factory): Options; toValue(value: Value): void; } export declare class Container { private _registry; private _snapshots; bind(type: symbol): Bind; rebind(type: symbol): Bind; remove(type: symbol): Container; get(type: symbol): T; snapshot(): Container; restore(): Container; private _add; } export {};