import { AbstractValidator } from '../types'; import type { InferInput, InferValidation, Validation, ValidationOptions, Validator } from '../types'; /** * A `Validator` for _optional_ properties (that is `type | undefined`). */ export declare class OptionalValidator extends AbstractValidator { validator: Validator; defaultValue: T | undefined; constructor(validator: Validator); constructor(validator: Validator, defaultValue: D); constructor(validator: Validator, defaultValue?: void); validate(value: unknown, options?: ValidationOptions): D extends undefined ? T | undefined : T; } /** * Ensure that the property is marked as _optional_ in the `Schema`. * * @param validation - A `Validation` to be marked as _optional_. */ export declare function optional(validation: V): OptionalValidator, InferInput, undefined>; export declare function optional(validation: V, defaultValue: D): OptionalValidator, InferInput, D>;