/** * Embedding Service Interfaces * SOLID Principles: Interface Segregation */ import { DatabaseConnections } from '../../../../config/database-config'; export interface EmbeddingConfig { provider?: 'xenova' | 'openai' | 'local' | 'hybrid'; openaiApiKey?: string; model?: 'Xenova/all-MiniLM-L6-v2' | 'text-embedding-ada-002' | 'text-embedding-3-small' | 'text-embedding-3-large' | 'local'; chunkSize?: number; maxTokens?: number; batchSize?: number; granularMode?: boolean; } export interface FileEmbedding { filePath: string; content: string; hash: string; embedding: number[]; metadata: { language: string; size: number; lines: number; functions: string[]; classes: string[]; imports: string[]; exports: string[]; }; } export interface MethodEmbedding { methodId: string; className?: string; methodName: string; filePath: string; content: string; signature: string; parameters: Array<{ name: string; type?: string; }>; returnType?: string; embedding: number[]; hash: string; metadata: { language: string; complexity?: number; linesOfCode: number; visibility: 'public' | 'private' | 'protected'; isStatic?: boolean; isAsync?: boolean; }; } export interface ClassEmbedding { classId: string; className: string; filePath: string; content: string; methods: string[]; properties: string[]; extends?: string; implements?: string[]; embedding: number[]; hash: string; metadata: { language: string; complexity?: number; linesOfCode: number; visibility: 'public' | 'private' | 'protected'; isAbstract?: boolean; isInterface?: boolean; }; } export interface EmbeddingResult { embeddings: number; errors: number; methodEmbeddings?: number; classEmbeddings?: number; } export interface IEmbeddingProvider { initialize(): Promise; generateEmbedding(text: string, context?: string): Promise; canHandle(model: string): boolean; cleanup?: () => Promise; } export interface IFileProcessor { processFiles(projectPath: string, files: string[]): Promise; generateFileEmbedding(filePath: string, projectPath: string): Promise; } export interface IGranularProcessor { generateGranularEmbeddings(projectPath: string, files: string[]): Promise<{ classEmbeddings: ClassEmbedding[]; methodEmbeddings: MethodEmbedding[]; }>; generateClassEmbedding(parsedFile: any, classInfo: any): Promise; generateMethodEmbedding(parsedFile: any, classInfo: any, methodInfo: any): Promise; } export interface IEmbeddingDatabase { initializeDatabase(dbConnections: DatabaseConnections): Promise; saveFileEmbeddings(embeddings: FileEmbedding[]): Promise; saveClassEmbeddings(embeddings: ClassEmbedding[]): Promise; saveMethodEmbeddings(embeddings: MethodEmbedding[]): Promise; findExistingEmbeddings(hashes: string[]): Promise; } //# sourceMappingURL=interfaces.d.ts.map