import { IEventSearchService, SearchQuery, SearchResults, SearchResultItem, SearchFacets, SavedSearch, SearchIndexConfig } from '../interfaces/event-search.interfaces';
import { CalendarEvent } from '../interfaces/event.interfaces';
/**
 * Implementation of event search service
 * Provides comprehensive search and filtering capabilities for events
 */
export declare class EventSearchService implements IEventSearchService {
    private events;
    private savedSearches;
    private searchHistory;
    private indexConfig;
    initialize(config: SearchIndexConfig): Promise<void>;
    buildIndex(events: CalendarEvent[]): Promise<void>;
    addToIndex(event: CalendarEvent): Promise<void>;
    updateInIndex(event: CalendarEvent): Promise<void>;
    removeFromIndex(eventId: string): Promise<void>;
    search(query: SearchQuery, page?: number, pageSize?: number): Promise<SearchResults>;
    quickSearch(text: string, limit?: number): Promise<SearchResultItem[]>;
    getSuggestions(partialText: string, limit?: number): Promise<string[]>;
    getFacets(_query?: SearchQuery): Promise<SearchFacets>;
    saveSearch(name: string, query: SearchQuery, userId: string): Promise<SavedSearch>;
    getSavedSearches(userId?: string): Promise<SavedSearch[]>;
    deleteSavedSearch(searchId: string): Promise<void>;
    executeSavedSearch(searchId: string): Promise<SearchResults>;
    getAnalytics(): Promise<any>;
    getSearchAnalytics(): Promise<{
        totalSearches: number;
        topQueries: Array<{
            query: string;
            count: number;
        }>;
        avgSearchTime: number;
        noResultsRate: number;
    }>;
    rebuildIndex(events?: CalendarEvent[]): Promise<void>;
    exportSearchResults(results: SearchResults, format: string): Promise<{
        data: string;
        filename: string;
        mimeType: string;
    }>;
    clearIndex(): Promise<void>;
    getIndexStats(): Promise<{
        totalEvents: number;
        indexSize: number;
        lastUpdated: Date;
        health: 'good' | 'degraded' | 'poor';
    }>;
    private applyTextSearch;
    private applyFieldSearch;
    private applyDateRangeFilter;
    private applyAdvancedFilters;
    private calculateRelevanceScore;
    private getMatchedFields;
    private generateProperHighlights;
    private getMilliseconds;
    private applySorting;
}
