import { GridCellValidator, GridCellValidationError, GridEditChangeset } from '../models'; import * as i0 from "@angular/core"; export interface EditCommand { type: 'cell-edit' | 'row-delete' | 'row-add' | 'cell-clear'; rowIndex: number; field?: string; previousValue?: unknown; newValue?: unknown; row?: Record; } export declare class GridEditService { readonly isEditing: import("@angular/core").WritableSignal; readonly editingRowIndex: import("@angular/core").WritableSignal; readonly draftValues: import("@angular/core").WritableSignal>>; readonly dirtyFields: import("@angular/core").WritableSignal>>; readonly deletedRows: import("@angular/core").WritableSignal>; readonly validationErrors: import("@angular/core").WritableSignal; private undoStack; private redoStack; readonly canUndo: import("@angular/core").WritableSignal; readonly canRedo: import("@angular/core").WritableSignal; readonly undoStackSize: import("@angular/core").WritableSignal; readonly maxUndoDepth = 50; readonly hasDirtyChanges: import("@angular/core").Signal; beginEdit(rowIndex: number): void; updateDraft(rowIndex: number, field: string, value: unknown): void; getDraftValue(rowIndex: number, field: string): unknown | undefined; saveEdit(rowIndex: number): void; cancelEdit(): void; markCellDirty(rowIndex: number, field: string, originalValue: unknown, newValue: unknown): void; deleteRow(rowIndex: number): void; isRowDirty(rowIndex: number): boolean; isFieldDirty(rowIndex: number, field: string): boolean; isRowDeleted(rowIndex: number): boolean; getChangeset>(originalData: T[]): GridEditChangeset; discardAllChanges(): void; pushCommand(command: EditCommand): void; undo(): EditCommand | null; redo(): EditCommand | null; private updateUndoRedoState; validateCell(value: unknown, row: Record, validators: GridCellValidator[]): GridCellValidationError[]; validateAll>(data: T[], columns: { field: string; validators?: GridCellValidator[]; }[]): GridCellValidationError[]; static ɵfac: i0.ɵɵFactoryDeclaration; static ɵprov: i0.ɵɵInjectableDeclaration; }