/**
 * 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 { AbstractFilterHealthcareParty } from '../model/AbstractFilterHealthcareParty';
import { DataOwnerRegistrationSuccess } from '../model/DataOwnerRegistrationSuccess';
import { DocIdentifier } from '../model/DocIdentifier';
import { FilterChainHealthcareParty } from '../model/FilterChainHealthcareParty';
import { HealthcareParty } from '../model/HealthcareParty';
import { ListOfIds } from '../model/ListOfIds';
import { PaginatedListHealthcareParty } from '../model/PaginatedListHealthcareParty';
import { PublicKey } from '../model/PublicKey';
import { AuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider';
import { TimingInfo } from '../model/TimingInfo';
export declare class IccHcpartyApi {
    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;
    /**
     * One of Name or Last name+First name, Nihii, and Public key are required.
     * @summary Create a healthcare party
     * @param body
     */
    createHealthcareParty(body?: HealthcareParty): Promise<HealthcareParty>;
    /**
     * One of Name or Last name+First name, Nihii, and Public key are required.
     * @summary Create a healthcare party
     * @param body
     * @param groupId
     */
    createHealthcarePartyInGroup(groupId: string, body?: HealthcareParty): Promise<HealthcareParty>;
    /**
     * @summary Deletes a healthcare parties in batch.
     * @param healthcarePartyIds a ListOfIds containing the ids of the healthcare parties to delete.
     * @return a Promise that will resolve in an Array of DocIdentifiers of the successfully deleted healthcare parties.
     */
    deleteHealthcareParties(healthcarePartyIds: ListOfIds): Promise<Array<DocIdentifier>>;
    /**
     * @summary Deletes a single healthcare party by id.
     *
     * @param healthcarePartyId the id of the healthcare party to delete.
     * @return a Promise that will resolve in the DocIdentifier of the healthcare party.
     */
    deleteHealthcareParty(healthcarePartyId: string): Promise<DocIdentifier>;
    /**
     * @summary Deletes a healthcare parties in batch in a specific group
     * @param groupId the id of the group where to delete the healthcare parties.
     * @param healthcarePartyIds a ListOfIds containing the ids of the healthcare parties to delete.
     * @return a Promise that will resolve in an Array of DocIdentifiers of the successfully deleted healthcare parties.
     */
    deleteHealthcarePartiesInGroup(groupId: string, healthcarePartyIds: ListOfIds): Promise<Array<DocIdentifier>>;
    /**
     * @summary Deletes a single healthcare party by id in a specific group.
     *
     * @param groupId the id of the group where to delete the healthcare party.
     * @param healthcarePartyId the id of the healthcare party to delete.
     * @return a Promise that will resolve in the DocIdentifier of the healthcare party.
     */
    deleteHealthcarePartyInGroup(groupId: string, healthcarePartyId: string): Promise<DocIdentifier>;
    /**
     * Returns a list of healthcare party along with next start keys and Document ID. If the nextStartKey is Null it means that this is the last page.
     * @summary Filter healthcare parties for the current user (HcParty)
     * @param body
     * @param startDocumentId A HealthcareParty document ID
     * @param limit Number of rows
     * @param collectTiming if true, include server-side filter timing information in the response
     */
    filterHealthPartiesBy(startDocumentId?: string, limit?: number, body?: FilterChainHealthcareParty, collectTiming?: false): Promise<PaginatedListHealthcareParty>;
    filterHealthPartiesBy(startDocumentId?: string, limit?: number, body?: FilterChainHealthcareParty, collectTiming?: true): Promise<PaginatedListHealthcareParty & TimingInfo>;
    /**
     * Returns a list of healthcare parties.
     * @summary Find healthcare parties by name with(out) pagination
     * @param name The Last name search value
     * @param startKey A healthcare party Last name
     * @param startDocumentId A healthcare party document ID
     * @param limit Number of rows
     * @param desc Descending
     */
    findByName(name?: string, startKey?: string, startDocumentId?: string, limit?: number, desc?: boolean): Promise<PaginatedListHealthcareParty>;
    /**
     * Returns a list of healthcare parties.
     * @summary Find healthcare parties by name with(out) pagination
     * @param type The type of the HCP (persphysician)
     * @param spec The speciality of the HCP
     * @param firstCode The first postCode for the HCP
     * @param lastCode The last postCode for the HCP
     * @param startKey the startKey provided by the previous page or undefined for the first page.
     * @param startDocumentId the startDocumentId provided by the previous page or undefined for the first page.
     * @param limit Number of rows
     */
    findBySpecialityAndPostCode(type: string, spec: string, firstCode: string, lastCode: string, startKey?: string, startDocumentId?: string, limit?: number): Promise<PaginatedListHealthcareParty>;
    /**
     * Returns a list of healthcare parties.
     * @summary Find healthcare parties by nihii or ssin with(out) pagination
     * @param searchValue
     * @param startKey A healthcare party Last name
     * @param startDocumentId A healthcare party document ID
     * @param limit Number of rows
     * @param desc Descending
     */
    findBySsinOrNihii(searchValue: string, startKey?: string, startDocumentId?: string, limit?: number, desc?: boolean): Promise<PaginatedListHealthcareParty>;
    /**
     * (key, value) of the map is as follows: (ID of the owner of the encrypted AES key, encrypted AES keys)
     * @summary Get the HcParty encrypted AES keys indexed by owner.
     * @param healthcarePartyId
     */
    getAesExchangeKeysForDelegate(healthcarePartyId: string): Promise<{
        [delegatorId: string]: {
            [delegatorPubKeyFingerprint: string]: {
                [delegatePubKeyFingerprint: string]: string;
            };
        };
    }>;
    /**
     * General information about the current healthcare Party
     * @summary Get the current healthcare party if logged in.
     */
    getCurrentHealthcareParty(): Promise<HealthcareParty>;
    /**
     * General information about the healthcare Party
     * @summary Get healthcareParties by their IDs
     */
    getHealthcareParties(body?: ListOfIds): Promise<Array<HealthcareParty>>;
    /**
     * Return a list of children hcp.
     * @summary Find children of an healthcare parties
     * @param parentId
     */
    getHealthcarePartiesByParentId(parentId: string): Promise<Array<HealthcareParty>>;
    /**
     * General information about the healthcare Party
     * @summary Get healthcareParties by their IDs
     * @param body
     * @param groupId
     */
    getHealthcarePartiesInGroup(groupId: string, body?: ListOfIds): Promise<Array<HealthcareParty>>;
    /**
     * General information about the healthcare Party
     * @summary Get a healthcareParty by his ID
     * @param healthcarePartyId
     */
    getHealthcareParty(healthcarePartyId: string): Promise<HealthcareParty>;
    /**
     * Returns the public key of a healthcare party in Hex
     * @summary Get public key of a healthcare party
     * @param healthcarePartyId
     */
    getPublicKey(healthcarePartyId: string): Promise<PublicKey>;
    /**
     * Returns a list of healthcare parties.
     * @summary Find healthcare parties by name with(out) pagination
     * @param name The Last name search value
     */
    listByName(name: string): Promise<Array<HealthcareParty>>;
    /**
     * Returns a list of healthcare parties.
     * @summary List healthcare parties with(out) pagination
     * @param startKey A healthcare party Last name
     * @param startDocumentId A healthcare party document ID
     * @param limit Number of rows
     * @param desc Descending
     */
    listHealthcareParties(startKey?: string, startDocumentId?: string, limit?: number, desc?: boolean): Promise<PaginatedListHealthcareParty>;
    /**
     *
     * @summary Get ids of healthcare party matching the provided filter for the current user (HcParty)
     * @param body
     * @param collectTiming if true, include server-side filter timing information in the response
     */
    matchHealthcarePartiesBy(body?: AbstractFilterHealthcareParty, collectTiming?: false): Promise<Array<string>>;
    matchHealthcarePartiesBy(body?: AbstractFilterHealthcareParty, collectTiming?: true): Promise<Array<string> & TimingInfo>;
    /**
     * No particular return value. It's just a message.
     * @summary Modify a Healthcare Party.
     * @param body
     */
    modifyHealthcareParty(body?: HealthcareParty): Promise<HealthcareParty>;
    /**
     * No particular return value. It's just a message.
     * @summary Modify a Healthcare Party.
     * @param body
     * @param groupId
     */
    modifyHealthcarePartyInGroup(groupId: string, body?: HealthcareParty): Promise<HealthcareParty>;
    /**
     * Register a new hcp into the system
     * @summary Register a hcp
     * @param body
     * @param groupId
     * @param parentHcPartyId
     * @param token
     * @param useShortToken
     */
    registerHealthcareParty(groupId: string, parentHcPartyId?: string, token?: string, useShortToken?: boolean, body?: HealthcareParty): Promise<DataOwnerRegistrationSuccess>;
}
