import { AnnotationPredicate, DefinitionPredicate } from "./types"; import { Container } from "./Container"; import { Definition } from "./Definition"; import { TypeRef } from "./TypeRef"; import { ServiceName as _ServiceName } from "./types"; export declare abstract class Lookup { abstract find(container: Container): Definition | Definition[]; abstract toString(): string; } export declare namespace Lookup { class ByServiceName extends Lookup { readonly name: _ServiceName; constructor(name: _ServiceName); find(container: Container): Definition | Definition[]; toString(): string; } class ByAnnotation extends Lookup { readonly predicate: AnnotationPredicate; constructor(predicate: AnnotationPredicate); find(container: Container): Definition[]; toString(): string; } class ByPredicate extends Lookup { readonly predicate: DefinitionPredicate; constructor(predicate: DefinitionPredicate); find(container: Container): Definition[]; toString(): string; } class ByType extends Lookup { readonly type: TypeRef; constructor(type: TypeRef); find(container: Container): Definition[]; toString(): string; } }