export declare abstract class Card {
    readonly name: string;
    readonly cost: number;
    protected constructor(name: string, cost: number);
    abstract accept(visitor: CardVisitor): void;
}
export declare abstract class VictoryCard extends Card {
    readonly points: number;
    protected constructor(name: string, cost: number, points: number);
}
export declare class EstateCard extends VictoryCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Estate: EstateCard;
export declare class DuchyCard extends VictoryCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Duchy: DuchyCard;
export declare class ProvinceCard extends VictoryCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Province: ProvinceCard;
export declare class CurseCard extends VictoryCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Curse: CurseCard;
export declare class GardensCard extends VictoryCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Gardens: GardensCard;
export declare function isVictoryCard(card: Card): card is VictoryCard;
export declare abstract class TreasureCard extends Card {
    readonly coins: number;
    protected constructor(name: string, cost: number, coins: number);
}
export declare class CopperCard extends TreasureCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Copper: CopperCard;
export declare class SilverCard extends TreasureCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Silver: SilverCard;
export declare class GoldCard extends TreasureCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Gold: GoldCard;
export declare function isTreasureCard(card: Card): card is TreasureCard;
export declare abstract class ActionCard extends Card {
}
export declare class CellarCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Cellar: CellarCard;
export declare class ChapelCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Chapel: ChapelCard;
export declare class MoatCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Moat: MoatCard;
export declare class HarbingerCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Harbinger: HarbingerCard;
export declare class MerchantCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Merchant: MerchantCard;
export declare class VassalCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Vassal: VassalCard;
export declare class VillageCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Village: VillageCard;
export declare class WorkshopCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Workshop: WorkshopCard;
export declare class BureaucratCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Bureaucrat: BureaucratCard;
export declare class MilitiaCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Militia: MilitiaCard;
export declare class MoneylenderCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Moneylender: MoneylenderCard;
export declare class PoachCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Poacher: PoachCard;
export declare class RemodelCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Remodel: RemodelCard;
export declare class SmithyCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Smithy: SmithyCard;
export declare class ThroneRoomCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const ThroneRoom: ThroneRoomCard;
export declare class BanditCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Bandit: BanditCard;
export declare class FestivalCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Festival: FestivalCard;
export declare class LaboratoryCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Laboratory: LaboratoryCard;
export declare class LibraryCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Library: LibraryCard;
export declare class MarketCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Market: MarketCard;
export declare class MineCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Mine: MineCard;
export declare class SentryCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Sentry: SentryCard;
export declare class WitchCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Witch: WitchCard;
export declare class ArtisanCard extends ActionCard {
    constructor();
    accept(visitor: CardVisitor): void;
}
export declare const Artisan: ArtisanCard;
export declare function isActionCard(card: Card): card is ActionCard;
export interface CardVisitor {
    visitEstate(estate: EstateCard): void;
    visitDuchy(duchy: DuchyCard): void;
    visitProvince(province: ProvinceCard): void;
    visitCurse(curse: CurseCard): void;
    visitGardens(gardens: GardensCard): void;
    visitCopper(copper: CopperCard): void;
    visitSilver(silver: SilverCard): void;
    visitGold(gold: GoldCard): void;
    visitCellar(cellar: CellarCard): void;
    visitChapel(chapel: ChapelCard): void;
    visitMoat(moat: MoatCard): void;
    visitHarbinger(harbinger: HarbingerCard): void;
    visitMerchant(merchant: MerchantCard): void;
    visitVassal(vassal: VassalCard): void;
    visitVillage(village: VillageCard): void;
    visitWorkshop(workshop: WorkshopCard): void;
    visitBureaucrat(bureaucrat: BureaucratCard): void;
    visitMilitia(militia: MilitiaCard): void;
    visitMoneylender(moneylender: MoneylenderCard): void;
    visitPoacher(poacher: PoachCard): void;
    visitRemodel(remodel: RemodelCard): void;
    visitSmithy(smithy: SmithyCard): void;
    visitThroneRoom(throneRoom: ThroneRoomCard): void;
    visitBandit(bandit: BanditCard): void;
    visitFestival(festival: FestivalCard): void;
    visitLaboratory(laboratory: LaboratoryCard): void;
    visitLibrary(library: LibraryCard): void;
    visitMarket(market: MarketCard): void;
    visitMine(mine: MineCard): void;
    visitSentry(sentry: SentryCard): void;
    visitWitch(witch: WitchCard): void;
    visitArtisan(artisan: ArtisanCard): void;
}
