import { Env, FormValue, MiddlewareHandler, TypedResponse, ValidationTargets } from "../types.js"; import { Context } from "../context.js"; import { InferInput } from "./utils.js"; //#region src/validator/validator.d.ts type ValidationTargetKeysWithBody = 'form' | 'json'; type ValidationTargetByMethod = M extends 'get' | 'head' ? Exclude : keyof ValidationTargets; export type ValidationFunction = (value: InputType, c: Context) => OutputType | TypedResponse | Promise | Promise; export type ExtractValidationResponse = VF extends ((value: any, c: any) => infer R) ? R extends Promise ? PR extends TypedResponse ? TypedResponse : PR extends Response ? PR : PR extends undefined ? never : never : R extends TypedResponse ? TypedResponse : R extends Response ? R : R extends undefined ? never : never : never; export declare const validator: , P2 extends string = P, VF extends (value: unknown extends InputType ? ValidationTargets[U] : InputType, c: Context) => any = (value: unknown extends InputType ? ValidationTargets[U] : InputType, c: Context) => any, V extends { in: { [K in U]: K extends "json" ? unknown extends InputType ? ExtractValidatorOutput : InputType : InferInput, K, FormValue>; }; out: { [K in U]: ExtractValidatorOutput; }; } = { in: { [K in U]: K extends "json" ? unknown extends InputType ? ExtractValidatorOutput : InputType : InferInput, K, FormValue>; }; out: { [K in U]: ExtractValidatorOutput; }; }, E extends Env = any>(target: U, validationFunc: VF) => MiddlewareHandler>; export type ExtractValidatorOutput = VF extends ((value: any, c: any) => infer R) ? R extends Promise ? PR extends Response | TypedResponse ? never : PR : R extends Response | TypedResponse ? never : R : never; //#endregion export {};