@elsikora/cladi
Version:
Zero-dependency TypeScript DI toolkit with typed tokens and scoped lifecycles.
15 lines • 1.13 kB
TypeScript
import type { IClassProvider } from '../../../../domain/interface/index';
import type { Constructor, Token } from '../../../../domain/type/index';
import type { ICreateAutowireProviderOptions } from '../../interface/index';
/**
* Creates autowired provider using token defined in injectable metadata.
* @param {Constructor<T>} useClass Class constructor to instantiate.
* @param {Omit<ICreateAutowireProviderOptions<T, TDependencies>, "token">} [options] Optional provider overrides.
* @returns {IClassProvider<T, TDependencies>} Class provider definition.
* @template T Provider instance type.
* @template TDependencies Constructor dependency tokens.
*/
export declare function autowire<T, TDependencies extends ReadonlyArray<Token<unknown>> = ReadonlyArray<Token<unknown>>>(useClass: Constructor<T, number extends TDependencies["length"] ? Array<never> : {
[Index in keyof TDependencies]: TDependencies[Index] extends Token<infer TValue> ? TValue : never;
}>, options?: Omit<ICreateAutowireProviderOptions<T, TDependencies>, "token">): IClassProvider<T, TDependencies>;
//# sourceMappingURL=autowire.utility.d.ts.map