import { Dict } from './types';
/** Removes keys from an object if their value is undefined. */
export declare function filterUndefined<T = Dict>(object: T): Partial<Dict<T>>;
/**
 * Recursively deep merges two objects in an immutable fashion, following these rules:
 * - Key exists in target and both keys are objects => merge
 * - Key exists in target and both keys are arrays => concat (not unique)
 * - Key isn't an object, an array or doesn't exist in target => override
 */
export declare function merge<S1 extends Dict>(s1: S1): S1;
export declare function merge<S1 extends Dict, S2 extends Dict>(s1: S1, s2: S2): S1 & S2;
export declare function merge<S1 extends Dict, S2 extends Dict, S3 extends Dict>(s1: S1, s2: S2, s3: S3): S1 & S2 & S3;
export declare function merge<S1 extends Dict, S2 extends Dict, S3 extends Dict, S4 extends Dict>(s1: S1, s2: S2, s3: S3, s4: S4): S1 & S2 & S3 & S4;
/**
 * Returns the items of an object that meet the condition specified in a callback function.
 */
export declare function objectFilter<T extends Dict, K extends keyof T>(object: T, fn: (value: any, key: string, object: T) => boolean): Partial<T>;
//# sourceMappingURL=object.d.ts.map