// Type definitions for inversify-binding-decorators 1.0.0
// Project: https://github.com/inversify/inversify-binding-decorators
// Definitions by: inversify
// Definitions: https://github.com/borisyankov/DefinitelyTyped
declare namespace inversifyBindingDecorators {
namespace interfaces {
export interface ProvideInSyntax extends ProvideDoneSyntax {
inSingletonScope(): ProvideWhenOnSyntax;
}
export interface ProvideDoneSyntax {
done(): (target: any) => any;
}
export interface ProvideOnSyntax extends ProvideDoneSyntax {
onActivation(fn: (context: inversify.interfaces.Context, injectable: T) => T): ProvideWhenSyntax;
}
export interface ProvideInWhenOnSyntax extends ProvideInSyntax, ProvideWhenSyntax, ProvideOnSyntax {}
export interface ProvideWhenOnSyntax extends ProvideWhenSyntax, ProvideOnSyntax {}
export interface ProvideWhenSyntax extends ProvideDoneSyntax {
when(constraint: (request: inversify.interfaces.Request) => boolean): ProvideOnSyntax;
whenTargetNamed(name: string): ProvideOnSyntax;
whenTargetTagged(tag: string, value: any): ProvideOnSyntax;
whenInjectedInto(parent: (Function|string)): ProvideOnSyntax;
whenParentNamed(name: string): ProvideOnSyntax;
whenParentTagged(tag: string, value: any): ProvideOnSyntax;
whenAnyAncestorIs(ancestor: (Function|string)): ProvideOnSyntax;
whenNoAncestorIs(ancestor: (Function|string)): ProvideOnSyntax;
whenAnyAncestorNamed(name: string): ProvideOnSyntax;
whenAnyAncestorTagged(tag: string, value: any): ProvideOnSyntax;
whenNoAncestorNamed(name: string): ProvideOnSyntax;
whenNoAncestorTagged(tag: string, value: any): ProvideOnSyntax;
whenAnyAncestorMatches(constraint: (request: inversify.interfaces.Request) => boolean): ProvideOnSyntax;
whenNoAncestorMatches(constraint: (request: inversify.interfaces.Request) => boolean): ProvideOnSyntax;
}
}
export function autoProvide(kernel: inversify.interfaces.Kernel, ...modules: any[]): void;
export function makeProvideDecorator(kernel: inversify.interfaces.Kernel):
(serviceIdentifier: inversify.interfaces.ServiceIdentifier) => (target: any) => any;
export function makeFluentProvideDecorator(kernel: inversify.interfaces.Kernel):
(serviceIdentifier: inversify.interfaces.ServiceIdentifier) => interfaces.ProvideInWhenOnSyntax;
}
declare module "inversify-binding-decorators" {
export = inversifyBindingDecorators;
}