import { KeyPair } from './crypto/RSA';
import { IccMaintenanceTaskXApi } from './icc-maintenance-task-x-api';
import { IccCryptoXApi } from './icc-crypto-x-api';
import { KeyPairUpdateRequest } from './maintenance/KeyPairUpdateRequest';
import { IccDataOwnerXApi } from './icc-data-owner-x-api';
import { User } from '../icc-api/model/User';
import { IccExchangeDataApi } from '../icc-api/api/internal/IccExchangeDataApi';
import { DataOwnerTypeEnum } from '../icc-api/model/DataOwnerTypeEnum';
/**
 * Api for interpreting maintenance tasks and applying required client-side actions.
 */
export declare class IccIcureMaintenanceXApi {
    private readonly crypto;
    private readonly tasksApi;
    private readonly dataOwnerApi;
    private readonly exchangeDataApi;
    constructor(crypto: IccCryptoXApi, tasksApi: IccMaintenanceTaskXApi, dataOwnerApi: IccDataOwnerXApi, exchangeDataApi: IccExchangeDataApi);
    /**
     * Applies a key pair update request between another data owner and the current data owner to allow the other data owner to access existing exchange
     * keys shared with the current data owner. IMPORTANT: it is your responsibility to verify the authenticity of the public key / update request
     * before calling this method: this method assumes the new public key for the concerned data owner is authentic.
     * @param update a keypair update request to the current data owner.
     */
    applyKeyPairUpdate(update: KeyPairUpdateRequest): Promise<void>;
    /**
     * @internal This method is intended only for internal use and may be changed without notice.
     * Creates the necessary maintenance tasks to request access to existing exchange keys with the new key pair for the current user.
     * @param user the user which owns the new key pair.
     * @param keypair a new key pair for the current user.
     * @param requestToOwnerTypes specifies the types of data owner that have shared data with the current data owner or which were given access to data
     * from the current data owner will receive a 'give access back' request. If not specified, the value be inferred from the current data owner type.
     */
    createMaintenanceTasksForNewKeypair(user: User, keypair: KeyPair<CryptoKey>, requestToOwnerTypes?: DataOwnerTypeEnum[]): Promise<void>;
    private getExchangeKeysInfosOf;
    private createMaintenanceTask;
}
