/**
 * Subscription message processing pipeline
 */
import { EthereumAddress, StreamID, StreamPartID } from '@streamr/utils';
import { StrictStreamrClientConfig } from '../Config';
import { DestroySignal } from '../DestroySignal';
import { StreamRegistry } from '../contracts/StreamRegistry';
import { GroupKeyManager } from '../encryption/GroupKeyManager';
import { StreamMessage } from '../protocol/StreamMessage';
import { SignatureValidator } from '../signature/SignatureValidator';
import { LoggerFactory } from '../utils/LoggerFactory';
import { PushPipeline } from '../utils/PushPipeline';
import { Resends } from './Resends';
export interface MessagePipelineOptions {
    streamPartId: StreamPartID;
    getStorageNodes: (streamId: StreamID) => Promise<EthereumAddress[]>;
    resends: Resends;
    streamRegistry: StreamRegistry;
    signatureValidator: SignatureValidator;
    groupKeyManager: GroupKeyManager;
    config: Pick<StrictStreamrClientConfig, 'encryption' | 'orderMessages' | 'gapFillTimeout' | 'retryResendAfter' | 'maxGapRequests' | 'gapFill' | 'gapFillStrategy'>;
    destroySignal: DestroySignal;
    loggerFactory: LoggerFactory;
}
export declare const createMessagePipeline: (opts: MessagePipelineOptions) => PushPipeline<StreamMessage, StreamMessage>;
