///
import { Duplex } from "stream";
import { CindexEntry, IindexEntry, MindexEntry, SindexEntry } from "../../../../../lib/indexer";
import { ConfDTO } from "../../../../../lib/dto/ConfDTO";
import { FileDAL } from "../../../../../lib/dal/fileDAL";
import { AbstractSynchronizer } from "../AbstractSynchronizer";
import { Watcher } from "../Watcher";
import { ProtocolIndexesStream } from "./ProtocolIndexesStream";
export interface GDataProtocolIndexesStream {
mindex: MindexEntry[];
iindex: IindexEntry[];
sindex: SindexEntry[];
cindex: CindexEntry[];
}
export declare class GlobalIndexStream extends Duplex {
private conf;
private dal;
private to;
private localNumber;
private cautious;
private syncStrategy;
private watcher;
private sync_currConf;
private memoryOnly;
private wotbMem;
private wotbFilePath;
private memSyncInjection;
private currentChunkNumber;
private numberOfChunksToDownload;
private memToCopyDone;
private mapInjection;
constructor(conf: ConfDTO, dal: FileDAL, to: number, localNumber: number, cautious: boolean, syncStrategy: AbstractSynchronizer, watcher: Watcher);
private injectLoki;
readChunk(i: number): void;
_read(size: number): void;
_write(dataArray: ProtocolIndexesStream[] | undefined, encoding: any, callback: (err: any) => void): void;
/**
* Interpretes a chunk of blocks, and return the generated INDEX entries for eventual backup
* @param {ProtocolIndexesStream[]} dataArray
* @returns {Promise}
*/
private transform;
private beforeBlocks;
private flushSindex;
private flushMicIndexes;
private blockFillTxSourcesConditions;
private updateWotbLinks;
private updateMembers;
private doTrimming;
private finalizeSync;
}