import { ServiceIdentifier, Provider, ProviderScope } from './types'; export interface InjectorOptions { name?: string; injectorScope?: ProviderScope; defaultProviderScope?: ProviderScope; hooks?: string[]; initialProviders?: Provider[]; children?: Injector[]; } export declare class Injector { private options; private _classMap; private _factoryMap; private _applicationScopeInstanceMap; private _sessionScopeInstanceMap; private _applicationScopeServiceIdentifiers; private _requestScopeServiceIdentifiers; private _sessionScopeServiceIdentifiers; private _hookServiceIdentifiersMap; private _name; private _injectorScope; private _defaultProviderScope; private _hooks; private _initialProviders; private _children; onInstanceCreated: (arg?: { serviceIdentifier: ServiceIdentifier; instance: T; }) => any; constructor(options?: InjectorOptions); addChild(...children: Injector[]): void; removeChild(...children: Injector[]): void; hasChild(child: Injector): boolean; private getScopeInstanceMap; provide(provider: Provider): void; has(serviceIdentifier: ServiceIdentifier): boolean; remove(serviceIdentifier: ServiceIdentifier): void; get scopeServiceIdentifiers(): ServiceIdentifier[]; get(serviceIdentifier: ServiceIdentifier, dependencyIndex?: number): T; private _sessionSessionInjectorMap; hasSessionInjector(session: Session): boolean; getSessionInjector(session: Session): Injector; destroySessionInjector(session: Session): boolean; call any, ThisArg>(fn: Fn, thisArg: ThisArg): ReturnType; hasHook(hook: string): Promise; callHookWithArgs({ async, ...options }: { hook: string; args: Args; instantiate: boolean; async: boolean; }): {}; callHookWithArgsSync({ hook, args, instantiate }: { hook: string; args: Args; instantiate: boolean; }): {}; callHookWithArgsAsync({ hook, args, instantiate }: { hook: string; args: Args; instantiate: boolean; }): Promise<{}>; }