import { ArrayLike } from 'zrender/esm/core/types';
export declare type DiffKeyGetter = (this: DataDiffer, value: unknown, index: number) => string;
export declare type DiffCallbackAdd = (newIndex: number) => void;
export declare type DiffCallbackUpdate = (newIndex: number, oldIndex: number) => void;
export declare type DiffCallbackRemove = (oldIndex: number) => void;
declare class DataDiffer<Ctx = unknown> {
    private _old;
    private _new;
    private _oldKeyGetter;
    private _newKeyGetter;
    private _add;
    private _update;
    private _remove;
    readonly context: Ctx;
    constructor(oldArr: ArrayLike<unknown>, newArr: ArrayLike<unknown>, oldKeyGetter?: DiffKeyGetter, newKeyGetter?: DiffKeyGetter, context?: Ctx);
    add(func: DiffCallbackAdd): DataDiffer;
    update(func: DiffCallbackUpdate): DataDiffer;
    remove(func: DiffCallbackRemove): DataDiffer;
    execute(): void;
    private _initIndexMap;
}
export default DataDiffer;
