import { Card, Foiling, Hero, Rarity, Release, Treatment } from "@flesh-and-blood/types";
export interface AppliedFilter {
    filterToPropertyMapping: FilterToPropertyMapping;
    values: string[];
    isAnd?: boolean;
    isOr?: boolean;
    modifier?: Modifier;
    isExcluded?: boolean;
    isOptional?: boolean;
    cardTypes?: string[];
}
export type Filter = "art" | "artist" | "attack" | "banned" | "b" | "block" | "c" | "class" | "chain" | "co" | "cost" | "color" | "d" | "def" | "defense" | "f" | "fusion" | "foil" | "foiling" | "hero" | "i" | "intellect" | "k" | "keyword" | "l" | "legal" | "li" | "life" | "name" | "p" | "pitch" | "pwr" | "pow" | "power" | "print" | "r" | "rarity" | "referencedby" | "references" | "s" | "set" | "short" | "shortand" | "shortands" | "sp" | "specialization" | "specializations" | "st" | "subtype" | "text" | "t" | "type" | "tal" | "talent" | "text" | "treatment" | "variation" | "x";
export type Modifier = ">=" | ">" | "<=" | "<";
export declare const availableModifiers: Modifier[];
export type Exclusion = "!" | "-";
export declare const availableExclusions: Exclusion[];
export interface FilterToPropertyMapping {
    nestedProperty?: string;
    property: string;
    exclusion?: Exclusion;
    isArray?: boolean;
    isNestedPropertyArray?: boolean;
    isNumber?: boolean;
    isString?: boolean;
    isBoolean?: boolean;
    isMeta?: boolean;
    modifier?: Modifier;
    partialMatch?: boolean;
    specialProperty?: string;
}
export declare const filtersToCardPropertyMappings: {
    arcane: FilterToPropertyMapping;
    a: FilterToPropertyMapping;
    artist: FilterToPropertyMapping;
    art: FilterToPropertyMapping;
    attack: FilterToPropertyMapping;
    b: FilterToPropertyMapping;
    block: FilterToPropertyMapping;
    banned: FilterToPropertyMapping;
    bond: FilterToPropertyMapping;
    bonds: FilterToPropertyMapping;
    c: FilterToPropertyMapping;
    class: FilterToPropertyMapping;
    chain: FilterToPropertyMapping;
    co: FilterToPropertyMapping;
    cost: FilterToPropertyMapping;
    color: FilterToPropertyMapping;
    d: FilterToPropertyMapping;
    def: FilterToPropertyMapping;
    defense: FilterToPropertyMapping;
    flow: FilterToPropertyMapping;
    flows: FilterToPropertyMapping;
    f: FilterToPropertyMapping;
    fusion: FilterToPropertyMapping;
    foil: FilterToPropertyMapping;
    foiling: FilterToPropertyMapping;
    i: FilterToPropertyMapping;
    intellect: FilterToPropertyMapping;
    is: FilterToPropertyMapping;
    k: FilterToPropertyMapping;
    keyword: FilterToPropertyMapping;
    l: FilterToPropertyMapping;
    legal: FilterToPropertyMapping;
    hero: FilterToPropertyMapping;
    li: FilterToPropertyMapping;
    life: FilterToPropertyMapping;
    meta: FilterToPropertyMapping;
    n: FilterToPropertyMapping;
    name: FilterToPropertyMapping;
    p: FilterToPropertyMapping;
    pitch: FilterToPropertyMapping;
    pwr: FilterToPropertyMapping;
    pow: FilterToPropertyMapping;
    power: FilterToPropertyMapping;
    print: FilterToPropertyMapping;
    r: FilterToPropertyMapping;
    rarity: FilterToPropertyMapping;
    referencedby: FilterToPropertyMapping;
    references: FilterToPropertyMapping;
    rf: FilterToPropertyMapping;
    s: FilterToPropertyMapping;
    set: FilterToPropertyMapping;
    short: FilterToPropertyMapping;
    shorthand: FilterToPropertyMapping;
    shorthands: FilterToPropertyMapping;
    sp: FilterToPropertyMapping;
    spec: FilterToPropertyMapping;
    specialization: FilterToPropertyMapping;
    specializations: FilterToPropertyMapping;
    st: FilterToPropertyMapping;
    subtype: FilterToPropertyMapping;
    t: FilterToPropertyMapping;
    type: FilterToPropertyMapping;
    tal: FilterToPropertyMapping;
    talent: FilterToPropertyMapping;
    text: FilterToPropertyMapping;
    trait: FilterToPropertyMapping;
    treat: FilterToPropertyMapping;
    treatment: FilterToPropertyMapping;
    var: FilterToPropertyMapping;
    variation: FilterToPropertyMapping;
    x: FilterToPropertyMapping;
};
export declare const getKeywordsAndAppliedFiltersFromText: (text: string, cards: Card[], additionalHeroes?: Hero[], additionalSets?: Release[]) => {
    appliedFilters: AppliedFilter[];
    attributes: {
        artists: string[];
        foilings: Foiling[];
        isExpansionSlot: boolean;
        prints: string[];
        rarities: Rarity[];
        releases: Release[];
        treatments: Treatment[];
    };
    keywords: string[];
};
export declare const RARITY_VALUES_MAPPING: {
    [key: string]: Rarity;
};
