/* tslint:disable */
/* eslint-disable */
/**
 * AskNews API
 * AskNews API [![status](https://status.asknews.app/api/badge/2/status?style=for-the-badge)](https://status.asknews.app/status/prod)
 *
 * The version of the OpenAPI document: 0.24.66
 * Contact: contact@emergentmethods.ai
 *
 * 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';
import type { DomainQueryItem } from './DomainQueryItem';
import {
    DomainQueryItemFromJSON,
    DomainQueryItemFromJSONTyped,
    DomainQueryItemToJSON,
    DomainQueryItemToJSONTyped,
} from './DomainQueryItem';

/**
 * 
 * @export
 * @interface DomainQueryClusterItem
 */
export interface DomainQueryClusterItem {
    /**
     * 
     * @type {string}
     * @memberof DomainQueryClusterItem
     */
    clusterLabel: string;
    /**
     * 
     * @type {string}
     * @memberof DomainQueryClusterItem
     */
    clusterDescription: string;
    /**
     * 
     * @type {string}
     * @memberof DomainQueryClusterItem
     */
    clusterClassification: string;
    /**
     * 
     * @type {Array<any>}
     * @memberof DomainQueryClusterItem
     */
    centroidCoords: Array<any>;
    /**
     * 
     * @type {Array<DomainQueryItem>}
     * @memberof DomainQueryClusterItem
     */
    clusterQueries: Array<DomainQueryItem>;
}

/**
 * Check if a given object implements the DomainQueryClusterItem interface.
 */
export function instanceOfDomainQueryClusterItem(value: object): value is DomainQueryClusterItem {
    if (!('clusterLabel' in value) || value['clusterLabel'] === undefined) return false;
    if (!('clusterDescription' in value) || value['clusterDescription'] === undefined) return false;
    if (!('clusterClassification' in value) || value['clusterClassification'] === undefined) return false;
    if (!('centroidCoords' in value) || value['centroidCoords'] === undefined) return false;
    if (!('clusterQueries' in value) || value['clusterQueries'] === undefined) return false;
    return true;
}

export function DomainQueryClusterItemFromJSON(json: any): DomainQueryClusterItem {
    return DomainQueryClusterItemFromJSONTyped(json, false);
}

export function DomainQueryClusterItemFromJSONTyped(json: any, ignoreDiscriminator: boolean): DomainQueryClusterItem {
    if (json == null) {
        return json;
    }
    return {
        
        'clusterLabel': json['cluster_label'],
        'clusterDescription': json['cluster_description'],
        'clusterClassification': json['cluster_classification'],
        'centroidCoords': json['centroid_coords'],
        'clusterQueries': ((json['cluster_queries'] as Array<any>).map(DomainQueryItemFromJSON)),
    };
}

export function DomainQueryClusterItemToJSON(json: any): DomainQueryClusterItem {
    return DomainQueryClusterItemToJSONTyped(json, false);
}

export function DomainQueryClusterItemToJSONTyped(value?: DomainQueryClusterItem | null, ignoreDiscriminator: boolean = false): any {
    if (value == null) {
        return value;
    }

    return {
        
        'cluster_label': value['clusterLabel'],
        'cluster_description': value['clusterDescription'],
        'cluster_classification': value['clusterClassification'],
        'centroid_coords': value['centroidCoords'],
        'cluster_queries': ((value['clusterQueries'] as Array<any>).map(DomainQueryItemToJSON)),
    };
}

