import { type ApiFormat } from "./llm-format.js"; export interface LLMConfig { baseUrl: string; apiKey: string; model: string; maxTokens: number; timeoutMs?: number; maxAttempts?: number; apiFormat?: ApiFormat; } /** * Return an LLMConfig identical to `base` except `model` is swapped to * the provided value (v0.10.0 — per-stage model overrides). Pure; * defensive shallow-copy so callers can mutate the result safely. * * The base config carries auth, base URL, wire format, timeouts — all * shared across stages. Only `model` differs per phase, so this is the * minimum useful surface for the override. */ export declare function withModel(base: LLMConfig, model: string): LLMConfig; export interface LLMMessage { role: "user" | "assistant"; content: string; } export interface LLMResult { text: string; usage?: { input_tokens: number; output_tokens: number; }; } export declare class LLMError extends Error { readonly status: number; readonly detail: string; constructor(status: number, message: string, detail?: string); get retriable(): boolean; } export declare const DEFAULT_LLM_TIMEOUT_MS = 120000; export declare const DEFAULT_LLM_ATTEMPTS = 3; export declare function callLLM(messages: LLMMessage[], system: string, config: LLMConfig, signal?: AbortSignal): Promise; //# sourceMappingURL=llm.d.ts.map