import type { RowData } from "@tanstack/react-table";
export type EditablePredicate<TData extends RowData = RowData> = boolean | ((object: TData) => boolean);
/**
* Whether a column declares any editing behavior.
*
* Returns `true` when `editable` is `true` or a predicate function. The
* predicate may still return `false` for individual rows — that decision is
* made per-cell via {@link isCellEditable}. This function answers the
* column-level question used to drive table-wide UI like the bottom edit bar.
*/
export declare function isColumnDeclaredEditable<TData extends RowData>(editable: EditablePredicate<TData> | undefined): boolean;
/**
* Whether a specific cell is editable, given the column's `editable` value
* and the row's object. Used at render time per cell.
*/
export declare function isCellEditable<TData extends RowData>(editable: EditablePredicate<TData> | undefined, object: TData): boolean;
/**
* Whether two cell values are equivalent for the purpose of detecting "no
* actual edit". Treats `null` and `undefined` as the same "empty" state so
* clearing a never-set cell doesn't register as an edit. `""` is kept
* distinct because an empty string can be meaningful data (e.g. a data
* quality signal) and clearing it to null IS an edit.
*/
export declare function cellValuesEqual(a: unknown, b: unknown): boolean;
