import { QueryOperator, QueryValue } from '../types/index.js';
/**
 * WhereConditionsBuilder - Handles all WHERE clause construction for MongoDB queries
 *
 * This class encapsulates all the logic for building MongoDB filter conditions,
 * including AND, OR, NOT operations, and various comparison operators.
 */
export declare class WhereConditionsBuilder {
    private filters;
    private orConditions;
    /**
     * Get the current filters
     */
    getFilters(): any;
    /**
     * Get the current OR conditions
     */
    getOrConditions(): any[];
    /**
     * Set filters (used for cloning)
     */
    setFilters(filters: any): void;
    /**
     * Set OR conditions (used for cloning)
     */
    setOrConditions(conditions: any[]): void;
    /**
     * Get the final MongoDB filter object
     */
    getFinalFilters(): any;
    /**
     * Add a where condition
     */
    where(field: string, value: QueryValue): this;
    where(field: string, operator: QueryOperator, value: QueryValue): this;
    /**
     * Alias for where method
     */
    andWhere(field: string, value: QueryValue): this;
    andWhere(field: string, operator: QueryOperator, value: QueryValue): this;
    /**
     * Add a where not condition
     */
    whereNot(field: string, value: QueryValue): this;
    whereNot(field: string, operator: QueryOperator, value: QueryValue): this;
    /**
     * Alias for whereNot method
     */
    andWhereNot(field: string, operatorOrValue: QueryOperator | QueryValue, value?: QueryValue): this;
    /**
     * Add an OR where condition
     */
    orWhere(field: string, operatorOrValue: QueryOperator | QueryValue, value?: QueryValue): this;
    /**
     * Add an OR where not condition
     */
    orWhereNot(field: string, operatorOrValue: QueryOperator | QueryValue, value?: QueryValue): this;
    /**
     * Add a LIKE condition (case-sensitive)
     */
    whereLike(field: string, value: string): this;
    /**
     * Add an ILIKE condition (case-insensitive)
     */
    whereILike(field: string, value: string): this;
    /**
     * Add a NULL condition
     */
    whereNull(field: string): this;
    /**
     * Add an OR NULL condition
     */
    orWhereNull(field: string): this;
    /**
     * Add a NOT NULL condition
     */
    whereNotNull(field: string): this;
    /**
     * Add an OR NOT NULL condition
     */
    orWhereNotNull(field: string): this;
    /**
     * Add an EXISTS condition
     */
    whereExists(field: string): this;
    /**
     * Add an OR EXISTS condition
     */
    orWhereExists(field: string): this;
    /**
     * Add a NOT EXISTS condition
     */
    whereNotExists(field: string): this;
    /**
     * Add an OR NOT EXISTS condition
     */
    orWhereNotExists(field: string): this;
    /**
     * Add an IN condition
     */
    whereIn(field: string, values: QueryValue[]): this;
    /**
     * Add an OR IN condition
     */
    orWhereIn(field: string, values: QueryValue[]): this;
    /**
     * Add a NOT IN condition
     */
    whereNotIn(field: string, values: QueryValue[]): this;
    /**
     * Add an OR NOT IN condition
     */
    orWhereNotIn(field: string, values: QueryValue[]): this;
    /**
     * Add a BETWEEN condition
     */
    whereBetween(field: string, range: [QueryValue, QueryValue]): this;
    /**
     * Add an OR BETWEEN condition
     */
    orWhereBetween(field: string, range: [QueryValue, QueryValue]): this;
    /**
     * Add a NOT BETWEEN condition
     */
    whereNotBetween(field: string, range: [QueryValue, QueryValue]): this;
    /**
     * Add an OR NOT BETWEEN condition
     */
    orWhereNotBetween(field: string, range: [QueryValue, QueryValue]): this;
    /**
     * Map query operator to MongoDB operator
     */
    private mapOperatorToMongo;
    /**
     * Serialize value for MongoDB
     */
    private serializeValue;
    /**
     * Clone the where conditions builder
     */
    clone(): WhereConditionsBuilder;
}
//# sourceMappingURL=where_conditions_builder.d.ts.map