import { StreamID, StreamPartID } from '@streamr/protocol';
import { EthereumAddress } from '@streamr/utils';
import { Authentication } from '../Authentication';
import { StrictStreamrClientConfig } from '../Config';
import { DestroySignal } from '../DestroySignal';
import { StreamrClientEventEmitter } from '../events';
import { GroupKey } from './GroupKey';
import { LitProtocolFacade } from './LitProtocolFacade';
import { LocalGroupKeyStore } from './LocalGroupKeyStore';
import { SubscriberKeyExchange } from './SubscriberKeyExchange';
export declare class GroupKeyManager {
    private readonly subscriberKeyExchange;
    private readonly litProtocolFacade;
    private readonly localGroupKeyStore;
    private readonly config;
    private readonly authentication;
    private readonly eventEmitter;
    private readonly destroySignal;
    constructor(subscriberKeyExchange: SubscriberKeyExchange, litProtocolFacade: LitProtocolFacade, localGroupKeyStore: LocalGroupKeyStore, config: Pick<StrictStreamrClientConfig, 'encryption'>, authentication: Authentication, eventEmitter: StreamrClientEventEmitter, destroySignal: DestroySignal);
    fetchKey(streamPartId: StreamPartID, groupKeyId: string, publisherId: EthereumAddress): Promise<GroupKey>;
    fetchLatestEncryptionKey(publisherId: EthereumAddress, streamId: StreamID): Promise<GroupKey | undefined>;
    storeKey(groupKey: GroupKey | undefined, publisherId: EthereumAddress, streamId: StreamID): Promise<GroupKey>;
    addKeyToLocalStore(groupKey: GroupKey, publisherId: EthereumAddress): Promise<void>;
}
