/**
 * 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 { AbstractFilterHealthElement } from '../model/AbstractFilterHealthElement';
import { DocIdentifier } from '../model/DocIdentifier';
import { FilterChainHealthElement } from '../model/FilterChainHealthElement';
import { HealthElement } from '../model/HealthElement';
import { IcureStub } from '../model/IcureStub';
import { ListOfIds } from '../model/ListOfIds';
import { PaginatedListHealthElement } from '../model/PaginatedListHealthElement';
import { AuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider';
import { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult';
import { MinimalEntityBulkShareResult } from '../model/requests/MinimalEntityBulkShareResult';
import { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams';
import { TimingInfo } from '../model/TimingInfo';
export declare class IccHelementApi {
    host: string;
    _headers: Array<XHR.Header>;
    authenticationProvider: AuthenticationProvider;
    fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>;
    get headers(): Promise<Array<XHR.Header>>;
    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;
    /**
     * Returns an instance of created healthcare element.
     * @summary Create a healthcare element with the current user
     * @param body
     */
    createHealthElement(body?: HealthElement): Promise<HealthElement>;
    /**
     * Returns the created healthcare elements.
     * @summary Create a batch of healthcare elements
     * @param body
     */
    createHealthElements(body?: Array<HealthElement>): Promise<Array<HealthElement>>;
    /**
     * @summary Delete healthcare elements by batch.
     *
     * @param healthElementIds a ListOfIds containing the ids of the health elements to delete.
     * @return a Promise that will resolve in an Array containing the DocIdentifiers of the successfully delete documents.
     */
    deleteHealthElements(healthElementIds: ListOfIds): Promise<Array<DocIdentifier>>;
    /**
     * @summary Deletes a single health element by id.
     *
     * @param healthElementId the id of the health element to delete.
     * @return a Promise that will resolve in the DocIdentifier of the deleted health element.
     */
    deleteHealthElement(healthElementId: string): Promise<DocIdentifier>;
    /**
     * Returns a list of health elements along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.
     * @summary Filter health elements for the current user (HcParty)
     * @param body
     * @param startDocumentId A HealthElement document ID
     * @param limit Number of rows
     * @param collectTiming if true, include server-side filter timing information in the response
     */
    filterHealthElementsBy(startDocumentId?: string, limit?: number, body?: FilterChainHealthElement, collectTiming?: false): Promise<PaginatedListHealthElement>;
    filterHealthElementsBy(startDocumentId?: string, limit?: number, body?: FilterChainHealthElement, collectTiming?: true): Promise<PaginatedListHealthElement & TimingInfo>;
    /**
     * @summary List healthcare elements found By Healthcare Party and secret foreign keys.
     * @deprecated use {@link findHealthElementIdsByDataOwnerPatientOpeningDate} instead.
     * @param body
     * @param hcPartyId
     */
    findHealthElementsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array<string>): Promise<Array<HealthElement>>;
    /**
     * Keys must be delimited by commas.
     * @deprecated use {@link findHealthElementIdsByDataOwnerPatientOpeningDate} instead.
     * @summary List healthcare elements found By Healthcare Party and secret foreign keys.
     * @param hcPartyId
     * @param secretFKeys
     */
    findHealthElementsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise<Array<HealthElement>>;
    /**
     * @summary List HealthElement ids by data owner and a set of secret foreign key. The ids will be sorted by HealthElement openingDate, in ascending or descending
     * order according to the specified parameter value.
     *
     * @param dataOwnerId the data owner id.
     * @param secretFKeys an array of secret foreign keys.
     * @param startDate a timestamp in epoch milliseconds. If undefined, all the health element ids since the beginning of time will be returned.
     * @param endDate a timestamp in epoch milliseconds. If undefined, all the health element ids until the end of time will be returned.
     * @param descending whether to return the ids ordered in ascending or descending order by HealthElement openingDate
     * @return a promise that will resolve in an Array of HealthElement ids.
     */
    findHealthElementIdsByDataOwnerPatientOpeningDate(dataOwnerId: string, secretFKeys: string[], startDate?: number, endDate?: number, descending?: boolean): Promise<string[]>;
    /**
     * @deprecated use {@link findHealthElementsDelegationsStubsByIds} instead.
     * @summary List helement stubs found By Healthcare Party and secret foreign keys.
     * @param body
     * @param hcPartyId
     */
    findHealthElementsDelegationsStubsByHCPartyPatientForeignKeysUsingPost(hcPartyId: string, body?: Array<string>): Promise<Array<IcureStub>>;
    /**
     * Keys must be delimited by coma
     * @deprecated use {@link findHealthElementsDelegationsStubsByIds} instead.
     * @summary List helement stubs found By Healthcare Party and secret foreign keys.
     * @param hcPartyId
     * @param secretFKeys
     */
    findHealthElementsDelegationsStubsByHCPartyPatientForeignKeys(hcPartyId: string, secretFKeys: string): Promise<Array<IcureStub>>;
    findHealthElementsDelegationsStubsByIds(healthElementIds: string[]): Promise<Array<IcureStub>>;
    /**
     *
     * @summary Get a healthcare element
     * @param healthElementId
     */
    getHealthElement(healthElementId: string): Promise<HealthElement>;
    /**
     * Get a list of healthElement by ids/keys.
     * @summary Get healthElements by batch
     * @param body
     */
    getHealthElements(body?: ListOfIds): Promise<Array<HealthElement>>;
    /**
     *
     * @summary Get ids of health element matching the provided filter for the current user (HcParty)
     * @param body
     * @param collectTiming if true, include server-side filter timing information in the response
     */
    matchHealthElementsBy(body?: AbstractFilterHealthElement, collectTiming?: false): Promise<Array<string>>;
    matchHealthElementsBy(body?: AbstractFilterHealthElement, collectTiming?: true): Promise<Array<string> & TimingInfo>;
    /**
     * Returns the modified healthcare element.
     * @summary Modify a healthcare element
     * @param body
     */
    modifyHealthElement(body?: HealthElement): Promise<HealthElement>;
    /**
     * Returns the modified healthcare elements.
     * @summary Modify a batch of healthcare elements
     * @param body
     */
    modifyHealthElements(body?: Array<HealthElement>): Promise<Array<HealthElement>>;
    /**
     * @internal this method is for internal use only and may be changed without notice
     */
    bulkShareHealthElements(request: BulkShareOrUpdateMetadataParams): Promise<EntityBulkShareResult<HealthElement>[]>;
    /**
     * @internal this method is for internal use only and may be changed without notice
     */
    bulkShareHealthElementsMinimal(request: BulkShareOrUpdateMetadataParams): Promise<MinimalEntityBulkShareResult[]>;
}
