export interface IValueChange {
    previousValue: any;
    currentValue: any;
}
/**
 * This function takes a source object with a prioritized list of changes. Goes through and detects the changes on every one of these structures and builds
 * a new object that respects immutability and updates object references only where necessary. This is used to merge lasagna overlays into a component state
 * that maintains its immutability and high performance of change detection.
 *
 * @param result
 * @param changes
 */
export declare function mergeChanges<T>(result: T, ...changes: IValueChange[]): T;
