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



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

export function PatchedVariantUpdateSuggestionRequestFromJSON(json: any): PatchedVariantUpdateSuggestionRequest {
    return PatchedVariantUpdateSuggestionRequestFromJSONTyped(json, false);
}

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

export function PatchedVariantUpdateSuggestionRequestToJSON(json: any): PatchedVariantUpdateSuggestionRequest {
    return PatchedVariantUpdateSuggestionRequestToJSONTyped(json, false);
}

export function PatchedVariantUpdateSuggestionRequestToJSONTyped(value?: PatchedVariantUpdateSuggestionRequest | 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'],
    };
}

