import { StreamID, StreamMessage, StreamPartID } from '@streamr/protocol';
import { EthereumAddress } from '@streamr/utils';
import { StrictStreamrClientConfig } from '../../Config';
import { Resends } from '../Resends';
import { Gap } from './OrderedMessageChain';
/**
 * Manages message ordering and gap filling (per stream part). Provides an iterator
 * to read the sequence of messages which are in ascending order and gaps are filled
 * (if enabled, and the missing message available in a storage node)
 */
export declare class OrderMessages {
    private readonly chains;
    private readonly outBuffer;
    private readonly abortController;
    constructor(streamPartId: StreamPartID, getStorageNodes: (streamId: StreamID) => Promise<EthereumAddress[]>, onUnfillableGap: ((gap: Gap) => void), resends: Resends, config: Pick<StrictStreamrClientConfig, 'gapFillTimeout' | 'retryResendAfter' | 'maxGapRequests' | 'gapFill' | 'gapFillStrategy'>);
    private onOrdered;
    destroy(): void;
    addMessages(src: AsyncGenerator<StreamMessage>): Promise<void>;
    [Symbol.asyncIterator](): AsyncIterator<StreamMessage>;
}
