/**
 * Core memory service with vector search capabilities
 */
import { DatabaseConnection, DatabaseOperations } from '../database/index.js';
import { EmbeddingService } from '../utils/embeddings.js';
import { EmbeddingUpdater } from '../services/embedding-updater.js';
import type { User, VectorSearchOptions, MCPToolResult } from '../types/base.js';
import { MemoryType, EntityType, ImportanceLevel } from '../types/enums.js';
export declare class MemoryCore {
    protected db: DatabaseConnection;
    protected dbOps: DatabaseOperations;
    protected embeddings: EmbeddingService;
    protected embeddingUpdater: EmbeddingUpdater | null;
    protected defaultUserId: string | null;
    protected autoUpdateEmbeddings: boolean;
    constructor(db: DatabaseConnection, openaiApiKey?: string, options?: {
        autoUpdateEmbeddings?: boolean;
    });
    /**
     * Initialize the memory core
     */
    initialize(): Promise<void>;
    /**
     * Ensure default user exists
     */
    private ensureDefaultUser;
    /**
     * Get user ID (default or provided)
     */
    protected getUserId(userId?: string): string;
    createUser(userData: Partial<User>): Promise<MCPToolResult>;
    getUserByApiKey(apiKey: string): Promise<User | null>;
    addMemory(title: string, content: string, memoryType?: MemoryType | string, options?: {
        userId?: string;
        importance?: ImportanceLevel | number;
        tags?: string[];
        entityIds?: number[];
        metadata?: Record<string, unknown>;
        generateEmbedding?: boolean;
    }): Promise<MCPToolResult>;
    searchMemories(query: string, options?: VectorSearchOptions & {
        userId?: string;
    }): Promise<MCPToolResult>;
    getMemory(memoryId: string, options?: {
        userId?: string;
    }): Promise<MCPToolResult>;
    updateMemory(memoryId: string, updates: {
        title?: string;
        content?: string;
        importance?: ImportanceLevel | number;
        tags?: string[];
        metadata?: Record<string, unknown>;
    }, options?: {
        userId?: string;
    }): Promise<MCPToolResult>;
    deleteMemory(memoryId: string, options?: {
        userId?: string;
    }): Promise<MCPToolResult>;
    /**
     * Calculate temporal decay factor for a memory
     * Uses a logarithmic decay function that never reaches zero
     */
    private calculateTemporalDecay;
    /**
     * Sort memories by strategy with temporal decay and semantic linking
     */
    private sortByStrategy;
    /**
     * Vector search for memories
     */
    private vectorSearchMemories;
    createEntity(name: string, entityType: EntityType, options?: {
        userId?: string;
        description?: string;
        importance?: ImportanceLevel;
        tags?: string[];
        [key: string]: any;
    }): Promise<MCPToolResult>;
    searchEntities(query: string, options?: {
        userId?: string;
        limit?: number;
    }): Promise<MCPToolResult>;
    unifiedSearch(query: string, options?: VectorSearchOptions & {
        userId?: string;
    }): Promise<MCPToolResult>;
    getStatistics(userId?: string): Promise<MCPToolResult>;
    /**
     * Manually trigger embedding update for all memories without embeddings
     */
    updateMissingEmbeddings(): Promise<MCPToolResult>;
    /**
     * Close the memory core
     */
    close(): Promise<void>;
}
//# sourceMappingURL=memory-core.d.ts.map