import type { Constructor } from '../types'; /** * 字段元数据接口(简化版) * 用于在验证错误时生成友好的错误消息 */ export interface ValidationMetadata { /** 字段名称 */ fieldName?: string; /** i18n 翻译键 */ i18nKey?: string; /** 字段标签(多语言)- 使用 fieldLabel 避免命名冲突 */ label?: string | { zh?: string; en?: string; [lang: string]: string | undefined; }; /** 字段描述(多语言)- 使用 fieldDescription 避免命名冲突 */ description?: string | { zh?: string; en?: string; [lang: string]: string | undefined; }; /** 是否为数组 */ each?: boolean; } /** * i18n 翻译函数类型 */ type I18nTranslateFunction = (key: string, options?: any) => string | Promise; /** * 设置全局 i18n 翻译函数 * * @example * // 在 app.module.ts 或 main.ts 中设置 * import { setI18nTranslate } from './common/helpers/validation-metadata-helper'; * import { I18nService } from 'nestjs-i18n'; * * setI18nTranslate((key, options) => i18nService.translate(key, options)); */ export declare function setI18nTranslate(fn: I18nTranslateFunction): void; /** * 获取全局 i18n 翻译函数 */ export declare function getI18nTranslate(): I18nTranslateFunction | null; /** * 解析字段标签 * 支持以下格式: * 1. i18n key 字符串: "user.username" * 2. 多语言对象: { zh: '用户名', en: 'Username' } * 3. 普通字符串: "Username" * * @param label - 字段标签 * @param i18nKey - i18n 翻译键(优先使用) * @param lang - 语言代码 (zh, en, 等) * @returns 解析后的标签文本 */ export declare function resolveFieldLabel(label: string | { zh?: string; en?: string; [lang: string]: string | undefined; } | undefined, i18nKey?: string, lang?: string): string | { zh?: string; en?: string; [lang: string]: string | undefined; }; /** * 翻译字段标签 * 将 i18n key 或多语言对象解析为最终文本 * * @param labelOrKey - 标签、i18n key 或多语言对象 * @param lang - 语言代码 * @returns 翻译后的文本 */ export declare function translateFieldLabel(labelOrKey: string | { zh?: string; en?: string; [lang: string]: string | undefined; }, lang?: string): Promise; /** * 存储验证元数据到装饰器 * * @param target - 目标类 * @param propertyKey - 属性名 * @param metadata - 验证元数据 */ export declare function setValidationMetadata(target: Constructor, propertyKey: string, metadata: ValidationMetadata): void; /** * 获取验证元数据 * * @param target - 目标类 * @param propertyKey - 属性名 * @returns 验证元数据 */ export declare function getValidationMetadata(target: Constructor, propertyKey: string): ValidationMetadata | undefined; /** * 获取所有验证元数据 * * @param target - 目标类 * @returns 所有验证元数据 */ export declare function getAllValidationMetadata(target: Constructor): Record; /** * 获取字段的友好标签 * 根据语言环境返回对应的标签 * 支持优先级:fieldLabel > i18nKey > fieldName * * @param metadata - 验证元数据 * @param lang - 语言 (zh, en, 等) * @returns 字段标签 */ export declare function getFieldLabelForValidation(metadata: ValidationMetadata, lang?: string): string; export {};