/* 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';
/**
 * 
 * @export
 * @interface SeriesConfig
 */
export interface SeriesConfig {
    /**
     * 
     * @type {string}
     * @memberof SeriesConfig
     */
    name: string;
    /**
     * 
     * @type {Date}
     * @memberof SeriesConfig
     */
    startDatetime: Date;
    /**
     * 
     * @type {Date}
     * @memberof SeriesConfig
     */
    endDatetime: Date;
    /**
     * 
     * @type {string}
     * @memberof SeriesConfig
     */
    sampling?: string | null;
    /**
     * 
     * @type {string}
     * @memberof SeriesConfig
     */
    timeFilter?: string | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof SeriesConfig
     */
    categories?: Array<string> | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof SeriesConfig
     */
    domains?: Array<string> | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof SeriesConfig
     */
    badDomainUrl?: Array<string> | null;
    /**
     * 
     * @type {number}
     * @memberof SeriesConfig
     */
    pageRank?: number | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof SeriesConfig
     */
    stringGuarantee?: Array<string> | null;
    /**
     * 
     * @type {string}
     * @memberof SeriesConfig
     */
    stringGuaranteeOp?: string | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof SeriesConfig
     */
    reverseStringGuarantee?: Array<string> | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof SeriesConfig
     */
    entityGuarantee?: Array<string> | null;
    /**
     * 
     * @type {string}
     * @memberof SeriesConfig
     */
    entityGuaranteeOp?: string | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof SeriesConfig
     */
    countries?: Array<string> | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof SeriesConfig
     */
    countriesBlacklist?: Array<string> | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof SeriesConfig
     */
    continents?: Array<string> | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof SeriesConfig
     */
    languages?: Array<string> | null;
    /**
     * 
     * @type {string}
     * @memberof SeriesConfig
     */
    sentiment?: string | null;
    /**
     * 
     * @type {Array<string>}
     * @memberof SeriesConfig
     */
    reportingVoice?: Array<string> | null;
    /**
     * 
     * @type {string}
     * @memberof SeriesConfig
     */
    provocative?: string | null;
}

/**
 * Check if a given object implements the SeriesConfig interface.
 */
export function instanceOfSeriesConfig(value: object): value is SeriesConfig {
    if (!('name' in value) || value['name'] === undefined) return false;
    if (!('startDatetime' in value) || value['startDatetime'] === undefined) return false;
    if (!('endDatetime' in value) || value['endDatetime'] === undefined) return false;
    return true;
}

export function SeriesConfigFromJSON(json: any): SeriesConfig {
    return SeriesConfigFromJSONTyped(json, false);
}

export function SeriesConfigFromJSONTyped(json: any, ignoreDiscriminator: boolean): SeriesConfig {
    if (json == null) {
        return json;
    }
    return {
        
        'name': json['name'],
        'startDatetime': (new Date(json['start_datetime'])),
        'endDatetime': (new Date(json['end_datetime'])),
        'sampling': json['sampling'] == null ? undefined : json['sampling'],
        'timeFilter': json['time_filter'] == null ? undefined : json['time_filter'],
        'categories': json['categories'] == null ? undefined : json['categories'],
        'domains': json['domains'] == null ? undefined : json['domains'],
        'badDomainUrl': json['bad_domain_url'] == null ? undefined : json['bad_domain_url'],
        'pageRank': json['page_rank'] == null ? undefined : json['page_rank'],
        'stringGuarantee': json['string_guarantee'] == null ? undefined : json['string_guarantee'],
        'stringGuaranteeOp': json['string_guarantee_op'] == null ? undefined : json['string_guarantee_op'],
        'reverseStringGuarantee': json['reverse_string_guarantee'] == null ? undefined : json['reverse_string_guarantee'],
        'entityGuarantee': json['entity_guarantee'] == null ? undefined : json['entity_guarantee'],
        'entityGuaranteeOp': json['entity_guarantee_op'] == null ? undefined : json['entity_guarantee_op'],
        'countries': json['countries'] == null ? undefined : json['countries'],
        'countriesBlacklist': json['countries_blacklist'] == null ? undefined : json['countries_blacklist'],
        'continents': json['continents'] == null ? undefined : json['continents'],
        'languages': json['languages'] == null ? undefined : json['languages'],
        'sentiment': json['sentiment'] == null ? undefined : json['sentiment'],
        'reportingVoice': json['reporting_voice'] == null ? undefined : json['reporting_voice'],
        'provocative': json['provocative'] == null ? undefined : json['provocative'],
    };
}

export function SeriesConfigToJSON(json: any): SeriesConfig {
    return SeriesConfigToJSONTyped(json, false);
}

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

    return {
        
        'name': value['name'],
        'start_datetime': ((value['startDatetime']).toISOString()),
        'end_datetime': ((value['endDatetime']).toISOString()),
        'sampling': value['sampling'],
        'time_filter': value['timeFilter'],
        'categories': value['categories'],
        'domains': value['domains'],
        'bad_domain_url': value['badDomainUrl'],
        'page_rank': value['pageRank'],
        'string_guarantee': value['stringGuarantee'],
        'string_guarantee_op': value['stringGuaranteeOp'],
        'reverse_string_guarantee': value['reverseStringGuarantee'],
        'entity_guarantee': value['entityGuarantee'],
        'entity_guarantee_op': value['entityGuaranteeOp'],
        'countries': value['countries'],
        'countries_blacklist': value['countriesBlacklist'],
        'continents': value['continents'],
        'languages': value['languages'],
        'sentiment': value['sentiment'],
        'reporting_voice': value['reportingVoice'],
        'provocative': value['provocative'],
    };
}

