import { type Token, type Type } from '@frontmcp/di'; import { type ProviderMetadata, type ProviderRecord, type ProviderScope } from '../common'; /** * Shape for provider input items (used during normalization). * Supports both class-based providers and configuration objects. */ interface ProviderLike { provide?: Token; useClass?: Type; useValue?: unknown; useFactory?: (...args: unknown[]) => unknown; inject?: () => readonly Token[]; name?: string; scope?: ProviderScope; description?: string; id?: string; metadata?: ProviderMetadata; } export declare function normalizeProvider(item: Type | ProviderLike): ProviderRecord; /** * For graph/cycle detection. Returns dependency tokens that should be graphed. * - VALUE: no deps * - FACTORY: only includes deps that are registered (others will be resolved ad-hoc) * - CLASS / CLASS_TOKEN: deps come from the class constructor or static with(...) */ export declare function providerDiscoveryDeps(rec: ProviderRecord, tokens: Set, depsOfClass: (klass: any, phase: 'discovery' | 'invocation') => Token[]): Token[]; /** * For invocation time. Returns full dependency tokens list that must be resolved. */ export declare function providerInvocationTokens(rec: ProviderRecord, depsOfClass: (klass: any, phase: 'invocation' | 'discovery') => Token[]): Token[]; export {}; //# sourceMappingURL=provider.utils.d.ts.map