// Generated by typings // Source: node_modules/inversify-dts/inversify/inversify.d.ts // Type definitions for inversify 2.0.0-beta.8 // Project: https://github.com/inversify/InversifyJS // Definitions by: inversify // Definitions: https://github.com/borisyankov/DefinitelyTyped interface Symbol { toString(): string; valueOf(): Object; } interface SymbolConstructor { (description?: string|number): Symbol; } declare var Symbol: SymbolConstructor; declare namespace inversify { export interface IKernelConstructor { new(): IKernel; } export interface PlanAndResolve { (args: PlanAndResolveArgs): T[]; } export interface IMiddleware extends Function { (next: PlanAndResolve): PlanAndResolve; } export interface PlanAndResolveArgs { multiInject: boolean; serviceIdentifier: (string|Symbol|INewable); target: ITarget; contextInterceptor: (contexts: IContext) => IContext; } export interface IKernel { bind(serviceIdentifier: (string|Symbol|INewable)): IBindingToSyntax; unbind(serviceIdentifier: (string|Symbol|any)): void; unbindAll(): void; get(serviceIdentifier: (string|Symbol|INewable)): T; getNamed(serviceIdentifier: (string|Symbol|INewable), named: string): T; getTagged(serviceIdentifier: (string|Symbol|INewable), key: string, value: any): T; getAll(serviceIdentifier: (string|Symbol|INewable)): T[]; load(...modules: IKernelModule[]): void; applyMiddleware(...middleware: IMiddleware[]): void; getServiceIdentifierAsString(serviceIdentifier: (string|Symbol|INewable)): string; snapshot(): void; restore(): void; } export interface IKernelModule extends Function { (kernel: IKernel): void; } interface IBindingOnSyntax { onActivation(fn: (context: IContext, injectable: T) => T): IBindingWhenSyntax; } interface IBindingInSyntax { inSingletonScope(): IBindingWhenOnSyntax; } interface IBindingWhenSyntax { when(constraint: (request: IRequest) => boolean): IBindingOnSyntax; whenTargetNamed(name: string): IBindingOnSyntax; whenTargetTagged(tag: string, value: any): IBindingOnSyntax; whenInjectedInto(parent: (Function|string)): IBindingOnSyntax; whenParentNamed(name: string): IBindingOnSyntax; whenParentTagged(tag: string, value: any): IBindingOnSyntax; whenAnyAncestorIs(ancestor: (Function|string)): IBindingOnSyntax; whenNoAncestorIs(ancestor: (Function|string)): IBindingOnSyntax; whenAnyAncestorNamed(name: string): IBindingOnSyntax; whenAnyAncestorTagged(tag: string, value: any): IBindingOnSyntax; whenNoAncestorNamed(name: string): IBindingOnSyntax; whenNoAncestorTagged(tag: string, value: any): IBindingOnSyntax; whenAnyAncestorMatches(constraint: (request: IRequest) => boolean): IBindingOnSyntax; whenNoAncestorMatches(constraint: (request: IRequest) => boolean): IBindingOnSyntax; } interface IBindingToSyntax { to(constructor: { new(...args: any[]): T; }): IBindingInWhenOnSyntax; toConstantValue(value: T): IBindingWhenOnSyntax; toDynamicValue(func: () => T): IBindingWhenOnSyntax; toConstructor(constructor: INewable): IBindingWhenOnSyntax; toFactory(factory: IFactoryCreator): IBindingWhenOnSyntax; toAutoFactory(serviceIdentifier: (string|Symbol|T2)): IBindingWhenOnSyntax; toProvider(provider: IProviderCreator): IBindingWhenOnSyntax; } interface IBindingInWhenOnSyntax extends IBindingInSyntax, IBindingWhenOnSyntax {} interface IBindingWhenOnSyntax extends IBindingWhenSyntax, IBindingOnSyntax {} export interface IFactory extends Function { (...args: any[]): (((...args: any[]) => T)|T); } interface IFactoryCreator extends Function { (context: IContext): IFactory; } export interface INewable { new(...args: any[]): T; } export interface IProvider extends Function { (): Promise; } interface IProviderCreator extends Function { (context: IContext): IProvider; } export interface IContext { kernel: IKernel; plan: IPlan; addPlan(plan: IPlan): void; } export interface IPlan { parentContext: IContext; rootRequest: IRequest; } export interface IRequest { serviceIdentifier: (string|Symbol|INewable); parentContext: IContext; parentRequest: IRequest; childRequests: IRequest[]; target: ITarget; bindings: IBinding[]; addChildRequest( serviceIdentifier: (string|Symbol|INewable), bindings: (IBinding|IBinding[]), target: ITarget): IRequest; } export interface IBinding { activated: boolean; serviceIdentifier: (string|Symbol|INewable); implementationType: INewable; factory: IFactoryCreator; provider: IProviderCreator; constraint: (request: IRequest) => boolean; onActivation: (context: IContext, injectable: T) => T; cache: T; dynamicValue: () => T; scope: number; // BindingScope type: number; // BindingType } export interface ITarget { serviceIdentifier: (string|Symbol|INewable); name: IQueryableString; metadata: Array; hasTag(key: string): boolean; isArray(): boolean; matchesArray(name: string|Symbol|any): boolean; isNamed(): boolean; isTagged(): boolean; matchesNamedTag(name: string): boolean; matchesTag(key: string): (value: any) => boolean; } export interface IQueryableString { startsWith(searchString: string): boolean; endsWith(searchString: string): boolean; contains(searchString: string): boolean; equals(compareString: string): boolean; value(): string; } export interface IMetadata { key: string; value: any; } export var Kernel: IKernelConstructor; export var decorate: (decorator: (ClassDecorator|ParameterDecorator), target: any, parameterIndex?: number) => void; export function injectable(): (typeConstructor: any) => void; export function tagged(metadataKey: string, metadataValue: any): (target: any, targetKey: string, index?: number) => any; export function named(name: string): (target: any, targetKey: string, index?: number) => any; export function targetName(name: string): (target: any, targetKey: string, index: number) => any; export function inject(serviceIdentifier: (string|Symbol|any)): (target: any, targetKey: string, index?: number) => any; export function multiInject(serviceIdentifier: (string|Symbol|any)): (target: any, targetKey: string, index?: number) => any; export function makePropertyInjectDecorator(kernel: IKernel): (serviceIdentifier: (string|Symbol|INewable)) => (proto: any, key: string) => void; export function makePropertyInjectNamedDecorator(kernel: IKernel): (serviceIdentifier: (string|Symbol|INewable), named: string) => (proto: any, key: string) => void; export function makePropertyInjectTaggedDecorator(kernel: IKernel): (serviceIdentifier: (string|Symbol|INewable), key: string, value: any) => (proto: any, propertyName: string) => void; export function makePropertyMultiInjectDecorator(kernel: IKernel): (serviceIdentifier: (string|Symbol|INewable)) => (proto: any, key: string) => void; // constraint helpers export var traverseAncerstors: (request: IRequest, constraint: (request: IRequest) => boolean) => boolean; export var taggedConstraint: (tag: string) => (value: any) => (request: IRequest) => boolean; export var namedConstraint: (value: any) => (request: IRequest) => boolean; export var typeConstraint: (type: (Function|string)) => (request: IRequest) => boolean; } declare module "inversify" { export = inversify; }