import type { Field } from '../model/implementation/field.js'; import type { QueryNode } from '../query-tree/base.js'; import type { FieldContext } from './query-node-object-type/context.js'; export interface ProcessFieldResult { /** * If the RootFieldHelper can already resolve this fields, this will be populated with the value. */ readonly resultNode: QueryNode | undefined; /** * Call this on collect fields that traverse root entities to store a reference to the root entity in the stack */ registerRootNode(rootNode: QueryNode): void; } export declare class RootFieldHelper { private readonly hierarchyStackFramesBySelection; private readonly fieldsBySelection; /** * Should be called whenever a field is resolved. Will maintain a hierarchy structure, and may produce a value node */ processField(field: Field, sourceNode: QueryNode, fieldContext: FieldContext): ProcessFieldResult; private tryResolveField; private getHierarchyStackFrame; private setHierarchyStackFrame; private getFieldAtSelection; private setFieldAtSelection; }