export declare class InjectionToken { readonly uniqueKey: string | symbol; readonly many?: ManyType | undefined; readonly sync: 'async' | 'sync'; readonly automatic: boolean; constructor(uniqueKey: string | symbol, many?: ManyType | undefined, sync?: 'async' | 'sync', automatic?: boolean); protected readonly brand: T | undefined; } export declare type AnyInjectionToken = InjectionToken; export declare type OfToken = { [K in keyof A]: InjectionToken; }; export declare type OrToken = { [K in keyof A]: A[K] | InjectionToken; }; export declare type ValueProvider = ManyType extends 'many' ? { provide: InjectionToken; useValue: T; many: true; } : { provide: InjectionToken; useValue: T; many?: false; }; export declare type BasicClassProvider = ManyType extends 'many' ? { provide: InjectionToken; useClass: new (...dependencies: D) => T; many?: boolean; async?: boolean; } : { provide: InjectionToken; useClass: new (...dependencies: D) => T; many?: false; async?: boolean; }; export declare type InjectedClassProvider = ManyType extends 'many' ? { provide: InjectionToken; useClass: new (...dependencies: D) => T; deps: OrToken; many?: boolean; async?: boolean; } : { provide: InjectionToken; useClass: new (...dependencies: D) => T; deps: OrToken; many?: false; async?: boolean; }; export declare type ClassProvider = BasicClassProvider | InjectedClassProvider; export declare type BasicFactoryProvider = ManyType extends 'many' ? { provide: InjectionToken; useFactory: () => T; many?: boolean; } : { provide: InjectionToken; useFactory: () => T; many?: false; }; export declare type InjectedFactoryProvider = ManyType extends 'many' ? { provide: InjectionToken; useFactory: (...dependencies: D) => T; deps: OrToken; many?: boolean; async?: boolean; } : { provide: InjectionToken; useFactory: (...dependencies: D) => T; deps: OrToken; many?: false; async?: boolean; }; export declare type FactoryProvider = BasicFactoryProvider | InjectedFactoryProvider; export declare type Provider = ClassProvider | FactoryProvider | ValueProvider;