import * as utility from './util'; export declare type Injector = { (Constructor: new (injector: Injector) => T): T; later: (fn: Function) => number; setOverride: (Constructor: Function, instance: any) => void; }; export declare type InjectorPartial = { (Constructor: new (injector: Injector) => T): (T | undefined); later?: (fn: Function) => number; setOverride?: (Constructor: Function, instance: any) => void; }; export interface Constructor { new (injector: Injector): Object; } export interface InstanceMap extends Map { get(key: new (injector: Injector) => T): T | undefined; set(key: new (injector: Injector) => T, value: T): this; } interface MainExport { (parent?: Injector | InstanceMap | Object): Injector; default: MainExport; util: typeof utility; } declare const createContainer: MainExport; export default createContainer;