import { TarotCard } from './types.js';
export interface SearchOptions {
    keyword?: string;
    suit?: string;
    arcana?: 'major' | 'minor';
    element?: 'fire' | 'water' | 'air' | 'earth';
    number?: number;
    orientation?: 'upright' | 'reversed';
}
export interface SearchResult {
    card: TarotCard;
    relevanceScore: number;
    matchedFields: string[];
}
/**
 * Advanced search functionality for the tarot card database
 */
export declare class TarotCardSearch {
    private cards;
    constructor(cards: readonly TarotCard[]);
    /**
     * Search cards by various criteria
     */
    search(options: SearchOptions): SearchResult[];
    /**
     * Search by keyword in card meanings, keywords, and symbolism
     */
    searchByKeyword(keyword: string): SearchResult[];
    /**
     * Find cards by suit
     */
    findBySuit(suit: string): TarotCard[];
    /**
     * Find cards by arcana type
     */
    findByArcana(arcana: 'major' | 'minor'): TarotCard[];
    /**
     * Find cards by element
     */
    findByElement(element: 'fire' | 'water' | 'air' | 'earth'): TarotCard[];
    /**
     * Get cards with similar meanings
     */
    findSimilarCards(cardId: string, limit?: number): TarotCard[];
    /**
     * Get random cards with optional filters
     */
    getRandomCards(count?: number, options?: Partial<SearchOptions>): TarotCard[];
    private evaluateCard;
    private calculateSimilarity;
    /**
     * Get statistics about the card database
     */
    getStatistics(): {
        totalCards: number;
        majorArcana: number;
        minorArcana: number;
        suits: Record<string, number>;
        elements: Record<string, number>;
        mostCommonKeywords: {
            keyword: string;
            count: number;
        }[];
    };
    private getMostCommonKeywords;
}
