export interface HttpBenchmarkTarget { readonly name: string; readonly url: string | ((iteration: number) => string); readonly init?: RequestInit | ((iteration: number) => RequestInit | Promise); /** Runs after timing ends; assertions must consume the supplied body. */ readonly validate?: (response: Response, body: ArrayBuffer) => void | Promise; readonly expectedStatus?: number; } export interface HttpBenchmarkOptions { readonly targets: readonly HttpBenchmarkTarget[]; readonly rounds?: number; readonly warmup?: number; readonly fetch?: typeof globalThis.fetch; readonly concurrency?: number; readonly onSample?: (sample: HttpBenchmarkSample) => void; } export interface HttpBenchmarkSample { readonly name: string; readonly iteration: number; readonly status: number; readonly ttfbMs: number; readonly elapsedMs: number; readonly responseBytes: number; readonly queryCount?: number; readonly rowsRead?: number; } export interface HttpBenchmarkResult { readonly name: string; readonly samples: number; readonly status: number; /** Full response body time, retained under the original field name. */ readonly timingMs: { readonly p50: number; readonly p95: number; readonly max: number; }; readonly ttfbMs: { readonly p50: number; readonly p95: number; readonly max: number; }; readonly responseBytes: { readonly p50: number; readonly p95: number; readonly max: number; }; readonly queryCount?: { readonly p50: number; readonly p95: number; readonly max: number; }; readonly rowsRead?: { readonly p50: number; readonly p95: number; readonly max: number; }; } export interface HttpBenchmarkReport { readonly version: 1; readonly rounds: number; readonly warmup: number; readonly results: readonly HttpBenchmarkResult[]; } /** Sample live Worker routes. Optional metric headers come from a test wrapper. */ export declare function benchmarkHttpRoutes(options: HttpBenchmarkOptions): Promise; //# sourceMappingURL=HttpBenchmarkHarness.d.ts.map