import { IntrospectionResult, Type } from '@nestjs/common'; import { AbstractInstanceResolver } from './abstract-instance-resolver'; import { NestContainer } from './container'; import { Injector } from './injector'; import { InstanceLinksHost } from './instance-links-host'; import { ContextId } from './instance-wrapper'; import { Module } from './module'; export interface ModuleRefGetOrResolveOpts { /** * If enabled, lookup will only be performed in the host module. * @default true */ strict?: boolean; /** * If enabled, instead of returning a first instance registered under a given token, * a list of instances will be returned. * @default false */ each?: boolean; } export declare abstract class ModuleRef extends AbstractInstanceResolver { protected readonly container: NestContainer; protected readonly injector: Injector; private _instanceLinksHost; protected get instanceLinksHost(): InstanceLinksHost; constructor(container: NestContainer); /** * Retrieves an instance of either injectable or controller, otherwise, throws exception. * @returns {TResult} */ abstract get(typeOrToken: Type | Function | string | symbol): TResult; /** * Retrieves an instance of either injectable or controller, otherwise, throws exception. * @returns {TResult} */ abstract get(typeOrToken: Type | Function | string | symbol, options: { /** * If enabled, lookup will only be performed in the host module. * @default true */ strict?: boolean; /** This indicates that only the first instance registered will be returned. */ each?: undefined | false; }): TResult; /** * Retrieves a list of instances of either injectables or controllers, otherwise, throws exception. * @returns {Array} */ abstract get(typeOrToken: Type | Function | string | symbol, options: { /** * If enabled, lookup will only be performed in the host module. * @default true */ strict?: boolean; /** This indicates that a list of instances will be returned. */ each: true; }): Array; /** * Retrieves an instance (or a list of instances) of either injectable or controller, otherwise, throws exception. * @returns {TResult | Array} */ abstract get(typeOrToken: Type | Function | string | symbol, options?: ModuleRefGetOrResolveOpts): TResult | Array; /** * Resolves transient or request-scoped instance of either injectable or controller, otherwise, throws exception. * @returns {Array} */ abstract resolve(typeOrToken: Type | Function | string | symbol): Promise; /** * Resolves transient or request-scoped instance of either injectable or controller, otherwise, throws exception. * @returns {Array} */ abstract resolve(typeOrToken: Type | Function | string | symbol, contextId?: { id: number; }): Promise; /** * Resolves transient or request-scoped instance of either injectable or controller, otherwise, throws exception. * @returns {Array} */ abstract resolve(typeOrToken: Type | Function | string | symbol, contextId?: { id: number; }, options?: { strict?: boolean; each?: undefined | false; }): Promise; /** * Resolves transient or request-scoped instances of either injectables or controllers, otherwise, throws exception. * @returns {Array} */ abstract resolve(typeOrToken: Type | Function | string | symbol, contextId?: { id: number; }, options?: { strict?: boolean; each: true; }): Promise>; /** * Resolves transient or request-scoped instance (or a list of instances) of either injectable or controller, otherwise, throws exception. * @returns {Promise>} */ abstract resolve(typeOrToken: Type | Function | string | symbol, contextId?: { id: number; }, options?: ModuleRefGetOrResolveOpts): Promise>; abstract create(type: Type, contextId?: ContextId): Promise; introspect(token: Type | string | symbol): IntrospectionResult; registerRequestByContextId(request: T, contextId: ContextId): void; protected instantiateClass(type: Type, moduleRef: Module, contextId?: ContextId): Promise; }