export declare const cacheDistance: (cursor: number) => number; export type WithHistory = { base: T; now: T; timeline: A[]; cursor: number; cache: { value: T; cursor: number; }; }; export declare function performWith(reducer: (data: T, action: A) => T): (data: WithHistory, action: A) => WithHistory; export declare function undoWith(reducer: (data: T, action: A) => T): (data: WithHistory) => WithHistory; export declare function redoWith(reducer: (data: T, action: A) => T): (data: WithHistory) => WithHistory; export declare function freeze(data: WithHistory): WithHistory; export declare function atWith(reducer: (data: T, action: A) => T): (data: WithHistory, cursor: number) => T; export declare function create(data: T): { base: T; cursor: number; cache: { value: T; cursor: number; }; now: T; timeline: never[]; };