import { StreamPartID } from '@streamr/protocol';
import { EthereumAddress } from '@streamr/utils';
import { Authentication } from '../Authentication';
import { StrictStreamrClientConfig } from '../Config';
import { NetworkNodeFacade } from '../NetworkNodeFacade';
import { StreamRegistry } from '../contracts/StreamRegistry';
import { LoggerFactory } from '../utils/LoggerFactory';
import { LocalGroupKeyStore } from './LocalGroupKeyStore';
import { ERC1271ContractFacade } from '../contracts/ERC1271ContractFacade';
import { Subscriber } from '../subscribe/Subscriber';
export declare class SubscriberKeyExchange {
    private rsaKeyPair?;
    private readonly pendingRequests;
    private readonly networkNodeFacade;
    private readonly streamRegistry;
    private readonly erc1271ContractFacade;
    private readonly store;
    private readonly subscriber;
    private readonly authentication;
    private readonly logger;
    private readonly ensureStarted;
    requestGroupKey: (groupKeyId: string, publisherId: EthereumAddress, streamPartId: StreamPartID) => Promise<void>;
    constructor(networkNodeFacade: NetworkNodeFacade, streamRegistry: StreamRegistry, erc1271ContractFacade: ERC1271ContractFacade, store: LocalGroupKeyStore, subscriber: Subscriber, config: Pick<StrictStreamrClientConfig, 'encryption'>, authentication: Authentication, loggerFactory: LoggerFactory);
    private doRequestGroupKey;
    private createRequest;
    private onMessage;
    private isAssignedToMe;
}
