import type { FallbackCache, InjectorCache } from './cache'; import type { InjectedClass } from './inject'; import { InjectionToken } from './providers'; import type { AnyInjectionToken, Provider } from './providers'; export declare class Injector implements FallbackCache { private readonly cache; private static readonly injector; static get(token: InjectedClass | InjectionToken): T | undefined; static getMany(token: InjectedClass | InjectionToken): T[]; static has(token: InjectedClass | InjectionToken): boolean; static require(token: InjectedClass | InjectionToken): T extends undefined ? never : T; static requireAsync(token: InjectedClass | InjectionToken): Promise; static provide(provider: Provider): void; static remove(token: AnyInjectionToken): void; static reset(): void; static keys(): IterableIterator; constructor(cache: InjectorCache); private readonly providerCallbacks; private verifyDeps; private requireDepAsync; private requireDep; private provideCache; private provideValue; private provideFactory; private provideFactoryWithDeps; private provideStaticFactory; private provideClass; private provideClassWithDeps; private provideStaticClass; get(token: InjectedClass | InjectionToken): T | undefined; getMany(token: InjectedClass | InjectionToken): T[]; has(token: InjectedClass | InjectionToken): boolean; require(token: InjectedClass | InjectionToken): T extends undefined ? never : T; requireAsync(token: InjectedClass | InjectionToken): Promise; provide(provider: Provider): void; remove(token: AnyInjectionToken): void; reset(): void; keys(): IterableIterator; }