import type { Token } from '../../utils/types.js'; import type { AliasProvider } from './AliasProvider.js'; import type { ClassProvider } from './ClassProvider.js'; import type { FactoryProvider } from './FactoryProvider/FactoryProvider.js'; import type { InstanceProvider } from './InstanceProvider.js'; export type Provider = ClassProvider | InstanceProvider | FactoryProvider | AliasProvider; export interface ProviderFactory { create(...args: unknown[]): Provider; } export interface ProviderResolver { canResolve(provider: Provider): boolean; resolve(provider: Provider, token: Token): V; }