/* tslint:disable */
/* eslint-disable */
/**
 * Jellyfin API
 * No description provided (generated by Openapi Generator https://github.com/openapitools/openapi-generator)
 *
 * The version of the OpenAPI document: 10.8.9
 * 
 *
 * NOTE: This class is auto generated by OpenAPI Generator (https://openapi-generator.tech).
 * https://openapi-generator.tech
 * Do not edit the class manually.
 */

import { exists, mapValues } from '../runtime';
import type { CountryInfo } from './CountryInfo';
import {
    CountryInfoFromJSON,
    CountryInfoFromJSONTyped,
    CountryInfoToJSON,
} from './CountryInfo';
import type { CultureDto } from './CultureDto';
import {
    CultureDtoFromJSON,
    CultureDtoFromJSONTyped,
    CultureDtoToJSON,
} from './CultureDto';
import type { ExternalIdInfo } from './ExternalIdInfo';
import {
    ExternalIdInfoFromJSON,
    ExternalIdInfoFromJSONTyped,
    ExternalIdInfoToJSON,
} from './ExternalIdInfo';
import type { NameValuePair } from './NameValuePair';
import {
    NameValuePairFromJSON,
    NameValuePairFromJSONTyped,
    NameValuePairToJSON,
} from './NameValuePair';
import type { ParentalRating } from './ParentalRating';
import {
    ParentalRatingFromJSON,
    ParentalRatingFromJSONTyped,
    ParentalRatingToJSON,
} from './ParentalRating';

/**
 * 
 * @export
 * @interface MetadataEditorInfo
 */
export interface MetadataEditorInfo {
    /**
     * 
     * @type {Array<ParentalRating>}
     * @memberof MetadataEditorInfo
     */
    parentalRatingOptions?: Array<ParentalRating>;
    /**
     * 
     * @type {Array<CountryInfo>}
     * @memberof MetadataEditorInfo
     */
    countries?: Array<CountryInfo>;
    /**
     * 
     * @type {Array<CultureDto>}
     * @memberof MetadataEditorInfo
     */
    cultures?: Array<CultureDto>;
    /**
     * 
     * @type {Array<ExternalIdInfo>}
     * @memberof MetadataEditorInfo
     */
    externalIdInfos?: Array<ExternalIdInfo>;
    /**
     * 
     * @type {string}
     * @memberof MetadataEditorInfo
     */
    contentType?: string | null;
    /**
     * 
     * @type {Array<NameValuePair>}
     * @memberof MetadataEditorInfo
     */
    contentTypeOptions?: Array<NameValuePair>;
}

/**
 * Check if a given object implements the MetadataEditorInfo interface.
 */
export function instanceOfMetadataEditorInfo(value: object): boolean {
    let isInstance = true;

    return isInstance;
}

export function MetadataEditorInfoFromJSON(json: any): MetadataEditorInfo {
    return MetadataEditorInfoFromJSONTyped(json, false);
}

export function MetadataEditorInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): MetadataEditorInfo {
    if ((json === undefined) || (json === null)) {
        return json;
    }
    return {
        
        'parentalRatingOptions': !exists(json, 'ParentalRatingOptions') ? undefined : ((json['ParentalRatingOptions'] as Array<any>).map(ParentalRatingFromJSON)),
        'countries': !exists(json, 'Countries') ? undefined : ((json['Countries'] as Array<any>).map(CountryInfoFromJSON)),
        'cultures': !exists(json, 'Cultures') ? undefined : ((json['Cultures'] as Array<any>).map(CultureDtoFromJSON)),
        'externalIdInfos': !exists(json, 'ExternalIdInfos') ? undefined : ((json['ExternalIdInfos'] as Array<any>).map(ExternalIdInfoFromJSON)),
        'contentType': !exists(json, 'ContentType') ? undefined : json['ContentType'],
        'contentTypeOptions': !exists(json, 'ContentTypeOptions') ? undefined : ((json['ContentTypeOptions'] as Array<any>).map(NameValuePairFromJSON)),
    };
}

export function MetadataEditorInfoToJSON(value?: MetadataEditorInfo | null): any {
    if (value === undefined) {
        return undefined;
    }
    if (value === null) {
        return null;
    }
    return {
        
        'ParentalRatingOptions': value.parentalRatingOptions === undefined ? undefined : ((value.parentalRatingOptions as Array<any>).map(ParentalRatingToJSON)),
        'Countries': value.countries === undefined ? undefined : ((value.countries as Array<any>).map(CountryInfoToJSON)),
        'Cultures': value.cultures === undefined ? undefined : ((value.cultures as Array<any>).map(CultureDtoToJSON)),
        'ExternalIdInfos': value.externalIdInfos === undefined ? undefined : ((value.externalIdInfos as Array<any>).map(ExternalIdInfoToJSON)),
        'ContentType': value.contentType,
        'ContentTypeOptions': value.contentTypeOptions === undefined ? undefined : ((value.contentTypeOptions as Array<any>).map(NameValuePairToJSON)),
    };
}

