/**
 * Database Query Sanitizer Utility
 *
 * Provides specialized sanitization functions for database queries
 * to prevent injection attacks and ensure query safety.
 *
 * This utility addresses critical security vulnerabilities identified
 * in the existing codebase where user input was directly used in
 * database queries without proper sanitization.
 */
export interface QuerySanitizationOptions {
    allowRegex?: boolean;
    maxDepth?: number;
    allowedOperators?: string[];
    maxStringLength?: number;
}
export declare class QuerySanitizer {
    private static readonly DEFAULT_OPTIONS;
    /**
     * Sanitizes MongoDB filter queries
     * @param filter - The filter object to sanitize
     * @param options - Sanitization options
     * @returns Sanitized filter object
     */
    static sanitizeFilter(filter: any, options?: QuerySanitizationOptions): any;
    /**
     * Sanitizes MongoDB projection objects
     * @param projection - The projection object to sanitize
     * @returns Sanitized projection object
     */
    static sanitizeProjection(projection: any): any;
    /**
     * Sanitizes MongoDB sort objects
     * @param sort - The sort object to sanitize
     * @returns Sanitized sort object
     */
    static sanitizeSort(sort: any): any;
    /**
     * Sanitizes update operations
     * @param update - The update object to sanitize
     * @returns Sanitized update object
     */
    static sanitizeUpdate(update: any): any;
    /**
     * Sanitizes Typesense query parameters
     * @param query - The Typesense query object
     * @returns Sanitized query object
     */
    static sanitizeTypesenseQuery(query: any): any;
    /**
     * Sanitizes coordinate values for geo queries
     * @param coordinates - Array of [longitude, latitude] or object with lat/lng
     * @returns Sanitized coordinates
     */
    static sanitizeCoordinates(coordinates: any): any;
    /**
     * Recursively sanitizes object properties
     */
    private static sanitizeObjectRecursive;
    /**
     * Sanitizes individual values
     */
    private static sanitizeValue;
    /**
     * Checks if an operator is allowed
     */
    private static isAllowedOperator;
    /**
     * Sanitizes field names
     */
    private static sanitizeFieldName;
    /**
     * Sanitizes projection operators
     */
    private static sanitizeProjectionOperators;
    /**
     * Sanitizes projection operator values
     */
    private static sanitizeProjectionOperatorValue;
    /**
     * Sanitizes update operation values
     */
    private static sanitizeUpdateValue;
    /**
     * Validates query safety before execution
     * @param query - Query to validate
     * @returns True if safe, throws error if dangerous
     */
    static validateQuerySafety(query: any): boolean;
    /**
     * Creates a safe regex query for text search
     * @param text - Text to search for
     * @param field - Field to search in
     * @param caseInsensitive - Whether search should be case insensitive
     * @returns Safe regex query object
     */
    static createSafeTextSearch(text: string, field: string, caseInsensitive?: boolean): any;
    /**
     * Builds safe date range queries
     * @param field - Date field name
     * @param startDate - Start date (optional)
     * @param endDate - End date (optional)
     * @returns Safe date range query
     */
    static createSafeDateRange(field: string, startDate?: string, endDate?: string): any;
}
export declare const querySanitizer: typeof QuerySanitizer;
