import type { AgEngineCallInfo } from '../../api/engine/agDataEngine'; import type { AgStudioQuery } from '../../api/engine/agStudioQuery'; import type { ExecuteRequestOptions } from './executeOptions'; import type { AllPipelineData, ServiceRegistry } from './execution/pipelineTypes'; import type { ViewConfig } from './execution/utils/views'; import type { LogicalPlan } from './planning/plan/logical/types'; import type { QueryPlanner } from './planning/plan/queryPlanner'; export declare class QueryEngine { private readonly services; private readonly queryPlanner; private readonly queryPlanCache; private readonly queryQueue; private readonly pendingQueries; private readonly joinBufferPool; private readonly sharedTensorContext; private debounceTimer; private batchProcessing; constructor(services: ServiceRegistry, queryPlanner: QueryPlanner); execute(query: AgStudioQuery, options: ExecuteRequestOptions, viewConfig?: ViewConfig, info?: AgEngineCallInfo): Promise; private executeInternal; private queueAndDebounce; private executeBatch; private processDebouncedQueries; /** * Execute a pre-compiled {@link LogicalPlan} through the tensor cube. * Used by the AgStudioQuery path to bypass the DataQuery strategy-pattern * compiler while reusing every downstream stage. * * Caveats vs {@link execute}: * - No query-plan caching (the supplied plan has no DataQuery-keyed hash). * - No validation (the compiler is the sole producer of these plans; it is * responsible for emitting valid shapes). */ executeLogicalPlan(plan: LogicalPlan, _options: ExecuteRequestOptions): Promise; clearCache(): void; /** * Aggressively release all large data structures. Clears caches, pools, and * the shared tensor context so V8's concurrent marker can reclaim the memory * before the next page load begins allocating. */ dispose(): void; private isBatchingEnabled; private isCachingEnabled; }