export declare type Updates = any; export declare type Source = any; export declare type PathPart = number | string; export declare type Path = PathPart | PathPart[]; export declare type TruePredicate = true | ((a: S) => true); export declare type FalsePredicate = false | ((a: S) => false); export declare type Predicate = boolean | ((arg: S) => boolean); export declare type MergedUpdate = O extends object ? (UpdateReturnType extends object ? object : UpdateReturnType) : UpdateReturnType; export declare type UpdateReturnMap = { [K in keyof T]: UpdateReturnType; }; export declare type UpdateReturnType = U extends (object: any) => any ? ReturnType : U extends object ? UpdateReturnMap : U; export declare type ReturningFunction = (...args: any[]) => any; export declare type ArgumentsType any> = F extends (...args: infer A) => any ? A : never;