/* tslint:disable */
/* eslint-disable */
/**
 * Grand Archive TCG API
 * See https://index.gatcg.com/api
 *
 * The version of the OpenAPI document: 0.0
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { mapValues } from '../runtime';
import type { CardSet } from './CardSet';
import {
    CardSetFromJSON,
    CardSetFromJSONTyped,
    CardSetToJSON,
    CardSetToJSONTyped,
} from './CardSet';

/**
 * 
 * @export
 * @interface CardEdition
 */
export interface CardEdition {
    /**
     * 
     * @type {string}
     * @memberof CardEdition
     */
    cardId?: string;
    /**
     * 
     * @type {number}
     * @memberof CardEdition
     */
    collectorNumber?: number;
    /**
     * 
     * @type {string}
     * @memberof CardEdition
     */
    slug?: string;
    /**
     * 
     * @type {string}
     * @memberof CardEdition
     */
    illustrator?: string;
    /**
     * 
     * @type {number}
     * @memberof CardEdition
     */
    rarity?: number;
    /**
     * 
     * @type {string}
     * @memberof CardEdition
     */
    lastUpdate?: string;
    /**
     * 
     * @type {number}
     * @memberof CardEdition
     */
    themaGraceNonfoil?: number;
    /**
     * 
     * @type {number}
     * @memberof CardEdition
     */
    themaValorNonfoil?: number;
    /**
     * 
     * @type {number}
     * @memberof CardEdition
     */
    themaCharmNonfoil?: number;
    /**
     * 
     * @type {number}
     * @memberof CardEdition
     */
    themaMystiqueNonfoil?: number;
    /**
     * 
     * @type {number}
     * @memberof CardEdition
     */
    themaFerocityNonfoil?: number;
    /**
     * 
     * @type {number}
     * @memberof CardEdition
     */
    themaGraceFoil?: number;
    /**
     * 
     * @type {number}
     * @memberof CardEdition
     */
    themaValorFoil?: number;
    /**
     * 
     * @type {number}
     * @memberof CardEdition
     */
    themaCharmFoil?: number;
    /**
     * 
     * @type {number}
     * @memberof CardEdition
     */
    themaMystiqueFoil?: number;
    /**
     * 
     * @type {number}
     * @memberof CardEdition
     */
    themaFerocityFoil?: number;
    /**
     * 
     * @type {number}
     * @memberof CardEdition
     */
    themaFoil?: number;
    /**
     * 
     * @type {number}
     * @memberof CardEdition
     */
    themaNonfoil?: number;
    /**
     * 
     * @type {CardSet}
     * @memberof CardEdition
     */
    set?: CardSet;
}

/**
 * Check if a given object implements the CardEdition interface.
 */
export function instanceOfCardEdition(value: object): value is CardEdition {
    return true;
}

export function CardEditionFromJSON(json: any): CardEdition {
    return CardEditionFromJSONTyped(json, false);
}

export function CardEditionFromJSONTyped(json: any, ignoreDiscriminator: boolean): CardEdition {
    if (json == null) {
        return json;
    }
    return {
        
        'cardId': json['card_id'] == null ? undefined : json['card_id'],
        'collectorNumber': json['collector_number'] == null ? undefined : json['collector_number'],
        'slug': json['slug'] == null ? undefined : json['slug'],
        'illustrator': json['illustrator'] == null ? undefined : json['illustrator'],
        'rarity': json['rarity'] == null ? undefined : json['rarity'],
        'lastUpdate': json['last_update'] == null ? undefined : json['last_update'],
        'themaGraceNonfoil': json['thema_grace_nonfoil'] == null ? undefined : json['thema_grace_nonfoil'],
        'themaValorNonfoil': json['thema_valor_nonfoil'] == null ? undefined : json['thema_valor_nonfoil'],
        'themaCharmNonfoil': json['thema_charm_nonfoil'] == null ? undefined : json['thema_charm_nonfoil'],
        'themaMystiqueNonfoil': json['thema_mystique_nonfoil'] == null ? undefined : json['thema_mystique_nonfoil'],
        'themaFerocityNonfoil': json['thema_ferocity_nonfoil'] == null ? undefined : json['thema_ferocity_nonfoil'],
        'themaGraceFoil': json['thema_grace_foil'] == null ? undefined : json['thema_grace_foil'],
        'themaValorFoil': json['thema_valor_foil'] == null ? undefined : json['thema_valor_foil'],
        'themaCharmFoil': json['thema_charm_foil'] == null ? undefined : json['thema_charm_foil'],
        'themaMystiqueFoil': json['thema_mystique_foil'] == null ? undefined : json['thema_mystique_foil'],
        'themaFerocityFoil': json['thema_ferocity_foil'] == null ? undefined : json['thema_ferocity_foil'],
        'themaFoil': json['thema_foil'] == null ? undefined : json['thema_foil'],
        'themaNonfoil': json['thema_nonfoil'] == null ? undefined : json['thema_nonfoil'],
        'set': json['set'] == null ? undefined : CardSetFromJSON(json['set']),
    };
}

  export function CardEditionToJSON(json: any): CardEdition {
      return CardEditionToJSONTyped(json, false);
  }

  export function CardEditionToJSONTyped(value?: CardEdition | null, ignoreDiscriminator: boolean = false): any {
    if (value == null) {
        return value;
    }

    return {
        
        'card_id': value['cardId'],
        'collector_number': value['collectorNumber'],
        'slug': value['slug'],
        'illustrator': value['illustrator'],
        'rarity': value['rarity'],
        'last_update': value['lastUpdate'],
        'thema_grace_nonfoil': value['themaGraceNonfoil'],
        'thema_valor_nonfoil': value['themaValorNonfoil'],
        'thema_charm_nonfoil': value['themaCharmNonfoil'],
        'thema_mystique_nonfoil': value['themaMystiqueNonfoil'],
        'thema_ferocity_nonfoil': value['themaFerocityNonfoil'],
        'thema_grace_foil': value['themaGraceFoil'],
        'thema_valor_foil': value['themaValorFoil'],
        'thema_charm_foil': value['themaCharmFoil'],
        'thema_mystique_foil': value['themaMystiqueFoil'],
        'thema_ferocity_foil': value['themaFerocityFoil'],
        'thema_foil': value['themaFoil'],
        'thema_nonfoil': value['themaNonfoil'],
        'set': CardSetToJSON(value['set']),
    };
}

