import { Abstract } from '../abstract.interface'; import { Scope } from '../scope-options.interface'; import { Type } from '../type.interface'; export declare type Provider = Type | ClassProvider | ValueProvider | FactoryProvider; export interface ClassProvider { provide: string | symbol | Type | Abstract | Function; useClass: Type; scope?: Scope; } export interface ValueProvider { provide: string | symbol | Type | Abstract | Function; useValue: T; } export interface FactoryProvider { provide: string | symbol | Type | Abstract | Function; useFactory: (...args: any[]) => T; inject?: Array | string | any>; scope?: Scope; }