/**
 * Benchmark tracking for wizard runs.
 *
 * Usage:
 *   const pipeline = createBenchmarkPipeline(spinner, options);
 *   pipeline.onMessage(message);
 *   pipeline.finalize(resultMessage, durationMs);
 */
import { type SpinnerHandle } from '../../ui';
import { MiddlewarePipeline } from './pipeline';
import type { BenchmarkConfig } from './config';
import type { Middleware } from './types';
import type { WizardOptions } from '../../utils/types';
export interface StepUsage {
    name: string;
    usage: {
        input_tokens: number;
        output_tokens: number;
        cache_creation_input_tokens: number;
        cache_read_input_tokens: number;
        cache_creation?: {
            ephemeral_5m_input_tokens: number;
            ephemeral_1h_input_tokens: number;
        };
    };
    modelUsage: Record<string, unknown>;
    totalCostUsd: number;
    durationMs: number;
    durationApiMs: number;
    numTurns: number;
    contextTokensIn?: number;
    contextTokensOut?: number;
    compactions?: number;
    compactionPreTokens?: number[];
}
export interface BenchmarkData {
    timestamp: string;
    steps: StepUsage[];
    totals: {
        totalCostUsd: number;
        durationMs: number;
        inputTokens: number;
        outputTokens: number;
        numTurns: number;
        totalCompactions: number;
        totalCacheReadTokens: number;
        totalCacheCreation5mTokens: number;
        totalCacheCreation1hTokens: number;
    };
}
/**
 * Create a middleware pipeline configured for benchmarking.
 * Loads .benchmark-config.json from the install dir, falls back to defaults.
 */
export declare function createBenchmarkPipeline(spinner: SpinnerHandle, options: WizardOptions, configOverride?: BenchmarkConfig, extras?: {
    extraMiddlewares?: Middleware[];
}): MiddlewarePipeline;
