import { GetChildOperation } from '../../../operations/get-child'; import { GetItemsOperation } from '../../../operations/get-items'; import { GraphOperation, NodeDefinition } from '../../../types/graph'; export declare type QueryPartCallback = (value: NodeDefinition) => void; export declare type DisposeRequest = () => void; export interface OperationPathPart { id: string; operation: O; } export interface Request { isDisposed: boolean; pathPart: OperationPathPart; retainCount: number; type: T; } export interface WildcardRequest extends Request { callback: QueryPartCallback; isPending: boolean; value: NodeDefinition | undefined; } export interface GetChildRequest extends Request<'getChild', GetChildOperation> { treeBuilder: QueryBuilderTree; } export declare function isGetChildRequest(request: AnyRequest): request is GetChildRequest; export interface GetItemsRequest extends Request<'getItems', GetItemsOperation> { callback: QueryPartCallback | undefined; isPending: boolean; treeBuilder: QueryBuilderTree; value: NodeDefinition | undefined; } export declare function isGetItemsRequest(request: AnyRequest): request is GetItemsRequest; export declare type AnyRequest = GetChildRequest | GetItemsRequest | WildcardRequest; export declare class RequestWrapper { readonly original: AnyRequest; constructor(request: AnyRequest); setValue(value: NodeDefinition): void; } export declare class QueryBuilder { id: string; isModified: boolean; root: QueryBuilderTree; constructor(id: string); addRequest(operationPath: Array, callback?: QueryPartCallback): DisposeRequest; findRequest(operationPath: Array): RequestWrapper | undefined; isRequestPending(operationPath: Array): boolean; markAsModified(): void; resetModifiedState(): void; } export declare class QueryBuilderTree { queryBuilder: QueryBuilder; readonly getChildRequests: Map; readonly getItemsRequests: Map; readonly requests: Map; constructor(queryBuilder: QueryBuilder); addRequest(operationPath: Array, callback?: QueryPartCallback): DisposeRequest; findRequest(operationPath: Array): AnyRequest | undefined; isEmpty(): boolean; isPending(): boolean; removeRequest(request: AnyRequest): void; }