import { default as React } from 'react';
import { EditableCellEditor, CellEditValue, DateRangeValue, CustomEditorProps } from '../../types';
/**
 * Props for the EditableCell component
 */
export default interface IEditableCellProps extends React.PropsWithChildren {
    /**
     * The current value of the cell
     * - text: string
     * - date: string (formatted date) or Date
     * - dateRange: string (formatted) or DateRangeValue
     * - custom: any value
     */
    value: string | Date | DateRangeValue | unknown;
    /**
     * Whether this cell is editable
     */
    isEditable: boolean;
    /**
     * The type of editor to use
     * @default 'text'
     */
    editorType?: EditableCellEditor;
    /**
     * Date format string (for 'date' and 'dateRange' editor types)
     * @default 'dd.MM.yyyy'
     */
    dateFormat?: string;
    /**
     * The full data record for the current row (passed to the custom editor).
     */
    record?: unknown;
    /**
     * The key of the column being edited (passed to the custom editor).
     */
    dataIndex?: string;
    /**
     * Render function for the `custom` editor type. Receives the standardized
     * {@link CustomEditorProps} contract and returns the editor UI.
     */
    renderEditor?: (props: CustomEditorProps<unknown, unknown>) => React.ReactNode;
    /**
     * Callback when save is triggered (blur or Enter).
     * Value type depends on editor type:
     * - text: string
     * - date: Date
     * - dateRange: DateRangeValue
     * - custom: any value
     *
     * May return a promise; when it does, the cell shows a per-cell loading
     * state until it resolves (used by the `custom` editor).
     */
    onSave: (newValue: CellEditValue) => Promise<void> | void;
}
