/**
 * iCure Data Stack API Documentation
 * The iCure Data Stack Application API is the native interface to iCure. This version is obsolete, please use v2.
 *
 * OpenAPI spec version: v1
 *
 *
 * NOTE: This class is auto generated by the swagger code generator program.
 * https://github.com/swagger-api/swagger-codegen.git
 * Do not edit the class manually.
 */
import { XHR } from './XHR';
import { Amp } from '../model/Amp';
import { ListOfIds } from '../model/ListOfIds';
import { Nmp } from '../model/Nmp';
import { PaginatedListAmp } from '../model/PaginatedListAmp';
import { PaginatedListNmp } from '../model/PaginatedListNmp';
import { PaginatedListVmp } from '../model/PaginatedListVmp';
import { PaginatedListVmpGroup } from '../model/PaginatedListVmpGroup';
import { Paragraph } from '../model/Paragraph';
import { PharmaceuticalForm } from '../model/PharmaceuticalForm';
import { SamVersion } from '../model/SamVersion';
import { Substance } from '../model/Substance';
import { Verse } from '../model/Verse';
import { Vmp } from '../model/Vmp';
import { VmpGroup } from '../model/VmpGroup';
import { AuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider';
import { SamV2UpdateTaskLogItem } from '../model/SamV2UpdateTaskLogItem';
import { SamV2Update } from '../model/SamV2Update';
import { SamText } from '../model/SamText';
export declare class IccBesamv2Api {
    host: string;
    headers: Array<XHR.Header>;
    authenticationProvider: AuthenticationProvider;
    fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
    constructor(host: string, headers: any, authenticationProvider?: AuthenticationProvider, fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
    setHeaders(h: Array<XHR.Header>): void;
    handleError(e: XHR.XHRError): never;
    /**
     * Warning: this function will work only with a single node installation of CouchDB
     *
     * Starts a new task on the backend that will retrieve all the missing updates on the drugs and ChapIV databases, and
     * it will apply them.
     * This method will fail if an update task is currently running or if the backend was not configured to run the update task.
     * As the operation may last several minutes, this process will not return the task status.
     * Instead, it is possible to check the status of the task using the {@link getSamUpdateTaskStatus} method.
     * @param apiToken a token from a cloud installation of the kraken.
     * @param forceSnapshot whether to apply only the latest diff patch or reset the database to the latest snapshot and apply the following patches.
     * @param purgeOutdatedEntities whether to purge the outdated entities from the diff patches or just soft-delete them (purges by default).
     */
    triggerSamUpdateTask(apiToken: string, forceSnapshot?: boolean, purgeOutdatedEntities?: boolean): Promise<string>;
    /**
     * Warning: this function will work only with a single node installation of CouchDB
     * Returns the log of a SAM update operation that is running on the backend or the last the completed.
     * Starting a new task will erase the log of the previous task.
     * The item in the array are sorted from most recent to last recent.
     * This method will fail if the backend was not configured to run the update task.
     */
    getSamUpdateTaskStatus(): Promise<SamV2UpdateTaskLogItem[]>;
    /**
     * Warning: this function will work only with a single node installation of CouchDB
     * Returns all the SamV2 updates successfully applied to the drugs and ChapIV databases.
     * This method will fail if the backend was not configured to run the update task.
     */
    getSamUpdateTaskHistory(): Promise<SamV2Update[]>;
    /**
     * Warning: this function will work only with a single node installation of CouchDB
     * Stops the current sam update task on the backend.
     * This method will fail if there is no method currently running on the backend or if the backend was not configured to run the update task.
     */
    stopCurrentSamUpdateTask(): Promise<string>;
    /**
     * Returns a list of amps matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding AMPs by dmpp code
     * @param dmppCode dmppCode
     */
    findAmpsByDmppCode(dmppCode: string): Promise<Array<Amp>>;
    /**
     * Returns a list of amps matched with given input. If several types are provided, pagination is not supported
     * @summary Finding AMPs by amp code
     * @param ampCode ampCode
     */
    findAmpsByAmpCode(ampCode: string): Promise<Array<Amp>>;
    /**
     * Returns a list of amp names with that match the provided CNK.
     * @summary Finding AMPs names by CNK.
     * @param dmppCode the dmppCode
     */
    findAmpNamesByDmppCode(dmppCode: string): Promise<Array<SamText>>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding AMPs by atc code with pagination.
     * @param atcCode atcCode
     * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key&#x27;s startKey
     * @param startDocumentId A amp document ID
     * @param limit Number of rows
     */
    findPaginatedAmpsByAtc(atcCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise<PaginatedListAmp>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding AMPs by atc code with pagination.
     * @param atcCode atcCode
     * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key&#x27;s startKey
     * @param startDocumentId A amp document ID
     * @param limit Number of rows
     */
    findPaginatedAmpsByAtc1(atcCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise<PaginatedListAmp>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding AMPs by group with pagination.
     * @param vmpgCode vmpgCode
     * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key&#x27;s startKey
     * @param startDocumentId A vmp document ID
     * @param limit Number of rows
     */
    findPaginatedAmpsByGroupCode(vmpgCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise<PaginatedListAmp>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding AMPs by group with pagination.
     * @param vmpgId vmpgCode
     * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key&#x27;s startKey
     * @param startDocumentId A vmp document ID
     * @param limit Number of rows
     */
    findPaginatedAmpsByGroupId(vmpgId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise<PaginatedListAmp>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding AMPs by label with pagination.
     * @param language language
     * @param label label
     * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key&#x27;s startKey
     * @param startDocumentId An amp document ID
     * @param limit Number of rows
     */
    findPaginatedAmpsByLabel(language?: string, label?: string, startKey?: string, startDocumentId?: string, limit?: number): Promise<PaginatedListAmp>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding AMPs by vmp code with pagination.
     * @param vmpCode vmpCode
     * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key&#x27;s startKey
     * @param startDocumentId A amp document ID
     * @param limit Number of rows
     */
    findPaginatedAmpsByVmpCode(vmpCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise<PaginatedListAmp>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding AMPs by vmp id with pagination.
     * @param vmpId vmpgCode
     * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key&#x27;s startKey
     * @param startDocumentId A amp document ID
     * @param limit Number of rows
     */
    findPaginatedAmpsByVmpId(vmpId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise<PaginatedListAmp>;
    /**
     * Returns a paginated list of NMPs by matching label. Matches occur per word
     * @summary Finding NMPs by label with pagination.
     * @param language language
     * @param label label
     * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key&#x27;s startKey
     * @param startDocumentId A vmp document ID
     * @param limit Number of rows
     */
    findPaginatedNmpsByLabel(language?: string, label?: string, startKey?: string, startDocumentId?: string, limit?: number): Promise<PaginatedListNmp>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding VMP groups by language label with pagination.
     * @param language language
     * @param label label
     * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key&#x27;s startKey
     * @param startDocumentId A vmpgroup document ID
     * @param limit Number of rows
     */
    findPaginatedVmpGroupsByLabel(language?: string, label?: string, startKey?: string, startDocumentId?: string, limit?: number): Promise<PaginatedListVmpGroup>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding VMP groups by cmpgCode with pagination.
     * @param vmpgCode vmpgCode
     * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key&#x27;s startKey
     * @param startDocumentId A vmpgroup document ID
     * @param limit Number of rows
     */
    findPaginatedVmpGroupsByVmpGroupCode(vmpgCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise<PaginatedListVmpGroup>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding VMPs by group with pagination.
     * @param vmpgCode vmpgCode
     * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key&#x27;s startKey
     * @param startDocumentId A vmp document ID
     * @param limit Number of rows
     */
    findPaginatedVmpsByGroupCode(vmpgCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise<PaginatedListVmp>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding VMPs by group with pagination.
     * @param vmpgId vmpgId
     * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key&#x27;s startKey
     * @param startDocumentId A vmp document ID
     * @param limit Number of rows
     */
    findPaginatedVmpsByGroupId(vmpgId: string, startKey?: string, startDocumentId?: string, limit?: number): Promise<PaginatedListVmp>;
    /**
     * Returns a paginated list of VMPs by matching label. Matches occur per word
     * @summary Finding VMPs by label with pagination.
     * @param language language
     * @param label label
     * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key&#x27;s startKey
     * @param startDocumentId A vmp document ID
     * @param limit Number of rows
     */
    findPaginatedVmpsByLabel(language?: string, label?: string, startKey?: string, startDocumentId?: string, limit?: number): Promise<PaginatedListVmp>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding VMPs by group with pagination.
     * @param vmpCode vmpCode
     * @param startKey The start key for pagination: a JSON representation of an array containing all the necessary components to form the Complex Key&#x27;s startKey
     * @param startDocumentId A vmp document ID
     * @param limit Number of rows
     */
    findPaginatedVmpsByVmpCode(vmpCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise<PaginatedListVmp>;
    /**
     *
     * @param searchString
     * @param language
     */
    findParagraphs(searchString: string, language: string): Promise<Array<Paragraph>>;
    /**
     *
     * @param cnk
     * @param language
     */
    findParagraphsWithCnk(cnk: number, language: string): Promise<Array<Paragraph>>;
    /**
     *
     * @param chapterName
     * @param paragraphName
     * @param verseSeq
     * @param docSeq
     * @param language
     * @param response
     */
    getAddedDocument(chapterName: string, paragraphName: string, verseSeq: number, docSeq: number, language: string): Promise<ArrayBuffer>;
    /**
     *
     * @param chapterName
     * @param paragraphName
     */
    getAmpsForParagraph(chapterName: string, paragraphName: string): Promise<Array<Amp>>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Get Samv2 version.
     */
    getSamVersion(): Promise<SamVersion>;
    /**
     *
     * @param chapterName
     * @param paragraphName
     */
    getVersesHierarchy(chapterName: string, paragraphName: string): Promise<Verse>;
    /**
     *
     * @param chapterName
     * @param paragraphName
     * @param language
     */
    getVtmNamesForParagraph(chapterName: string, paragraphName: string, language: string): Promise<Array<string>>;
    /**
     * Returns a list of amps matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding AMPs by dmpp code
     * @param body
     */
    listAmpsByDmppCodes(body?: ListOfIds): Promise<Array<Amp>>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding AMPs by group.
     * @param body
     */
    listAmpsByGroupCodes(body?: ListOfIds): Promise<Array<Amp>>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding AMPs by group.
     * @param body
     */
    listAmpsByGroupIds(body?: ListOfIds): Promise<Array<Amp>>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding AMPs by vmp code.
     * @param body
     */
    listAmpsByVmpCodes(body?: ListOfIds): Promise<Array<Amp>>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding AMPs by vmp id.
     * @param body
     */
    listAmpsByVmpIds(body?: ListOfIds): Promise<Array<Amp>>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding NMPs by cnk id.
     * @param body
     */
    listNmpsByCnks(body?: ListOfIds): Promise<Array<Nmp>>;
    /**
     *
     * @summary List all pharmaceutical forms.
     */
    listPharmaceuticalForms(): Promise<Array<PharmaceuticalForm>>;
    /**
     *
     * @summary List all substances.
     */
    listSubstances(): Promise<Array<Substance>>;
    /**
     * Returns a list of group codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding AMPs by group.
     * @param body
     */
    listVmpGroupsByVmpGroupCodes(body?: ListOfIds): Promise<Array<VmpGroup>>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding VMPs by group.
     * @param body
     */
    listVmpsByGroupIds(body?: ListOfIds): Promise<Array<Vmp>>;
    /**
     * Returns a list of codes matched with given input. If several types are provided, paginantion is not supported
     * @summary Finding VMPs by group.
     * @param body
     */
    listVmpsByVmpCodes(body?: ListOfIds): Promise<Array<Vmp>>;
}
