// Type definitions for di-lite 0.3.3 // Project: https://github.com/NickQiZhu/di.js // Definitions by: Timothy Morris // Definitions: https://github.com/DefinitelyTyped/DefinitelyTyped declare namespace DiLite { interface DiLiteStatic { version: string; createContext(): CreateContext; dependencyExpression(depExp: string): string; entry(name: string, ctx: CreateContext): any; strategy: StrategyEnum; factory: FactoryEnum; utils: Utils; } interface Dictionary { [index: string]: T; } interface CreateContext { map: Dictionary; entry(name: string): T; register(name: string, service: T): Entry; has(name: string): boolean; get(name: string): any; create(name: string, args: any): T; initialize(): void; clear(): void; inject(name: string, o: T, dependencies: string): T; ready(o: Function): T; ready(o: any): T; } interface Entry { create(newArgs: any): Entry; object(o: T): Entry; object(): T; strategy(s: Function): Entry; strategy(): T; type(t: T): Entry; type(): T; dependencies(d: T): Entry; dependencies(): T; args(a: T): Entry; args(): T; factory(f: Function): Entry; factory(): T; } interface StrategyEnum { proto(name: string, object: TObject, type: TType, args: any, ctx: CreateContext, dependencies: any): TObject; singleton(name: string, object: TObject, type: TType, args: any, ctx?: CreateContext, dependencies?: any): TObject; } interface FactoryEnum { constructor(type: T, args: any): T; func(type: T, args: any): T; } interface Utils { invokeStmt(args: any, op: string): string; } } declare module "di-lite" { export = di; } declare var di: DiLite.DiLiteStatic;