import type Database from 'better-sqlite3';
import { Memory, MemoryCategory, MemoryConfig, SearchResult } from './types.js';
export interface SearchExecutionOptions {
    enableSideEffects: boolean;
    includeExplanation: boolean;
}
export interface SearchScoringContext {
    db: Database.Database;
    config: MemoryConfig;
    detectedCategory: MemoryCategory | null;
    queryTags: string[];
    vectorResults: Map<number, number>;
    query: string;
}
export interface SearchScoreValues {
    ftsScore: number;
    vectorSimilarity: number;
    vectorBoost: number;
    decayedScore: number;
    priorityBoost: number;
    recencyBoost: number;
    categoryBoost: number;
    linkBoost: number;
    tagBoost: number;
    activationBoost: number;
    contradictionPenalty: number;
    finalScore: number;
}
export type MemoryRowConverter = (row: Record<string, unknown>) => Memory;
export declare function detectQueryCategory(query: string): MemoryCategory | null;
export declare function calculateLinkBoost(memoryId: number, db: Database.Database): number;
export declare function calculateTagScore(queryTags: string[], memoryTags: string[]): number;
export declare function extractQueryTags(query: string): string[];
export declare function vectorSearch(db: Database.Database, rowToMemory: MemoryRowConverter, queryEmbedding: Float32Array, limit: number, project?: string, includeGlobal?: boolean): Array<{
    memory: Memory;
    similarity: number;
}>;
export declare function buildSearchExplanation(memory: Memory, context: SearchScoringContext, values: SearchScoreValues): SearchResult['explanation'];
