import '../../assert_dev_env.js';
import type { BenchmarkConfig, BenchmarkResult } from '@fuzdev/fuz_util/benchmark_types.js';
import type { BootstrappedBackendHandle } from '../setup.js';
import type { BenchScenario } from './scenario.js';
/**
 * Drive identical wire scenarios across several spawned backends and time each
 * round trip, so a TS impl and a Rust impl can be compared apples-to-apples
 * (both cross-process over real HTTP). The reusable cross-impl measurement
 * primitive.
 *
 * fuz_util's benchmark library is the engine — `Benchmark` runs each scenario
 * as a task and `BenchmarkResult.stats` carries the percentiles; this module
 * is the thin scenario→task→tagged-result adapter. Reporting (markdown,
 * TS-vs-Rust verdict, JSON artifact) lives in `bench_report.ts`.
 *
 * @module
 */
/** One backend × one scenario, with its timing result. */
export interface CrossImplBenchEntry {
    readonly backend: string;
    readonly scenario: string;
    readonly result: BenchmarkResult;
}
/** Full sweep across the supplied backends and scenarios. */
export interface CrossImplBenchResult {
    /** Backend names, in the order they were run. */
    readonly backends: ReadonlyArray<string>;
    /** Scenario names that ran on at least one backend. */
    readonly scenarios: ReadonlyArray<string>;
    readonly entries: ReadonlyArray<CrossImplBenchEntry>;
}
export interface RunCrossImplBenchOptions {
    /**
     * Already-bootstrapped backends to benchmark. Each one's `keeper_transport`
     * is the pre-authed transport scenarios fire against — bootstrap once, then
     * hammer; no per-iteration reset.
     */
    readonly handles: ReadonlyArray<BootstrappedBackendHandle>;
    readonly scenarios: ReadonlyArray<BenchScenario>;
    /** Overrides merged over the network-tuned defaults below. */
    readonly config?: Partial<BenchmarkConfig>;
}
export declare const run_cross_impl_bench: (options: RunCrossImplBenchOptions) => Promise<CrossImplBenchResult>;
//# sourceMappingURL=run_cross_impl_bench.d.ts.map