/* 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 * as runtime from '../runtime';
import type {
  AbcAPIErrorModel109,
  AbcAPIErrorModel110,
  AbcAPIErrorModel111,
  AbcAPIErrorModel112,
  AsknewsApiErrorsAPIErrorModel,
  ValidationErrorModel,
  WikiSearchResponse,
} from '../models/index';
import {
    AbcAPIErrorModel109FromJSON,
    AbcAPIErrorModel109ToJSON,
    AbcAPIErrorModel110FromJSON,
    AbcAPIErrorModel110ToJSON,
    AbcAPIErrorModel111FromJSON,
    AbcAPIErrorModel111ToJSON,
    AbcAPIErrorModel112FromJSON,
    AbcAPIErrorModel112ToJSON,
    AsknewsApiErrorsAPIErrorModelFromJSON,
    AsknewsApiErrorsAPIErrorModelToJSON,
    ValidationErrorModelFromJSON,
    ValidationErrorModelToJSON,
    WikiSearchResponseFromJSON,
    WikiSearchResponseToJSON,
} from '../models/index';

export interface SearchWikiRequest {
    query?: string;
    neighborChunks?: number;
    nDocuments?: number;
    fullArticles?: boolean;
    hybridSearch?: boolean;
    stringGuarantee?: Array<string>;
    diversify?: number;
    includeMainSection?: boolean;
}

/**
 * 
 */
export class WikiApi extends runtime.BaseAPI {

    /**
     * Search on Wikipedia content with natural language. Find exactly relevant chunks, with contextual neighbor chunks, and the full articles they came from.
     * Search for Wikipedia context with natural language
     */
    async searchWikiRaw(requestParameters: SearchWikiRequest, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<runtime.ApiResponse<WikiSearchResponse> > {
        const queryParameters: any = {};

        if (requestParameters['query'] != null) {
            queryParameters['query'] = requestParameters['query'];
        }

        if (requestParameters['neighborChunks'] != null) {
            queryParameters['neighbor_chunks'] = requestParameters['neighborChunks'];
        }

        if (requestParameters['nDocuments'] != null) {
            queryParameters['n_documents'] = requestParameters['nDocuments'];
        }

        if (requestParameters['fullArticles'] != null) {
            queryParameters['full_articles'] = requestParameters['fullArticles'];
        }

        if (requestParameters['hybridSearch'] != null) {
            queryParameters['hybrid_search'] = requestParameters['hybridSearch'];
        }

        if (requestParameters['stringGuarantee'] != null) {
            queryParameters['string_guarantee'] = requestParameters['stringGuarantee'];
        }

        if (requestParameters['diversify'] != null) {
            queryParameters['diversify'] = requestParameters['diversify'];
        }

        if (requestParameters['includeMainSection'] != null) {
            queryParameters['include_main_section'] = requestParameters['includeMainSection'];
        }

        const headerParameters: runtime.HTTPHeaders = {};

        const response = await this.request({
            path: `/v1/wiki/search`,
            method: 'GET',
            headers: headerParameters,
            query: queryParameters,
        }, initOverrides);


        return new runtime.JSONApiResponse(response, (jsonValue) => WikiSearchResponseFromJSON(jsonValue));
    }

    /**
     * Search on Wikipedia content with natural language. Find exactly relevant chunks, with contextual neighbor chunks, and the full articles they came from.
     * Search for Wikipedia context with natural language
     */
    async searchWiki(requestParameters: SearchWikiRequest = {}, initOverrides?: RequestInit | runtime.InitOverrideFunction): Promise<WikiSearchResponse> {
        const response = await this.searchWikiRaw(requestParameters, initOverrides);
        return await response.value();
    }

}
