import type { AbstractClassType, ClassType } from '../types'; export type Token = string | symbol | number | bigint | boolean | ClassType | AbstractClassType | Function; export type ProviderScope = 'singleton' | 'transient' | 'request' | 'http'; export type ClassProvider = { provide: Token; useClass: ClassType; scope?: ProviderScope; }; export type ValueProvider = { provide: Token; useValue: T; }; export type ExistingProvider = { provide: Token; useExisting: Token; }; export type FactoryProvider = { provide: Token; useFactory: (...args: any[]) => T | Promise; deps?: Token[]; scope?: ProviderScope; }; export type TargetFactoryProvider = { provide: Token; useTargetFactory: (target: ClassType | undefined, ...args: any[]) => T | Promise; deps?: Token[]; scope?: ProviderScope; }; export type StructuredProvider = ClassProvider | ValueProvider | ExistingProvider | FactoryProvider | TargetFactoryProvider; export type Provider = ClassType | Function | StructuredProvider; export declare function isStructuredProvider(provider: Provider): provider is StructuredProvider; export declare function getProviderToken(provider: Provider): Token; export declare function getProviderScope(provider: Provider): ProviderScope; //# sourceMappingURL=provider.d.ts.map