import type { ServiceLifetime, ServiceProvider, Interfaceable, ServiceDependency, ResolveDependencies } from '../types'; declare type AnyDep = ServiceDependency>; declare type FactoryProviderOptions = { /** The provider name for debugging purpose */ name?: string; /** The interfaces of the required dependencies */ deps?: Deps; /** The lifetime of the instance, default to 'transient' */ lifetime?: ServiceLifetime; }; declare type FactoryFn = (...args: ResolveDependencies) => T; declare type ProviderFn = ServiceProvider & ((...args: ResolveDependencies) => T); declare function makeFactoryProvider(opts: FactoryProviderOptions<[A]>): (factory: FactoryFn) => ProviderFn; declare function makeFactoryProvider(opts: FactoryProviderOptions<[A, B]>): (factory: FactoryFn) => ProviderFn; declare function makeFactoryProvider(opts: FactoryProviderOptions<[A, B, C]>): (factory: FactoryFn) => ProviderFn; declare function makeFactoryProvider(opts: FactoryProviderOptions<[A, B, C, D]>): (factory: FactoryFn) => ProviderFn; declare function makeFactoryProvider(opts: FactoryProviderOptions<[A, B, C, D, E]>): (factory: FactoryFn) => ProviderFn; declare function makeFactoryProvider(opts: FactoryProviderOptions<[A, B, C, D, E, F]>): (factory: FactoryFn) => ServiceProvider; declare function makeFactoryProvider(opts: FactoryProviderOptions<[A, B, C, D, E, F, G]>): (factory: FactoryFn) => ProviderFn; declare function makeFactoryProvider(opts: FactoryProviderOptions<[A, B, C, D, E, F, G, H]>): (factory: FactoryFn) => ProviderFn; declare function makeFactoryProvider(opts: FactoryProviderOptions<[A, B, C, D, E, F, G, H, I]>): (factory: FactoryFn) => ProviderFn; declare function makeFactoryProvider(opts: FactoryProviderOptions<[A, B, C, D, E, F, G, H, I, J]>): (factory: FactoryFn) => ProviderFn; export default makeFactoryProvider;