import {Constructor} from './types.js'; import {FindServicePredicate, ServiceContainer} from './service-container.js'; /** * Service class name. */ export const SERVICE_CLASS_NAME: 'Service'; /** * Service. */ export declare class Service { /** * Kind. */ static readonly kinds: string[]; /** * Container. */ container: ServiceContainer; /** * Constructor. * * @param container */ constructor(container?: ServiceContainer); /** * Получить существующий или новый экземпляр. * * @param ctor * @param args */ getService( ctor: Constructor, ...args: any[], ): T; /** * Получить существующий или новый экземпляр, * только если конструктор зарегистрирован. * * @param ctor * @param args */ getRegisteredService( ctor: Constructor, ...args: any[], ): T; /** * Проверка существования конструктора в контейнере. * * @param ctor */ hasService( ctor: Constructor, ): boolean; /** * Добавить конструктор в контейнер. * * @param ctor * @param args */ addService( ctor: Constructor, ...args: any[], ): this; /** * Добавить конструктор и создать экземпляр. * * @param ctor * @param args */ useService( ctor: Constructor, ...args: any[], ): this; /** * Добавить конструктор и связанный экземпляр. * * @param ctor * @param service */ setService( ctor: Constructor, service: T, ): this; /** * Найти сервис удовлетворяющий условию. * * @param predicate * @param noParent */ findService( predicate: FindServicePredicate, noParent?: boolean, ): T | undefined; }