import { HotValidation, ServerRequest } from "./HotRouteMethod";
import { HotRouteMethodParameterMap, IHotValidReturn } from "./HotStaq";
/**
 * A validation error.
 */
export declare class ValidationError extends Error {
    /**
     * The valid type that threw the error.
     */
    validType: any;
    constructor(message: string, validType: any);
}
/**
 * The options for when a falsy is triggered.
 */
export declare enum FalsyOptions {
    /**
     * Throw an error message if its triggered.
     */
    ThrowError = 0,
    /**
     * Delete the key/value from the object.
     */
    Delete = 1,
    /**
     * Continue on to the next key for validation.
     */
    Continue = 2
}
/**
 * The validation options available.
 */
export declare class ValidationOptions {
    /**
     * Ensure all parameters exist.
     * @default false
     */
    strictInput: boolean;
    /**
     * How falsies are checked. When this returns true, that means the
     * falsy has been triggered.
     * @default null
     */
    falsy: (value: any) => boolean;
    /**
     * What should happen if a falsy is triggered.
     * @default FalsyOptions.Continue
     */
    falsyOptions: FalsyOptions;
    constructor(strictInput?: boolean);
}
export declare function validateRecursively(options: ValidationOptions, key: string, input: any, request: ServerRequest, validation?: HotValidation): Promise<IHotValidReturn>;
/**
 * Main function that validates an input object against a parameters map,
 * including nested properties defined via the `parameters` property.
 * Unfortunately this is a shallow check, so if you have an object with
 * deeply nested properties, issues may arise. This feature is still
 * considered experimental.
 *
 * @experimental
 */
export declare function processInput(options: ValidationOptions, params: HotRouteMethodParameterMap, input: any, request: ServerRequest, parentKey?: string): Promise<any>;
//# sourceMappingURL=HotProcessInput.d.ts.map