using System.Collections.Generic;
using System.Text.Json.Serialization;
using JpnCardsPokemon.Sdk.Utils.JsonConverter;
namespace JpnCardsPokemon.Sdk.Api;
///
/// Represents a card object from the web api.
///
public class Card
{
///
/// The name of the card.
///
public string? Name { get; set; }
///
/// The internal identification number that the card is given. Used to query for this single card.
///
public int Id { get; set; }
///
/// Reduced information about the set the card belongs to.
///
/// May contain basic information only. It´s recommended to fetch the fully separately.
[JsonPropertyName("setData")]
public Set? Set { get; set; }
///
/// The energy type of types the card is.
///
/// Almost always will be a single value.
public string[]? Types { get; set; }
///
/// The amount of HP the card has.
///
/// If the card does not have HP, the value will be -1.
public int Hp { get; set; } = -1;
///
/// If the card evolves from another card, this field will denote the name of the pre-evolution.
///
public string? EvolvesFrom { get; set; }
// TODO: Type of property is not documented. Has to be evaluated at a later time.
// public Effect? Effect { get; set; }
// TODO: Type of property is not documented. Has to be evaluated at a later time.
// public Attack[]? Attacks { get; set; }
///
/// Describes rules the card is bound to. Mainly for cards with a rule box and certain Trainers.
///
public string[]? Rules { get; set; }
// TODO: Type of property is not documented. Has to be evaluated at a later time.
// public Weakness[]? Weaknesses { get; set; }
// TODO: Type of property is not documented. Has to be evaluated at a later time.
// public Resistance[]? Resistances { get; set; }
///
/// A list of known prices for this card.
///
/// May contain entries from different sellers, versions and conditions.
[JsonConverter(typeof(CardPricesJsonConverter))]
public IEnumerable? Prices { get; set; }
///
/// List of the energies required to retreat.
///
[JsonPropertyName("retreatCost")]
public string[]? RetreatCosts { get; set; }
///
/// The total number of energies needed to retreat.
///
public int? ConvertedRetreatCost { get; set; }
///
/// The supertype the card is.
///
/// Only possibilities are 'Pokemon', 'Trainer' or 'Energy'.
public string? Supertype { get; set; }
///
/// The subsets that the card falls into. For example 'Single Strike Pokemon', 'Pokemon VMAX', etc.
///
public string[]? Subtypes { get; set; }
///
/// The rarity of the card.
///
public string? Rarity { get; set; }
// TODO: Type of property is not documented. Has to be evaluated at a later time.
// public Legality[]? Legalities { get; set; }
///
/// The card art's artist.
///
public string? Artist { get; set; }
///
/// The url pointing to the card's image.
///
///
/// If there is no card image, then this will instead point to
/// https://assets.tcgcollector.com/build/images/default-card-image.789f6232.png.
///
public string? ImageUrl { get; set; }
///
/// The URL which leads to the original card URL data.
///
public string? CardUrl { get; set; }
///
/// The sequential number of the card (applicable to Secret Rares).
///
[JsonPropertyName("sequenceNumber")]
public int Number { get; set; }
///
/// The number printed on the card. Will be the same as almost always. Is relevant for
/// promotional cards, such as SWSH001.
///
public string? PrintedNumber { get; set; }
///
/// A stable id for earch card. Output is an eight digit integer which is unique for each card. While the cards'
/// may change over time, the uuid should always remain stable and constant.
///
public int Uuid { get; set; }
}