import 'reflect-metadata'; import { AbstractType, Type } from '../type'; import { AppServiceInfo } from './appServiceInfo'; import { AppServiceMetadata } from './appServiceMetadata'; /** * Registry for the application service information. * * @export * @class AppServiceInfoRegistry */ export declare class AppServiceInfoRegistry { private static readonly _serviceContractKey; private static readonly _serviceMetadataKey; private static _instance; /** * Gets the static instance of the registry. * * @static * @memberof AppServiceInfoRegistry */ static get Instance(): AppServiceInfoRegistry; private readonly _serviceContracts; private readonly _services; /** * Creates an instance of AppServiceInfoRegistry. * @memberof AppServiceInfoRegistry */ constructor(); /** * Gets an iterator over service contracts. * * @returns {IterableIterator} The iterator over service contracts. * @memberof AppServiceInfoRegistry */ get serviceContracts(): IterableIterator; /** * Gets an iterator of services. * * @readonly * @type {IterableIterator} The iterator over services. * @memberof AppServiceInfoRegistry */ get services(): IterableIterator>; /** * Registers the provided type as a service contract. * * @static * @param {AbstractType} type The type to be registered. * @param {AppServiceInfo} appServiceInfo The service information. * @memberof AppServiceInfoRegistry */ registerServiceContract(type: AbstractType, appServiceInfo: AppServiceInfo): this; /** * Registers the provided type as a service type. * * @static * @param {Type} type The type to be registered. * @param {AppServiceMetadata} [metadata] Optional. The service metadata. * @memberof AppServiceInfoRegistry */ registerService(type: Type, metadata?: AppServiceMetadata): this; /** * Gets the service contract from the provided type, if possible. * * @param {AbstractType} type The type assumed to be a service contract or a service type. * @returns {(AppServiceInfo | null)} The AppServiceInfo instance or null, if the type is not a service contract. * @memberof AppServiceInfoRegistry */ getServiceContract(type: AbstractType): AppServiceInfo | null; /** * Gets a value indicating whether a type is a service contract. * * @param {AbstractType} type The type assumed to be a service contract. * @returns {boolean} * @memberof AppServiceInfoRegistry */ isServiceContract(type: AbstractType): boolean; /** * Gets the service metadata from the provided type, if possible. * * @param {AbstractType} type The type assumed to be a service type. * @returns {(AppServiceMetadata | null)} * @memberof AppServiceInfoRegistry */ getServiceMetadata(type: AbstractType): AppServiceMetadata | null; /** * Gets a value indicating whether a type is a service. * * @param {AbstractType} type * @returns {boolean} * @memberof AppServiceInfoRegistry */ isService(type: AbstractType): boolean; private _getContractOfService; }