type ValidatorFn = (input: any, root?: any) => boolean | Promise; declare class Validator { private rules; private _required; private add; required(): Validator; optional(): Validator; string(): Validator; number(): Validator; boolean(): Validator; array(): Validator; object(): Validator; min(n: number): Validator; max(n: number): Validator; length(n: number): Validator; regex(pattern: RegExp): Validator; email(): Validator; uuid(): Validator; trim(): Validator; url(): Validator; objectId(): Validator; integer(): Validator; positive(): Validator; negative(): Validator; enum(...values: T[]): Validator; custom(fn: ValidatorFn): Validator; shape(schema: Record): Validator; minKeys(n: number): Validator; maxKeys(n: number): Validator; or(...keys: string[]): Validator; xor(...keys: string[]): Validator; when(key: string, is: any, then: ValidatorFn, otherwise?: ValidatorFn): Validator; match(key: string, cases: Record, fallback?: ValidatorFn): Validator; items(fn: ValidatorFn): Validator; minItems(n: number): Validator; maxItems(n: number): Validator; unique(): Validator; build(): (input: any, root?: any) => Promise; } export declare const validate: { string: () => Validator; number: () => Validator; boolean: () => Validator; array: () => Validator; object: () => Validator; custom: (fn: ValidatorFn) => Validator; }; export {};