//#region index.d.ts interface Ctx { path: string; key: string | number | null; parent: any; root: any; __abortPipe?: boolean; __collectErrors?: boolean; __errors?: ValidationError[]; [key: string]: any; } type Validator = (value: Input, ctx: Ctx) => Output; interface ValidationError extends Error { expected?: string; actual?: any; path?: string; key?: string | number | null; parent?: any; root?: any; } type ValidatorFactory = (...args: Args) => Validator; declare function makeCtx(parentCtx: Ctx | null, key: string | number | null, value: any, root?: any): Ctx; declare function formatValue(value: any): string; declare function createValidator(name: string, handler: (value: I, ctx: Ctx, args: Args) => O): (...args: Args) => Validator; interface ControlValidator { __control?: true; } type IsControl = V extends ControlValidator ? true : false; type InputOf = V extends ((value: infer I, ctx: Ctx) => any) ? I : never; type OutputOf = V extends ((value: any, ctx: Ctx) => infer O) ? O : never; type Simplify = { [K in keyof T]: T[K] } & {}; type DeepSimplify = T extends string | number | boolean | bigint | symbol | null | undefined ? T : T extends Function ? T : T extends (infer U)[] ? Array> : T extends object ? Simplify<{ [K in keyof T]: DeepSimplify }> : T; type InferOutput = V extends ((value: any, ctx: Ctx) => infer O) ? DeepSimplify : never; type Last = T extends [...any[], infer L] ? L : never; type ValidateChain = Vs extends [infer V1, infer V2, ...infer Rest] ? IsControl extends true ? [V1, ...ValidateChain<[V2, ...Rest]>] : OutputOf extends InputOf ? [V1, ...ValidateChain<[V2, ...Rest]>] : never : Vs; declare function pipe, ...(Validator)[]]>(...validators: ValidateChain): Validator, OutputOf>>; declare function transform(fn: (value: I, ctx: Ctx) => O): Validator; declare function check(fn: (value: I, ctx: Ctx) => boolean, msg?: string): Validator; type ValidateResult = { valid: true; result: O; error?: undefined; } | { valid: false; error: ValidationError; result: any; }; declare function validate(schema: Validator, value: I, rootPath?: string): ValidateResult; type ValidateAllResult = { valid: true; result: O; errors: []; } | { valid: false; result: any; errors: ValidationError[]; }; declare function validateAll(schema: Validator, value: I, rootPath?: string): ValidateAllResult; declare const required: (args_0?: string | undefined) => Validator; declare const optional: () => (Validator & ControlValidator); declare const any: (...args: any[]) => Validator; declare const string: (args_0?: string | undefined) => Validator; declare const number: (args_0?: string | undefined) => Validator; declare const bigint: (args_0?: string | undefined) => Validator; declare const boolean: (args_0?: string | undefined) => Validator; declare const symbol: (args_0?: string | undefined) => Validator; type InferShape = { [K in keyof S]: S[K] extends Validator ? O : never }; declare function object>>(shape?: S, msg?: string): Validator>; declare function array(validator?: Validator, msg?: string): Validator; //#endregion export { ControlValidator, Ctx, InferOutput, InferShape, InputOf, OutputOf, ValidateAllResult, ValidateResult, ValidationError, Validator, ValidatorFactory, any, array, bigint, boolean, check, createValidator, formatValue, makeCtx, number, object, optional, pipe, required, string, symbol, transform, validate, validateAll };