/**
 * Benchmarking Suite - Performance Measurement Tools
 * Measures code generation, memory usage, and overall performance
 */
export interface BenchmarkResult {
    name: string;
    duration: number;
    memoryBefore: number;
    memoryAfter: number;
    memoryDelta: number;
    iterationCount: number;
    averageTime: number;
    averageMemory: number;
    timestamp: Date;
    metadata?: Record<string, unknown>;
}
export interface BenchmarkSuite {
    name: string;
    results: BenchmarkResult[];
    totalDuration: number;
    startTime: Date;
    endTime: Date;
}
export interface OperationComparison {
    name: string;
    timeChange: number;
    memoryChange: number;
    timeFaster: boolean;
    memoryLower: boolean;
}
export interface ComparisonResult {
    timestamp: Date;
    comparisons: OperationComparison[];
    overallImprovement: number;
}
export interface IBenchmark {
    measure<T>(name: string, fn: () => T, iterations?: number, metadata?: Record<string, unknown>): BenchmarkResult;
    measureAsync<T>(name: string, fn: () => Promise<T>, iterations?: number, metadata?: Record<string, unknown>): Promise<BenchmarkResult>;
    getResults(): BenchmarkResult[];
    getTable(): string;
    toJSON(): BenchmarkSuite;
    export(filePath: string): void;
    compare(previous: BenchmarkSuite): ComparisonResult;
    getComparisonReport(comparison: ComparisonResult): string;
}
/**
 * Benchmark - Measure performance of operations
 * Sealed namespace for immutability
 */
export declare const Benchmark: Readonly<{
    /**
     * Create a new benchmark instance
     */
    create(name?: string): IBenchmark;
}>;
export interface MemorySnapshot {
    timestamp: number;
    heapUsed: number;
    heapTotal: number;
    external: number;
    rss: number;
    arrayBuffers: number;
}
export interface MemoryStats {
    peakHeap: number;
    minHeap: number;
    avgHeap: number;
    peakRss: number;
    snapshots: number;
}
export interface IMemoryMonitor {
    start(intervalMs?: number): void;
    stop(): MemorySnapshot[];
    getStats(): MemoryStats;
    formatStats(): string;
}
/**
 * Memory Monitor - Track memory usage over time
 * Sealed namespace for immutability
 */
export declare const MemoryMonitor: Readonly<{
    /**
     * Create a new memory monitor instance
     */
    create(): IMemoryMonitor;
}>;
//# sourceMappingURL=Benchmark.d.ts.map