import { PaginatedResult, // Import RelationshipTypes
SearchOptions } from './types.js';
/**
 * Type for search result items - Made generic
 */
export type SearchResultItem = {
    id: string;
    type: string;
    entityType?: string;
    title: string;
    description?: string;
    matchedProperty: string;
    matchedValue: string;
    createdAt?: string;
    updatedAt?: string;
    projectId?: string;
    projectName?: string;
    score: number;
};
/**
 * Service for unified search functionality across all entity types
 */
export declare class SearchService {
    /**
     * Perform a unified search across multiple entity types (node labels).
     * Searches common properties like name, title, description, text.
     * Applies pagination after combining and sorting results from individual label searches.
     * @param options Search options
     * @returns Paginated search results
     */
    static search(options: SearchOptions): Promise<PaginatedResult<SearchResultItem>>;
    /**
     * Helper to search within a single node label with sorting and limit.
     * Acquires and closes its own session.
     * @private
     */
    private static searchSingleLabel;
    /**
     * Perform a full-text search using Neo4j's built-in full-text search capabilities
     * Requires properly set up full-text indexes (project_fulltext, task_fulltext, knowledge_fulltext)
     * @param searchValue Value to search for (supports Lucene syntax)
     * @param options Search options
     * @returns Paginated search results
     */
    static fullTextSearch(searchValue: string, options?: Omit<SearchOptions, 'value' | 'fuzzy' | 'caseInsensitive'>): Promise<PaginatedResult<SearchResultItem>>;
}
