//#region src/components/pisellFloorMapLayout/utils/floorMapElementNameAsTitle.d.ts
/**
 * 「将图元名作为资源标题」开关：通用读写 + 标题解析。
 *
 * - 持久化在 `sceneElement.extensions[NAME_AS_TITLE_EXT_KEY]`，避免污染顶层 schema、
 *   不影响未启用该能力的旧 / 新 kind。
 * - 是否在编辑面板「显示」该选项，由 `FloorMapElementKindConfig.nameAsTitleConfigurable`
 *   控制；展示侧（业务卡片渲染）只读 extensions，不依赖 kindConfig，确保即便业务方
 *   后续撤回 kindConfig 开关，已落库的偏好仍生效。
 */
/** 持久化字段名：固定字符串，跨包共用，勿改 */
declare const NAME_AS_TITLE_EXT_KEY: "nameAsTitle";
interface ElementWithExtensions {
  name?: string;
  extensions?: Record<string, unknown>;
}
/** 安全读取「图元名作为标题」开关 */
declare function isElementNameAsTitleEnabled(el: ElementWithExtensions | null | undefined): boolean;
/**
 * 计算 `extensions` patch：返回值供调用方写入 `sceneElement.extensions`。
 *
 * - `enabled === true` 时写入 `true`；
 * - `enabled === false` 时**移除**该 key（而非写 `false`），避免持久化里残留无意义字段；
 * - 返回 `undefined` 表示「extensions 整体可清空」（仅当结果是空对象时）。
 *
 * @example
 * const nextExt = buildNameAsTitleExtensionsPatch(el.extensions, true);
 * onUpdate({ extensions: nextExt });
 */
declare function buildNameAsTitleExtensionsPatch(prev: Record<string, unknown> | undefined, enabled: boolean): Record<string, unknown> | undefined;
/**
 * 通用图元标题解析：业务展示层（卡片标题、占位标题等）统一调用本函数，
 * 让「图元名作为资源标题」这一偏好对所有接入方一致生效。
 *
 * 优先级：
 *   1. 启用了 nameAsTitle 且 `el.name` 非空 → `el.name`
 *   2. `recordTitle`（业务侧按自己规则算出来的，如预约页 `row.main_field` / `row.code`）
 *   3. `el.name`（业务字段缺失时的兜底，与历史行为一致）
 *   4. `fallback`（如 kindLabel）
 *   5. 空串
 *
 * 不更改 `displayRoomTitleFromRow` / `record.name` 等业务函数本身，
 * 业务方只需把"按业务字段"算出来的结果以 `recordTitle` 传入即可，
 * `bookingDetailModal` 等下游不会被联动改坏。
 */
declare function resolveSceneElementDisplayTitle(opts: {
  sceneElement?: ElementWithExtensions | null;
  recordTitle?: string;
  fallback?: string;
}): string;
//#endregion
export { NAME_AS_TITLE_EXT_KEY, buildNameAsTitleExtensionsPatch, isElementNameAsTitleEnabled, resolveSceneElementDisplayTitle };