import type { CellType, Cell, ValidationResult } from './types';
import type { FiltersMap } from '@wix/bex-core';
import type { EditableTableState } from './EditableTableState';
export declare class CellValueState<T, F extends FiltersMap> {
    /** Pending invalid cell values, keyed by `${itemId}:${colId}`. */
    readonly _pendingCells: Map<string, {
        value: any;
        errors: string[];
    }>;
    private readonly _parent;
    private readonly _extraCellTypes;
    private _cellTypeMap;
    constructor(parent: EditableTableState<T, F>, extraCellTypes?: Map<string, CellType>);
    _buildCellTypeMap(): void;
    resolveCellTypeByColumnId(columnId: string): CellType;
    getCellDisplayValue(rowKey: string, columnId: string): any;
    getCellValidation(rowKey: string, columnId: string): ValidationResult;
    isCellEditable(rowKey: string, columnId: string): boolean;
    /** Serialize a cell value to a string (for clipboard copy/cut). */
    serializeCellValue(rowKey: string, columnId: string): string;
    /** Clear selected cells (Delete/Backspace). Respects cellType.clearable. */
    clearCells(cells: Cell[]): void;
    toggleCell(rowKey: string, columnId: string): void;
    /** Commit handler — used as callback for CellInteractionState. */
    commitHandler(editingValue: any, cell: Cell): void;
    private _getPendingCell;
    private _pendingCellKey;
    /**
     * Deserialize a raw string to a typed value. Returns an error message
     * if the conversion fails
     */
    tryDeserialize(columnId: string, rawValue: string): {
        value: any;
        error?: string;
    };
    /**
     * Deserialize and apply multiple raw string values in bulk.
     * Handles conversion failures by storing them as pending cells.
     */
    applyBulkRawValues(rawChanges: {
        rowKey: string;
        columnId: string;
        rawValue: string;
    }[]): void;
    /**
     * Apply multiple cell values in bulk. Validates per cell, accumulates
     * changes per row, and submits all modified items in a single update.
     */
    applyBulkValues(changes: {
        rowKey: string;
        columnId: string;
        value: any;
    }[]): void;
    private _applyValue;
}
//# sourceMappingURL=CellValueState.d.ts.map