import { Card, DoubleSidedCard, Foiling, Hero, Printing, Release, Treatment } from "@flesh-and-blood/types";
import { AppliedFilter } from "./filters";
export interface SearchCard extends DoubleSidedCard {
    matchingPrintings?: Printing[];
}
export interface SearchResults {
    appliedFilters: AppliedFilter[];
    keywords: string[];
    attributes: {
        artists: string[];
        foilings: Foiling[];
        prints: string[];
        releases: Release[];
        treatments: Treatment[];
    };
    searchResults: SearchCard[];
}
declare class Search {
    private additionalHeroes;
    private additionalSets;
    private cards;
    private debug;
    private fuse;
    constructor(cards: DoubleSidedCard[], additionalHeroes?: Hero[], additionalSets?: Release[], debug?: boolean);
    log: (message?: any, ...optionalParams: any[]) => void;
    search: (text: string, includeMemes?: boolean) => SearchResults;
}
export default Search;
export declare const filterCard: (card: Card, appliedFilters: AppliedFilter[]) => boolean;
