import { MarkOptional } from 'ts-essentials';
import { DestroySignal } from '../DestroySignal';
import { StreamRegistry } from '../contracts/StreamRegistry';
import { StreamStorageRegistry } from '../contracts/StreamStorageRegistry';
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';
import { MessagePipelineOptions } from './messagePipeline';
type MessagePipelineFactoryOptions = MarkOptional<Omit<MessagePipelineOptions, 'resends' | 'groupKeyManager' | 'streamRegistry' | 'signatureValidator' | 'destroySignal' | 'loggerFactory'>, 'getStorageNodes' | 'config'>;
export declare class MessagePipelineFactory {
    private readonly resends;
    private readonly streamStorageRegistry;
    private readonly streamRegistry;
    private readonly signatureValidator;
    private readonly groupKeyManager;
    private readonly config;
    private readonly destroySignal;
    private readonly loggerFactory;
    constructor(resends: Resends, streamStorageRegistry: StreamStorageRegistry, streamRegistry: StreamRegistry, signatureValidator: SignatureValidator, groupKeyManager: GroupKeyManager, config: MessagePipelineOptions['config'], destroySignal: DestroySignal, loggerFactory: LoggerFactory);
    createMessagePipeline(opts: MessagePipelineFactoryOptions): PushPipeline<StreamMessage, StreamMessage>;
}
export {};
