import { UserEncryptionKeysManager } from './UserEncryptionKeysManager';
import { BaseExchangeKeysManager } from './BaseExchangeKeysManager';
import { IccDataOwnerXApi } from '../icc-data-owner-x-api';
/**
 * @internal This class is meant only for internal use and may be changed without notice.
 * More powerful version of {@link BaseExchangeKeysManager} with a simplified interface. Has the following functionalities:
 * - Caches results
 * - Automatically creates new exchange keys if none is available
 * - Automatically choose the public keys to use during the creation of new exchange keys
 * - Automatically retrieves the private keys to use during decryption.
 */
export declare class ExchangeKeysManager {
    private readonly keyManager;
    private readonly baseExchangeKeysManager;
    private readonly dataOwnerApi;
    private cache;
    get base(): BaseExchangeKeysManager;
    constructor(keyManager: UserEncryptionKeysManager, baseExchangeKeysManager: BaseExchangeKeysManager, dataOwnerApi: IccDataOwnerXApi);
    /**
     * Get all keys currently available for a delegator-delegate pair. At least one of the two data owners must be part of the hierarchy for the current
     * data owner.
     * @param delegatorId id of a delegator
     * @param delegateId id of a delegate
     * @throws if neither the delegator nor the delegate is part of the hierarchy of the current data owner.
     * @return all available exchange keys from the delegator-delegate pair.
     */
    getDecryptionExchangeKeysFor(delegatorId: string, delegateId: string): Promise<CryptoKey[]>;
    private decryptChunk;
    /**
     * Reloads all exchange keys for the cache.
     */
    reloadCache(): void;
    private doGetCache;
}
