/**
 * Commander Spellbook API
 * API for Commander Spellbook, the combo database engine for Magic: The Gathering
 *
 * The version of the OpenAPI document: 4.2.2
 *
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */
import type { FeatureProducedByVariant } from './featureProducedByVariant';
import type { VariantLegalities } from './variantLegalities';
import type { BracketTagEnum } from './bracketTagEnum';
import type { VariantPrices } from './variantPrices';
import type { VariantStatusEnum } from './variantStatusEnum';
import type { Combo } from './combo';
import type { CardInVariant } from './cardInVariant';
import type { IdentityEnum } from './identityEnum';
import type { TemplateInVariant } from './templateInVariant';
/**
 *
 * @export
 * @interface Variant
 */
export interface Variant {
    /**
     * Unique ID for this variant
     * @type {string}
     * @memberof Variant
     */
    id: string;
    /**
     * Variant status for editors
     *
     * * `N` - New
     * * `D` - Draft
     * * `NR` - Needs Review
     * * `OK` - Ok
     * * `E` - Example
     * * `R` - Restore
     * * `NW` - Not Working
     * @type {VariantStatusEnum}
     * @memberof Variant
     */
    status: VariantStatusEnum;
    /**
     *
     * @type {Array<CardInVariant>}
     * @memberof Variant
     */
    readonly uses: Array<CardInVariant>;
    /**
     *
     * @type {Array<TemplateInVariant>}
     * @memberof Variant
     */
    readonly requires: Array<TemplateInVariant>;
    /**
     *
     * @type {Array<FeatureProducedByVariant>}
     * @memberof Variant
     */
    readonly produces: Array<FeatureProducedByVariant>;
    /**
     *
     * @type {Array<Combo>}
     * @memberof Variant
     */
    readonly of: Array<Combo>;
    /**
     *
     * @type {Array<Combo>}
     * @memberof Variant
     */
    readonly includes: Array<Combo>;
    /**
     *
     * @type {IdentityEnum}
     * @memberof Variant
     */
    identity: IdentityEnum;
    /**
     *
     * @type {string}
     * @memberof Variant
     */
    readonly manaNeeded: string;
    /**
     *
     * @type {number}
     * @memberof Variant
     */
    readonly manaValueNeeded: number;
    /**
     *
     * @type {string}
     * @memberof Variant
     */
    readonly easyPrerequisites: string;
    /**
     *
     * @type {string}
     * @memberof Variant
     */
    readonly notablePrerequisites: string;
    /**
     *
     * @type {string}
     * @memberof Variant
     */
    readonly description: string;
    /**
     *
     * @type {string}
     * @memberof Variant
     */
    readonly notes: string;
    /**
     *
     * @type {number}
     * @memberof Variant
     */
    readonly popularity: number | null;
    /**
     * Is this from an upcoming set?
     * @type {boolean}
     * @memberof Variant
     */
    spoiler: boolean;
    /**
     *
     * @type {BracketTagEnum}
     * @memberof Variant
     */
    bracketTag: BracketTagEnum;
    /**
     *
     * @type {VariantLegalities}
     * @memberof Variant
     */
    readonly legalities: VariantLegalities;
    /**
     *
     * @type {VariantPrices}
     * @memberof Variant
     */
    readonly prices: VariantPrices;
    /**
     * Number of variants generated by the same generator combos
     * @type {number}
     * @memberof Variant
     */
    readonly variantCount: number;
}
/**
 * Check if a given object implements the Variant interface.
 */
export declare function instanceOfVariant(value: object): value is Variant;
export declare function VariantFromJSON(json: any): Variant;
export declare function VariantFromJSONTyped(json: any, ignoreDiscriminator: boolean): Variant;
export declare function VariantToJSON(json: any): Variant;
export declare function VariantToJSONTyped(value?: Omit<Variant, 'uses' | 'requires' | 'produces' | 'of' | 'includes' | 'manaNeeded' | 'manaValueNeeded' | 'easyPrerequisites' | 'notablePrerequisites' | 'description' | 'notes' | 'popularity' | 'legalities' | 'prices' | 'variantCount'> | null, ignoreDiscriminator?: boolean): any;
