import { StreamPartID } from '@streamr/protocol';
import { EthereumAddress } from '@streamr/utils';
import { NetworkNodeFacade } from '../NetworkNodeFacade';
import { LoggerFactory } from '../utils/LoggerFactory';
import { MessagePipelineFactory } from './MessagePipelineFactory';
import { Subscription } from './Subscription';
import { SubscriptionSession } from './SubscriptionSession';
export declare class Subscriber {
    private readonly subSessions;
    private readonly node;
    private readonly messagePipelineFactory;
    private readonly logger;
    constructor(node: NetworkNodeFacade, messagePipelineFactory: MessagePipelineFactory, loggerFactory: LoggerFactory);
    getOrCreateSubscriptionSession(streamPartId: StreamPartID): SubscriptionSession;
    add(sub: Subscription): Promise<void>;
    remove(sub: Subscription): Promise<void>;
    getSubscriptions(): Subscription[];
    getERC1271ContractAddress(streamPartId: StreamPartID): EthereumAddress | undefined;
    /**
     * Get subscription session for matching sub options.
     */
    getSubscriptionSession(streamPartId: StreamPartID): SubscriptionSession | undefined;
    countSubscriptionSessions(): number;
}
