/**
 * Embedding Service
 *
 * Optional semantic search enhancement for pattern matching.
 * Gracefully falls back to keyword-only search when OpenAI API key is not available.
 */
export interface EmbeddingConfig {
    provider?: 'openai';
    apiKey?: string;
    model?: string;
    dimensions?: number;
}
export interface EmbeddingProvider {
    generateEmbedding(text: string): Promise<number[]>;
    generateEmbeddings(texts: string[]): Promise<number[][]>;
    isAvailable(): boolean;
    getDimensions(): number;
}
/**
 * OpenAI Embedding Provider
 * Optional provider for semantic search enhancement
 */
export declare class OpenAIEmbeddingProvider implements EmbeddingProvider {
    private client;
    private model;
    private dimensions;
    private available;
    constructor(config?: EmbeddingConfig);
    generateEmbedding(text: string): Promise<number[]>;
    generateEmbeddings(texts: string[]): Promise<number[][]>;
    isAvailable(): boolean;
    getDimensions(): number;
    getModel(): string;
}
/**
 * Main Embedding Service
 * Provides optional semantic search capabilities with graceful degradation
 */
export declare class EmbeddingService {
    private provider;
    constructor(config?: EmbeddingConfig);
    /**
     * Generate embedding for text (optional enhancement)
     * Returns null if embeddings not available - caller should handle gracefully
     */
    generateEmbedding(text: string): Promise<number[] | null>;
    /**
     * Generate embeddings for multiple texts (optional enhancement)
     * Returns empty array if embeddings not available
     */
    generateEmbeddings(texts: string[]): Promise<number[][]>;
    /**
     * Check if semantic search is available
     */
    isAvailable(): boolean;
    /**
     * Get embedding dimensions (if available)
     */
    getDimensions(): number;
    /**
     * Get status information for debugging/logging
     */
    getStatus(): {
        available: boolean;
        provider: string | null;
        model?: string;
        dimensions?: number;
        reason?: string;
    };
    /**
     * Create searchable text from pattern data
     */
    createPatternSearchText(pattern: {
        description: string;
        triggers: string[];
        suggestedResources: string[];
        rationale: string;
    }): string;
}
//# sourceMappingURL=embedding-service.d.ts.map