interface Instantiable> { new (...args: P): T; } declare type Abstract = Function & { prototype: T; }; declare type Class = Instantiable | Abstract; export declare type LifetimeScope = "permanent" | "transient"; export declare class Container { private readonly resolvables; private readonly values; register>(type: Class | string, implementedBy: Instantiable, lifetimeScope: LifetimeScope, constructorParameters?: P): void; registerValue(key: Class | string, value: T): void; resolve(key: Class | string): T; getResolver(): (key: Class | string) => T; private resolveTransient; private resolvePermanent; private getKeyName; } export declare const globalContainer: Container; export declare const globalResolve: (key: string | Instantiable | Abstract) => T; export {};