type UndefinedKeys = { [K in keyof T]: undefined extends T[K] ? K : never; }[keyof T]; type OptionalObject = Omit> & Partial>> extends infer R ? { [K in keyof R]: Exclude } : never; declare namespace rAssign { type TransformFunction = ( value?: unknown, key?: string, source?: unknown ) => T; type TransformSchema = { [key in keyof T]: TransformFunction; }; type InferType = OptionalObject<{ [key in keyof S]: ReturnType; }>; } /** * Assign object properties and transform result based on the provided schema */ declare function rAssign< S extends rAssign.TransformSchema >(schema: S, ...sources: unknown[]): rAssign.InferType; export = rAssign;