import type { RecordProvide } from './Container.h'; import type { Provider, ProviderDeps, ProvideDepsIterator } from './Provider'; import type { BaseTokenInterface, MultiTokenInterface, BaseOptionalTokenDependency, MultiOptionalTokenDependency, OptionalTokenDependency } from './createToken/createToken'; import { ModuleWalker } from './modules/ModuleWalker'; import type { ExtendedModule, ModuleType } from './modules/module.h'; type UsedMultiProviderMap = Map, /* token name */ string>; /** * Маркер, который указывает, что значение еще не создано. Для проверки по ссылке. */ export declare const NOT_YET = "__NOT_YET__MARKER"; export declare class Container { /** * Список c записями инстансов провайдеров */ protected records: Map>; protected recordValues: Map, any>; private readonly fallback?; protected usedMultiProvider: UsedMultiProviderMap; protected modulesToResolve: Set; __moduleWalker: ModuleWalker; constructor(initialProviders?: Provider[], fallback?: Container); constructor(options?: { modules?: (ModuleType | ExtendedModule)[]; providers?: Provider[]; }, fallback?: Container); initialize({ modules, providers, }?: { modules?: (ModuleType | ExtendedModule)[]; providers?: Provider[]; }): void; get(obj: { token: BaseTokenInterface; optional: true; multi?: false; }): T | null; get(obj: { token: BaseTokenInterface; optional?: false; multi?: false; }): T; get(obj: { token: MultiTokenInterface; optional: true; multi?: true; }): T[] | null; get(obj: { token: MultiTokenInterface; optional?: false; multi?: true; }): T[]; get(obj: BaseOptionalTokenDependency): T | null; get(obj: MultiOptionalTokenDependency): T[] | null; get(obj: OptionalTokenDependency): T[] | T | null; get(token: BaseTokenInterface): T; get(token: MultiTokenInterface): T[]; get(token: T): T; getOfDeps(deps: T): ProvideDepsIterator; getRecord(token: symbol): RecordProvide | undefined; has(token: any): boolean; borrowToken(from: Container, token: any): void; getValue(record: RecordProvide): T | typeof NOT_YET; register(provider: Provider): void; /** * Обработка различных видов провайдеров */ processProvider(provider: Provider): void; prepareModules(modules: (ModuleType | ExtendedModule)[]): void; resolveModules(): void; registerModules(modules: (ModuleType | ExtendedModule)[]): void; protected hydrateDeps(record: RecordProvide): ProvideDepsIterator>; protected hydrate(record: RecordProvide, token: symbol, optional: boolean): T | null; } export {}; //# sourceMappingURL=Container.d.ts.map