/**
 * 表格列展示态布局 DSL 的格式归一化工具。
 *
 * 后端存储的始终是完整的 { definitions, template } 对象；本地 yaml 允许两种简写：
 * 1. 裸 template：用户只写根节点（含顶层 `type`），CLI 自动包装成 { definitions, template }；
 * 2. 完整对象：缺失的 definitions.data / $i18n / $colorTokens 会被补成空对象。
 *
 * 老 yaml 中 control.table_cell 是 JSON 字符串，这里同时做兼容：自动 JSON.parse 一次。
 */
type Dict = Record<string, unknown>;
/** 本地 yaml 形态 → 发往后端的完整 { definitions, template } 对象 */
export declare function normalizeDslForBackend(input: unknown): Dict | undefined;
/**
 * 就地归一化本地 yaml 形态的 DSL：
 * - 裸 template → 保持裸（本地仍以裸形态可读）
 * - 完整对象 → 补齐 definitions.data / $i18n / $colorTokens 为 {}
 * - JSON 字符串（老 yaml）→ 解析并升级为对象形态（单向迁移）
 * 与 normalizeDslForBackend 的区别：此函数产出**仍然是本地 yaml 形态**，不强制包成
 * { definitions, template }。裸 template 的简写特性得以保留，避免 set 落盘时破坏语义。
 */
export declare function normalizeDslInPlace(input: unknown): unknown;
/**
 * 对整个本地配置（QueryLocalConfigInput 形态）就地跑 DSL 归一化。
 * 影响 control[].platform.web.table_cell 和 field_template[].platform.web.table_layout 两处。
 * 其他字段完全保留，不搬成 extension。
 */
export declare function normalizeLocalConfigDsl<T>(config: T): T;
/** 后端完整对象 → 本地 yaml 形态：当 definitions 三键全为空时，回写为裸 template */
export declare function denormalizeDslForLocal(input: unknown): Dict | undefined;
export {};
