import { AnnotationPredicate, ServiceName, DefinitionPredicate } from "../types"; import { Container } from "../Container"; import { Definition } from "../Definition"; import { Lookup } from "../Lookup"; import { ContainerArg } from "./ContainerArg"; import { TypeRef } from "../TypeRef"; export declare class ReferenceArg extends ContainerArg { private readonly type; private readonly lookup; static one: { name(name: ServiceName): ReferenceArg; predicate(predicate: DefinitionPredicate): ReferenceArg; annotation(predicate: AnnotationPredicate): ReferenceArg; type(type: TypeRef | Function): ReferenceArg; }; static multi: { predicate(predicate: DefinitionPredicate): ReferenceArg; annotation(predicate: AnnotationPredicate): ReferenceArg; type(type: TypeRef | Function): ReferenceArg; }; constructor(type: "one" | "multi", lookup: Lookup); getArgument(container: Container): Promise; getDependentServices(container: Container): Definition | Definition[]; private findDefinitions; private findOne; private findMulti; }