export declare function required, R extends Record = T, S extends Record = T & R>(source1: Partial, source2: Partial | undefined | null, source3?: Partial | null): T & R & S; export declare function requiredDeep, R extends Record = T, S extends Record = T & R>(source1: Partial, source2: Partial | undefined | null, source3?: Partial | null): T & R & S; /** * Unpartial a partial type. * @type T Type of `base`. If not specified, it will be inferred from `base`. * @param base The base value to fill in needed property if not available in the `partial` value. * @param partial The partial value to be unpartialed. */ export declare function unpartial, R extends Record = Partial>(base: T, partial: R | undefined | null): Exclude extends infer K ? ([K] extends [never] ? { [P in keyof T]: P extends keyof R ? T[P] | Exclude : T[P]; } : { [P in keyof T]: P extends keyof R ? T[P] | Exclude : T[P]; } & Pick) : never; /** * Unpartial a partial type with two base values. * This is useful when you are extending value from another package or code. * That means you have a `parent` value from the original code, * a `base` value where you add additional defaults or override existing one, * and `partial` value from input. * @deprecated please use composition instead: `unpartial(unpartial(a, b), c)` * @type R Type of `base`. This type will be used as the return type. * @param parent The default value from the original code. * @param base The extended default value of your code. * @param partial The input value. */ export declare function unpartial, R extends Record = Partial, S extends Record = Partial>(parent: T, base: R | undefined | null, partial: S | undefined | null): T & R & S; export declare function unpartialRecursively>(base: T, partial: Record | undefined): T; export declare function unpartialRecursively, R extends Record = Record>(superBase: R, base: T | undefined, partial: Record | undefined): T & R; //# sourceMappingURL=index.d.ts.map