import { RedisClientType } from 'redis';
import { ArchiveProvider } from '../base';
import { ArchiveEntry, SearchResult, SearchOptions, SearchByTextOptions, SearchBySimilarityOptions, HybridSearchOptions, ProviderConfig } from '../types';
export interface RedisArchiveProviderConfig extends ProviderConfig {
    dimensions?: number;
    collectionName?: string;
    indexName?: string;
    client: RedisClientType;
}
/**
 * Utility function to set up Redis schema for archive storage.
 * This should be called once during application initialization.
 */
export declare function setupRedisSchema(client: RedisClientType, indexName?: string, collectionName?: string, dimensions?: number): Promise<void>;
export declare class RedisArchiveProvider extends ArchiveProvider {
    private readonly client;
    private readonly indexName;
    private readonly collectionName;
    constructor(config: RedisArchiveProviderConfig);
    initialize(): Promise<void>;
    cleanup(): Promise<void>;
    private getKey;
    protected generateEmbeddings(text: string): Promise<number[]>;
    addEntry(entry: Omit<ArchiveEntry, 'id' | 'embeddings' | 'timestamp'>): Promise<ArchiveEntry>;
    addEntries(entries: ArchiveEntry[]): Promise<ArchiveEntry[]>;
    updateEntry(id: string, entry: Partial<ArchiveEntry>): Promise<ArchiveEntry>;
    deleteEntry(id: string): Promise<void>;
    deleteEntriesByName(name: string): Promise<number>;
    searchByText(query: string, options?: SearchByTextOptions): Promise<SearchResult[]>;
    searchBySimilarity(query: string, options?: SearchBySimilarityOptions): Promise<SearchResult[]>;
    hybridSearch(query: string, options?: HybridSearchOptions): Promise<SearchResult[]>;
    listEntries(options?: SearchOptions): Promise<ArchiveEntry[]>;
    getEntry(id: string): Promise<ArchiveEntry | null>;
    clear(): Promise<void>;
    count(): Promise<number>;
}
//# sourceMappingURL=RedisArchiveProvider.d.ts.map