/** * Filter utilities for validation and query building */ import type { FilterCondition, FilterExpression, FilterField, FilterGroup, FilterOperator, FilterValidationResult, FilterValidationConfig, LogicalOperator, ParseResult } from '../types/filters'; /** * Validates a single filter condition */ export declare function validateCondition(condition: FilterCondition): string[]; /** * Validates a filter expression */ export declare function validateFilterExpression(expression: FilterExpression, config?: FilterValidationConfig): FilterValidationResult; /** * Converts a filter condition to a filter string */ export declare function conditionToString(condition: FilterCondition): string; /** * Converts a filter group to a filter string */ export declare function groupToString(group: FilterGroup): string; /** * Converts a filter expression to a filter string */ export declare function expressionToString(expression: FilterExpression): string; /** * Parses a filter string into a filter expression * Supports SQL-like syntax with proper operator precedence and parentheses * * @example * // Simple equality condition * const result = parseFilterString('done = false'); * // Returns: { expression: { groups: [{ conditions: [{ field: 'done', operator: '=', value: false }], operator: '&&' }] } } * * @example * // Multiple conditions with AND * const result = parseFilterString('done = false && priority >= 3'); * // Returns expression with both conditions in the same group * * @example * // Grouped conditions with OR * const result = parseFilterString('(done = false && priority > 3) || (dueDate < now+7d)'); * // Returns expression with two groups combined with OR operator * * @example * // Complex nested parentheses (flattened into single group) * const result = parseFilterString('((done = false || done = true) && priority > 3)'); * // Note: Nested parentheses are flattened for simplicity * * @example * // Error handling * const result = parseFilterString('done ='); * // Returns: { expression: null, error: { message: 'Expected value', position: 6 } } * * @param filterStr - The filter string to parse * @returns ParseResult with either the parsed expression or error details */ export declare function parseFilterString(filterStr: string): ParseResult; /** * Creates a filter builder for fluent filter construction */ export declare class FilterBuilder { private expression; private currentGroup; constructor(); /** * Adds a condition to the current group */ where(field: FilterField, operator: FilterOperator, value: unknown): FilterBuilder; /** * Sets the operator for the current group */ and(): FilterBuilder; /** * Sets the operator for the current group */ or(): FilterBuilder; /** * Starts a new group */ group(operator?: LogicalOperator): FilterBuilder; /** * Sets the operator between groups */ groupOperator(operator: LogicalOperator): FilterBuilder; /** * Builds the filter expression */ build(): FilterExpression; /** * Builds and returns the filter string */ toString(): string; /** * Validates the current filter */ validate(config?: FilterValidationConfig): FilterValidationResult; } //# sourceMappingURL=filters.d.ts.map