/**
 * primaryKey 相关工具方法
 * 提供行唯一标识的类型定义、默认值、安全取值与统一比较函数
 */
/**
 * 主键字段名默认值
 * 当用户未通过 props / 低代码配置 / 服务端响应指定 primaryKey 时，使用此默认值
 */
export declare const DEFAULT_PRIMARY_KEY = "id";
/** primaryKey 支持字符串字段名或自定义取值函数 */
export type PrimaryKeyType = string | ((record: any) => string | number);
/**
 * @deprecated 推荐根据场景改用更明确的 API：
 * - 渲染（React key / Set / Map）→ {@link getRowKeyId}
 * - 服务端上送 / 持久化 / 拖拽身份 → {@link getRowKeyStrict}
 * - 持有 dataModel 的场景 → `dataModel.getRowKey` / `dataModel.getRowKeyStrict` / `dataModel.getRowKeyId`
 *
 * 保留原因：仍有部分纯函数 / 渲染层调用点需要 rowIndex 兜底，避免一次性硬切引入回归。
 *
 * 从一条 record 中安全地提取行唯一标识。
 *
 * 优先级：
 * 1. primaryKey 为函数 → primaryKey(record)
 * 2. primaryKey 为字符串 → record[primaryKey]
 * 3. 以上结果为 null / undefined → String(rowIndex) 兜底
 *
 * Falsy 规则：`0` / `false` / `''` 均视为**有效**值，原样返回；
 * 仅 `null` / `undefined` 触发 rowIndex 兜底。
 *
 * 适用于渲染（React key、行选择等）场景。
 * - 拖拽场景请使用 {@link getRowKeyStrict}，不做 index 兜底。
 * - React key / Set / Map 等需要字符串身份的场景请使用 {@link getRowKeyId}。
 */
export declare function safeGetRowKey(record: any, primaryKey?: PrimaryKeyType, rowIndex?: number): string | number;
/**
 * 从一条 record 中提取稳定行标识，**不做 rowIndex 兜底**。
 *
 * 拖拽排序必须使用稳定主键，以 index 作为身份在筛选/排序/分组/虚拟滚动下不可靠。
 * 当 primaryKey 无法从 record 中提取到有效值时返回 `null`，调用方据此禁用拖拽或报错。
 *
 * Falsy 规则同 {@link safeGetRowKey}：`0` / `false` / `''` 视为有效。
 *
 * @deprecated 请使用语义对称的 {@link getRowKeyStrict}，二者行为等价。
 */
export declare function getStableRowKey(record: any, primaryKey?: PrimaryKeyType): string | number | null;
/**
 * 严格提取行唯一标识：不做 rowIndex 兜底。
 *
 * 适用于：服务端 rowId 上送、持久化、拖拽身份等**不允许 index 兜底**的场景。
 * 当 primaryKey 无法从 record 中取到有效值时返回 `null`，调用方据此跳过该行或报错。
 *
 * Falsy 规则同 {@link safeGetRowKey}：`0` / `false` / `''` 视为有效，原样返回；
 * 仅 `null` / `undefined` 触发 null 返回。
 */
export declare function getRowKeyStrict(record: any, primaryKey?: PrimaryKeyType): string | number | null;
/**
 * 从 record 提取行唯一标识并标准化为**字符串**形式。
 *
 * 等价于 `String(safeGetRowKey(record, primaryKey, rowIndex))`，避免调用方手写 toString。
 * 适用于 **React key / Set / Map / DOM data-* / URL 参数** 等需要字符串身份的场景。
 *
 * ⚠️ 会丢失原始类型信息（number → string）。**不要**用于回传给业务方或服务端，
 * 否则下游用类型严格比较时会失配。原始类型场景请使用 {@link safeGetRowKey} 或 {@link getRowKeyStrict}。
 *
 * Falsy 规则同 {@link safeGetRowKey}：`0` → `"0"`、`false` → `"false"`、`''` → `''`。
 */
export declare function getRowKeyId(record: any, primaryKey?: PrimaryKeyType, rowIndex?: number): string;
/**
 * 判断两个行 key 是否指向同一条 record。
 *
 * 规则：
 * - 任一为 `null` / `undefined` → 返回 `false`（没有有效 key 不应判等）
 * - 否则按 `String(a) === String(b)` 比较
 *
 * 该规则用于兼容"上游 number、下游 string"的同 id 场景（如 server 返回 `id: 42`、
 * URL/选中态持有 `'42'`），同时避免 `false == 0`、`'' == 0` 等历史宽松等价坑。
 */
export declare function isSameRowKey(a: string | number | null | undefined, b: string | number | null | undefined): boolean;
