import { Injector } from "../injection/injector"; import { Type } from "../type"; import { AppServiceInfo } from "./appServiceInfo"; /** * Enumerates the priority values. * They are practically a convenient way to provide integer values for defining priorities. * A lower value indicates a higher priority. * * @export * @enum {number} */ export declare enum Priority { /** * The lowest priority. Typically used by the null services. */ Lowest = 2147483647, /** * The low priority. Typically used by the default services. */ Low = 1000000, /** * The below normal priority. Typically used by services with a higher specialization than the default ones. */ BelowNormal = 1000, /** * The normal priority (the default). */ Normal = 0, /** * The above normal priority. */ AboveNormal = -1000, /** * The high priority. */ High = -1000000, /** * The highest priority. */ Highest = -2147483648 } /** * Metadata for application services. * * @export * @class AppServiceMetadata */ export declare class AppServiceMetadata { /** * Gets the override priority. * * @type {number} * @memberof AppServiceInfo */ readonly overridePriority: number; /** * Gets the processing priority. * * @type {number} * @memberof AppServiceInfo */ readonly processingPriority: number; /** * Gets the service name. * * @type {string} * @memberof AppServiceMetadata */ readonly serviceName?: string; /** * Gets the service implementation type. * * @type {Function} * @memberof AppServiceMetadata */ get serviceType(): Type | undefined; /** * Gets the application service contract information. * * @type {AppServiceInfo} * @memberof AppServiceMetadata */ get serviceContract(): AppServiceInfo | undefined; /** * Gets the service instance. * * @type {T} * @memberof AppServiceMetadata */ get serviceInstance(): T | undefined; /** * Gets or sets the service factory. * * @type {(c: Injector) => T} * @memberof AppServiceMetadata */ readonly serviceFactory?: (c: Injector) => T; private _serviceContract?; private _serviceType?; private _serviceInstance?; /** * Creates an instance of AppServiceMetadata. * * @param {number|Priority} [overridePriority=Priority.Normal] Optional. The override priority. * @param {number|Priority} [processingPriority=Priority.Normal] Optional. The processing priority. * @param {string} [serviceName] Optional. The service name. * @param {Type} [serviceType] Optional. The service implementation type. * @param {() => T} [serviceFactory] Optional. The service factory. * @param {T} [serviceInstance] Optional. The service instance. * @param {AppServiceInfo} [serviceContract] Optional. The service contract. * @memberof AppServiceMetadata */ constructor({ overridePriority, processingPriority, serviceName, serviceType, serviceFactory, serviceInstance, ...args }?: { overridePriority?: number | Priority; processingPriority?: number | Priority; serviceName?: string; serviceType?: Type; serviceFactory?: (c: Injector) => T; serviceInstance?: T; [key: string]: any; }); }