import { LlmProvider, type ChatResult, type ChatStreamChunk, type LlmMessage, type NormalizedOptions, type ProviderConfigBase } from './provider-base.js';
export interface AnthropicProviderConfig extends Omit<ProviderConfigBase, 'providerType'> {
    /** Base URL up to (but not including) `/v1/messages`. Defaults to
     *  Anthropic's public endpoint. Override for Bedrock / Vertex / a
     *  corporate gateway. */
    baseUrl?: string;
    /** `anthropic-version` header value. Anthropic pins API behaviour to
     *  this date string; bumping it can change response shapes. We
     *  default to the latest stable as of 2026-05. */
    apiVersion?: string;
    /** Extra headers merged into every request. `x-api-key` /
     *  `anthropic-version` / `content-type` are set automatically and
     *  cannot be overridden here. */
    extraHeaders?: Record<string, string>;
    /** Retries on transient (429 / 5xx). Default 1, same as OpenAI compat. */
    retryOnTransient?: number;
    /** Display label for cost dashboard / logs. */
    providerLabel?: string;
}
/**
 * Native Anthropic Messages API provider.
 *
 * The constructor takes the same shape as OpenAICompatProvider (caller
 * code stays uniform); the differences live entirely in the wire-format
 * helpers below.
 */
export declare class AnthropicProvider extends LlmProvider {
    private readonly baseUrl;
    private readonly apiVersion;
    private readonly extraHeaders;
    private readonly retryOnTransient;
    constructor(cfg: AnthropicProviderConfig);
    protected _callApi(messages: LlmMessage[], opts: NormalizedOptions, signal: AbortSignal): Promise<ChatResult>;
    protected _callApiStream(messages: LlmMessage[], opts: NormalizedOptions, signal: AbortSignal): AsyncIterable<ChatStreamChunk>;
    /**
     * Compose the Anthropic Messages body. Differences vs OpenAI:
     *   - `system` is a top-level field, NOT a message
     *   - `messages[*].content` may be a string OR a content-block array
     *   - tool calls live inside assistant content as `{type:'tool_use',...}`
     *   - tool results live inside user content as `{type:'tool_result',...}`
     *   - `tools` use `input_schema` (we pass our ToolDef.parameters JSON
     *     Schema directly — Anthropic accepts the same dialect)
     */
    private _buildBody;
    private _postJson;
    /**
     * fetch + transient retry. Mirrors OpenAICompatProvider's logic on
     * purpose so the two providers feel the same to operators reading
     * logs.
     */
    private _fetchWithRetry;
}
//# sourceMappingURL=anthropic-provider.d.ts.map