import { GraphNode, GraphOperation, NodeDefinition, StatefulGraphNode, StatefulNodeDefinition, StatefulNodeType, UpdateCallback } from '../../../types/graph'; import { DisposeCallback } from '../../../utils/store'; import { SerializableQuerySetChild } from '../../graph/query-set'; import { RequestMetadata } from '../operations/request'; export interface BatchRequestsMiddlewareNode extends StatefulGraphNode<'batch-requests-middleware', BatchRequestsMiddlewareNodeProperties, BatchRequestsMiddlewareNodeState, BatchRequestsMiddlewareNodeData> { } export interface BatchRequestsMiddlewareNodeDefinition extends StatefulNodeDefinition<'batch-requests-middleware', BatchRequestsMiddlewareNodeProperties, BatchRequestsMiddlewareNodeState, BatchRequestsMiddlewareNodeData> { } export interface BatchRequestsMiddlewareNodeProperties { } export interface BatchRequestsMiddlewareNodeState { batcherResults: { [rootId: string]: NodeDefinition | undefined; }; } export interface BatchRequestsMiddlewareNodeData { batchers: Map; } export declare const BatchRequestsMiddlewareNodeType: StatefulNodeType<'batch-requests-middleware', BatchRequestsMiddlewareNodeProperties, BatchRequestsMiddlewareNodeState, BatchRequestsMiddlewareNodeData>; export declare function batchRequestsMiddleware(): BatchRequestsMiddlewareNodeDefinition; export declare type NodeDefinitionCallback = (value: NodeDefinition) => void; export declare class RequestBatcher { private storeSubscribe; private next; private root; private activeRequests; private readonly responseBuilder; private latestChildren; constructor(storeSubscribe: StoreSubscribe, next: GraphNode, root: NodeDefinition, callback: NodeDefinitionCallback); dispose(): void; setRequest(children: Array, metadata: RequestMetadata): void; } export declare type StoreSubscribe = (node: GraphNode, operation: GraphOperation, callback: UpdateCallback) => DisposeCallback;