import type { UseFormReturn } from 'react-hook-form';
import type { ColumnDef, DataType, TableCellIndex } from './types.js';
/**
 * Get the title of a column.
 *
 * @param column - The column to get the title of.
 * @returns The title of the column.
 *
 * @example
 * ```ts
 * const title = getColumnTitle({ field: "name" }) // "Name"
 * const title = getColumnTitle({ field: "address.city" }) // "City"
 * const title = getColumnTitle({ field: "address.code", title: "Country" }) // "Country"
 * ```
 */
export declare const getColumnTitle: <T extends DataType = DataType>(column: ColumnDef<T>) => string;
/**
 * Get the value of a column from a data object using dot notation.
 *
 * @param value - The data object.
 * @param field - The field to get the value of. It can be a dot notation string.
 * @returns The value of the field or undefined if the field is not found.
 *
 * @example
 * ```ts
 * const value = {
 *  name: "John",
 *  address: {
 *    city: "San Francisco",
 *  }
 * }
 *
 * getColumnValue(value, "name") // "John"
 * getColumnValue(value, "address.city") // "San Francisco"
 * getColumnValue(value, "address.country") // undefined
 * getColumnValue(value, "address") // { city: "San Francisco" }
 * ```
 */
export declare const getColumnValue: (value: DataType, field: string) => unknown;
export type NextSelectedCellDirection = 'right' | 'left' | 'down' | 'up';
interface GetNextSelectedCellOptions {
    /**
     * The direction to move the selected cell.
     */
    direction: NextSelectedCellDirection;
    /**
     * The current cell.
     */
    currentCell: TableCellIndex | null;
    /**
     * The number of rows in the table.
     */
    rowCount: number;
    /**
     * The number of columns in the table.
     */
    columnCount: number;
    /**
     * Whether to move to the next row when the current cell is at the last column.
     */
    moveToNextRow?: boolean;
}
/**
 * Get the next selected cell based on the direction and the current cell.
 *
 * @param options - The options for the next selected cell.
 * @returns The next selected cell.
 *
 * @example
 * ```ts
 * const nextCell = getNextSelectedCell({ direction: "right", currentCell: { row: 0, column: 0 }, rowCount: 3, columnCount: 3 });
 * ```
 */
export declare const getNextSelectedCell: (options: GetNextSelectedCellOptions) => TableCellIndex;
/**
 * Get the direction from a key.
 *
 * @param key - The key to get the direction from.
 * @returns The direction.
 */
export declare const getDirectionFromKey: (key: string) => NextSelectedCellDirection;
/**
 * Check if two cells are equal.
 *
 * @param cell1 - The first cell.
 * @param cell2 - The second cell.
 * @returns True if the cells are equal, false otherwise.
 */
export declare const isCellEqual: (cell1: TableCellIndex | null, cell2: TableCellIndex | null) => boolean;
/**
 * Create form references for the for of the editable cells in the table.
 *
 * @param rowCount - The number of rows in the table.
 * @param columnDefs - The column definitions.
 * @returns The form references.
 */
export declare const createFormReferences: <T extends DataType = DataType>(rowCount: number, columnDefs: Array<ColumnDef<T>>) => Array<Array<React.RefObject<UseFormReturn> | null>>;
export {};
//# sourceMappingURL=utils.d.ts.map