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<GenerateResult>;
    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;
