import { ChatMessage, ChatOptions, ProviderResponse as GlobalProviderResponse } from '../../../types/chat';
import { Tool as GlobalTool } from '../../../types/tool';
import { ILogger } from '../../../types/common';
export interface AnthropicProviderConfig {
    apiKey: string;
    model: string;
}
export interface AnthropicConfig extends AnthropicProviderConfig {
    logger: ILogger;
    getApiUrl: () => string;
}
export interface AnthropicChatRequestBody {
    model: string;
    messages: AnthropicMessage[];
    max_tokens?: number;
    temperature?: number;
    stream?: boolean;
    system?: string;
    tools?: AnthropicToolSchema[];
}
export interface AnthropicMessage {
    role: 'user' | 'assistant' | 'system';
    content: string | AnthropicMessageContent[];
}
export type AnthropicMessageContent = AnthropicTextContent | AnthropicToolUseContent;
export interface AnthropicTextContent {
    type: 'text';
    text: string;
}
export interface AnthropicToolUseContent {
    type: 'tool_use';
    id: string;
    name: string;
    input: Record<string, any>;
}
export interface AnthropicChatResponse {
    id: string;
    type: 'message';
    role: 'assistant';
    model: string;
    content: AnthropicMessageContent[];
    stop_reason: string | null;
    stop_sequence: string | null;
    usage: {
        input_tokens: number;
        output_tokens: number;
    };
}
export interface AnthropicToolSchema {
    name: string;
    description?: string;
    input_schema: {
        type: string;
        properties: {
            [key: string]: {
                type: string;
                description?: string;
                enum?: string[];
            };
        };
        required: string[];
    };
}
export type Tool = GlobalTool;
export type ProviderResponse = GlobalProviderResponse;
export type AnthropicCacheKey = {
    messages: ChatMessage[];
    options: ChatOptions;
    tools?: Tool[];
};
