mkmrare/lib/types.ts

246 lines
4.7 KiB
TypeScript

export interface ForeignData {
flavorText: string;
language: string;
multiverseId: number;
name: string;
text: string;
type: string;
}
export interface Legalities {
commander: string;
duel: string;
legacy: string;
modern: string;
vintage: string;
}
export interface Prices {
mtgo: Record<string, number>;
mtgoFoil: Record<string, number>;
paper: Record<string, number>;
paperFoil: Record<string, number>;
}
export interface PurchaseUrls {
cardmarket: string;
tcgplayer: string;
}
export interface MCMCard {
artist: string;
borderColor: string;
colorIdentity: string[];
colors: string[];
convertedManaCost: number;
edhrecRank: number;
flavorText: string;
foreignData: ForeignData[];
frameVersion: string;
hasFoil: boolean;
hasNonFoil: boolean;
isMtgo: boolean;
isPaper: boolean;
layout: string;
legalities: Legalities;
manaCost: string;
mcmId: number;
mcmMetaId: number;
mtgoFoilId: number;
mtgoId: number;
multiverseId: number;
name: string;
number: string;
originalText: string;
originalType: string;
power: string;
prices: Prices;
printings: string[];
purchaseUrls: PurchaseUrls;
rarity: string;
rulings: any[];
scryfallId: string;
scryfallIllustrationId: string;
scryfallOracleId: string;
scryfallImageUrl: string;
scryfallUrl: string;
subtypes: string[];
supertypes: any[];
tcgplayerProductId: number;
text: string;
toughness: string;
type: string;
types: string[];
uuid: string;
set: string;
}
export type MCMDB = Record<string, MCMCard>;
// Lighther version of MCMCard without a lot of useless information
export interface LeanMCMCard {
colorIdentity: string[];
colors: string[];
convertedManaCost: number;
edhrecRank: number;
manaCost: string;
mcmId: number;
name: string;
rarity: string;
scryfallId: string;
scryfallImageUrl: string;
scryfallUrl: string;
subtypes: string[];
supertypes: any[];
text: string;
type: string;
types: string[];
set: string;
number: string;
}
export interface Language {
idLanguage: number;
languageName: string;
}
export interface Link {
rel: string;
href: string;
method: string;
action: string;
idArticle?: number;
}
export interface Article {
idArticle: number;
idProduct: number;
language: Language;
comments: string;
price: number;
count: number;
inShoppingCart: boolean;
condition: string;
isFoil: boolean;
isSigned: boolean;
isPlayset: boolean;
isAltered: boolean;
links: Link[];
}
export interface LeanArticle {
idArticle: number;
language: string;
comments: string;
price: number;
count: number;
condition: string;
}
export type CardItem = LeanMCMCard & LeanArticle;
export interface ImageUris {
small: string;
normal: string;
large: string;
png: string;
art_crop: string;
border_crop: string;
}
export interface Legalities {
standard: string;
future: string;
historic: string;
pioneer: string;
modern: string;
legacy: string;
pauper: string;
vintage: string;
penny: string;
commander: string;
brawl: string;
duel: string;
oldschool: string;
}
export interface RelatedUris {
tcgplayer_decks: string;
edhrec: string;
mtgtop8: string;
}
export interface CardFace {
object: string;
name: string;
mana_cost: string;
type_line: string;
oracle_text: string;
colors: string[];
power: string;
toughness: string;
artist: string;
artist_id: string;
illustration_id: string;
image_uris: ImageUris;
color_indicator: string[];
loyalty: string;
}
export interface ScryfallCard {
object: string;
id: string;
oracle_id: string;
multiverse_ids: any[];
tcgplayer_id: number;
name: string;
lang: string;
released_at: string;
uri: string;
scryfall_uri: string;
layout: string;
highres_image: boolean;
image_uris: ImageUris;
card_faces?: CardFace[];
mana_cost: string;
cmc: number;
type_line: string;
oracle_text: string;
colors: any[];
color_identity: string[];
legalities: Legalities;
games: string[];
reserved: boolean;
foil: boolean;
nonfoil: boolean;
oversized: boolean;
promo: boolean;
reprint: boolean;
variation: boolean;
set: string;
set_name: string;
set_type: string;
set_uri: string;
set_search_uri: string;
scryfall_set_uri: string;
rulings_uri: string;
prints_search_uri: string;
collector_number: string;
digital: boolean;
rarity: string;
card_back_id: string;
artist: string;
artist_ids: string[];
illustration_id: string;
border_color: string;
frame: string;
full_art: boolean;
textless: boolean;
booster: boolean;
story_spotlight: boolean;
edhrec_rank: number;
related_uris: RelatedUris;
}
export type ScryfallDB = ScryfallCard[];