import { StreamMessage } from '@streamr/protocol';
import { EthereumAddress } from '@streamr/utils';
import { Gap, OrderedMessageChain } from './OrderedMessageChain';
export type GapFillStrategy = 'light' | 'full';
interface GapFillerOptions {
    chain: OrderedMessageChain;
    resend: (gap: Gap, storageNodeAddress: EthereumAddress, abortSignal: AbortSignal) => AsyncGenerator<StreamMessage>;
    getStorageNodeAddresses: () => Promise<EthereumAddress[]>;
    strategy: GapFillStrategy;
    initialWaitTime: number;
    retryWaitTime: number;
    maxRequestsPerGap: number;
    abortSignal: AbortSignal;
}
export declare class GapFiller {
    private currentTask;
    private readonly chain;
    private readonly resend;
    private readonly getStorageNodeAddresses;
    private readonly strategy;
    private readonly initialWaitTime;
    private readonly retryWaitTime;
    private readonly maxRequestsPerGap;
    constructor(opts: GapFillerOptions);
    start(): void;
    private onGapFound;
    private onGapResolved;
    private fetchFromStorageNode;
    private onError;
}
export {};
