/* 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 { ListingsProviderInfo } from './ListingsProviderInfo';
import {
    ListingsProviderInfoFromJSON,
    ListingsProviderInfoFromJSONTyped,
    ListingsProviderInfoToJSON,
} from './ListingsProviderInfo';
import type { TunerHostInfo } from './TunerHostInfo';
import {
    TunerHostInfoFromJSON,
    TunerHostInfoFromJSONTyped,
    TunerHostInfoToJSON,
} from './TunerHostInfo';

/**
 * 
 * @export
 * @interface LiveTvOptions
 */
export interface LiveTvOptions {
    /**
     * 
     * @type {number}
     * @memberof LiveTvOptions
     */
    guideDays?: number | null;
    /**
     * 
     * @type {string}
     * @memberof LiveTvOptions
     */
    recordingPath?: string | null;
    /**
     * 
     * @type {string}
     * @memberof LiveTvOptions
     */
    movieRecordingPath?: string | null;
    /**
     * 
     * @type {string}
     * @memberof LiveTvOptions
     */
    seriesRecordingPath?: string | null;
    /**
     * 
     * @type {boolean}
     * @memberof LiveTvOptions
     */
    enableRecordingSubfolders?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof LiveTvOptions
     */
    enableOriginalAudioWithEncodedRecordings?: boolean;
    /**
     * 
     * @type {Array<TunerHostInfo>}
     * @memberof LiveTvOptions
     */
    tunerHosts?: Array<TunerHostInfo> | null;
    /**
     * 
     * @type {Array<ListingsProviderInfo>}
     * @memberof LiveTvOptions
     */
    listingProviders?: Array<ListingsProviderInfo> | null;
    /**
     * 
     * @type {number}
     * @memberof LiveTvOptions
     */
    prePaddingSeconds?: number;
    /**
     * 
     * @type {number}
     * @memberof LiveTvOptions
     */
    postPaddingSeconds?: number;
    /**
     * 
     * @type {Array<string>}
     * @memberof LiveTvOptions
     */
    mediaLocationsCreated?: Array<string> | null;
    /**
     * 
     * @type {string}
     * @memberof LiveTvOptions
     */
    recordingPostProcessor?: string | null;
    /**
     * 
     * @type {string}
     * @memberof LiveTvOptions
     */
    recordingPostProcessorArguments?: string | null;
}

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

    return isInstance;
}

export function LiveTvOptionsFromJSON(json: any): LiveTvOptions {
    return LiveTvOptionsFromJSONTyped(json, false);
}

export function LiveTvOptionsFromJSONTyped(json: any, ignoreDiscriminator: boolean): LiveTvOptions {
    if ((json === undefined) || (json === null)) {
        return json;
    }
    return {
        
        'guideDays': !exists(json, 'GuideDays') ? undefined : json['GuideDays'],
        'recordingPath': !exists(json, 'RecordingPath') ? undefined : json['RecordingPath'],
        'movieRecordingPath': !exists(json, 'MovieRecordingPath') ? undefined : json['MovieRecordingPath'],
        'seriesRecordingPath': !exists(json, 'SeriesRecordingPath') ? undefined : json['SeriesRecordingPath'],
        'enableRecordingSubfolders': !exists(json, 'EnableRecordingSubfolders') ? undefined : json['EnableRecordingSubfolders'],
        'enableOriginalAudioWithEncodedRecordings': !exists(json, 'EnableOriginalAudioWithEncodedRecordings') ? undefined : json['EnableOriginalAudioWithEncodedRecordings'],
        'tunerHosts': !exists(json, 'TunerHosts') ? undefined : (json['TunerHosts'] === null ? null : (json['TunerHosts'] as Array<any>).map(TunerHostInfoFromJSON)),
        'listingProviders': !exists(json, 'ListingProviders') ? undefined : (json['ListingProviders'] === null ? null : (json['ListingProviders'] as Array<any>).map(ListingsProviderInfoFromJSON)),
        'prePaddingSeconds': !exists(json, 'PrePaddingSeconds') ? undefined : json['PrePaddingSeconds'],
        'postPaddingSeconds': !exists(json, 'PostPaddingSeconds') ? undefined : json['PostPaddingSeconds'],
        'mediaLocationsCreated': !exists(json, 'MediaLocationsCreated') ? undefined : json['MediaLocationsCreated'],
        'recordingPostProcessor': !exists(json, 'RecordingPostProcessor') ? undefined : json['RecordingPostProcessor'],
        'recordingPostProcessorArguments': !exists(json, 'RecordingPostProcessorArguments') ? undefined : json['RecordingPostProcessorArguments'],
    };
}

export function LiveTvOptionsToJSON(value?: LiveTvOptions | null): any {
    if (value === undefined) {
        return undefined;
    }
    if (value === null) {
        return null;
    }
    return {
        
        'GuideDays': value.guideDays,
        'RecordingPath': value.recordingPath,
        'MovieRecordingPath': value.movieRecordingPath,
        'SeriesRecordingPath': value.seriesRecordingPath,
        'EnableRecordingSubfolders': value.enableRecordingSubfolders,
        'EnableOriginalAudioWithEncodedRecordings': value.enableOriginalAudioWithEncodedRecordings,
        'TunerHosts': value.tunerHosts === undefined ? undefined : (value.tunerHosts === null ? null : (value.tunerHosts as Array<any>).map(TunerHostInfoToJSON)),
        'ListingProviders': value.listingProviders === undefined ? undefined : (value.listingProviders === null ? null : (value.listingProviders as Array<any>).map(ListingsProviderInfoToJSON)),
        'PrePaddingSeconds': value.prePaddingSeconds,
        'PostPaddingSeconds': value.postPaddingSeconds,
        'MediaLocationsCreated': value.mediaLocationsCreated,
        'RecordingPostProcessor': value.recordingPostProcessor,
        'RecordingPostProcessorArguments': value.recordingPostProcessorArguments,
    };
}

