import type { Request } from 'express'; import type { JsonObject, MiddlewareFunction } from './types'; export interface PerformanceMetrics { executionTime: number; memoryUsage: { heapUsed: number; heapTotal: number; external: number; rss: number; }; requestSize: number; responseSize: number; timestamp: number; } export interface PerformanceConfig { enableProfiling: boolean; enableMemoryTracking: boolean; enableRequestSizeTracking: boolean; sampleRate: number; slowRequestThreshold: number; memoryLeakThreshold: number; } export declare class PerformanceMonitor { private config; private metrics; private slowRequests; private memoryBaseline; constructor(config: PerformanceConfig); createProfilingMiddleware(): MiddlewareFunction; private calculateRequestSize; private recordMetrics; private onMemoryLeakDetected; getPerformanceReport(): JsonObject; private calculateAverage; private calculatePercentile; clearMetrics(): void; } export declare class RequestBatcher { private batchProcessor; private options; private queue; private batchTimer?; constructor(batchProcessor: (items: T[]) => Promise, options: { maxBatchSize: number; maxWaitTime: number; }); add(item: T): Promise; private processBatch; } export declare class ObjectPool { private pool; private createFn; private resetFn; constructor(createFn: () => T, resetFn: (obj: T) => void, initialSize?: number); acquire(): T; release(obj: T): void; size(): number; } export declare class ResponseCache { private defaultTtlMs; private cache; private cleanupInterval?; constructor(defaultTtlMs?: number); set(key: string, data: unknown, ttlMs?: number): void; get(key: string): unknown | undefined; delete(key: string): boolean; clear(): void; size(): number; private startCleanup; shutdown(): void; } export declare class OptimizedMiddlewareFactory { private performanceMonitor; private responseCache; private requestBatcher; constructor(performanceConfig: PerformanceConfig, cacheConfig?: { defaultTtlMs: number; }); createPerformanceMiddleware(): MiddlewareFunction; createCacheMiddleware(options: { keyGenerator: (req: Request) => string; ttlMs?: number; cacheableStatusCodes?: number[]; }): MiddlewareFunction; createBatchingMiddleware(): MiddlewareFunction; getPerformanceReport(): JsonObject; shutdown(): void; } export declare function createOptimizedMiddleware(performanceConfig?: Partial, cacheConfig?: { defaultTtlMs: number; }): OptimizedMiddlewareFactory; //# sourceMappingURL=performance.d.ts.map