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