import { Injector } from "../injection/injector";
import { Type } from "../type";
import { AppServiceInfoRegistry } from "./appServiceInfoRegistry";
import { Priority } from "./appServiceMetadata";
/**
 * Marks a class as being an application service. Its closest base registered as service contract is
 * considered to be its contract.
 *
 * @export
 * @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.
 * @returns A function.
 */
export declare function AppService({ overridePriority, processingPriority, serviceName, provider, registry }?: {
    overridePriority?: number | Priority;
    processingPriority?: number | Priority;
    serviceName?: string;
    provider?: ((c: Injector) => any) | {};
    registry?: AppServiceInfoRegistry;
}): (type: Type<any>) => void;
