/* 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 { Architecture } from './Architecture';
import {
    ArchitectureFromJSON,
    ArchitectureFromJSONTyped,
    ArchitectureToJSON,
} from './Architecture';
import type { FFmpegLocation } from './FFmpegLocation';
import {
    FFmpegLocationFromJSON,
    FFmpegLocationFromJSONTyped,
    FFmpegLocationToJSON,
} from './FFmpegLocation';
import type { InstallationInfo } from './InstallationInfo';
import {
    InstallationInfoFromJSON,
    InstallationInfoFromJSONTyped,
    InstallationInfoToJSON,
} from './InstallationInfo';

/**
 * Class SystemInfo.
 * @export
 * @interface SystemInfo
 */
export interface SystemInfo {
    /**
     * Gets or sets the local address.
     * @type {string}
     * @memberof SystemInfo
     */
    localAddress?: string | null;
    /**
     * Gets or sets the name of the server.
     * @type {string}
     * @memberof SystemInfo
     */
    serverName?: string | null;
    /**
     * Gets or sets the server version.
     * @type {string}
     * @memberof SystemInfo
     */
    version?: string | null;
    /**
     * Gets or sets the product name. This is the AssemblyProduct name.
     * @type {string}
     * @memberof SystemInfo
     */
    productName?: string | null;
    /**
     * Gets or sets the operating system.
     * @type {string}
     * @memberof SystemInfo
     */
    operatingSystem?: string | null;
    /**
     * Gets or sets the id.
     * @type {string}
     * @memberof SystemInfo
     */
    id?: string | null;
    /**
     * Gets or sets a value indicating whether the startup wizard is completed.
     * @type {boolean}
     * @memberof SystemInfo
     */
    startupWizardCompleted?: boolean | null;
    /**
     * Gets or sets the display name of the operating system.
     * @type {string}
     * @memberof SystemInfo
     */
    operatingSystemDisplayName?: string | null;
    /**
     * Gets or sets the package name.
     * @type {string}
     * @memberof SystemInfo
     */
    packageName?: string | null;
    /**
     * Gets or sets a value indicating whether this instance has pending restart.
     * @type {boolean}
     * @memberof SystemInfo
     */
    hasPendingRestart?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SystemInfo
     */
    isShuttingDown?: boolean;
    /**
     * Gets or sets a value indicating whether [supports library monitor].
     * @type {boolean}
     * @memberof SystemInfo
     */
    supportsLibraryMonitor?: boolean;
    /**
     * Gets or sets the web socket port number.
     * @type {number}
     * @memberof SystemInfo
     */
    webSocketPortNumber?: number;
    /**
     * Gets or sets the completed installations.
     * @type {Array<InstallationInfo>}
     * @memberof SystemInfo
     */
    completedInstallations?: Array<InstallationInfo> | null;
    /**
     * Gets or sets a value indicating whether this instance can self restart.
     * @type {boolean}
     * @memberof SystemInfo
     */
    canSelfRestart?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof SystemInfo
     */
    canLaunchWebBrowser?: boolean;
    /**
     * Gets or sets the program data path.
     * @type {string}
     * @memberof SystemInfo
     */
    programDataPath?: string | null;
    /**
     * Gets or sets the web UI resources path.
     * @type {string}
     * @memberof SystemInfo
     */
    webPath?: string | null;
    /**
     * Gets or sets the items by name path.
     * @type {string}
     * @memberof SystemInfo
     */
    itemsByNamePath?: string | null;
    /**
     * Gets or sets the cache path.
     * @type {string}
     * @memberof SystemInfo
     */
    cachePath?: string | null;
    /**
     * Gets or sets the log path.
     * @type {string}
     * @memberof SystemInfo
     */
    logPath?: string | null;
    /**
     * Gets or sets the internal metadata path.
     * @type {string}
     * @memberof SystemInfo
     */
    internalMetadataPath?: string | null;
    /**
     * Gets or sets the transcode path.
     * @type {string}
     * @memberof SystemInfo
     */
    transcodingTempPath?: string | null;
    /**
     * Gets or sets a value indicating whether this instance has update available.
     * @type {boolean}
     * @memberof SystemInfo
     * @deprecated
     */
    hasUpdateAvailable?: boolean;
    /**
     * 
     * @type {FFmpegLocation}
     * @memberof SystemInfo
     */
    encoderLocation?: FFmpegLocation;
    /**
     * 
     * @type {Architecture}
     * @memberof SystemInfo
     */
    systemArchitecture?: Architecture;
}

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

    return isInstance;
}

export function SystemInfoFromJSON(json: any): SystemInfo {
    return SystemInfoFromJSONTyped(json, false);
}

export function SystemInfoFromJSONTyped(json: any, ignoreDiscriminator: boolean): SystemInfo {
    if ((json === undefined) || (json === null)) {
        return json;
    }
    return {
        
        'localAddress': !exists(json, 'LocalAddress') ? undefined : json['LocalAddress'],
        'serverName': !exists(json, 'ServerName') ? undefined : json['ServerName'],
        'version': !exists(json, 'Version') ? undefined : json['Version'],
        'productName': !exists(json, 'ProductName') ? undefined : json['ProductName'],
        'operatingSystem': !exists(json, 'OperatingSystem') ? undefined : json['OperatingSystem'],
        'id': !exists(json, 'Id') ? undefined : json['Id'],
        'startupWizardCompleted': !exists(json, 'StartupWizardCompleted') ? undefined : json['StartupWizardCompleted'],
        'operatingSystemDisplayName': !exists(json, 'OperatingSystemDisplayName') ? undefined : json['OperatingSystemDisplayName'],
        'packageName': !exists(json, 'PackageName') ? undefined : json['PackageName'],
        'hasPendingRestart': !exists(json, 'HasPendingRestart') ? undefined : json['HasPendingRestart'],
        'isShuttingDown': !exists(json, 'IsShuttingDown') ? undefined : json['IsShuttingDown'],
        'supportsLibraryMonitor': !exists(json, 'SupportsLibraryMonitor') ? undefined : json['SupportsLibraryMonitor'],
        'webSocketPortNumber': !exists(json, 'WebSocketPortNumber') ? undefined : json['WebSocketPortNumber'],
        'completedInstallations': !exists(json, 'CompletedInstallations') ? undefined : (json['CompletedInstallations'] === null ? null : (json['CompletedInstallations'] as Array<any>).map(InstallationInfoFromJSON)),
        'canSelfRestart': !exists(json, 'CanSelfRestart') ? undefined : json['CanSelfRestart'],
        'canLaunchWebBrowser': !exists(json, 'CanLaunchWebBrowser') ? undefined : json['CanLaunchWebBrowser'],
        'programDataPath': !exists(json, 'ProgramDataPath') ? undefined : json['ProgramDataPath'],
        'webPath': !exists(json, 'WebPath') ? undefined : json['WebPath'],
        'itemsByNamePath': !exists(json, 'ItemsByNamePath') ? undefined : json['ItemsByNamePath'],
        'cachePath': !exists(json, 'CachePath') ? undefined : json['CachePath'],
        'logPath': !exists(json, 'LogPath') ? undefined : json['LogPath'],
        'internalMetadataPath': !exists(json, 'InternalMetadataPath') ? undefined : json['InternalMetadataPath'],
        'transcodingTempPath': !exists(json, 'TranscodingTempPath') ? undefined : json['TranscodingTempPath'],
        'hasUpdateAvailable': !exists(json, 'HasUpdateAvailable') ? undefined : json['HasUpdateAvailable'],
        'encoderLocation': !exists(json, 'EncoderLocation') ? undefined : FFmpegLocationFromJSON(json['EncoderLocation']),
        'systemArchitecture': !exists(json, 'SystemArchitecture') ? undefined : ArchitectureFromJSON(json['SystemArchitecture']),
    };
}

export function SystemInfoToJSON(value?: SystemInfo | null): any {
    if (value === undefined) {
        return undefined;
    }
    if (value === null) {
        return null;
    }
    return {
        
        'LocalAddress': value.localAddress,
        'ServerName': value.serverName,
        'Version': value.version,
        'ProductName': value.productName,
        'OperatingSystem': value.operatingSystem,
        'Id': value.id,
        'StartupWizardCompleted': value.startupWizardCompleted,
        'OperatingSystemDisplayName': value.operatingSystemDisplayName,
        'PackageName': value.packageName,
        'HasPendingRestart': value.hasPendingRestart,
        'IsShuttingDown': value.isShuttingDown,
        'SupportsLibraryMonitor': value.supportsLibraryMonitor,
        'WebSocketPortNumber': value.webSocketPortNumber,
        'CompletedInstallations': value.completedInstallations === undefined ? undefined : (value.completedInstallations === null ? null : (value.completedInstallations as Array<any>).map(InstallationInfoToJSON)),
        'CanSelfRestart': value.canSelfRestart,
        'CanLaunchWebBrowser': value.canLaunchWebBrowser,
        'ProgramDataPath': value.programDataPath,
        'WebPath': value.webPath,
        'ItemsByNamePath': value.itemsByNamePath,
        'CachePath': value.cachePath,
        'LogPath': value.logPath,
        'InternalMetadataPath': value.internalMetadataPath,
        'TranscodingTempPath': value.transcodingTempPath,
        'HasUpdateAvailable': value.hasUpdateAvailable,
        'EncoderLocation': FFmpegLocationToJSON(value.encoderLocation),
        'SystemArchitecture': ArchitectureToJSON(value.systemArchitecture),
    };
}

