declare type SkipMarker = Object & {
    _: 'SKIP_MARKER';
};
export declare const SKIP_MARKER: SkipMarker;
export declare type SkipTuple<T> = [SkipMarker, T];
export declare type Skipper<T> = (value: T) => SkipTuple<T>;
export declare function SKIP<T>(value: T): SkipTuple<T>;
declare type JSONPrimitive = number | string | boolean;
declare type JSONArray = JSONValue[];
interface JSONObject {
    [key: string]: JSONValue;
}
declare type JSONValue = JSONPrimitive | JSONObject | JSONArray;
declare type Reducer<T> = (acc: T, value: JSONValue, path?: Array<any>) => T | Skipper<T> | SkipMarker;
declare type CreatePathSegment<K> = (value: JSONValue, index: string | number, outerValue: JSONObject | JSONValue[]) => K;
export declare function reduce<T, K>(value: JSONValue, reducerFn: Reducer<T>, initial: T, createPathSegment?: CreatePathSegment<K>): any;
export declare const withCustomPathSegment: (createPathSegment: any) => (value: any, reducer: any, initial: any) => any;
export {};
