import { type IRequest, type IResponse } from '../../../../../src/index.js';
export type RouteHandler = (req: IRequest, res: IResponse) => Promise<void> | void;
export interface ValidationSchema {
    [key: string]: {
        required?: boolean;
        default?: unknown;
        type?: 'string' | 'number' | 'boolean' | 'object' | 'array';
        minLength?: number;
        maxLength?: number;
        min?: number;
        max?: number;
        pattern?: RegExp;
        allowedValues?: unknown[];
        custom?: (value: unknown) => string | null;
    };
}
export declare const withCustomValidation: (schema: ValidationSchema, handler: RouteHandler) => RouteHandler;
/**
 * Predefined validation schemas for common use cases
 */
export declare const ValidationSchemas: {
    /**
     * Schema for pagination parameters
     */
    pagination: {
        page: {
            type: "number";
            min: number;
            default: number;
        };
        limit: {
            type: "number";
            min: number;
            max: number;
            default: number;
        };
    };
    /**
     * Schema for date range filtering
     */
    dateRange: {
        startDate: {
            type: "string";
            pattern: RegExp;
        };
        endDate: {
            type: "string";
            pattern: RegExp;
        };
    };
    /**
     * Schema for sorting parameters
     */
    sorting: {
        sortBy: {
            type: "string";
            allowedValues: string[];
            default: string;
        };
        sortOrder: {
            type: "string";
            allowedValues: string[];
            default: string;
        };
    };
    /**
     * Schema for worker filtering
     */
    workerFilter: {
        status: {
            type: "string";
            allowedValues: string[];
            optional: boolean;
        };
        queueName: {
            type: "string";
            minLength: number;
            maxLength: number;
            optional: boolean;
        };
        driver: {
            type: "string";
            allowedValues: string[];
            optional: boolean;
        };
        search: {
            type: "string";
            maxLength: number;
            optional: boolean;
        };
    };
};
//# sourceMappingURL=CustomValidation.d.ts.map