import type { ModulesMap } from '../agent/AgentModules'; import type { MessageHandler } from '../agent/MessageHandler'; import type { Constructor } from '../utils/mixins'; import type { DependencyContainer } from 'tsyringe'; import { InjectionToken } from 'tsyringe'; export { InjectionToken }; export declare class DependencyManager { readonly container: DependencyContainer; readonly registeredModules: ModulesMap; constructor(container?: DependencyContainer, registeredModules?: ModulesMap); registerModules(modules: ModulesMap): void; registerMessageHandlers(messageHandlers: MessageHandler[]): void; registerSingleton(from: InjectionToken, to: InjectionToken): void; registerSingleton(token: Constructor): void; resolve(token: InjectionToken): T; registerInstance(token: InjectionToken, instance: T): void; isRegistered(token: InjectionToken): boolean; registerContextScoped(token: Constructor): void; registerContextScoped(token: InjectionToken, provider: Constructor): void; /** * Dispose the dependency manager. Calls `.dispose()` on all instances that implement the `Disposable` interface and have * been constructed by the `DependencyManager`. This means all instances registered using `registerInstance` won't have the * dispose method called. */ dispose(): Promise; createChild(): DependencyManager; }