import { type GraphFieldData } from '../utils/types'; import { type FieldName, type NodeName, type SubgraphName, type TypeName } from './types/types'; export declare class Edge { edgeName: string; id: number; isAbstractEdge: boolean; isExternal: boolean; isInaccessible: boolean; node: GraphNode; visitedIndices: Set; constructor(id: number, node: GraphNode, edgeName: string, isAbstractEdge?: boolean); isEdgeInaccessible(): boolean; } export type GraphNodeOptions = { isAbstract?: boolean; isLeaf?: boolean; }; export declare class GraphNode { externalFieldSets: Set; fieldDataByName: Map; headToTailEdges: Map; entityEdges: Edge[]; nodeName: NodeName; hasEntitySiblings: boolean; isAbstract: boolean; isInaccessible: boolean; isLeaf: boolean; isRootNode: boolean; satisfiedFieldSets: Set; subgraphName: SubgraphName; typeName: TypeName; constructor(subgraphName: SubgraphName, typeName: TypeName, options?: GraphNodeOptions); handleInaccessibleEdges(): void; getAllAccessibleEntityNodeNames(): Set; getAccessibleEntityNodeNames(node: GraphNode, accessibleEntityNodeNames: Set): void; } export declare class RootNode { fieldDataByName: Map; headToSharedTailEdges: Map; isAbstract: boolean; isRootNode: boolean; typeName: TypeName; constructor(typeName: TypeName); removeInaccessibleEdges(fieldDataByName: Map): void; } export declare class EntityDataNode { fieldSetsByTargetSubgraphName: Map>; targetSubgraphNamesByFieldSet: Map>; typeName: string; constructor(typeName: string); addTargetSubgraphByFieldSet(fieldSet: string, targetSubgraphName: SubgraphName): void; }