import type { RecordShape } from 'alinea/core/shape/RecordShape';
export declare function equals(a: any, b: any): boolean;
export declare function computeLcs<T>(a: Array<T>, b: Array<T>, equals: (valueA: T, valueB: T) => boolean): Array<Array<number>>;
export type Change<T> = {
    type: 'addition';
    value: T;
} | {
    type: 'removal';
    value: T;
} | {
    type: 'keep';
    old: T;
    value: T;
};
export declare function diffList<T>(a: Array<T>, b: Array<T>, equals: (a: T, b: T) => boolean): Array<Change<T>>;
export declare function diffRecord(kind: RecordShape, targetA: any, targetB: any): [string, import("alinea/core/Shape").Shape<any, any>][];
