import type { PrimaryKeyType } from '../../../../utils/primary-key';
import type { DragType } from '../drag-utils';
import type { PinnedColumnModel } from '../drag-utils';
export interface DraggableRowProps {
    row: any;
    virtualRow: any;
    rowHeight: 'low' | 'medium' | 'high';
    selectedColumnId: string | null;
    colorFillRules: any[];
    widthMap: Record<string, number>;
    dataModel: any;
    isEditing: (rowId: string, columnId: string) => boolean;
    handleCellClick: (rowId: string, columnId: string, value: any, originalRow: any, e: React.MouseEvent) => void;
    renderCellContent: (cell: any, cellValue: any, rowIndex: number, originalRow: any) => React.ReactNode;
    currentDragType?: DragType;
    handleSubmit: (columnId: string, row: any) => Promise<boolean>;
    form: any;
    /** 是否显示序号列 */
    showIndex?: boolean;
    /** 当前行的序号（从1开始） */
    rowIndex?: number;
    /** 是否启用行选择（多选框） */
    rowSelectionEnabled?: boolean;
    /** 当前行是否被选中 */
    isRowSelected?: boolean;
    /** 当前行是否禁用选择 */
    isRowDisabled?: boolean;
    /** 选择类型：single-单选, multiple-多选 */
    selectionType?: 'single' | 'multiple';
    /** 行选择变化回调 */
    onRowSelectChange?: (rowId: string, selected: boolean) => void;
    /** 固定列模型（偏移、z-index 等共享派生数据） */
    pinnedModel?: PinnedColumnModel;
    /** 是否有操作列 */
    hasOperateColumn?: boolean;
    /** 操作列渲染函数 */
    renderOperateCell?: (record: any, index: number) => React.ReactNode;
    /** 操作列宽度 */
    operateColumnWidth?: number;
    /** 虚拟滚动测量元素函数 */
    measureElement?: (element: Element | null) => void;
    /** 主键字段名或取值函数，用于获取行的唯一标识 */
    primaryKey?: PrimaryKeyType;
    /** 是否是分组中的最后一行（用于分组表格圆角效果） */
    isLastInGroup?: boolean;
    /** 是否正在智能跟单中（用于显示特殊边框样式） */
    isSmartFollowRunning?: boolean;
    /** 当前选中的单元格（专业版非编辑态下的选中状态） */
    selectedCell?: {
        rowId: string | number;
        columnId: string;
    } | null;
}
/** 行选择相关的 Props */
export interface RowSelectionProps {
    /** 是否启用行选择 */
    hasSelect?: boolean;
    /** 当前选中的行 keys */
    selectKeys?: string[];
    /** 设置选中的行 */
    setSelectKeys?: (...args: any[]) => void;
    /** 选择类型：single-单选, multiple-多选 */
    selectionType?: 'single' | 'multiple';
    /** 判断行是否禁用选择 */
    isDisabled?: (record: any, index: number) => boolean;
    /** 主键字段名或取值函数 */
    primaryKey?: PrimaryKeyType;
}
