import type { ExecutionContext, ExpressionImplementation } from '../types/core';
export interface PerformanceMetrics {
    tokenizationTime: number;
    evaluationTime: number;
    cacheHitRate: number;
    memoryUsage: number;
    domOperations: number;
}
declare class PerformanceTracker {
    private metrics;
    private startTimes;
    startTimer(operation: string): void;
    endTimer(operation: string): number;
    recordTokenization(duration: number): void;
    recordEvaluation(duration: number): void;
    updateCacheMetrics(): void;
    getMetrics(): PerformanceMetrics;
    reset(): void;
}
export declare const performanceTracker: PerformanceTracker;
export declare function evaluateExpressionWithCache<T>(cacheKey: string, evaluator: () => Promise<T>, _context: ExecutionContext): Promise<T>;
export declare function queryWithCache(selector: string): Element | null;
export declare function queryAllWithCache(selector: string): Element[];
export declare function matchesWithCache(element: Element, selector: string): boolean;
export declare function wrapExpressionForPerformance(expression: ExpressionImplementation): ExpressionImplementation;
export declare function tokenizeWithPerformance(input: string): import("../types/core").Token[];
export declare function performCleanup(): void;
export declare function enableAutoCleanup(intervalMs?: number): void;
export declare function disableAutoCleanup(): void;
declare class DOMBatcher {
    private pendingOperations;
    private batchTimeout;
    addOperation(operation: () => void): void;
    flush(): void;
}
export declare const domBatcher: DOMBatcher;
export declare function batchDOMOperation(operation: () => void): void;
export declare function generatePerformanceReport(): string;
export {};
//# sourceMappingURL=integration.d.ts.map