/* tslint:disable */
/* eslint-disable */
/**
 * Commander Spellbook API
 * API for Commander Spellbook, the combo database engine for Magic: The Gathering
 *
 * The version of the OpenAPI document: 5.4.10
 * 
 *
 * 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.js';
import type { KindEnum } from './KindEnum.js';
import {
    KindEnumFromJSON,
    KindEnumFromJSONTyped,
    KindEnumToJSON,
    KindEnumToJSONTyped,
} from './KindEnum.js';
import type { VariantInVariantUpdateSuggestionRequest } from './VariantInVariantUpdateSuggestionRequest.js';
import {
    VariantInVariantUpdateSuggestionRequestFromJSON,
    VariantInVariantUpdateSuggestionRequestFromJSONTyped,
    VariantInVariantUpdateSuggestionRequestToJSON,
    VariantInVariantUpdateSuggestionRequestToJSONTyped,
} from './VariantInVariantUpdateSuggestionRequest.js';

/**
 * 
 * @export
 * @interface VariantUpdateSuggestionRequest
 */
export interface VariantUpdateSuggestionRequest {
    /**
     * Type of suggestion
     * 
     * * `NW` - Not Working
     * * `SE` - Spelling Error
     * * `II` - Incorrect Info
     * * `WC` - Wrong Card
     * * `VG` - Variant Grouping
     * * `O` - Other
     * @type {KindEnum}
     * @memberof VariantUpdateSuggestionRequest
     */
    kind: KindEnum;
    /**
     * 
     * @type {Array<VariantInVariantUpdateSuggestionRequest>}
     * @memberof VariantUpdateSuggestionRequest
     */
    variants?: Array<VariantInVariantUpdateSuggestionRequest>;
    /**
     * Description of the problem
     * @type {string}
     * @memberof VariantUpdateSuggestionRequest
     */
    issue: string;
    /**
     * Description of the solution
     * @type {string}
     * @memberof VariantUpdateSuggestionRequest
     */
    solution?: string;
    /**
     * Comment written by the user that suggested this
     * @type {string}
     * @memberof VariantUpdateSuggestionRequest
     */
    comment?: string;
}



/**
 * Check if a given object implements the VariantUpdateSuggestionRequest interface.
 */
export function instanceOfVariantUpdateSuggestionRequest(value: object): value is VariantUpdateSuggestionRequest {
    if (!('kind' in value) || value['kind'] === undefined) return false;
    if (!('issue' in value) || value['issue'] === undefined) return false;
    return true;
}

export function VariantUpdateSuggestionRequestFromJSON(json: any): VariantUpdateSuggestionRequest {
    return VariantUpdateSuggestionRequestFromJSONTyped(json, false);
}

export function VariantUpdateSuggestionRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): VariantUpdateSuggestionRequest {
    if (json == null) {
        return json;
    }
    return {
        
        'kind': KindEnumFromJSON(json['kind']),
        'variants': json['variants'] == null ? undefined : ((json['variants'] as Array<any>).map(VariantInVariantUpdateSuggestionRequestFromJSON)),
        'issue': json['issue'],
        'solution': json['solution'] == null ? undefined : json['solution'],
        'comment': json['comment'] == null ? undefined : json['comment'],
    };
}

export function VariantUpdateSuggestionRequestToJSON(json: any): VariantUpdateSuggestionRequest {
    return VariantUpdateSuggestionRequestToJSONTyped(json, false);
}

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

    return {
        
        'kind': KindEnumToJSON(value['kind']),
        'variants': value['variants'] == null ? undefined : ((value['variants'] as Array<any>).map(VariantInVariantUpdateSuggestionRequestToJSON)),
        'issue': value['issue'],
        'solution': value['solution'],
        'comment': value['comment'],
    };
}

