/** * Filter parser for CLI * Parses filter expressions into QueryBuilder-compatible format * * Grammar (EBNF): * filter = comparison | string_op | array_op * comparison = field ("=" | "!=" | "<" | "<=" | ">" | ">=") value * string_op = field "." ("contains" | "startswith" | "endswith") "(" quoted_string ")" * array_op = field "." ("in" | "notin") "(" value_list ")" */ export type FilterOperator = 'eq' | 'ne' | 'lt' | 'le' | 'gt' | 'ge' | 'contains' | 'startswith' | 'endswith' | 'in' | 'notin'; export interface ParsedFilter { field: string; operator: FilterOperator; value: unknown; values?: unknown[]; } /** * Parse a filter expression string into a structured filter */ export declare function parseFilter(filterStr: string): ParsedFilter; /** * Apply parsed filters to a QueryBuilder */ export declare function applyFiltersToQuery(query: { filter: (cb: (f: FilterBuilderLike) => FilterExpressionLike) => typeof query; }, filters: ParsedFilter[]): typeof query; interface FieldFilterLike { eq(value: unknown): FilterExpressionLike; ne(value: unknown): FilterExpressionLike; lt(value: unknown): FilterExpressionLike; le(value: unknown): FilterExpressionLike; gt(value: unknown): FilterExpressionLike; ge(value: unknown): FilterExpressionLike; contains(value: string): FilterExpressionLike; startswith(value: string): FilterExpressionLike; endswith(value: string): FilterExpressionLike; in(values: unknown[]): FilterExpressionLike; notin(values: unknown[]): FilterExpressionLike; } interface FilterBuilderLike { field(name: keyof T | string): FieldFilterLike; } interface FilterExpressionLike { node: unknown; } export {}; //# sourceMappingURL=filter.d.ts.map