/**
 * Post-Quantum Cryptography Benchmarks
 *
 * Performance benchmarking utilities for post-quantum cryptographic operations:
 * - Key generation timing
 * - Encapsulation/decapsulation timing
 * - Signature/verification timing
 * - Memory usage estimation
 * - Comparison with classical algorithms
 *
 * Use these benchmarks to:
 * - Evaluate PQ algorithm performance on your hardware
 * - Compare native vs reference implementations
 * - Make informed decisions about algorithm selection
 * - Monitor performance regressions
 *
 * @packageDocumentation
 * @module security/crypto/post-quantum/benchmark
 */
import { type BenchmarkResult, type BenchmarkSuiteResult, type KyberParameterSet, type DilithiumParameterSet } from './types.js';
/**
 * Benchmark configuration options
 */
export interface BenchmarkConfig {
    /** Number of iterations per benchmark */
    iterations: number;
    /** Warmup iterations (not counted) */
    warmupIterations: number;
    /** Include memory measurements */
    measureMemory: boolean;
    /** Algorithms to benchmark */
    algorithms: {
        kyber: KyberParameterSet[];
        dilithium: DilithiumParameterSet[];
    };
    /** Include hybrid mode benchmarks */
    includeHybrid: boolean;
    /** Include classical comparison */
    includeClassical: boolean;
    /** Message size for signature benchmarks */
    messageSize: number;
}
/**
 * Runs post-quantum cryptography benchmarks
 *
 * @example
 * ```typescript
 * const runner = new BenchmarkRunner();
 * await runner.initialize();
 *
 * // Run all benchmarks
 * const results = await runner.runAll();
 *
 * // Print results
 * runner.printResults(results);
 * ```
 */
export declare class BenchmarkRunner {
    private readonly config;
    private kyber;
    private dilithium;
    private hybridKEM;
    private hybridSign;
    private initialized;
    constructor(config?: Partial<BenchmarkConfig>);
    /**
     * Initialize benchmark services
     */
    initialize(): Promise<void>;
    /**
     * Ensure runner is initialized
     */
    private ensureInitialized;
    /**
     * Run all benchmarks
     */
    runAll(): Promise<BenchmarkSuiteResult>;
    benchmarkKyberKeyGen(alg: KyberParameterSet): Promise<BenchmarkResult>;
    benchmarkKyberEncaps(alg: KyberParameterSet): Promise<BenchmarkResult>;
    benchmarkKyberDecaps(alg: KyberParameterSet): Promise<BenchmarkResult>;
    benchmarkDilithiumKeyGen(alg: DilithiumParameterSet): Promise<BenchmarkResult>;
    benchmarkDilithiumSign(alg: DilithiumParameterSet): Promise<BenchmarkResult>;
    benchmarkDilithiumVerify(alg: DilithiumParameterSet): Promise<BenchmarkResult>;
    benchmarkHybridKEMKeyGen(): Promise<BenchmarkResult>;
    benchmarkHybridKEMEncaps(): Promise<BenchmarkResult>;
    benchmarkHybridKEMDecaps(): Promise<BenchmarkResult>;
    benchmarkHybridSignKeyGen(): Promise<BenchmarkResult>;
    benchmarkHybridSignSign(): Promise<BenchmarkResult>;
    benchmarkHybridSignVerify(): Promise<BenchmarkResult>;
    benchmarkX25519KeyGen(): Promise<BenchmarkResult>;
    benchmarkX25519DH(): Promise<BenchmarkResult>;
    benchmarkEd25519KeyGen(): Promise<BenchmarkResult>;
    benchmarkEd25519Sign(): Promise<BenchmarkResult>;
    benchmarkEd25519Verify(): Promise<BenchmarkResult>;
    private runBenchmark;
    /**
     * Print benchmark results to console
     */
    printResults(results: BenchmarkSuiteResult): void;
    /**
     * Print comparison summary between classical and PQ
     */
    private printComparisonSummary;
    /**
     * Export results as JSON
     */
    exportJSON(results: BenchmarkSuiteResult): string;
    /**
     * Export results as CSV
     */
    exportCSV(results: BenchmarkSuiteResult): string;
}
/**
 * Create a benchmark runner
 */
export declare function createBenchmarkRunner(config?: Partial<BenchmarkConfig>): BenchmarkRunner;
/**
 * Run quick benchmark (reduced iterations)
 */
export declare function runQuickBenchmark(): Promise<BenchmarkSuiteResult>;
/**
 * Run full benchmark suite
 */
export declare function runFullBenchmark(): Promise<BenchmarkSuiteResult>;
//# sourceMappingURL=benchmark.d.ts.map