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 '../registry/StreamRegistry';
import { LoggerFactory } from '../utils/LoggerFactory';
import { LocalGroupKeyStore } from './LocalGroupKeyStore';
export declare class SubscriberKeyExchange {
    private rsaKeyPair?;
    private readonly pendingRequests;
    private readonly networkNodeFacade;
    private readonly streamRegistry;
    private readonly store;
    private readonly authentication;
    private readonly logger;
    private readonly ensureStarted;
    requestGroupKey: (groupKeyId: string, publisherId: EthereumAddress, streamPartId: StreamPartID) => Promise<void>;
    constructor(networkNodeFacade: NetworkNodeFacade, streamRegistry: StreamRegistry, store: LocalGroupKeyStore, config: Pick<StrictStreamrClientConfig, 'encryption'>, authentication: Authentication, loggerFactory: LoggerFactory);
    private doRequestGroupKey;
    private createRequest;
    private onMessage;
}
