export type HistoryState<T> = Readonly<{
    past: readonly T[];
    present: T;
    future: readonly T[];
}>;
export declare function createHistoryState<T>(present: T): HistoryState<T>;
export declare function pushHistoryEntry<T>(state: HistoryState<T>, nextPresent: T, options: {
    equals: (left: T, right: T) => boolean;
    maxEntries?: number;
}): HistoryState<T>;
export declare function replaceHistoryPresent<T>(state: HistoryState<T>, nextPresent: T, equals: (left: T, right: T) => boolean): HistoryState<T>;
export declare function mapHistoryState<T>(state: HistoryState<T>, mapper: (value: T) => T): HistoryState<T>;
export declare function undoHistory<T>(state: HistoryState<T>): HistoryState<T>;
export declare function redoHistory<T>(state: HistoryState<T>): HistoryState<T>;
export declare function canUndoHistory<T>(state: HistoryState<T>): boolean;
export declare function canRedoHistory<T>(state: HistoryState<T>): boolean;
export * from './editorSnapshot';
