/* 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 { SubtitlePlaybackMode } from './SubtitlePlaybackMode';
import {
    SubtitlePlaybackModeFromJSON,
    SubtitlePlaybackModeFromJSONTyped,
    SubtitlePlaybackModeToJSON,
} from './SubtitlePlaybackMode';

/**
 * Class UserConfiguration.
 * @export
 * @interface UserConfiguration
 */
export interface UserConfiguration {
    /**
     * Gets or sets the audio language preference.
     * @type {string}
     * @memberof UserConfiguration
     */
    audioLanguagePreference?: string | null;
    /**
     * Gets or sets a value indicating whether [play default audio track].
     * @type {boolean}
     * @memberof UserConfiguration
     */
    playDefaultAudioTrack?: boolean;
    /**
     * Gets or sets the subtitle language preference.
     * @type {string}
     * @memberof UserConfiguration
     */
    subtitleLanguagePreference?: string | null;
    /**
     * 
     * @type {boolean}
     * @memberof UserConfiguration
     */
    displayMissingEpisodes?: boolean;
    /**
     * 
     * @type {Array<string>}
     * @memberof UserConfiguration
     */
    groupedFolders?: Array<string>;
    /**
     * 
     * @type {SubtitlePlaybackMode}
     * @memberof UserConfiguration
     */
    subtitleMode?: SubtitlePlaybackMode;
    /**
     * 
     * @type {boolean}
     * @memberof UserConfiguration
     */
    displayCollectionsView?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof UserConfiguration
     */
    enableLocalPassword?: boolean;
    /**
     * 
     * @type {Array<string>}
     * @memberof UserConfiguration
     */
    orderedViews?: Array<string>;
    /**
     * 
     * @type {Array<string>}
     * @memberof UserConfiguration
     */
    latestItemsExcludes?: Array<string>;
    /**
     * 
     * @type {Array<string>}
     * @memberof UserConfiguration
     */
    myMediaExcludes?: Array<string>;
    /**
     * 
     * @type {boolean}
     * @memberof UserConfiguration
     */
    hidePlayedInLatest?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof UserConfiguration
     */
    rememberAudioSelections?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof UserConfiguration
     */
    rememberSubtitleSelections?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof UserConfiguration
     */
    enableNextEpisodeAutoPlay?: boolean;
}

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

    return isInstance;
}

export function UserConfigurationFromJSON(json: any): UserConfiguration {
    return UserConfigurationFromJSONTyped(json, false);
}

export function UserConfigurationFromJSONTyped(json: any, ignoreDiscriminator: boolean): UserConfiguration {
    if ((json === undefined) || (json === null)) {
        return json;
    }
    return {
        
        'audioLanguagePreference': !exists(json, 'AudioLanguagePreference') ? undefined : json['AudioLanguagePreference'],
        'playDefaultAudioTrack': !exists(json, 'PlayDefaultAudioTrack') ? undefined : json['PlayDefaultAudioTrack'],
        'subtitleLanguagePreference': !exists(json, 'SubtitleLanguagePreference') ? undefined : json['SubtitleLanguagePreference'],
        'displayMissingEpisodes': !exists(json, 'DisplayMissingEpisodes') ? undefined : json['DisplayMissingEpisodes'],
        'groupedFolders': !exists(json, 'GroupedFolders') ? undefined : json['GroupedFolders'],
        'subtitleMode': !exists(json, 'SubtitleMode') ? undefined : SubtitlePlaybackModeFromJSON(json['SubtitleMode']),
        'displayCollectionsView': !exists(json, 'DisplayCollectionsView') ? undefined : json['DisplayCollectionsView'],
        'enableLocalPassword': !exists(json, 'EnableLocalPassword') ? undefined : json['EnableLocalPassword'],
        'orderedViews': !exists(json, 'OrderedViews') ? undefined : json['OrderedViews'],
        'latestItemsExcludes': !exists(json, 'LatestItemsExcludes') ? undefined : json['LatestItemsExcludes'],
        'myMediaExcludes': !exists(json, 'MyMediaExcludes') ? undefined : json['MyMediaExcludes'],
        'hidePlayedInLatest': !exists(json, 'HidePlayedInLatest') ? undefined : json['HidePlayedInLatest'],
        'rememberAudioSelections': !exists(json, 'RememberAudioSelections') ? undefined : json['RememberAudioSelections'],
        'rememberSubtitleSelections': !exists(json, 'RememberSubtitleSelections') ? undefined : json['RememberSubtitleSelections'],
        'enableNextEpisodeAutoPlay': !exists(json, 'EnableNextEpisodeAutoPlay') ? undefined : json['EnableNextEpisodeAutoPlay'],
    };
}

export function UserConfigurationToJSON(value?: UserConfiguration | null): any {
    if (value === undefined) {
        return undefined;
    }
    if (value === null) {
        return null;
    }
    return {
        
        'AudioLanguagePreference': value.audioLanguagePreference,
        'PlayDefaultAudioTrack': value.playDefaultAudioTrack,
        'SubtitleLanguagePreference': value.subtitleLanguagePreference,
        'DisplayMissingEpisodes': value.displayMissingEpisodes,
        'GroupedFolders': value.groupedFolders,
        'SubtitleMode': SubtitlePlaybackModeToJSON(value.subtitleMode),
        'DisplayCollectionsView': value.displayCollectionsView,
        'EnableLocalPassword': value.enableLocalPassword,
        'OrderedViews': value.orderedViews,
        'LatestItemsExcludes': value.latestItemsExcludes,
        'MyMediaExcludes': value.myMediaExcludes,
        'HidePlayedInLatest': value.hidePlayedInLatest,
        'RememberAudioSelections': value.rememberAudioSelections,
        'RememberSubtitleSelections': value.rememberSubtitleSelections,
        'EnableNextEpisodeAutoPlay': value.enableNextEpisodeAutoPlay,
    };
}

