/* tslint:disable */
/* eslint-disable */
/**
 * AskNews API
 * AskNews API
 *
 * The version of the OpenAPI document: 0.18.6
 * 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 { CreateDeepNewsRequestMessage } from './CreateDeepNewsRequestMessage';
import {
    CreateDeepNewsRequestMessageFromJSON,
    CreateDeepNewsRequestMessageFromJSONTyped,
    CreateDeepNewsRequestMessageToJSON,
} from './CreateDeepNewsRequestMessage';
import type { Sources1 } from './Sources1';
import {
    Sources1FromJSON,
    Sources1FromJSONTyped,
    Sources1ToJSON,
} from './Sources1';
import type { Stop1 } from './Stop1';
import {
    Stop1FromJSON,
    Stop1FromJSONTyped,
    Stop1ToJSON,
} from './Stop1';

/**
 * 
 * @export
 * @interface CreateDeepNewsRequest
 */
export interface CreateDeepNewsRequest {
    [key: string]: any | any;
    /**
     * 
     * @type {string}
     * @memberof CreateDeepNewsRequest
     */
    model?: string;
    /**
     * 
     * @type {Array<CreateDeepNewsRequestMessage>}
     * @memberof CreateDeepNewsRequest
     */
    messages: Array<CreateDeepNewsRequestMessage>;
    /**
     * 
     * @type {number}
     * @memberof CreateDeepNewsRequest
     */
    temperature?: number;
    /**
     * 
     * @type {number}
     * @memberof CreateDeepNewsRequest
     */
    topP?: number;
    /**
     * 
     * @type {number}
     * @memberof CreateDeepNewsRequest
     */
    n?: number;
    /**
     * 
     * @type {boolean}
     * @memberof CreateDeepNewsRequest
     */
    stream?: boolean;
    /**
     * 
     * @type {Stop1}
     * @memberof CreateDeepNewsRequest
     */
    stop?: Stop1;
    /**
     * 
     * @type {number}
     * @memberof CreateDeepNewsRequest
     */
    maxTokens?: number;
    /**
     * 
     * @type {number}
     * @memberof CreateDeepNewsRequest
     */
    presencePenalty?: number;
    /**
     * 
     * @type {number}
     * @memberof CreateDeepNewsRequest
     */
    frequencyPenalty?: number;
    /**
     * 
     * @type {string}
     * @memberof CreateDeepNewsRequest
     */
    user?: string;
    /**
     * 
     * @type {string}
     * @memberof CreateDeepNewsRequest
     */
    threadId?: string;
    /**
     * 
     * @type {string}
     * @memberof CreateDeepNewsRequest
     */
    inlineCitations?: CreateDeepNewsRequestInlineCitationsEnum;
    /**
     * 
     * @type {boolean}
     * @memberof CreateDeepNewsRequest
     */
    appendReferences?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof CreateDeepNewsRequest
     */
    journalistMode?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof CreateDeepNewsRequest
     */
    asknewsWatermark?: boolean;
    /**
     * 
     * @type {boolean}
     * @memberof CreateDeepNewsRequest
     */
    conversationalAwareness?: boolean;
    /**
     * 
     * @type {object}
     * @memberof CreateDeepNewsRequest
     */
    filterParams?: object;
    /**
     * 
     * @type {number}
     * @memberof CreateDeepNewsRequest
     */
    searchDepth?: number;
    /**
     * 
     * @type {number}
     * @memberof CreateDeepNewsRequest
     */
    maxDepth?: number;
    /**
     * 
     * @type {Sources1}
     * @memberof CreateDeepNewsRequest
     */
    sources?: Sources1;
    /**
     * 
     * @type {boolean}
     * @memberof CreateDeepNewsRequest
     */
    returnSources?: boolean;
}


/**
 * @export
 */
export const CreateDeepNewsRequestInlineCitationsEnum = {
    Numbered: 'numbered',
    MarkdownLink: 'markdown_link',
    None: 'none'
} as const;
export type CreateDeepNewsRequestInlineCitationsEnum = typeof CreateDeepNewsRequestInlineCitationsEnum[keyof typeof CreateDeepNewsRequestInlineCitationsEnum];


/**
 * Check if a given object implements the CreateDeepNewsRequest interface.
 */
export function instanceOfCreateDeepNewsRequest(value: object): boolean {
    if (!('messages' in value)) return false;
    return true;
}

export function CreateDeepNewsRequestFromJSON(json: any): CreateDeepNewsRequest {
    return CreateDeepNewsRequestFromJSONTyped(json, false);
}

export function CreateDeepNewsRequestFromJSONTyped(json: any, ignoreDiscriminator: boolean): CreateDeepNewsRequest {
    if (json == null) {
        return json;
    }
    return {
        
            ...json,
        'model': json['model'] == null ? undefined : json['model'],
        'messages': ((json['messages'] as Array<any>).map(CreateDeepNewsRequestMessageFromJSON)),
        'temperature': json['temperature'] == null ? undefined : json['temperature'],
        'topP': json['top_p'] == null ? undefined : json['top_p'],
        'n': json['n'] == null ? undefined : json['n'],
        'stream': json['stream'] == null ? undefined : json['stream'],
        'stop': json['stop'] == null ? undefined : Stop1FromJSON(json['stop']),
        'maxTokens': json['max_tokens'] == null ? undefined : json['max_tokens'],
        'presencePenalty': json['presence_penalty'] == null ? undefined : json['presence_penalty'],
        'frequencyPenalty': json['frequency_penalty'] == null ? undefined : json['frequency_penalty'],
        'user': json['user'] == null ? undefined : json['user'],
        'threadId': json['thread_id'] == null ? undefined : json['thread_id'],
        'inlineCitations': json['inline_citations'] == null ? undefined : json['inline_citations'],
        'appendReferences': json['append_references'] == null ? undefined : json['append_references'],
        'journalistMode': json['journalist_mode'] == null ? undefined : json['journalist_mode'],
        'asknewsWatermark': json['asknews_watermark'] == null ? undefined : json['asknews_watermark'],
        'conversationalAwareness': json['conversational_awareness'] == null ? undefined : json['conversational_awareness'],
        'filterParams': json['filter_params'] == null ? undefined : json['filter_params'],
        'searchDepth': json['search_depth'] == null ? undefined : json['search_depth'],
        'maxDepth': json['max_depth'] == null ? undefined : json['max_depth'],
        'sources': json['sources'] == null ? undefined : Sources1FromJSON(json['sources']),
        'returnSources': json['return_sources'] == null ? undefined : json['return_sources'],
    };
}

export function CreateDeepNewsRequestToJSON(value?: CreateDeepNewsRequest | null): any {
    if (value == null) {
        return value;
    }
    return {
        
            ...value,
        'model': value['model'],
        'messages': ((value['messages'] as Array<any>).map(CreateDeepNewsRequestMessageToJSON)),
        'temperature': value['temperature'],
        'top_p': value['topP'],
        'n': value['n'],
        'stream': value['stream'],
        'stop': Stop1ToJSON(value['stop']),
        'max_tokens': value['maxTokens'],
        'presence_penalty': value['presencePenalty'],
        'frequency_penalty': value['frequencyPenalty'],
        'user': value['user'],
        'thread_id': value['threadId'],
        'inline_citations': value['inlineCitations'],
        'append_references': value['appendReferences'],
        'journalist_mode': value['journalistMode'],
        'asknews_watermark': value['asknewsWatermark'],
        'conversational_awareness': value['conversationalAwareness'],
        'filter_params': value['filterParams'],
        'search_depth': value['searchDepth'],
        'max_depth': value['maxDepth'],
        'sources': Sources1ToJSON(value['sources']),
        'return_sources': value['returnSources'],
    };
}

