export type IBuilder = { [k in keyof T]-?: ((arg: T[k]) => IBuilder) & (() => T[k]); } & { build(): T; }; type Clazz = new (...args: unknown[]) => T; /** * Create a Builder for a class. Returned objects will be of the class type. * * e.g. let obj: MyClass = Builder(MyClass).setA(5).setB("str").build(); * * @param type the name of the class to instantiate. * @param template optional class partial which the builder will derive initial params from. * @param override optional class partial which the builder will override params from when calling build(). */ export declare function Builder(type: Clazz, template?: Partial | null, override?: Partial | null): IBuilder; /** * Create a Builder for an interface. Returned objects will be untyped. * * e.g. let obj: Interface = Builder().setA(5).setB("str").build(); * * @param template optional partial object which the builder will derive initial params from. * @param override optional partial object which the builder will override params from when calling build(). */ export declare function Builder(template?: Partial | null, override?: Partial | null): IBuilder; export {};