import { IccDataOwnerXApi } from '../icc-data-owner-x-api';
import { UserEncryptionKeysManager } from './UserEncryptionKeysManager';
import { CryptoPrimitives } from './CryptoPrimitives';
import { IcureStorageFacade } from '../storage/IcureStorageFacade';
import { BaseExchangeDataManager } from './BaseExchangeDataManager';
import { CryptoActorStubWithType } from '../../icc-api/model/CryptoActorStub';
/**
 * @internal this class is intended only for internal use and may be changed without notice.
 * Allows to create new transfer keys.
 */
export declare class TransferKeysManager {
    private readonly primitives;
    private readonly baseExchangeDataManager;
    private readonly dataOwnerApi;
    private readonly encryptionKeysManager;
    private readonly icureStorage;
    constructor(primitives: CryptoPrimitives, baseExchangeDataManager: BaseExchangeDataManager, dataOwnerApi: IccDataOwnerXApi, encryptionKeysManager: UserEncryptionKeysManager, icureStorage: IcureStorageFacade);
    /**
     * Analyses the transfer keys graph and creates new transfer keys which allow to improve data accessibility from other devices.
     * For security reasons transfer keys will only be created between keys verified by the user, but this will be done ignoring any existing edges from
     * unverified keys to verified keys.
     * @param self the current data owner.
     * @return the updated data owner.
     */
    updateTransferKeys(self: CryptoActorStubWithType): Promise<void>;
    private encryptTransferKey;
    private transferKeysCandidatesFp;
    private transferTargetKeys;
    private getNewVerifiedTransferKeysEdges;
}
