export interface SanitizationOptions {
    allowRegExp?: boolean;
    maxStringLength?: number;
    allowedOperators?: string[];
    preventJavaScriptInjection?: boolean;
}
export declare class SanitizationMiddleware {
    private static readonly MONGODB_OPERATORS;
    private static readonly DANGEROUS_OPERATORS;
    private static readonly DANGEROUS_PATTERNS;
    /**
     * Sanitizes input parameters to prevent MongoDB injection attacks
     * @param input - The input to sanitize
     * @param options - Sanitization options
     * @returns Sanitized input
     */
    static sanitizeInput(input: any, options?: SanitizationOptions): any;
    /**
     * Sanitizes string input
     */
    private static sanitizeString;
    /**
     * Sanitizes object input
     */
    private static sanitizeObject;
    /**
     * Sanitizes object keys
     */
    private static sanitizeObjectKey;
    /**
     * Checks if an operator is dangerous
     */
    private static isDangerousOperator;
    /**
     * Sanitizes MongoDB query parameters
     */
    static sanitizeMongoQuery(query: any, options?: SanitizationOptions): any;
    /**
     * Sanitizes RegExp patterns to prevent injection
     */
    static sanitizeRegExpPattern(pattern: string): string;
    /**
     * Creates a safe regex pattern for MongoDB queries
     */
    static createSafeRegex(pattern: string, flags?: string): RegExp;
    /**
     * Sanitizes Typesense query parameters
     */
    static sanitizeTypesenseQuery(query: any): any;
    /**
     * Sanitizes Typesense search strings
     */
    private static sanitizeTypesenseString;
    /**
     * Sanitizes URL parameters
     */
    static sanitizeUrlParams(params: Record<string, any>): Record<string, any>;
    /**
     * Validates and sanitizes date strings
     */
    static sanitizeDateString(dateString: string): string;
    /**
     * Sanitizes IMO numbers
     */
    static sanitizeIMO(imo: string | number): string;
    /**
     * Sanitizes coordinate values
     */
    static sanitizeCoordinate(coordinate: number, type: 'latitude' | 'longitude'): number;
    /**
     * Sanitizes HTML content to prevent XSS
     */
    static sanitizeHtml(html: string): string;
    /**
     * Validates that a query object is safe
     */
    static validateQuerySafety(query: any): boolean;
    /**
     * Logs security events
     */
    static logSecurityEvent(event: string, details: any): void;
}
export declare const sanitizationMiddleware: typeof SanitizationMiddleware;
