/**
 * 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 { DocIdentifier } from '../model/DocIdentifier';
import { Receipt } from '../model/Receipt';
import { AuthenticationProvider } from '../../icc-x-api/auth/AuthenticationProvider';
import { EntityBulkShareResult } from '../model/requests/EntityBulkShareResult';
import { ListOfIds } from '../model/ListOfIds';
import { BulkShareOrUpdateMetadataParams } from '../model/requests/BulkShareOrUpdateMetadataParams';
export declare class IccReceiptApi {
    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;
    /**
     *
     * @summary Creates a receipt
     * @param body
     */
    createReceipt(body?: Receipt): Promise<Receipt>;
    /**
     * @summary Deletes a batch of receipts.
     *
     * @param receiptIds a ListOfIds containing the ids of the receipts to delete.
     * @return a Promise that will resolve in an array of DocIdentifiers of the successfully deleted receipts.
     */
    deleteReceipts(receiptIds: ListOfIds): Promise<Array<DocIdentifier>>;
    /**
     * @summary Deletes a single receipt by id.
     *
     * @param receiptId the id of the receipt to delete.
     * @return a Promise that will resolve in the DocIdentifier of the deleted receipt.
     */
    deleteReceipt(receiptId: string): Promise<DocIdentifier>;
    /**
     *
     * @summary Gets a receipt
     * @param receiptId
     */
    getReceipt(receiptId: string): Promise<Receipt>;
    /**
     *
     * @summary Get an attachment
     * @param receiptId
     * @param attachmentId
     * @param enckeys
     */
    getReceiptAttachment(receiptId: string, attachmentId: string, enckeys?: null): Promise<ArrayBuffer>;
    /**
     *
     * @summary Gets a receipt
     * @param ref
     */
    listByReference(ref: string): Promise<Array<Receipt>>;
    /**
     *
     * @summary Updates a receipt
     * @param body
     */
    modifyReceipt(body?: Receipt): Promise<Receipt>;
    /**
     * @deprecated use setReceiptAttachmentForBlobType instead
     */
    setReceiptAttachment(receiptId: string, receiptRev: string, blobType: string, enckeys?: null, body?: ArrayBuffer): Promise<Receipt>;
    /**
     * @summary Creates a receipt's attachment
     * @param receiptId id of a receipt
     * @param receiptRev rev of the receipt
     * @param blobType receipt blob type
     * @param body content of the attachment, already encrypted
     */
    setReceiptAttachmentForBlobType(receiptId: string, receiptRev: string, blobType: string, body: ArrayBuffer): Promise<Receipt>;
    /**
     * @summary Creates a receipt's data attachment with compression metadata
     * @param receiptId id of a receipt
     * @param blobType receipt blob type
     * @param rev revision of the receipt
     * @param body content of the attachment
     * @param compressionAlgorithm the compression algorithm used on the client side, if any
     * @param triedCompressionAlgorithmsVersion a version string for the compression algorithms tried
     * @param realDataSize the real size of the data after decryption and decompression
     */
    setReceiptDataAttachment(receiptId: string, blobType: string, rev: string, body: ArrayBuffer, compressionAlgorithm?: string, triedCompressionAlgorithmsVersion?: string, realDataSize?: number): Promise<Receipt>;
    /**
     * @summary Get a receipt's attachment by blob type
     * @param receiptId id of the receipt
     * @param blobType the blob type of the attachment to retrieve
     */
    getReceiptAttachmentByBlobType(receiptId: string, blobType: string): Promise<ArrayBuffer>;
    /**
     * @internal this method is for internal use only and may be changed without notice
     */
    bulkShareReceipt(request: BulkShareOrUpdateMetadataParams): Promise<EntityBulkShareResult<Receipt>[]>;
}
