import { StreamPartID, UserID } from '@streamr/utils';
import { Identity } from '../identity/Identity';
import { StrictStreamrClientConfig } from '../Config';
import { NetworkNodeFacade } from '../NetworkNodeFacade';
import { StreamRegistry } from '../contracts/StreamRegistry';
import { MessageSigner } from '../signature/MessageSigner';
import { SignatureValidator } from '../signature/SignatureValidator';
import { Subscriber } from '../subscribe/Subscriber';
import { LoggerFactory } from '../utils/LoggerFactory';
import { LocalGroupKeyStore } from './LocalGroupKeyStore';
export declare class SubscriberKeyExchange {
    private keyPair?;
    private readonly pendingRequests;
    private readonly networkNodeFacade;
    private readonly streamRegistry;
    private readonly signatureValidator;
    private readonly messageSigner;
    private readonly store;
    private readonly subscriber;
    private readonly identity;
    private readonly logger;
    private readonly ensureStarted;
    requestGroupKey: (groupKeyId: string, publisherId: UserID, streamPartId: StreamPartID) => Promise<void>;
    constructor(networkNodeFacade: NetworkNodeFacade, streamRegistry: StreamRegistry, signatureValidator: SignatureValidator, messageSigner: MessageSigner, store: LocalGroupKeyStore, subscriber: Subscriber, config: Pick<StrictStreamrClientConfig, 'encryption'>, identity: Identity, loggerFactory: LoggerFactory);
    private doRequestGroupKey;
    private createRequest;
    private onMessage;
    private isAssignedToMe;
}
