import { Constructor } from "../interfaces"; export interface InjectOptions { lazy?: boolean; } type Setter = (v: T) => void; type Injector = { [k in keyof T]: Setter; }; export class Builder { provides(name: string) { return >(constructor: C) => { return constructor; }; } inject(dependency: K) { return (target: any, memberName: M, descriptor: TypedPropertyDescriptor> ) => { }; } prop(dependency: K) { return (target: any, memberName: M, descriptor: TypedPropertyDescriptor ) => { }; } } export function inject >(dependency: string) { return (target: any, memberName: M, descriptor: TypedPropertyDescriptor ) => { }; }