import { ServerError } from '../../utility/errors/hdbError.ts';
import type { BackendOpts, GenerateChunk, GenerateInput, GenerateOpts, GenerateResult, ModelBackend, ModelCallResult, ModelCapabilities } from '../../resources/models/types.ts';
export type AnthropicBackendKind = 'generative';
export interface AnthropicBackendConfig {
    apiKey?: string;
    model?: string;
    baseUrl?: string;
    requestTimeoutMs?: number;
}
/**
 * `ModelBackend` for Anthropic's Messages API.
 *
 * - `generate` → `POST {baseUrl}/v1/messages` (non-streaming)
 * - `generateStream` → same with `stream: true`; SSE wire format
 * - `embed` → not implemented; capability negotiation rejects the call
 *
 * `tools: true` — Anthropic has first-class tool-use support via
 * `tool_use` / `tool_result` content blocks.
 */
export declare class AnthropicBackend implements ModelBackend {
    #private;
    readonly name = "anthropic";
    constructor(config?: AnthropicBackendConfig, fetchImpl?: typeof fetch);
    capabilities(): ModelCapabilities;
    generate(input: GenerateInput, opts: BackendOpts<GenerateOpts>): Promise<ModelCallResult<GenerateResult>>;
    generateStream(input: GenerateInput, opts: BackendOpts<GenerateOpts>): AsyncIterable<GenerateChunk>;
}
/**
 * Boot-bridge helper. Anthropic only registers as a generative backend
 * (`embed: false`); the `kind` field would only ever be `'generative'` —
 * surface a clear error if a config block ever tries `embedding`.
 */
export declare function registerAnthropicBackend(args: {
    logicalName: string;
    kind: 'embedding' | 'generative';
    config: AnthropicBackendConfig;
}): void;
export declare class AnthropicBackendError extends ServerError {
    constructor(message: string);
}
