export declare class InjectionToken { private readonly desc; constructor(desc: string); toString(): string; } export interface Type> extends Function { new (...args: any[]): T; } export interface ValueProvider { provide: Token; useValue: T; } export interface FactoryProvider> = any[]> { provide: Token; useFactory: (...args: Deps) => T; deps?: Deps; } export interface ClassProvider { provide: Token; useClass: Type; } export interface ExistingProvider { provide: Token; useExisting: Token; } export type Token = Type | InjectionToken; export type Provider = Type | ValueProvider | ClassProvider | ExistingProvider | FactoryProvider;