import * as models from '../icc-api/model/models';
import { IccBekmehrApi } from '../icc-api';
import { IccContactXApi } from './icc-contact-x-api';
import { IccDocumentXApi } from './icc-document-x-api';
import { IccHelementXApi } from './icc-helement-x-api';
import { Contact, Document, HealthElement, Service } from '../icc-api/model/models';
import { AuthenticationProvider } from './auth/AuthenticationProvider';
export type Patcher = ContactPatcher | HealthElementPatcher | DocumentPatcher | ServicePatcher;
export interface ContactPatcher {
    type: 'ContactDto';
    patch: (contacts: Contact[]) => Promise<Contact[]>;
}
export interface HealthElementPatcher {
    type: 'HealthElementDto';
    patch: (patients: HealthElement[]) => Promise<HealthElement[]>;
}
export interface DocumentPatcher {
    type: 'DocumentDto';
    patch: (documents: Document[]) => Promise<Document[]>;
}
export interface ServicePatcher {
    type: 'ServiceDto';
    patch: (documents: Service[]) => Promise<Service[]>;
}
export declare class IccBekmehrXApi extends IccBekmehrApi {
    private readonly ctcApi;
    private readonly helementApi;
    private readonly documentApi;
    private readonly wssHost;
    constructor(host: string, headers: {
        [key: string]: string;
    }, ctcApi: IccContactXApi, helementApi: IccHelementXApi, documentApi: IccDocumentXApi, authenticationProvider?: AuthenticationProvider, fetchImpl?: (input: RequestInfo, init?: RequestInit) => Promise<Response>);
    private getJwt;
    socketEventListener(socket: WebSocket, healthcarePartyId: string, resolve: (value: Blob) => void, reject: (reason?: any) => void, patchers: Patcher[], progressCallback?: (progress: number) => void): (event: MessageEvent) => void;
    generateSmfExportWithEncryptionSupport(patientId: string, healthcarePartyId: string, language: string, body: models.SoftwareMedicalFileExport, progressCallback?: (progress: number) => void, patchers?: Patcher[]): Promise<Blob | undefined>;
    generateSumehrExportWithEncryptionSupport(patientId: string, healthcarePartyId: string, language: string, body: models.SumehrExportInfo, patchers?: Patcher[]): Promise<Blob | undefined>;
    generateSumehrV2ExportWithEncryptionSupport(patientId: string, healthcarePartyId: string, language: string, body: models.SumehrExportInfo, patchers?: Patcher[]): Promise<Blob | undefined>;
    generateDiaryNoteExportWithEncryptionSupport(patientId: string, healthcarePartyId: string, language: string, body: models.SumehrExportInfo, patchers?: Patcher[]): Promise<Blob | undefined>;
    generateMedicationSchemeWithEncryptionSupport(patientId: string, healthcarePartyId: string, language: string, recipientSafe: string, version: number, body: models.MedicationSchemeExportInfo, patchers?: Patcher[]): Promise<Blob | undefined>;
}
