import { type AgentCompletion, type AgentCompletionChunk, type AgentCompletionOptions, type AgentLlmAdapter, type AgentMessage, type AgentPrompt, type AgentToolDefinition } from '../../common'; /** * Base configuration for all LLM adapters. */ export interface BaseLlmAdapterConfig { /** * Model identifier (e.g., 'gpt-4-turbo', 'claude-3-opus-20240229'). */ model: string; /** * API key for authentication. */ apiKey: string; /** * Optional base URL for custom endpoints. */ baseUrl?: string; /** * Default temperature for generations (0-2). */ temperature?: number; /** * Default maximum tokens for responses. */ maxTokens?: number; /** * Request timeout in milliseconds. * @default 60000 */ timeout?: number; /** * Maximum number of retries for failed requests. * @default 3 */ maxRetries?: number; } /** * Abstract base class for LLM adapters with common functionality. * * Provides: * - Configuration management * - Retry logic * - Error handling * - Tool formatting utilities */ export declare abstract class BaseLlmAdapter implements AgentLlmAdapter { protected readonly config: Required> & Omit; constructor(config: BaseLlmAdapterConfig); /** * Generate a completion from the LLM. */ abstract completion(prompt: AgentPrompt, tools?: AgentToolDefinition[], options?: AgentCompletionOptions): Promise; /** * Stream a completion from the LLM. * Default implementation wraps non-streaming completion. */ streamCompletion(prompt: AgentPrompt, tools?: AgentToolDefinition[], options?: AgentCompletionOptions): AsyncGenerator; /** * Format messages for the provider's API. */ protected formatMessages(messages: AgentMessage[]): unknown[]; /** * Format a single message for the provider's API. * Override in subclasses for provider-specific formatting. */ protected abstract formatMessage(message: AgentMessage): unknown; /** * Format tools for the provider's API. * Override in subclasses for provider-specific formatting. */ protected abstract formatTools(tools: AgentToolDefinition[]): unknown[]; /** * Parse the provider's response into AgentCompletion format. */ protected abstract parseResponse(response: unknown): AgentCompletion; /** * Execute with retry logic. */ protected withRetry(fn: () => Promise, retries?: number): Promise; /** * Check if an error should not be retried. */ protected isNonRetryableError(error: Error): boolean; /** * Sleep for a duration. */ protected sleep(ms: number): Promise; /** * Merge options with defaults. */ protected mergeOptions(options?: AgentCompletionOptions): AgentCompletionOptions; } /** * Error thrown when an LLM adapter encounters an error. */ export declare class LlmAdapterError extends Error { readonly provider: string; readonly code?: string | undefined; readonly statusCode?: number | undefined; readonly raw?: unknown | undefined; constructor(message: string, provider: string, code?: string | undefined, statusCode?: number | undefined, raw?: unknown | undefined); } /** * Error thrown when rate limited by the provider. */ export declare class LlmRateLimitError extends LlmAdapterError { readonly retryAfter?: number | undefined; constructor(provider: string, retryAfter?: number | undefined, raw?: unknown); } /** * Error thrown when context length is exceeded. */ export declare class LlmContextLengthError extends LlmAdapterError { constructor(provider: string, raw?: unknown); } //# sourceMappingURL=base.adapter.d.ts.map