import { OmitType, ValueOf } from '../types'; import { KeysRecursive, PrimitiveRecursive } from './recursive.type'; export declare type ObjectFilter = (k: keyof O, v: ValueOf) => boolean; export declare const filter: (o: O, filter: ObjectFilter) => O; export declare const removeUndefined: (o: O) => OmitType; export declare const getIfDefined: (o: T, key: K, defaultValue?: T[K]) => T[K]; export interface ReduceOptions { init: R; isRecursive?: boolean; } export declare type ReduceReducer = (current: R, key: KeysRecursive, v: PrimitiveRecursive) => R; export declare const reduce: (o: T, reducer: ReduceReducer, initOrOptions: R | ReduceOptions) => R;