import type { CrudColumn, CrudFormItem, CrudService } from '../../../typings/admin/comm/crud';
/** upsert 内置排除（系统写入列；需手填租户的页在 items 显式加 tenantId） */
export declare const UPSERT_BUILTIN_IGNORE: readonly ["id", "tenantId", "createTime", "updateTime", "deleteTime"];
/** table 内置排除（password 由页面 ignoreFields 自行声明） */
export declare const TABLE_BUILTIN_IGNORE: readonly ["deleteTime", "updateTime"];
type AutoFieldOptions = {
    ignoreFields?: string[];
};
/** 与 search 一致：字典 options；数字字符串转 number */
export declare function mapDictOptions(key: string): {
    label: string;
    value: string | number;
    color: string;
}[];
/** 字典第一项的真实 key（填入表单的 value）；无选项时 undefined */
export declare function dictFirstValue(key: string): string | number | boolean | undefined;
/** 表单项默认值：支持 `() => firstKey` 在打开时再取字典 */
export declare function resolveFormItemValue(raw: unknown): unknown;
/**
 * 同 prop：手动浅合并覆盖自动（只写差异即可，如 password / slot / value）。
 * 无 prop 的 type（selection/op）：手动同 type 覆盖自动，避免 selection 重复。
 * 手动独有 prop（EPS 无）追加在后；type-only 手动项追加在最后。
 */
export declare function mergeByProp<T extends {
    prop?: string;
    type?: string;
}>(auto: T[], manual: T[]): T[];
/**
 * 必填项前置（稳定排序）：`required: true` 与函数 `required` 均算必填；
 * 组内保持原相对顺序。不解析函数运行结果（避免 add/edit 间跳动）。
 */
export declare function sortRequiredFirst<T extends {
    required?: boolean | ((form: Record<string, unknown>) => boolean);
}>(items: T[]): T[];
/** 由表 EPS 生成 upsert 表单项 */
export declare function buildAutoUpsertItems(service: Pick<CrudService, 'namespace'>, options?: AutoFieldOptions): CrudFormItem[];
/** 由表 EPS 生成表格列；默认带 selection + op（`ignoreFields` 可去掉） */
export declare function buildAutoTableColumns(service: Pick<CrudService, 'namespace'>, options?: AutoFieldOptions): CrudColumn[];
export {};
