import { BaseGridPlugin, PluginDependency } from '../../core/plugin/base-plugin';
import { EditAction, UndoRedoConfig } from './types';
/**
 * Class-based Undo/Redo plugin for tbw-grid.
 *
 * Tracks cell edits and provides undo/redo functionality via keyboard shortcuts
 * or programmatic API.
 */
export declare class UndoRedoPlugin extends BaseGridPlugin<UndoRedoConfig> {
    /**
     * Plugin dependencies - UndoRedoPlugin requires EditingPlugin to track edits.
     *
     * The EditingPlugin must be loaded BEFORE this plugin in the plugins array.
     */
    static readonly dependencies: PluginDependency[];
    readonly name = "undoRedo";
    protected get defaultConfig(): Partial<UndoRedoConfig>;
    private undoStack;
    private redoStack;
    /**
     * Clean up state when plugin is detached.
     */
    detach(): void;
    /**
     * Handle keyboard shortcuts for undo/redo.
     * - Ctrl+Z / Cmd+Z: Undo
     * - Ctrl+Y / Cmd+Y / Ctrl+Shift+Z / Cmd+Shift+Z: Redo
     */
    onKeyDown(event: KeyboardEvent): boolean;
    /**
     * Record a cell edit for undo/redo tracking.
     * Call this when a cell value changes.
     *
     * @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
     */
    recordEdit(rowIndex: number, field: string, oldValue: unknown, newValue: unknown): void;
    /**
     * Programmatically undo the last action.
     *
     * @returns The undone action, or null if nothing to undo
     */
    undo(): EditAction | null;
    /**
     * Programmatically redo the last undone action.
     *
     * @returns The redone action, or null if nothing to redo
     */
    redo(): EditAction | null;
    /**
     * Check if there are any actions that can be undone.
     */
    canUndo(): boolean;
    /**
     * Check if there are any actions that can be redone.
     */
    canRedo(): boolean;
    /**
     * Clear all undo/redo history.
     */
    clearHistory(): void;
    /**
     * Get a copy of the current undo stack.
     */
    getUndoStack(): EditAction[];
    /**
     * Get a copy of the current redo stack.
     */
    getRedoStack(): EditAction[];
}
//# sourceMappingURL=UndoRedoPlugin.d.ts.map