import { Type } from "./type.interface"; export declare class InjectionToken { injectionIdentifier: string; constructor(injectionIdentifier: string); } export declare type Factory = () => T; export declare type Token = Type | InjectionToken; export interface BaseProvider { provide: Token; } export interface ClassProvider extends BaseProvider { provide: Token; useClass: Type; } export interface ClassSingletonProvider extends BaseProvider { provide: Token; useSingleton: Type; instance?: T; } export interface ValueProvider extends BaseProvider { provide: Token; useValue: T; } export interface FactoryProvider extends BaseProvider { provide: Token; useFactory: Factory; } export declare type Provider = ClassProvider | ClassSingletonProvider | ValueProvider | FactoryProvider; export declare function isClassProvider(provider: BaseProvider): provider is ClassProvider; export declare function isClassSingletonProvider(provider: BaseProvider): provider is ClassSingletonProvider; export declare function isValueProvider(provider: BaseProvider): provider is ValueProvider; export declare function isFactoryProvider(provider: BaseProvider): provider is FactoryProvider;