import { IccDataOwnerXApi } from '../icc-data-owner-x-api';
import { KeyPair } from './RSA';
import { CryptoPrimitives } from './CryptoPrimitives';
import { BaseExchangeKeysManager } from './BaseExchangeKeysManager';
import { BaseExchangeDataManager } from './BaseExchangeDataManager';
import { DataOwnerWithType } from '../../icc-api/model/DataOwnerWithType';
/**
 * @internal this class is intended only for internal use and may be changed without notice.
 *
 */
export declare class KeyRecovery {
    private readonly primitives;
    private readonly dataOwnerApi;
    private readonly baseExchangeKeysManager;
    private readonly baseExchangeDataManager;
    constructor(primitives: CryptoPrimitives, dataOwnerApi: IccDataOwnerXApi, baseExchangeKeysManager: BaseExchangeKeysManager, baseExchangeDataManager: BaseExchangeDataManager);
    /**
     * Attempt to recover private keys of a data owner using all available key recovery methods and all available private keys. The method will
     * automatically try to use newly recovered key pairs to recover additional key pairs.
     * @param dataOwner a data owner.
     * @param knownKeys keys available for the data owner.
     * @return new key pairs (exclude already known pairs) which could be recovered using the known keys.
     */
    recoverKeys(dataOwner: DataOwnerWithType, knownKeys: {
        [pubKeyFp: string]: KeyPair<CryptoKey>;
    }): Promise<{
        [pubKeyFp: string]: KeyPair<CryptoKey>;
    }>;
    private recoverFromShamirSplitKeys;
    private recoverWithSplits;
    private tryRecoverSplitPrivate;
    private tryDecryptSplitPiece;
    private validateDecryptedSplit;
    private recoverFromTransferKeys;
    private tryDecryptTransferData;
    private tryDecryptTransferKey;
    private getExchangeKeys;
}
