import { EditAction, UndoRedoState } from './types';
/**
 * Push a new action onto the undo stack.
 * Clears the redo stack since new actions invalidate redo history.
 *
 * @param state - Current undo/redo state
 * @param action - The action to add
 * @param maxSize - Maximum history size
 * @returns New state with the action added
 */
export declare function pushAction(state: UndoRedoState, action: EditAction, maxSize: number): UndoRedoState;
/**
 * Undo the most recent action.
 * Moves the action from undo stack to redo stack.
 *
 * @param state - Current undo/redo state
 * @returns New state and the action that was undone (or null if nothing to undo)
 */
export declare function undo(state: UndoRedoState): {
    newState: UndoRedoState;
    action: EditAction | null;
};
/**
 * Redo the most recently undone action.
 * Moves the action from redo stack back to undo stack.
 *
 * @param state - Current undo/redo state
 * @returns New state and the action that was redone (or null if nothing to redo)
 */
export declare function redo(state: UndoRedoState): {
    newState: UndoRedoState;
    action: EditAction | null;
};
/**
 * Check if there are any actions that can be undone.
 *
 * @param state - Current undo/redo state
 * @returns True if undo is available
 */
export declare function canUndo(state: UndoRedoState): boolean;
/**
 * Check if there are any actions that can be redone.
 *
 * @param state - Current undo/redo state
 * @returns True if redo is available
 */
export declare function canRedo(state: UndoRedoState): boolean;
/**
 * Clear all history, returning an empty state.
 *
 * @returns Fresh empty state
 */
export declare function clearHistory(): UndoRedoState;
/**
 * Create a new edit action with the current timestamp.
 *
 * @param rowIndex - The row index where the edit occurred
 * @param field - The field (column key) that was edited
 * @param oldValue - The value before the edit
 * @param newValue - The value after the edit
 * @returns A new EditAction object
 */
export declare function createEditAction(rowIndex: number, field: string, oldValue: unknown, newValue: unknown): EditAction;
//# sourceMappingURL=history.d.ts.map