import { IBind, IContainer, ResolvableObject } from './interfaces.js'; import { Class, InferClass, InferTypedArray, ResolveResult, ResolveArrayResult, Factory } from './types.js'; import { TypedArray } from './array.js'; /** * App main DI container */ export declare const RootContainer: IContainer; /*** * EVENT LISTENER STUFF * * Allows to use event listener stuff on root container */ export declare function setESMModuleSupport(): void; export declare function on(event: string, listener: (...args: unknown[]) => void): IContainer; export declare function addListener(event: string | symbol, listener: (...args: unknown[]) => void): IContainer; export declare function once(event: string | symbol, listener: (...args: unknown[]) => void): IContainer; export declare function removeListener(event: string | symbol, listener: (...args: unknown[]) => void): IContainer; export declare function off(event: string | symbol, listener: (...args: unknown[]) => void): IContainer; export declare function removeAllListeners(event?: string | symbol): IContainer; export declare function setMaxListeners(n: number): IContainer; export declare function getMaxListeners(): number; export declare function listeners(event: string | symbol): ((...args: any[]) => void)[]; export declare function rawListeners(event: string | symbol): ((...args: any[]) => void)[]; export declare function emit(event: string | symbol, ...args: unknown[]): boolean; export declare function listenerCount(type: string | symbol): number; export declare function prependListener(event: string | symbol, listener: (...args: unknown[]) => void): IContainer; export declare function prependOnceListener(event: string | symbol, listener: (...args: unknown[]) => void): IContainer; export declare function eventNames(): (string | symbol)[]; /** * =========================================================================== */ /** * Clears root container registry and cache. */ export declare function clear(): void; /** * Clears out root registry ( registered types in root container ) */ export declare function clearRegistry(): void; /** * Cleart ous root cache ( all resolved types ) */ export declare function clearCache(): void; export declare function dispose(): Promise; /** * Register class/interface to DI root container. If * @param type - interface object to register * @throws {@link InvalidArgument} if type is null or undefined */ export declare function register(type: Class | Factory | ResolvableObject): IBind; export declare function unregister(type: string | Class | Factory | ResolvableObject): void; export declare function uncache(type: string | Class | TypedArray, parent?: boolean): void; /** * Resolves specified type from root container. * * @param type - class to resolve * @param options - optional parameters passed to class constructor * @param check - use parent container to check when resolving * @throws {@link InvalidArgument} if type is null or undefined */ export declare function resolve(type: string, options?: unknown[], check?: boolean): T; export declare function resolve(type: string, check?: boolean): T; export declare function resolve(type: Class, check?: boolean): ResolveResult; export declare function resolve(type: Class, options?: unknown[] | boolean, check?: boolean): ResolveResult; export declare function resolve(type: TypedArray, check?: boolean): ResolveArrayResult; export declare function resolve(type: TypedArray, options?: unknown[] | boolean, check?: boolean): ResolveArrayResult; export declare function resolve>(type: T, check?: boolean): ResolveResult>; export declare function resolve>(type: T, check?: boolean): ResolveArrayResult>; export declare function resolve>(type: T, options?: unknown[] | boolean, check?: boolean): ResolveResult>; export declare function resolve>(type: T, options?: unknown[] | boolean, check?: boolean): ResolveArrayResult>; /** * Gets already resolved service from root container. * * @param serviceName - name of service to get */ export declare function get(serviceName: TypedArray): T[] | null; export declare function get(serviceName: string | Class): T | null; /** * * Returns list of types registered at given type, eg. all types/services registered under BaseService * * @param type - base type to check */ export declare function getRegisteredTypes(type: string | Class): Class[]; /** * Checks if service is already resolved and exists in container cache. * NOTE: check is only valid for classes that are singletons. * * @param service - service name or class to check */ export declare function has(service: string | Class): boolean; /** * Checks if service is registered in container. * * @param service - service class object to check */ export declare function check(service: Class | string): boolean; /** * Checks if specific service is registered in container. * Eg. we can have multiple drivers registered for queue connections with different protocol implementations * and we want to check if specific driver is registered * * @param source - source class to check ( eg. base class ) * @param type - specific type to check eg. base class implementation */ export declare function checkType(source: Class | string | TypedArray, type: Class | string | TypedArray | object): boolean; /** * Creates child DI container. * */ export declare function child(): IContainer; /** * Injectable module loader seam. When a service is registered under * `__module_loader__` it takes over dynamic module loading entirely. This is * the browser / bundler escape hatch: no `require`, no bare dynamic import of a * file path — a DI-provided loader decides how ( and whether ) to load a module. */ export interface IModuleLoader { load(module: string): Promise; } export declare function __spinajs_require__(module: string): Promise; //# sourceMappingURL=root.d.ts.map