/**
 * Token Throughput Benchmark for Qwen3.5
 *
 * Measures token generation throughput at different context sizes.
 * Uses actual model inference via the local API endpoint.
 */
import { z } from 'zod';
export declare const TokenThroughputConfigSchema: z.ZodObject<{
    endpoint: z.ZodDefault<z.ZodString>;
    model: z.ZodDefault<z.ZodString>;
    contextSizes: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
    warmupRuns: z.ZodDefault<z.ZodNumber>;
    measurementRuns: z.ZodDefault<z.ZodNumber>;
    maxTokens: z.ZodDefault<z.ZodNumber>;
    temperature: z.ZodDefault<z.ZodNumber>;
}, "strip", z.ZodTypeAny, {
    endpoint: string;
    model: string;
    temperature: number;
    maxTokens: number;
    contextSizes: number[];
    warmupRuns: number;
    measurementRuns: number;
}, {
    endpoint?: string | undefined;
    model?: string | undefined;
    temperature?: number | undefined;
    maxTokens?: number | undefined;
    contextSizes?: number[] | undefined;
    warmupRuns?: number | undefined;
    measurementRuns?: number | undefined;
}>;
export type TokenThroughputConfig = z.infer<typeof TokenThroughputConfigSchema>;
export declare const TokenThroughputResultSchema: z.ZodObject<{
    contextSize: z.ZodNumber;
    tokensPerSecond: z.ZodNumber;
    totalTimeMs: z.ZodNumber;
    avgLatencyMs: z.ZodNumber;
    runs: z.ZodArray<z.ZodObject<{
        runIndex: z.ZodNumber;
        tokensGenerated: z.ZodNumber;
        latencyMs: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        latencyMs: number;
        runIndex: number;
        tokensGenerated: number;
    }, {
        latencyMs: number;
        runIndex: number;
        tokensGenerated: number;
    }>, "many">;
}, "strip", z.ZodTypeAny, {
    avgLatencyMs: number;
    contextSize: number;
    tokensPerSecond: number;
    totalTimeMs: number;
    runs: {
        latencyMs: number;
        runIndex: number;
        tokensGenerated: number;
    }[];
}, {
    avgLatencyMs: number;
    contextSize: number;
    tokensPerSecond: number;
    totalTimeMs: number;
    runs: {
        latencyMs: number;
        runIndex: number;
        tokensGenerated: number;
    }[];
}>;
export type TokenThroughputResult = z.infer<typeof TokenThroughputResultSchema>;
export declare const TokenThroughputBenchmarkSchema: z.ZodObject<{
    model: z.ZodString;
    endpoint: z.ZodString;
    timestamp: z.ZodString;
    config: z.ZodObject<{
        endpoint: z.ZodDefault<z.ZodString>;
        model: z.ZodDefault<z.ZodString>;
        contextSizes: z.ZodDefault<z.ZodArray<z.ZodNumber, "many">>;
        warmupRuns: z.ZodDefault<z.ZodNumber>;
        measurementRuns: z.ZodDefault<z.ZodNumber>;
        maxTokens: z.ZodDefault<z.ZodNumber>;
        temperature: z.ZodDefault<z.ZodNumber>;
    }, "strip", z.ZodTypeAny, {
        endpoint: string;
        model: string;
        temperature: number;
        maxTokens: number;
        contextSizes: number[];
        warmupRuns: number;
        measurementRuns: number;
    }, {
        endpoint?: string | undefined;
        model?: string | undefined;
        temperature?: number | undefined;
        maxTokens?: number | undefined;
        contextSizes?: number[] | undefined;
        warmupRuns?: number | undefined;
        measurementRuns?: number | undefined;
    }>;
    results: z.ZodArray<z.ZodObject<{
        contextSize: z.ZodNumber;
        tokensPerSecond: z.ZodNumber;
        totalTimeMs: z.ZodNumber;
        avgLatencyMs: z.ZodNumber;
        runs: z.ZodArray<z.ZodObject<{
            runIndex: z.ZodNumber;
            tokensGenerated: z.ZodNumber;
            latencyMs: z.ZodNumber;
        }, "strip", z.ZodTypeAny, {
            latencyMs: number;
            runIndex: number;
            tokensGenerated: number;
        }, {
            latencyMs: number;
            runIndex: number;
            tokensGenerated: number;
        }>, "many">;
    }, "strip", z.ZodTypeAny, {
        avgLatencyMs: number;
        contextSize: number;
        tokensPerSecond: number;
        totalTimeMs: number;
        runs: {
            latencyMs: number;
            runIndex: number;
            tokensGenerated: number;
        }[];
    }, {
        avgLatencyMs: number;
        contextSize: number;
        tokensPerSecond: number;
        totalTimeMs: number;
        runs: {
            latencyMs: number;
            runIndex: number;
            tokensGenerated: number;
        }[];
    }>, "many">;
    summary: z.ZodObject<{
        avgTokensPerSecond: z.ZodNumber;
        minTokensPerSecond: z.ZodNumber;
        maxTokensPerSecond: z.ZodNumber;
        avgLatencyMs: z.ZodNumber;
        totalRuns: z.ZodNumber;
        totalTokensProcessed: z.ZodNumber;
    }, "strip", z.ZodTypeAny, {
        avgLatencyMs: number;
        avgTokensPerSecond: number;
        minTokensPerSecond: number;
        maxTokensPerSecond: number;
        totalRuns: number;
        totalTokensProcessed: number;
    }, {
        avgLatencyMs: number;
        avgTokensPerSecond: number;
        minTokensPerSecond: number;
        maxTokensPerSecond: number;
        totalRuns: number;
        totalTokensProcessed: number;
    }>;
}, "strip", z.ZodTypeAny, {
    endpoint: string;
    model: string;
    config: {
        endpoint: string;
        model: string;
        temperature: number;
        maxTokens: number;
        contextSizes: number[];
        warmupRuns: number;
        measurementRuns: number;
    };
    summary: {
        avgLatencyMs: number;
        avgTokensPerSecond: number;
        minTokensPerSecond: number;
        maxTokensPerSecond: number;
        totalRuns: number;
        totalTokensProcessed: number;
    };
    timestamp: string;
    results: {
        avgLatencyMs: number;
        contextSize: number;
        tokensPerSecond: number;
        totalTimeMs: number;
        runs: {
            latencyMs: number;
            runIndex: number;
            tokensGenerated: number;
        }[];
    }[];
}, {
    endpoint: string;
    model: string;
    config: {
        endpoint?: string | undefined;
        model?: string | undefined;
        temperature?: number | undefined;
        maxTokens?: number | undefined;
        contextSizes?: number[] | undefined;
        warmupRuns?: number | undefined;
        measurementRuns?: number | undefined;
    };
    summary: {
        avgLatencyMs: number;
        avgTokensPerSecond: number;
        minTokensPerSecond: number;
        maxTokensPerSecond: number;
        totalRuns: number;
        totalTokensProcessed: number;
    };
    timestamp: string;
    results: {
        avgLatencyMs: number;
        contextSize: number;
        tokensPerSecond: number;
        totalTimeMs: number;
        runs: {
            latencyMs: number;
            runIndex: number;
            tokensGenerated: number;
        }[];
    }[];
}>;
export type TokenThroughputBenchmark = z.infer<typeof TokenThroughputBenchmarkSchema>;
export interface ChatCompletionRequest {
    model: string;
    messages: Array<{
        role: 'user' | 'assistant' | 'system';
        content: string;
    }>;
    max_tokens?: number;
    temperature?: number;
}
export interface ChatCompletionResponse {
    id: string;
    model: string;
    created: number;
    choices: Array<{
        index: number;
        message: {
            role: string;
            content: string;
        };
        finish_reason: string;
    }>;
    usage: {
        prompt_tokens: number;
        completion_tokens: number;
        total_tokens: number;
    };
}
export declare function chatCompletion(config: TokenThroughputConfig, messages: ChatCompletionRequest['messages'], options?: Partial<ChatCompletionRequest>): Promise<ChatCompletionResponse>;
export declare function runTokenThroughputBenchmark(config?: Partial<TokenThroughputConfig>): Promise<TokenThroughputBenchmark>;
//# sourceMappingURL=token-throughput.d.ts.map