import { Field } from '../core/model/implementation/field.js'; import { QueryNode } from '../core/query-tree/base.js'; import { BinaryOperator } from '../core/query-tree/operators.js'; import { QuantifierFilterNode } from '../core/query-tree/quantifiers.js'; export interface CanUseArrayExpansionOperatorForQuantifierFilterResult { /** * The effective operator to use * * Can differ from the operator in the condition node for LIKE patterns that can be optimized as * equality checks (e.g. "abc%" can be optimized as "== 'abc'") */ readonly operator: BinaryOperator; /** * The fields to access on the item variable (e.g. for items[*].field1.field2, this would be ["field1", "field2"]) */ readonly fields: ReadonlyArray; /** * The effective right-hand side operand */ readonly valueNode: QueryNode; } /** * Checks whether a quantifier filter can be implemented using the array expansion operator (e.g. items[*].field ALL> 5) * * If this function returns undefined, the quantifier filter cannot be optimized with the array expansion operator. */ export declare function canUseArrayExpansionOperatorForQuantifierFilter(node: QuantifierFilterNode): CanUseArrayExpansionOperatorForQuantifierFilterResult | undefined;