export declare enum AIProvider { OPENAI = "openai", ANTHROPIC = "anthropic", GOOGLE_GEMINI = "google-gemini", OLLAMA = "ollama", LITELLM = "litellm", GROK = "grok", VSCODE_LM = "vscode-lm" } export interface AIProviderConfig { provider: AIProvider; apiKey?: string; baseURL?: string; model?: string; maxTokens?: number; temperature?: number; topP?: number; topK?: number; frequencyPenalty?: number; presencePenalty?: number; repetitionPenalty?: number; stopSequences?: string[]; timeout?: number; retryAttempts?: number; retryDelay?: number; organizationId?: string; projectId?: string; region?: string; githubToken?: string; customHeaders?: Record; proxyUrl?: string; streamingEnabled?: boolean; } export interface AIResponse { content: string; model?: string; tokensUsed?: number; promptTokens?: number; completionTokens?: number; finishReason?: string; metadata?: Record; } export interface AIError { provider: AIProvider; code: string; message: string; statusCode?: number; retryable: boolean; details?: unknown; } export interface SummarizationRequest { content: string; context?: string; maxLength?: number; style?: 'technical' | 'simple' | 'detailed'; language?: string; } export interface CodeAnalysisRequest { code: string; language: string; analysisType: 'summary' | 'review' | 'documentation' | 'complexity' | 'security'; context?: string; } export interface DiagramGenerationRequest { description: string; type: 'flow' | 'sequence' | 'class' | 'er' | 'architecture'; format: 'mermaid' | 'plantuml' | 'graphviz'; } export interface IAIProvider { initialize(): Promise; generateText(prompt: string, systemPrompt?: string): Promise; generateStream(prompt: string, systemPrompt?: string): AsyncGenerator; summarize(request: SummarizationRequest): Promise; analyzeCode(request: CodeAnalysisRequest): Promise; generateDiagram(request: DiagramGenerationRequest): Promise; generateEmbedding(text: string): Promise; validateConfig(): Promise; getModelList(): Promise; estimateTokens(text: string): number; getProvider(): AIProvider; getTokenCount(): number; resetTokenCount(): void; } export declare abstract class BaseAIProvider implements IAIProvider { protected config: AIProviderConfig; protected tokenCount: number; private databaseManager?; constructor(config: AIProviderConfig); private initializeDatabase; abstract initialize(): Promise; abstract generateText(prompt: string, systemPrompt?: string): Promise; abstract generateStream(prompt: string, systemPrompt?: string): AsyncGenerator; abstract summarize(request: SummarizationRequest): Promise; abstract analyzeCode(request: CodeAnalysisRequest): Promise; abstract generateDiagram(request: DiagramGenerationRequest): Promise; abstract generateEmbedding(text: string): Promise; abstract validateConfig(): Promise; abstract getModelList(): Promise; abstract estimateTokens(text: string): number; getProvider(): AIProvider; getTokenCount(): number; resetTokenCount(): void; protected recordTokenUsage(tokensUsed: number, operation: string, model?: string, promptTokens?: number, completionTokens?: number, cost?: number): Promise; protected handleError(error: unknown): AIError; protected isRetryableError(error: unknown): boolean; protected retry(fn: () => Promise, attempts?: number, delay?: number): Promise; } //# sourceMappingURL=base.d.ts.map