/**
 * OpenAI adapter for the LLMClient port.
 *
 * Uses fetch() against the Chat Completions API — same transport pattern as
 * the existing grader (`packages/eval/src/pipeline/grader-api.ts`). No SDK
 * dependency. Centralizes retry, rate-limit handling, cost accounting, and
 * per-call telemetry tagging via `context.feature`.
 *
 * Per `.claude/rules/eval-pipeline.md` and `.claude/rules/typescript.md`:
 * the adapter never reads `process.env`. The composition root maps env vars
 * to typed constructor args.
 */
import { type LLMClient, type LLMCompleteArgs, type LLMCompleteStructuredArgs, type LLMCompletion, type LLMStructuredCompletion, type Logger } from "../../_vendor/ailf-core/index.d.ts";
import type { ModelPricing } from "./pricing.js";
import { type RetryPolicy } from "./retry.js";
export interface OpenAILLMClientOptions {
    /** OpenAI API key. */
    apiKey: string;
    /** Optional override of the chat-completions endpoint. */
    baseUrl?: string;
    /** Pricing table keyed by canonical model id (without the `openai:` prefix). */
    pricing?: Record<string, ModelPricing>;
    retryPolicy?: Partial<RetryPolicy>;
    logger?: Logger;
    /** Sleep injectable for tests. */
    sleep?: (ms: number) => Promise<void>;
    /** Random source for jitter — injectable for tests. */
    rng?: () => number;
}
export declare class OpenAILLMClient implements LLMClient {
    private readonly apiKey;
    private readonly baseUrl;
    private readonly pricing;
    private readonly retryPolicy;
    private readonly logger?;
    private readonly sleep?;
    private readonly rng?;
    constructor(options: OpenAILLMClientOptions);
    complete(args: LLMCompleteArgs): Promise<LLMCompletion>;
    completeStructured<T>(args: LLMCompleteStructuredArgs<T>): Promise<LLMStructuredCompletion<T>>;
    private callApi;
    private computeCost;
    private logTelemetry;
}
