import { ModelProvider, Message, CompletionOptions, CompletionResponse, StreamChunk, Usage, Cost } from '../types/index.js'; export declare abstract class BaseProvider implements ModelProvider { abstract name: string; abstract models: string[]; abstract supportsStreaming: boolean; abstract supportsTools: boolean; protected apiKey: string; protected baseUrl?: string; constructor(apiKey: string, baseUrl?: string); abstract complete(messages: Message[], options?: CompletionOptions): Promise; stream(_messages: Message[], _options?: CompletionOptions): AsyncIterableIterator; abstract calculateCost(usage: Usage, model?: string): Cost; protected countTokens(text: string): number; protected validateMessages(messages: Message[]): void; protected getTextContent(message: Message): string; protected hasMultimodalContent(message: Message): boolean; protected supportsVision(_model: string): boolean; formatTools?(tools: any[]): any[]; parseToolCalls?(_response: any): any[] | undefined; protected handleRateLimit(retryAfter: number): Promise; } export declare class ProviderRegistry { private providers; register(provider: BaseProvider): void; get(name: string): BaseProvider | undefined; list(): string[]; getModels(): Record; clear(name: string): void; clearAll(): void; } export declare const providerRegistry: ProviderRegistry; //# sourceMappingURL=base.d.ts.map