/** * Base Provider - Abstract base class for LLM providers */ import type { LLMProvider, ProviderConfig, GenerateTextOptions, GenerateTextResult, StreamTextOptions, StreamChunk, GenerateObjectOptions, GenerateObjectResult, Message, ToolDefinition } from './types'; export declare abstract class BaseProvider implements LLMProvider { abstract readonly providerId: string; readonly modelId: string; protected config: ProviderConfig; constructor(modelId: string, config?: ProviderConfig); abstract generateText(options: GenerateTextOptions): Promise; abstract streamText(options: StreamTextOptions): Promise>; abstract generateObject(options: GenerateObjectOptions): Promise>; /** * Convert tool definitions to provider-specific format */ protected abstract formatTools(tools: ToolDefinition[]): any[]; /** * Convert messages to provider-specific format */ protected abstract formatMessages(messages: Message[]): any[]; /** * Retry logic with exponential backoff */ protected withRetry(fn: () => Promise, maxRetries?: number): Promise; }