import type { VextMiddleware } from "../types/middleware.js";
/**
 * 路由 validate 配置类型
 *
 * 与 RouteOptions.validate 对齐。
 * 每个位置的值是 DSL 定义对象（schema-dsl 场景）或任意 schema（Zod 等场景）。
 */
export interface ValidateConfig {
    query?: Record<string, unknown>;
    body?: Record<string, unknown>;
    param?: Record<string, unknown>;
    header?: Record<string, unknown>;
}
/**
 * 编译后的校验函数类型
 *
 * compile() 返回的校验函数，接收原始数据，返回校验结果。
 */
type CompiledValidator = (data: unknown) => {
    valid: boolean;
    data?: unknown;
    errors?: Array<{
        field: string;
        message: string;
    }>;
};
/**
 * buildValidateMiddleware — 构建路由级校验中间件
 *
 * 在路由注册阶段（启动时）由 router-loader 调用，非每次请求时调用。
 * 将 RouteOptions.validate 配置预编译为中间件。
 *
 * @param validateConfig  路由的 validate 配置（来自 RouteOptions.validate）
 * @param getValidator    获取当前校验引擎的 getter（支持插件替换）
 * @returns VextMiddleware 或 null（无 validate 配置时返回 null，不插入中间件链）
 *
 * @example
 * ```typescript
 * // router-loader 内部
 * const validateMw = buildValidateMiddleware(route.options.validate, () => app.getValidator())
 * if (validateMw) {
 *   chain.push(validateMw)
 * }
 * ```
 */
export declare function buildValidateMiddleware(validateConfig: ValidateConfig | undefined, getValidator: () => {
    compile(schema: Record<string, unknown>): CompiledValidator;
}): VextMiddleware | null;
export {};
