import type { Field } from '../model/implementation/field.js'; import type { QueryNode } from '../query-tree/base.js'; import { VariableQueryNode } from '../query-tree/variables.js'; export interface CreateFieldNodeOptions { readonly skipNullFallbackForEntityExtensions?: boolean; readonly rootEntityVar?: VariableQueryNode; /** * If true, child entity fields use a TraversalQueryNode instead of a FieldQueryNode * * This is useful if it is expected that filtering, mapping, sorting etc. will be added because * TraversalQueryNode has native support for those and will be optimized better in the AQL generation. * * We do not always set this, because sometimes, a FieldQueryNode (with SafeListQueryNode) * can be recognized more easily by other optimizations like those of QuantifierFilterNode * * @default false */ readonly preferTraversals?: boolean; /** * Call this on collect fields that traverse root entities to store a reference to the root entity in the stack */ readonly registerRootNode?: (rootNode: QueryNode) => void; } export declare function createFieldNode(field: Field, sourceNode: QueryNode, options?: CreateFieldNodeOptions): QueryNode;