import { JSONDBPeer } from "../../../../lib/db/DBPeer"; import { BlockDTO } from "../../../../lib/dto/BlockDTO"; import { Watcher } from "./Watcher"; import { ISyncDownloader } from "./ISyncDownloader"; import { Keypair } from "../../../../lib/dto/ConfDTO"; import { ASyncDownloader } from "./ASyncDownloader"; export declare class P2PSyncDownloader extends ASyncDownloader implements ISyncDownloader { private currency; private keypair; private localNumber; private to; private peers; private watcher; private logger; chunkSize: number; allowLocalSync: boolean; private PARALLEL_PER_CHUNK; private MAX_DELAY_PER_DOWNLOAD; private TOO_LONG_TIME_DOWNLOAD; private nbBlocksToDownload; private numberOfChunksToDownload; private processing; private handler; private p2pCandidates; private nbDownloadsTried; private nbDownloading; private downloads; private fifoPromise; private noNodeFoundCumulation; constructor(currency: string, keypair: Keypair, localNumber: number, to: number, peers: JSONDBPeer[], watcher: Watcher, logger: any, chunkSize: number, allowLocalSync: boolean); get maxSlots(): number; private waitForAvailableNodesAndReserve; /** * Get a list of P2P nodes to use for download. * If a node is not yet correctly initialized (we can test a node before considering it good for downloading), then * this method would not return it. */ private getP2Pcandidates; /** * Download a chunk of blocks using P2P network through BMA API. * @param from The starting block to download * @param count The number of blocks to download. * @param chunkIndex The # of the chunk in local algorithm (logging purposes only) */ private p2pDownload; /** * Function for downloading a chunk by its number. * @param index Number of the chunk. */ private downloadChunk; /** * Utility function this starts a race between promises but cancels it if no answer is found before `timeout` * @param timeout * @param races * @returns {Promise} */ private raceOrCancelIfTimeout; /** * PUBLIC API */ /*** * Promises a chunk to be downloaded and returned * @param index The number of the chunk to download & return */ getChunk(index: number): Promise; }