import { AbstractType, Type } from "../type"; /** * Contract for composition context. * * @export * @abstract * @class Injector */ export declare abstract class Injector { private static _instance; /** * Gets or sets the static instance of the Injector. * * @readonly * @static * @type {Injector} * @memberof Injector */ static get instance(): Injector; static set instance(value: Injector); /** * Gets the service instance of the required service contract type. * * @template T * @param {Type} type The service contract type. * @param notFoundResolver A resolver for the case when a type cannot be resolved. * @returns {T} The requested service. * @memberof Injector */ abstract resolve(type: Type | AbstractType, notFoundResolver?: (type: Type | AbstractType) => any): T; /** * Gets an array of service instances. * * @template T * @param {Type} type The service contract type. * @param notFoundResolver A resolver for the case when a type cannot be resolved. * @returns {T[]} The array of the requested service. * @memberof Injector */ abstract resolveMany(type: Type | AbstractType, notFoundResolver?: (type: Type | AbstractType) => any): T[]; }