export type BillingMode = "per-token" | "subscription" | "free"; export interface GenerateResult { text: string; durationMs: number; inputTokens: number | null; outputTokens: number | null; cost: number | null; billingMode: BillingMode; } export interface LlmClient { generate(systemPrompt: string, userPrompt: string): Promise; readonly model: string; } export type ProviderName = "anthropic" | "claude-cli" | "codex-cli" | "gemini-cli" | "lm-studio" | "ollama" | "openai" | "openrouter" | "stub"; export interface LlmOverrides { provider?: ProviderName; model?: string; } /** * Estimate total eval duration in seconds based on provider and workload. * Each case requires 1 generate call + N judge calls (one per assertion). */ export declare function estimateDurationSec(provider: ProviderName, totalCases: number, totalAssertions: number): { minSec: number; maxSec: number; label: string; }; export declare function createLlmClient(overrides?: LlmOverrides): LlmClient;